[*] Binary protection state of libsoup-2.4.so.1.11.2
Full RELRO Canary found NX enabled DSO No RPATH No RUNPATH No Symbols
[*] Function strcpy tear down of libsoup-2.4.so.1.11.2
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-80367616.squashfs_v4_le_extract/usr/lib/libsoup-2.4.so.1.11.2 @ 0x377b8 */
| #include <stdint.h>
|
; (fcn) fcn.000377b8 () | void fcn_000377b8 (int16_t arg1) {
| int16_t var_0h;
| int16_t var_4h;
| int16_t var_8h;
| r0 = arg1;
0x000377b8 ldr r3, [pc, 0x88] |
0x000377ba push.w {r4, r5, r6, r7, r8, lr} |
0x000377be sub sp, 0x10 |
0x000377c0 add r3, pc | r3 = 0x6f008;
0x000377c2 ldr r6, [r3] | r6 = *(0x6f008);
0x000377c4 ldr r3, [r0, r6] | r3 = *((r0 + r6));
0x000377c6 adds r5, r0, r6 | r5 = r0 + r6;
0x000377c8 cbz r3, 0x377d4 |
| while (1) {
0x000377ca movs r7, 1 | r7 = 1;
0x000377cc mov r0, r7 | r0 = r7;
0x000377ce add sp, 0x10 |
0x000377d0 pop.w {r4, r5, r6, r7, r8, pc} |
0x000377d4 ldr r1, [r5, 0x34] | r1 = *((r5 + 0x34));
0x000377d6 mov r4, r0 | r4 = r0;
| if (r1 == 0) {
0x000377d8 cbz r1, 0x37834 | goto label_1;
| }
| label_0:
0x000377da movs r3, 0 | r3 = 0;
0x000377dc ldr r2, [pc, 0x68] |
0x000377de str r3, [sp, 8] | var_8h = r3;
0x000377e0 ldr r3, [r5, 0x18] | r3 = *((r5 + 0x18));
0x000377e2 ldr r0, [pc, 0x68] |
0x000377e4 add r2, pc | r2 = 0x6f030;
0x000377e6 str r3, [sp, 4] | var_4h = r3;
0x000377e8 ldr r3, [pc, 0x64] |
0x000377ea add r0, pc | r0 = 0x6f03c;
0x000377ec add r3, pc | r3 = 0x6f040;
0x000377ee str r3, [sp] | *(sp) = r3;
0x000377f0 ldr r3, [r5, 0x10] | r3 = *((r5 + 0x10));
0x000377f2 blx 0x14b44 | r0 = fcn_00014b44 ();
0x000377f6 mov r8, r0 | r8 = r0;
0x000377f8 blx 0x12d68 | r0 = fcn_00012d68 ();
0x000377fc mov r7, r0 | r7 = r0;
| if (r0 == 0) {
0x000377fe cbz r0, 0x37826 | goto label_2;
| }
0x00037800 ldr r0, [r5, 0x34] | r0 = *((r5 + 0x34));
0x00037802 blx 0x12e00 | fcn_00012e00 ();
0x00037806 mov r0, r8 | r0 = r8;
0x00037808 blx 0x143e0 | fcn_000143e0 ();
0x0003780c str r0, [r5, 0x34] | *((r5 + 0x34)) = r0;
0x0003780e blx 0x13878 | fcn_00013878 ();
0x00037812 ldr r0, [r5, 0x34] | r0 = *((r5 + 0x34));
0x00037814 blx 0x13fcc | strcpy (r0, r1)
0x00037818 mov r1, r8 | r1 = r8;
0x0003781a str r0, [r5, 0x38] | *((r5 + 0x38)) = r0;
0x0003781c ldr r0, [r4, r6] | r0 = *((r4 + r6));
0x0003781e blx 0x13e04 | fcn_00013e04 ();
0x00037822 str r0, [r4, r6] | *((r4 + r6)) = r0;
0x00037824 b 0x377ca |
| }
| label_2:
0x00037826 mov r0, r8 | r0 = r8;
0x00037828 blx 0x12e00 | fcn_00012e00 ();
0x0003782c mov r0, r7 | r0 = r7;
0x0003782e add sp, 0x10 |
0x00037830 pop.w {r4, r5, r6, r7, r8, pc} |
| label_1:
0x00037834 ldr r1, [r5, 0x38] | r1 = *((r5 + 0x38));
0x00037836 movs r0, 2 | r0 = 2;
0x00037838 blx 0x14c1c | r0 = fcn_00014c1c ();
0x0003783c mov r1, r0 | r1 = r0;
0x0003783e str r0, [r5, 0x34] | *((r5 + 0x34)) = r0;
0x00037840 b 0x377da | goto label_0;
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-80367616.squashfs_v4_le_extract/usr/lib/libsoup-2.4.so.1.11.2 @ 0x379d8 */
| #include <stdint.h>
|
; (fcn) fcn.000379d8 () | void fcn_000379d8 (int16_t arg1, int16_t arg2, int16_t arg3, int16_t arg4) {
| int32_t var_0h;
| int32_t var_0h_2;
| int16_t var_8h;
| int16_t var_ch;
| r0 = arg1;
| r1 = arg2;
| r2 = arg3;
| r3 = arg4;
0x000379d8 push.w {r4, r5, r6, r7, r8, lr} |
0x000379dc mov r5, r0 | r5 = r0;
0x000379de ldr.w ip, [pc, 0x108] |
0x000379e2 mov r7, r3 | r7 = r3;
0x000379e4 lsls r3, r2, 0x1f | r3 = r2 << 0x1f;
0x000379e6 sub sp, 0x10 |
0x000379e8 ldr r4, [pc, 0x100] |
0x000379ea ldr r0, [pc, 0x104] | r0 = *(0x37af2);
0x000379ec add ip, pc | ip = 0x6f4da;
0x000379ee ldr.w r8, [ip] | r8 = *(0x6f4da);
0x000379f2 add r4, pc | r4 = 0x6f4e2;
0x000379f4 ldr r0, [r4, r0] |
0x000379f6 mov r4, r1 | r4 = r1;
0x000379f8 add.w r6, r5, r8 | r6 = r5 + r8;
0x000379fc ldr r0, [r0] | r0 = *(0x6f4e2);
0x000379fe str r0, [sp, 0xc] | var_ch = r0;
0x00037a00 mov.w r0, 0 | r0 = 0;
| if (r3 < r2) {
0x00037a04 bpl 0x37a20 |
0x00037a06 ldr r3, [r6, 0x10] | r3 = *((r6 + 0x10));
0x00037a08 cmp r3, 0 |
| if (r3 == 0) {
0x00037a0a beq 0x37ac2 | goto label_1;
| }
0x00037a0c movs r1, 0x50 | r1 = 0x50;
0x00037a0e mov r0, r4 | r0 = r4;
0x00037a10 blx 0x147f4 | g_filter_input_stream_get_base_stream ();
0x00037a14 ldr r1, [pc, 0xdc] |
0x00037a16 movs r3, 0 | r3 = 0;
0x00037a18 ldr r2, [r6, 0x10] | r2 = *((r6 + 0x10));
0x00037a1a add r1, pc | r1 = 0x6f512;
0x00037a1c blx 0x140ec | g_byte_array_unref ();
| }
0x00037a20 movs r1, 0x50 | r1 = 0x50;
0x00037a22 mov r0, r4 | r0 = r4;
0x00037a24 blx 0x147f4 | g_filter_input_stream_get_base_stream ();
0x00037a28 ldr r1, [pc, 0xcc] |
0x00037a2a movs r3, 0 | r3 = 0;
0x00037a2c add r2, sp, 8 | r2 += var_8h;
0x00037a2e add r1, pc | r1 = 0x6f52a;
0x00037a30 blx 0x13efc | fcn_00013efc ();
0x00037a34 ldr r3, [sp, 8] | r3 = var_8h;
0x00037a36 cbz r3, 0x37a82 |
| while (r0 != 0) {
0x00037a38 movs r2, 0 | r2 = 0;
0x00037a3a ldr r1, [pc, 0xc0] |
0x00037a3c strd r2, r2, [sp] | __asm ("strd r2, r2, [sp]");
0x00037a40 mov r3, r5 | r3 = r5;
0x00037a42 ldr r2, [pc, 0xbc] |
0x00037a44 mov r0, r4 | r0 = r4;
0x00037a46 add r1, pc | r1 = 0x6f548;
0x00037a48 add r2, pc | r2 = 0x6f54e;
0x00037a4a blx 0x14710 | g_hash_table_contains ();
0x00037a4e ldr.w r6, [r5, r8] | r6 = *((r5 + r8));
0x00037a52 mov r0, r4 | r0 = r4;
0x00037a54 blx 0x13878 | r0 = fcn_00013878 ();
0x00037a58 mov r1, r0 | r1 = r0;
0x00037a5a mov r0, r6 | r0 = r6;
0x00037a5c blx 0x13e04 | r0 = fcn_00013e04 ();
0x00037a60 mov r3, r0 | r3 = r0;
0x00037a62 movs r0, 1 | r0 = 1;
0x00037a64 str.w r3, [r5, r8] | __asm ("str.w r3, [r5, r8]");
| label_0:
0x00037a68 ldr r2, [pc, 0x98] |
0x00037a6a ldr r3, [pc, 0x84] | r3 = *(0x37af2);
0x00037a6c add r2, pc | r2 = 0x6f574;
0x00037a6e ldr r3, [r2, r3] | r3 = *(0x6f574);
0x00037a70 ldr r2, [r3] | r2 = *(0x6f574);
0x00037a72 ldr r3, [sp, 0xc] | r3 = var_ch;
0x00037a74 eors r2, r3 | r2 ^= r3;
0x00037a76 mov.w r3, 0 | r3 = 0;
| if (r2 != r3) {
0x00037a7a bne 0x37ae2 | goto label_2;
| }
0x00037a7c add sp, 0x10 |
0x00037a7e pop.w {r4, r5, r6, r7, r8, pc} |
0x00037a82 mov r1, r7 | r1 = r7;
0x00037a84 mov r0, r4 | r0 = r4;
0x00037a86 bl 0x42314 | r0 = fcn_00042314 (r0);
0x00037a8a cmp r0, 0 |
0x00037a8c bne 0x37a38 |
| }
0x00037a8e mov r0, r4 | r0 = r4;
0x00037a90 blx 0x143e0 | fcn_000143e0 ();
0x00037a94 ldr r1, [pc, 0x70] |
0x00037a96 mov r4, r0 | r4 = r0;
0x00037a98 ldr r0, [pc, 0x70] |
0x00037a9a add r1, pc | r1 = 0x6f5a6;
0x00037a9c add r0, pc | r0 = 0x6f5ac;
0x00037a9e blx 0x1531c | r0 = sqlite3_open ();
0x00037aa2 mov r5, r0 | r5 = r0;
0x00037aa4 mov r0, r4 | r0 = r4;
0x00037aa6 blx 0x13d48 | r0 = fcn_00013d48 ();
0x00037aaa mov r6, r0 | r6 = r0;
0x00037aac mov r0, r4 | r0 = r4;
0x00037aae blx 0x13fcc | strcpy (r0, r1)
0x00037ab2 mov r2, r6 | r2 = r6;
0x00037ab4 mov r3, r0 | r3 = r0;
0x00037ab6 mov r1, r5 | r1 = r5;
0x00037ab8 mov r0, r7 | r0 = r7;
0x00037aba blx 0x153cc | fcn_000153cc ();
| do {
0x00037abe movs r0, 0 | r0 = 0;
0x00037ac0 b 0x37a68 | goto label_0;
| label_1:
0x00037ac2 blx 0x14768 | fcn_00014768 ();
0x00037ac6 ldr r1, [pc, 0x48] |
0x00037ac8 mov r4, r0 | r4 = r0;
0x00037aca ldr r0, [pc, 0x48] |
0x00037acc add r1, pc | r1 = 0x6f5e2;
0x00037ace add r0, pc | r0 = 0x6f5e8;
0x00037ad0 blx 0x1531c | sqlite3_open ();
0x00037ad4 movs r2, 0xd | r2 = 0xd;
0x00037ad6 mov r3, r0 | r3 = r0;
0x00037ad8 mov r1, r4 | r1 = r4;
0x00037ada mov r0, r7 | r0 = r7;
0x00037adc blx 0x14c04 | fcn_00014c04 ();
0x00037ae0 b 0x37abe |
| } while (1);
| label_2:
0x00037ae2 blx 0x1481c | fcn_0001481c ();
0x00037ae6 nop |
0x00037ae8 invalid |
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-80367616.squashfs_v4_le_extract/usr/lib/libsoup-2.4.so.1.11.2 @ 0x38b38 */
| #include <stdint.h>
|
| #define BIT_MASK(t,v) ((t)(-((v)!= 0)))&(((t)-1)>>((sizeof(t)*CHAR_BIT)-(v)))
|
; (fcn) fcn.00038b38 () | void fcn_00038b38 (int16_t arg_40h, int16_t arg_44h, int16_t arg_c0h, int16_t arg_138h, int16_t arg1, int16_t arg2, int16_t arg3, int16_t arg4) {
| int16_t var_4h;
| int16_t var_8h;
| int16_t var_ch;
| int16_t var_10h;
| int16_t var_14h;
| r0 = arg1;
| r1 = arg2;
| r2 = arg3;
| r3 = arg4;
| label_3:
0x00038b38 svcmi 0xf0e92d | __asm ("svcmi aav.0x000000ff");
0x00038b3c mov r5, r1 | r5 = r1;
0x00038b3e ldr r1, [pc, 0x14c] |
0x00038b40 mov r8, r2 | r8 = r2;
0x00038b42 mov sb, r3 | sb = r3;
0x00038b44 sub sp, 0x1c |
0x00038b46 ldr r2, [pc, 0x148] | r2 = *(0x38c92);
0x00038b48 add r1, pc | r1 = 0x717da;
0x00038b4a ldr r3, [pc, 0x148] |
0x00038b4c ldr r2, [r1, r2] |
0x00038b4e add r3, pc |
0x00038b50 ldr r3, [r3] | r3 = *(0x717e8);
0x00038b52 ldr r2, [r2] | r2 = *(0x717da);
0x00038b54 str r2, [sp, 0x14] | var_14h = r2;
0x00038b56 mov.w r2, 0 | r2 = 0;
0x00038b5a ldr r2, [sp, 0x44] | r2 = *(arg_44h);
0x00038b5c str r3, [sp, 0xc] | var_ch = r3;
0x00038b5e str r2, [sp, 8] | var_8h = r2;
0x00038b60 mov r2, r3 | r2 = r3;
0x00038b62 movs r3, 0 | r3 = 0;
0x00038b64 str r3, [sp, 0x10] | var_10h = r3;
0x00038b66 adds r3, r0, r2 | r3 = r0 + r2;
0x00038b68 str r3, [sp, 4] | var_4h = r3;
0x00038b6a orrs.w r3, r5, r8 | r3 = r5 | r8;
| if (r3 == r5) {
0x00038b6e bne 0x38b9e |
0x00038b70 ldr r1, [pc, 0x124] |
0x00038b72 ldr r2, [pc, 0x128] |
0x00038b74 ldr r0, [pc, 0x128] |
0x00038b76 add r1, pc | r1 = 0x71812;
0x00038b78 add r2, pc | r2 = 0x7181a;
0x00038b7a adds r1, 0xf0 | r1 += 0xf0;
0x00038b7c add r0, pc | r0 = 0x71820;
0x00038b7e blx 0x14070 | fcn_00014070 ();
| label_1:
0x00038b82 movs r0, 0 | r0 = 0;
| label_2:
0x00038b84 ldr r2, [pc, 0x11c] |
0x00038b86 ldr r3, [pc, 0x108] | r3 = *(0x38c92);
0x00038b88 add r2, pc | r2 = 0x71830;
0x00038b8a ldr r3, [r2, r3] | r3 = *(0x71830);
0x00038b8c ldr r2, [r3] | r2 = *(0x71830);
0x00038b8e ldr r3, [sp, 0x14] | r3 = var_14h;
0x00038b90 eors r2, r3 | r2 ^= r3;
0x00038b92 mov.w r3, 0 | r3 = 0;
| if (r2 != r3) {
0x00038b96 bne 0x38c88 | goto label_4;
| }
0x00038b98 add sp, 0x1c |
0x00038b9a pop.w {r4, r5, r6, r7, r8, sb, sl, fp, pc} |
| }
0x00038b9e ldr r3, [sp, 0x40] | r3 = *(arg_40h);
0x00038ba0 mov r6, r0 | r6 = r0;
0x00038ba2 mov r4, r5 | r4 = r5;
0x00038ba4 mov r0, sb | r0 = sb;
0x00038ba6 bic sl, r3, 6 | sl = BIT_MASK (r3, 6);
0x00038baa cmp r5, 0 |
0x00038bac bne 0x38c2a |
| while (1) {
0x00038bae cmp.w r8, 0 |
| if (r8 == 0) {
0x00038bb2 beq 0x38c74 | goto label_5;
| }
0x00038bb4 add r7, sp, 0x10 | r7 += var_10h;
0x00038bb6 mov r1, r0 | r1 = r0;
| label_0:
0x00038bb8 uxth r1, r1 | r1 = (int16_t) r1;
0x00038bba mov r0, r8 | r0 = r8;
0x00038bbc blx 0x144ac | g_base64_encode_step ();
0x00038bc0 mov r3, r7 | r3 = r7;
0x00038bc2 mov fp, r0 |
0x00038bc4 mov r1, r0 | r1 = r0;
0x00038bc6 mov r2, sl | r2 = sl;
0x00038bc8 mov r0, r6 | r0 = r6;
0x00038bca blx 0x12f98 | r0 = fcn_00012f98 ();
0x00038bce cmp r0, 0 |
| if (r0 != 0) {
0x00038bd0 bne 0x38c6e | goto label_6;
| }
0x00038bd2 mov r0, fp | r0 = fp;
0x00038bd4 blx 0x12e00 | fcn_00012e00 ();
| if (r4 != 0) {
0x00038bd8 cbz r4, 0x38c0a |
0x00038bda ldr.w fp, [sp, 0x10] | fp = var_10h;
0x00038bde blx 0x14768 | fcn_00014768 ();
0x00038be2 movs r2, 0xf | r2 = 0xf;
0x00038be4 mov r1, r0 | r1 = r0;
0x00038be6 mov r0, fp | r0 = fp;
0x00038be8 blx 0x14294 | r0 = fcn_00014294 ();
0x00038bec cmp r0, 0 |
| if (r0 != 0) {
0x00038bee bne 0x38c80 | goto label_7;
| }
0x00038bf0 ldr r3, [sp, 4] | r3 = var_4h;
0x00038bf2 mov r1, r4 | r1 = r4;
0x00038bf4 ldr r0, [r3] | r0 = *(r3);
0x00038bf6 blx 0x1277c | fcn_0001277c ();
0x00038bfa ldr r3, [sp, 4] | r3 = var_4h;
0x00038bfc str r0, [r3] | *(r3) = r0;
0x00038bfe mov r0, r4 | r0 = r4;
0x00038c00 blx 0x13828 | g_utf8_strup ();
0x00038c04 mov r0, r4 | r0 = r4;
0x00038c06 blx 0x12e00 | fcn_00012e00 ();
| }
0x00038c0a ldr r4, [sp, 0x10] | r4 = var_10h;
0x00038c0c cmp.w sb, 0 |
| if (sb != 0) {
0x00038c10 bne 0x38c64 | goto label_8;
| }
0x00038c12 blx 0x14768 | fcn_00014768 ();
0x00038c16 movs r2, 0x21 | r2 = 0x21;
0x00038c18 mov r1, r0 | r1 = r0;
0x00038c1a mov r0, r4 | r0 = r4;
0x00038c1c blx 0x14294 | r0 = fcn_00014294 ();
| if (r0 == 0) {
0x00038c20 cbz r0, 0x38c62 | goto label_9;
| }
0x00038c22 mov r0, r7 | r0 = r7;
0x00038c24 blx 0x12f20 | fcn_00012f20 ();
| if (r5 == 0) {
0x00038c28 cbz r5, 0x38c5c | goto label_10;
| }
0x00038c2a uxth.w r1, sb | r1 = (int16_t) sb;
0x00038c2e mov r0, r5 | r0 = r5;
0x00038c30 blx 0x144ac | g_base64_encode_step ();
0x00038c34 ldr r3, [sp, 8] | r3 = var_8h;
0x00038c36 mov r4, r0 | r4 = r0;
0x00038c38 mov r1, r0 | r1 = r0;
0x00038c3a mov r2, sl | r2 = sl;
0x00038c3c mov r0, r6 | r0 = r6;
0x00038c3e blx 0x12f98 | r0 = fcn_00012f98 ();
| if (r0 == 0) {
0x00038c42 cbz r0, 0x38c78 | goto label_11;
| }
0x00038c44 mov r0, r4 | r0 = r4;
0x00038c46 blx 0x12e00 | fcn_00012e00 ();
0x00038c4a ldr r3, [sp, 0xc] | r3 = var_ch;
0x00038c4c ldr r3, [r6, r3] | r3 = *((r6 + r3));
0x00038c4e ldr r4, [r3] | r4 = *(r3);
0x00038c50 mov r0, r4 | r0 = r4;
0x00038c52 blx 0x143e0 | fcn_000143e0 ();
0x00038c56 blx 0x13fcc | strcpy (r0, r1)
0x00038c5a b 0x38bae |
| }
| label_10:
0x00038c5c mov r1, r5 | r1 = r5;
0x00038c5e mov r4, r5 | r4 = r5;
0x00038c60 b 0x38bb8 | goto label_0;
| label_9:
0x00038c62 ldr r4, [sp, 0x10] | r4 = var_10h;
| label_8:
0x00038c64 ldr r0, [sp, 8] | r0 = var_8h;
0x00038c66 mov r1, r4 | r1 = r4;
0x00038c68 blx 0x13e34 | g_proxy_address_get_type ();
0x00038c6c b 0x38b82 | goto label_1;
| label_6:
0x00038c6e mov r0, fp | r0 = fp;
0x00038c70 blx 0x12e00 | fcn_00012e00 ();
| do {
| label_5:
0x00038c74 movs r0, 1 | r0 = 1;
0x00038c76 b 0x38b84 | goto label_2;
| label_11:
0x00038c78 mov r0, r4 | r0 = r4;
0x00038c7a blx 0x12e00 | fcn_00012e00 ();
0x00038c7e b 0x38b82 | goto label_1;
| label_7:
0x00038c80 ldr r0, [sp, 0x10] | r0 = var_10h;
0x00038c82 blx 0x1500c | fcn_0001500c ();
0x00038c86 b 0x38c74 |
| } while (1);
| label_4:
0x00038c88 blx 0x1481c | fcn_0001481c ();
0x00038c8c str r4, [sp, 0xc0] | *(arg_c0h) = r4;
0x00038c8e movs r2, r0 | r2 = r0;
0x00038c90 asrs r0, r2, 0x20 | r0 = r2 >> 0x20;
0x00038c92 movs r0, r0 |
0x00038c94 add r1, sp, 0x138 | r1 += arg_138h;
0x00038c96 movs r2, r0 | r2 = r0;
0x00038c98 stcl p0, c0, [r6], -4 | __asm ("stcl p0, c0, [r6], -4");
0x00038c9c b 0x38b38 | goto label_3;
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-80367616.squashfs_v4_le_extract/usr/lib/libsoup-2.4.so.1.11.2 @ 0x3911c */
| #include <stdint.h>
|
; (fcn) sym.soup_server_get_uris () | void soup_server_get_uris (int16_t arg1) {
| int16_t var_0h;
| int16_t var_4h;
| r0 = arg1;
| label_1:
0x00038df8 movs r0, 0xa | r0 = 0xa;
0x00038dfa blx 0x131d0 | fcn_000131d0 ();
0x00038dfe str.w r8, [sp, 4] | __asm ("str.w r8, [var_4h]");
0x00038e02 mov r8, r0 | r8 = r0;
0x00038e04 str r4, [sp] | *(sp) = r4;
0x00038e06 mov r3, r6 | r3 = r6;
0x00038e08 mov r0, r5 | r0 = r5;
0x00038e0a mov r2, r8 | r2 = r8;
0x00038e0c mov r1, r7 | r1 = r7;
0x00038e0e bl 0x38b38 | r0 = fcn_00038b38 (r0, r1, r2, r3, r4, r5, r6);
0x00038e12 mov r4, r0 | r4 = r0;
| if (r7 != 0) {
0x00038e14 cbz r7, 0x38e1c |
0x00038e16 mov r0, r7 | r0 = r7;
0x00038e18 blx 0x12e00 | fcn_00012e00 ();
| }
0x00038e1c cmp.w r8, 0 |
| if (r8 != 0) {
0x00038e20 beq 0x38e42 |
0x00038e22 mov r0, r8 | r0 = r8;
0x00038e24 blx 0x12e00 | fcn_00012e00 ();
0x00038e28 mov r0, r4 | r0 = r4;
0x00038e2a add sp, 0xc |
0x00038e2c pop.w {r4, r5, r6, r7, r8, sb, pc} |
| }
0x00038e42 mov r0, r4 | r0 = r4;
0x00038e44 add sp, 0xc |
0x00038e46 pop.w {r4, r5, r6, r7, r8, sb, pc} |
0x0003911c ldr r2, [pc, 0xf0] |
0x0003911e ldr r3, [pc, 0xf4] | r3 = *(0x39216);
0x00039120 push.w {r4, r5, r6, r7, r8, sb, sl, lr} |
0x00039124 mov r4, r0 | r4 = r0;
0x00039126 add r2, pc | r2 = 0x7233a;
0x00039128 sub sp, 8 |
0x0003912a ldr r3, [r2, r3] |
0x0003912c ldr r3, [r3] | r3 = *(0x7233a);
0x0003912e str r3, [sp, 4] | var_4h = r3;
0x00039130 mov.w r3, 0 | r3 = 0;
0x00039134 blx 0x13bf8 | fcn_00013bf8 ();
0x00039138 cmp r4, 0 |
| if (r4 == 0) {
0x0003913a beq 0x391f4 | goto label_2;
| }
0x0003913c ldr r3, [r4] | r3 = *(r4);
0x0003913e mov r1, r0 | r1 = r0;
| if (r3 != 0) {
0x00039140 cbz r3, 0x39148 |
0x00039142 ldr r3, [r3] | r3 = *(r3);
0x00039144 cmp r3, r0 |
| if (r3 == r0) {
0x00039146 beq 0x39152 | goto label_3;
| }
| }
0x00039148 mov r0, r4 | r0 = r4;
0x0003914a blx 0x14470 | r0 = fcn_00014470 ();
0x0003914e cmp r0, 0 |
| if (r0 == 0) {
0x00039150 beq 0x391f4 | goto label_2;
| }
| label_3:
0x00039152 ldr r3, [pc, 0xc4] |
0x00039154 add r3, pc |
0x00039156 ldr r3, [r3] | r3 = *(0x72372);
0x00039158 ldr r7, [r4, r3] | r7 = *((r4 + r3));
0x0003915a cmp r7, 0 |
| if (r7 == 0) {
0x0003915c beq 0x39208 | goto label_4;
| }
0x0003915e ldr.w sb, [pc, 0xbc] | sb = *(0x0003921c);
0x00039162 movs r6, 0 | r6 = 0;
0x00039164 ldr.w sl, [pc, 0xb8] |
0x00039168 mov r8, sp | r8 = sp;
0x0003916a add sb, pc | sb += pc;
0x0003916c add sl, pc | sl = 0x72390;
| do {
0x0003916e ldr r4, [r7] | r4 = *(r7);
0x00039170 mov r0, r4 | r0 = r4;
0x00039172 blx 0x143e0 | fcn_000143e0 ();
0x00039176 movs r1, 0x50 | r1 = 0x50;
| label_0:
0x00039178 mov r5, r0 | r5 = r0;
0x0003917a mov r0, r4 | r0 = r4;
0x0003917c blx 0x147f4 | g_filter_input_stream_get_base_stream ();
0x00039180 movs r3, 0 | r3 = 0;
0x00039182 mov r1, sb | r1 = sb;
0x00039184 mov r2, r8 | r2 = r8;
0x00039186 blx 0x13efc | fcn_00013efc ();
0x0003918a movs r0, 0 | r0 = 0;
0x0003918c blx 0x12940 | g_proxy_address_get_protocol ();
0x00039190 ldr r3, [sp] | r3 = *(sp);
0x00039192 mov r4, r0 | r4 = r0;
0x00039194 mov r1, sl | r1 = sl;
| if (r3 != 0) {
0x00039196 cbz r3, 0x3919c |
0x00039198 ldr r1, [pc, 0x88] |
0x0003919a add r1, pc | r1 = 0x723c2;
| }
0x0003919c mov r0, r4 | r0 = r4;
0x0003919e blx 0x1472c | fcn_0001472c ();
0x000391a2 mov r0, r5 | r0 = r5;
0x000391a4 blx 0x13d48 | r0 = fcn_00013d48 ();
0x000391a8 mov r1, r0 | r1 = r0;
0x000391aa mov r0, r4 | r0 = r4;
0x000391ac blx 0x14110 | fcn_00014110 ();
0x000391b0 mov r0, r5 | r0 = r5;
0x000391b2 blx 0x13fcc | r0 = strcpy (r0, r1)
0x000391b6 mov r1, r0 | r1 = r0;
0x000391b8 mov r0, r4 | r0 = r4;
0x000391ba blx 0x15240 | fcn_00015240 ();
0x000391be ldr r1, [pc, 0x68] |
0x000391c0 mov r0, r4 | r0 = r4;
0x000391c2 add r1, pc | r1 = 0x723f0;
0x000391c4 blx 0x12764 | fcn_00012764 ();
0x000391c8 mov r0, r6 | r0 = r6;
0x000391ca mov r1, r4 | r1 = r4;
0x000391cc blx 0x13e04 | fcn_00013e04 ();
0x000391d0 ldr r7, [r7, 4] | r7 = *((r7 + 4));
0x000391d2 mov r6, r0 | r6 = r0;
0x000391d4 cmp r7, 0 |
0x000391d6 bne 0x3916e |
| } while (r7 != 0);
| do {
0x000391d8 ldr r2, [pc, 0x50] |
0x000391da ldr r3, [pc, 0x38] | r3 = *(0x39216);
0x000391dc add r2, pc | r2 = 0x7240c;
0x000391de ldr r3, [r2, r3] | r3 = *(0x7240c);
0x000391e0 ldr r2, [r3] | r2 = *(0x7240c);
0x000391e2 ldr r3, [sp, 4] | r3 = var_4h;
0x000391e4 eors r2, r3 | r2 ^= r3;
0x000391e6 mov.w r3, 0 | r3 = 0;
| if (r2 != r3) {
0x000391ea bne 0x3920c | goto label_5;
| }
0x000391ec mov r0, r6 | r0 = r6;
0x000391ee add sp, 8 |
0x000391f0 pop.w {r4, r5, r6, r7, r8, sb, sl, pc} |
| label_2:
0x000391f4 ldr r1, [pc, 0x38] |
0x000391f6 ldr r2, [pc, 0x3c] |
0x000391f8 ldr r0, [pc, 0x3c] |
0x000391fa add r1, pc |
0x000391fc add r2, pc | r2 = 0x72436;
0x000391fe add.w r1, r1, 0x178 | r1 = 0x725a6;
0x00039202 add r0, pc | r0 = 0x7243e;
0x00039204 blx 0x14070 | fcn_00014070 ();
| label_4:
0x00039208 movs r6, 0 | r6 = 0;
0x0003920a b 0x391d8 |
| } while (1);
| label_5:
0x0003920c blx 0x1481c | fcn_0001481c ();
0x00039210 ldrh r2, [r2, 0x32] | r2 = *((r2 + 0x32));
0x00039212 movs r2, r0 | r2 = r0;
0x00039214 asrs r0, r2, 0x20 | r0 = r2 >> 0x20;
0x00039216 movs r0, r0 |
0x00039218 adr r3, 0x120 | r3 = 0x120;
0x0003921a movs r2, r0 | r2 = r0;
0x0003921c svc 0x42 | __asm ("svc 0x42");
0x0003921e movs r1, r0 | r1 = r0;
0x00039220 strb r0, [r0, 0xe] | *((r0 + 0xe)) = r0;
0x00039222 movs r1, r0 | r1 = r0;
0x00039224 ldr r6, [r3, 0x48] | r6 = *((r3 + 0x48));
0x00039226 movs r1, r0 | r1 = r0;
| if (r1 >= r0) {
0x00039228 bge 0x39178 | goto label_0;
| }
0x0003922a movs r1, r0 | r1 = r0;
0x0003922c ldrh r4, [r3, 0x2c] | r4 = *((r3 + 0x2c));
0x0003922e movs r2, r0 | r2 = r0;
0x00039230 b 0x38df8 | goto label_1;
| }
[*] Function strcpy used 5 times libsoup-2.4.so.1.11.2