[*] 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