[*] Binary protection state of libsoup-2.4.so.1.11.0

  
  	Full RELRO     Canary found      NX enabled   DSO          No RPATH     No RUNPATH   No Symbols


[*] Function strcat tear down of libsoup-2.4.so.1.11.0

    ; assembly                                                   | /* r2dec pseudo code output */
                                                                 | /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/lib/libsoup-2.4.so.1.11.0 @ 0x1f174 */
                                                                 | #include <stdint.h>
                                                                 |  
    ; (fcn) fcn.0001f174 ()                                      | void fcn_0001f174 (int16_t arg1, int16_t arg2) {
                                                                 |     r0 = arg1;
                                                                 |     r1 = arg2;
    0x0001f174 push.w {r3, r4, r5, r6, r7, r8, sb, lr}           |     
    0x0001f178 mov r7, r0                                        |     r7 = r0;
    0x0001f17a mov r5, r1                                        |     r5 = r1;
    0x0001f17c blx 0x13424                                       |     fcn_00013424 ();
    0x0001f180 cmp r7, 0                                         |     
                                                                 |     if (r7 == 0) {
    0x0001f182 beq.w 0x1f2ac                                     |         goto label_1;
                                                                 |     }
    0x0001f186 ldr r3, [r7]                                      |     r3 = *(r7);
    0x0001f188 mov r1, r0                                        |     r1 = r0;
                                                                 |     if (r3 != 0) {
    0x0001f18a cbz r3, 0x1f192                                   |         
    0x0001f18c ldr r3, [r3]                                      |         r3 = *(r3);
    0x0001f18e cmp r3, r0                                        |         
                                                                 |         if (r3 == r0) {
    0x0001f190 beq 0x1f19e                                       |             goto label_2;
                                                                 |         }
                                                                 |     }
    0x0001f192 mov r0, r7                                        |     r0 = r7;
    0x0001f194 blx 0x14320                                       |     r0 = fcn_00014320 ();
    0x0001f198 cmp r0, 0                                         |     
                                                                 |     if (r0 == 0) {
    0x0001f19a beq.w 0x1f2ac                                     |         goto label_1;
                                                                 |     }
                                                                 | label_2:
    0x0001f19e blx 0x13b00                                       |     r0 = g_source_ref ();
    0x0001f1a2 mov r1, r0                                        |     r1 = r0;
    0x0001f1a4 cmp r5, 0                                         |     
                                                                 |     if (r5 == 0) {
    0x0001f1a6 beq.w 0x1f2c6                                     |         goto label_3;
                                                                 |     }
    0x0001f1aa ldr r3, [r5]                                      |     r3 = *(r5);
                                                                 |     if (r3 != 0) {
    0x0001f1ac cbz r3, 0x1f1b4                                   |         
    0x0001f1ae ldr r3, [r3]                                      |         r3 = *(r3);
    0x0001f1b0 cmp r3, r0                                        |         
                                                                 |         if (r3 == r0) {
    0x0001f1b2 beq 0x1f1c0                                       |             goto label_4;
                                                                 |         }
                                                                 |     }
    0x0001f1b4 mov r0, r5                                        |     r0 = r5;
    0x0001f1b6 blx 0x14320                                       |     r0 = fcn_00014320 ();
    0x0001f1ba cmp r0, 0                                         |     
                                                                 |     if (r0 == 0) {
    0x0001f1bc beq.w 0x1f2c6                                     |         goto label_3;
                                                                 |     }
                                                                 | label_4:
    0x0001f1c0 mov r1, r5                                        |     r1 = r5;
    0x0001f1c2 mov r0, r7                                        |     r0 = r7;
    0x0001f1c4 bl 0x1e4a4                                        |     fcn_0001e4a4 (r0, r1);
    0x0001f1c6 vld1.8 {d20, d21, d22}, [lr], r4                  |     __asm ("vld1.8 {d20, d21, d22}, [lr], r4");
    0x0001f1ca cmp r0, 0                                         |     
                                                                 |     if (r0 == 0) {
    0x0001f1cc beq.w 0x1f2e0                                     |         goto label_5;
                                                                 |     }
    0x0001f1d0 ldr r2, [r7, 0xc]                                 |     r2 = *((r7 + 0xc));
    0x0001f1d2 ldr r3, [r0]                                      |     r3 = *(r0);
    0x0001f1d4 ldr r0, [pc, 0x120]                               |     
    0x0001f1d6 ldr r1, [r2]                                      |     r1 = *(r2);
    0x0001f1d8 ldr r2, [pc, 0x120]                               |     
    0x0001f1da add r0, pc                                        |     r0 = 0x3e4d6;
    0x0001f1dc add r2, pc                                        |     r2 = 0x3e4dc;
    0x0001f1de blx 0x1386c                                       |     r0 = fcn_0001386c ();
    0x0001f1e2 mov r6, r0                                        |     r6 = r0;
    0x0001f1e4 blx 0x14f48                                       |     r0 = fcn_00014f48 ();
    0x0001f1e8 mov r8, r0                                        |     r8 = r0;
    0x0001f1ea mov r0, r6                                        |     r0 = r6;
    0x0001f1ec blx 0x12554                                       |     fcn_00012554 ();
    0x0001f1f0 movs r2, 0                                        |     r2 = 0;
    0x0001f1f2 mov r0, r8                                        |     r0 = r8;
    0x0001f1f4 mov r1, r2                                        |     r1 = r2;
    0x0001f1f6 blx 0x126d8                                       |     r0 = g_signal_connect_closure ();
    0x0001f1fa mov r6, r0                                        |     r6 = r0;
    0x0001f1fc blx 0x12bc4                                       |     r0 = fcn_00012bc4 ();
    0x0001f200 mov r1, r0                                        |     r1 = r0;
    0x0001f202 mov r0, r6                                        |     r0 = r6;
    0x0001f204 blx 0x146a4                                       |     r0 = fcn_000146a4 ();
    0x0001f208 mov r6, r0                                        |     r6 = r0;
    0x0001f20a mov r0, r8                                        |     r0 = r8;
    0x0001f20c blx 0x12cc4                                       |     fcn_00012cc4 ();
    0x0001f210 cmp r6, 0                                         |     
                                                                 |     if (r6 == 0) {
    0x0001f212 beq 0x1f2f4                                       |         goto label_6;
                                                                 |     }
    0x0001f214 mov.w sb, 0                                       |     sb = 0;
    0x0001f218 ldr r2, [r4, 0x10]                                |     r2 = *((r4 + 0x10));
    0x0001f21a mov r3, sb                                        |     r3 = sb;
    0x0001f21c movs r1, 2                                        |     r1 = 2;
    0x0001f21e mov r0, r6                                        |     r0 = r6;
    0x0001f220 bl 0x1dc38                                        |     r0 = fcn_0001dc38 (r0, r1, r2, r3);
    0x0001f224 mov r8, r0                                        |     r8 = r0;
    0x0001f226 mov r0, r6                                        |     r0 = r6;
    0x0001f228 blx 0x12cc4                                       |     fcn_00012cc4 ();
    0x0001f22c cmp.w r8, 0                                       |     
                                                                 |     if (r8 == 0) {
    0x0001f230 beq 0x1f2f4                                       |         goto label_6;
                                                                 |     }
    0x0001f232 str.w sb, [r4, 0x20]                              |     __asm ("str.w sb, [r4, 0x20]");
    0x0001f236 mov r0, r5                                        |     r0 = r5;
    0x0001f238 blx 0x12a4c                                       |     fcn_00012a4c ();
    0x0001f23c ldrh r1, [r4, 0x30]                               |     r1 = *((r4 + 0x30));
    0x0001f23e mov r0, r5                                        |     r0 = r5;
    0x0001f240 blx 0x133cc                                       |     fcn_000133cc ();
    0x0001f244 ldr.w sb, [r5, 0x24]                              |     sb = *((r5 + 0x24));
    0x0001f248 ldr r1, [pc, 0xb4]                                |     
    0x0001f24a ldr r0, [r4, 0x24]                                |     r0 = *((r4 + 0x24));
    0x0001f24c ldr r6, [pc, 0xb4]                                |     
    0x0001f24e mov r2, sb                                        |     r2 = sb;
    0x0001f250 add r1, pc                                        |     r1 = 0x3e554;
    0x0001f252 blx 0x13f5c                                       |     g_cond_init ();
    0x0001f256 ldr r1, [pc, 0xb0]                                |     
    0x0001f258 add r6, pc                                        |     r6 = 0x3e560;
    0x0001f25a adds r4, r6, 4                                    |     r4 = r6 + 4;
    0x0001f25c adds r6, 0x20                                     |     r6 += 0x20;
    0x0001f25e add r1, pc                                        |     r1 = 0x3e56c;
    0x0001f260 b 0x1f266                                         |     
                                                                 |     while (r6 != r4) {
    0x0001f262 ldr r1, [r4], 4                                   |         r1 = *(r4);
                                                                 |         r4 += 4;
    0x0001f266 mov r0, sb                                        |         r0 = sb;
    0x0001f268 blx 0x1394c                                       |         fcn_0001394c ();
    0x0001f26c cmp r6, r4                                        |         
    0x0001f26e bne 0x1f262                                       |         
                                                                 |     }
    0x0001f270 mov r0, sb                                        |     r0 = sb;
    0x0001f272 blx 0x13358                                       |     fcn_00013358 ();
    0x0001f276 blx 0x13424                                       |     r0 = fcn_00013424 ();
    0x0001f27a mov r1, r0                                        |     r1 = r0;
    0x0001f27c mov r0, r5                                        |     r0 = r5;
    0x0001f27e blx 0x131b4                                       |     fcn_000131b4 ();
    0x0001f282 ldr r2, [r7, 0xc]                                 |     r2 = *((r7 + 0xc));
    0x0001f284 mov r1, r5                                        |     r1 = r5;
    0x0001f286 movs r3, 3                                        |     r3 = 3;
    0x0001f288 mov r0, r8                                        |     r0 = r8;
    0x0001f28a ldr r2, [r2, 0xc]                                 |     r2 = *((r2 + 0xc));
    0x0001f28c bl 0x31a40                                        |     r0 = fcn_00031a40 (r0, r1, r2);
    0x0001f290 mov r5, r0                                        |     r5 = r0;
    0x0001f292 mov r0, r8                                        |     r0 = r8;
    0x0001f294 blx 0x12cc4                                       |     fcn_00012cc4 ();
    0x0001f298 mov r0, r5                                        |     r0 = r5;
    0x0001f29a bl 0x203e8                                        |     r0 = fcn_000203e8 (r0);
    0x0001f29e mov r4, r0                                        |     r4 = r0;
    0x0001f2a0 mov r0, r5                                        |     r0 = r5;
    0x0001f2a2 blx 0x12cc4                                       |     fcn_00012cc4 ();
    0x0001f2a6 mov r0, r4                                        |     r0 = r4;
    0x0001f2a8 pop.w {r3, r4, r5, r6, r7, r8, sb, pc}            |     
                                                                 | label_1:
    0x0001f2ac ldr r1, [pc, 0x5c]                                |     
    0x0001f2ae movs r4, 0                                        |     r4 = 0;
    0x0001f2b0 ldr r2, [pc, 0x5c]                                |     
    0x0001f2b2 ldr r0, [pc, 0x60]                                |     
    0x0001f2b4 add r1, pc                                        |     r1 = 0x3e5c4;
    0x0001f2b6 add r2, pc                                        |     r2 = 0x3e5ca;
    0x0001f2b8 adds r1, 0x48                                     |     r1 += 0x48;
    0x0001f2ba add r0, pc                                        |     r0 = 0x3e5d4;
    0x0001f2bc blx 0x13f2c                                       |     fcn_00013f2c ();
                                                                 |     do {
                                                                 | label_0:
    0x0001f2c0 mov r0, r4                                        |         r0 = r4;
    0x0001f2c2 pop.w {r3, r4, r5, r6, r7, r8, sb, pc}            |         
    0x0001f2c4 strh r0, [r7, 0x1e]                               |         *((r7 + 0x1e)) = r0;
                                                                 | label_3:
    0x0001f2c6 ldr r1, [pc, 0x50]                                |         
    0x0001f2c8 movs r4, 0                                        |         r4 = 0;
    0x0001f2ca ldr r2, [pc, 0x50]                                |         
    0x0001f2cc ldr r0, [pc, 0x50]                                |         
    0x0001f2ce add r1, pc                                        |         r1 = 0x3e5ec;
    0x0001f2d0 add r2, pc                                        |         r2 = 0x3e5f2;
    0x0001f2d2 adds r1, 0x48                                     |         r1 += 0x48;
    0x0001f2d4 add r0, pc                                        |         r0 = 0x3e5f8;
    0x0001f2d6 blx 0x13f2c                                       |         fcn_00013f2c ();
    0x0001f2da mov r0, r4                                        |         r0 = r4;
    0x0001f2dc pop.w {r3, r4, r5, r6, r7, r8, sb, pc}            |         
                                                                 | label_5:
    0x0001f2e0 ldr r1, [pc, 0x40]                                |         
    0x0001f2e2 ldr r2, [pc, 0x44]                                |         
    0x0001f2e4 ldr r0, [pc, 0x44]                                |         
    0x0001f2e6 add r1, pc                                        |         r1 = 0x3e60e;
    0x0001f2e8 add r2, pc                                        |         r2 = 0x3e616;
    0x0001f2ea adds r1, 0x48                                     |         r1 += 0x48;
    0x0001f2ec add r0, pc                                        |         r0 = 0x3e61c;
    0x0001f2ee blx 0x13f2c                                       |         fcn_00013f2c ();
    0x0001f2f2 b 0x1f2c0                                         |         
                                                                 |     } while (1);
                                                                 | label_6:
    0x0001f2f4 movs r4, 0                                        |     r4 = 0;
    0x0001f2f6 b 0x1f2c0                                         |     goto label_0;
                                                                 | }
    ; assembly                                               | /* r2dec pseudo code output */
                                                             | /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/lib/libsoup-2.4.so.1.11.0 @ 0x1f35c */
                                                             | #include <stdint.h>
                                                             |  
    ; (fcn) fcn.0001f35c ()                                  | void fcn_0001f35c (int16_t arg1, int16_t arg2) {
                                                             |     int16_t var_0h;
                                                             |     int16_t var_4h;
                                                             |     r0 = arg1;
                                                             |     r1 = arg2;
    0x0001f35c ldr r2, [pc, 0x2ec]                           |     
    0x0001f35e ldr r3, [pc, 0x2f0]                           |     r3 = *(0x1f652);
    0x0001f360 push.w {r4, r5, r6, r7, r8, sb, lr}           |     
    0x0001f364 sub sp, 0xc                                   |     
    0x0001f366 add r2, pc                                    |     r2 = 0x3e9b6;
    0x0001f368 ldr r7, [pc, 0x2e8]                           |     
    0x0001f36a mov r5, r0                                    |     r5 = r0;
    0x0001f36c mov r6, r1                                    |     r6 = r1;
    0x0001f36e ldr r3, [r2, r3]                              |     
    0x0001f370 add r7, pc                                    |     r7 = 0x3e9c8;
    0x0001f372 ldr r3, [r3]                                  |     r3 = *(0x3e9b6);
    0x0001f374 str r3, [sp, 4]                               |     var_4h = r3;
    0x0001f376 mov.w r3, 0                                   |     r3 = 0;
    0x0001f37a bl 0x1e4a4                                    |     r0 = fcn_0001e4a4 (r0, r1);
    0x0001f37e cmp r0, 0                                     |     
                                                             |     if (r0 == 0) {
    0x0001f380 beq 0x1f414                                   |         goto label_1;
                                                             |     }
    0x0001f382 ldr r3, [r0, 0x28]                            |     r3 = *((r0 + 0x28));
    0x0001f384 mov r4, r0                                    |     r4 = r0;
    0x0001f386 mov r1, r4                                    |     r1 = r4;
    0x0001f388 adds r3, 1                                    |     r3++;
    0x0001f38a str r3, [r0, 0x28]                            |     *((r0 + 0x28)) = r3;
    0x0001f38c ldr r3, [r5, 0xc]                             |     r3 = *((r5 + 0xc));
    0x0001f38e ldr r0, [r3, 0x20]                            |     r0 = *((r3 + 0x20));
    0x0001f390 blx 0x12774                                   |     r0 = fcn_00012774 ();
    0x0001f394 mov r8, r0                                    |     r8 = r0;
    0x0001f396 mov r2, r0                                    |     r2 = r0;
    0x0001f398 b 0x1f3ae                                     |     
                                                             |     while (r3 == ip) {
    0x0001f39a ldr r3, [r0, 8]                               |         r3 = *((r0 + 8));
    0x0001f39c ldr.w ip, [r1, 8]                             |         ip = *((r1 + 8));
    0x0001f3a0 cmp r3, ip                                    |         
                                                             |         if (r3 != ip) {
    0x0001f3a2 bne 0x1f3c4                                   |             goto label_11;
                                                             |         }
    0x0001f3a4 ldr r3, [r0, 0x10]                            |         r3 = *((r0 + 0x10));
    0x0001f3a6 ldr r1, [r1, 0x10]                            |         r1 = *((r1 + 0x10));
    0x0001f3a8 subs r3, r3, r1                               |         r3 -= r1;
    0x0001f3aa cmp r3, 0                                     |         
                                                             |         if (r3 <= 0) {
    0x0001f3ac ble 0x1f3cc                                   |             goto label_12;
                                                             |         }
                                                             | label_0:
    0x0001f3ae mov sb, r2                                    |         sb = r2;
    0x0001f3b0 ldr r2, [r2, 4]                               |         r2 = *((r2 + 4));
                                                             |         if (r2 == 0) {
    0x0001f3b2 cbz r2, 0x1f3cc                               |             goto label_12;
                                                             |         }
    0x0001f3b4 ldr.w r0, [sb]                                |         r0 = *(sb);
    0x0001f3b8 ldr r1, [r2]                                  |         r1 = *(r2);
    0x0001f3ba ldr r3, [r0, 0x28]                            |         r3 = *((r0 + 0x28));
    0x0001f3bc ldr.w ip, [r1, 0x28]                          |         ip = *((r1 + 0x28));
    0x0001f3c0 cmp r3, ip                                    |         
    0x0001f3c2 beq 0x1f39a                                   |         
                                                             |     }
                                                             | label_11:
    0x0001f3c4 sub.w r3, r3, ip                              |     r3 -= ip;
    0x0001f3c8 cmp r3, 0                                     |     
                                                             |     if (r3 > 0) {
    0x0001f3ca bgt 0x1f3ae                                   |         goto label_0;
                                                             |     }
                                                             | label_12:
    0x0001f3cc cmp sb, r8                                    |     
                                                             |     if (sb != r8) {
    0x0001f3ce beq 0x1f3f0                                   |         
    0x0001f3d0 ldr r5, [r5, 0xc]                             |         r5 = *((r5 + 0xc));
    0x0001f3d2 mov r1, r8                                    |         r1 = r8;
    0x0001f3d4 ldr r0, [r5, 0x20]                            |         r0 = *((r5 + 0x20));
    0x0001f3d6 blx 0x13fe4                                   |         fcn_00013fe4 ();
    0x0001f3da ldr r2, [pc, 0x27c]                           |         
    0x0001f3dc str r0, [r5, 0x20]                            |         *((r5 + 0x20)) = r0;
    0x0001f3de mov r0, sb                                    |         r0 = sb;
    0x0001f3e0 ldr.w r1, [r8]                                |         r1 = *(r8);
    0x0001f3e4 add r2, pc                                    |         r2 = 0x3ea42;
    0x0001f3e6 blx 0x13ffc                                   |         fcn_00013ffc ();
    0x0001f3ea mov r0, r8                                    |         r0 = r8;
    0x0001f3ec blx 0x12f88                                   |         fcn_00012f88 ();
                                                             |     }
    0x0001f3f0 ldr r3, [r4, 0x1c]                            |     r3 = *((r4 + 0x1c));
                                                             |     if (r3 != 0) {
    0x0001f3f2 cbnz r3, 0x1f414                              |         goto label_1;
                                                             |     }
    0x0001f3f4 ldr r3, [r4, 0x20]                            |     r3 = *((r4 + 0x20));
                                                             |     if (r3 != 0) {
    0x0001f3f6 cbnz r3, 0x1f414                              |         goto label_1;
                                                             |     }
    0x0001f3f8 ldr r3, [pc, 0x260]                           |     r3 = *(0x1f65c);
    0x0001f3fa ldr.w r8, [r6, 0xc]                           |     r8 = *((r6 + 0xc));
    0x0001f3fe ldr r5, [r7, r3]                              |     r5 = *((r7 + r3));
    0x0001f400 dmb ish                                       |     __asm ("dmb ish");
    0x0001f404 ldr r3, [r5]                                  |     r3 = *(r5);
    0x0001f406 dmb ish                                       |     __asm ("dmb ish");
    0x0001f40a cmp r3, 0                                     |     
                                                             |     if (r3 == 0) {
    0x0001f40c beq 0x1f4cc                                   |         goto label_13;
                                                             |     }
    0x0001f40e ldr r3, [r5]                                  |     r3 = *(r5);
                                                             | label_3:
    0x0001f410 cmp r8, r3                                    |     
    0x0001f412 beq 0x1f432                                   |     
                                                             |     while (r0 != 0) {
                                                             | label_1:
    0x0001f414 movs r0, 2                                    |         r0 = 2;
                                                             | label_2:
    0x0001f416 ldr r2, [pc, 0x248]                           |         
    0x0001f418 ldr r3, [pc, 0x234]                           |         r3 = *(0x1f650);
    0x0001f41a add r2, pc                                    |         r2 = 0x3ea80;
    0x0001f41c ldr r3, [r2, r3]                              |         r3 = *(0x3ea80);
    0x0001f41e ldr r2, [r3]                                  |         r2 = *(0x3ea80);
    0x0001f420 ldr r3, [sp, 4]                               |         r3 = var_4h;
    0x0001f422 eors r2, r3                                   |         r2 ^= r3;
    0x0001f424 mov.w r3, 0                                   |         r3 = 0;
                                                             |         if (r2 != r3) {
    0x0001f428 bne.w 0x1f60a                                 |             goto label_14;
                                                             |         }
    0x0001f42c add sp, 0xc                                   |         
    0x0001f42e pop.w {r4, r5, r6, r7, r8, sb, pc}            |         
    0x0001f432 ldr r1, [pc, 0x230]                           |         
    0x0001f434 ldr r0, [r6, 0x1c]                            |         r0 = *((r6 + 0x1c));
    0x0001f436 add r1, pc                                    |         r1 = 0x3eaa0;
    0x0001f438 blx 0x139f8                                   |         r0 = fcn_000139f8 ();
    0x0001f43c cmp r0, 0                                     |         
    0x0001f43e bne 0x1f414                                   |         
                                                             |     }
    0x0001f440 ldr r1, [pc, 0x224]                           |     
    0x0001f442 ldr r0, [r6, 0x1c]                            |     r0 = *((r6 + 0x1c));
    0x0001f444 add r1, pc                                    |     r1 = 0x3eab0;
    0x0001f446 blx 0x12954                                   |     r0 = fcn_00012954 ();
    0x0001f44a cmp r0, 0                                     |     
                                                             |     if (r0 != 0) {
    0x0001f44c bne 0x1f414                                   |         goto label_1;
                                                             |     }
    0x0001f44e ldr r7, [pc, 0x21c]                           |     
    0x0001f450 ldr r1, [pc, 0x21c]                           |     
    0x0001f452 ldr r0, [r6, 0x1c]                            |     r0 = *((r6 + 0x1c));
    0x0001f454 add r7, pc                                    |     r7 = 0x3eac6;
    0x0001f456 add r1, pc                                    |     r1 = 0x3eaca;
    0x0001f458 mov r2, r7                                    |     r2 = r7;
    0x0001f45a blx 0x13c28                                   |     r0 = fcn_00013c28 ();
    0x0001f45e mov r5, r0                                    |     r5 = r0;
    0x0001f460 cmp r0, 0                                     |     
                                                             |     if (r0 != 0) {
    0x0001f462 bne 0x1f414                                   |         goto label_1;
                                                             |     }
    0x0001f464 ldr r1, [pc, 0x20c]                           |     
    0x0001f466 ldr r0, [r6, 0x1c]                            |     r0 = *((r6 + 0x1c));
    0x0001f468 add r1, pc                                    |     r1 = 0x3eae0;
    0x0001f46a blx 0x12954                                   |     r0 = fcn_00012954 ();
                                                             |     if (r0 != 0) {
    0x0001f46e cbz r0, 0x1f476                               |         
    0x0001f470 ldrb r3, [r0]                                 |         r3 = *(r0);
    0x0001f472 cmp r3, 0                                     |         
                                                             |         if (r3 != 0) {
    0x0001f474 bne 0x1f4e2                                   |             goto label_15;
                                                             |         }
                                                             |     }
    0x0001f476 mov.w r7, -1                                  |     r7 = -1;
                                                             | label_5:
    0x0001f47a movs r0, 0                                    |     r0 = 0;
    0x0001f47c blx 0x1454c                                   |     fcn_0001454c ();
    0x0001f480 ldrd r3, r2, [r4, 0x14]                       |     __asm ("ldrd r3, r2, [r4, 0x14]");
    0x0001f484 subs r6, r3, r2                               |     r6 = r3 - r2;
    0x0001f486 add r6, r0                                    |     r6 += r0;
                                                             | label_4:
    0x0001f488 ldr r3, [r4, 8]                               |     r3 = *((r4 + 8));
    0x0001f48a cmp r3, r6                                    |     
    0x0001f48c it hi                                         |     
                                                             |     if (r3 > r6) {
    0x0001f48e movhi r0, 0                                   |         r0 = 0;
                                                             |         goto label_16;
                                                             |     }
                                                             |     if (r3 > r6) {
                                                             | label_16:
    0x0001f490 bhi 0x1f416                                   |         goto label_2;
                                                             |     }
    0x0001f492 ldr r3, [r4, 0xc]                             |     r3 = *((r4 + 0xc));
    0x0001f494 adds r1, r7, 1                                |     r1 = r7 + 1;
    0x0001f496 clz r3, r3                                    |     r3 &= r3;
    0x0001f49a lsr.w r3, r3, 5                               |     r3 >>= 5;
    0x0001f49e it eq                                         |     
                                                             |     if (r1 != r7) {
    0x0001f4a0 moveq r3, 0                                   |         r3 = 0;
                                                             |     }
    0x0001f4a2 cmp r3, 0                                     |     
                                                             |     if (r3 == 0) {
    0x0001f4a4 beq.w 0x1f5c0                                 |         goto label_8;
                                                             |     }
    0x0001f4a8 mvn r3, 0x80000000                            |     r3 = ~0x80000000;
    0x0001f4ac movs r0, 0                                    |     r0 = 0;
    0x0001f4ae cmp r7, r3                                    |     
                                                             |     if (r7 == r3) {
    0x0001f4b0 beq 0x1f416                                   |         goto label_2;
                                                             |     }
    0x0001f4b2 blx 0x1454c                                   |     fcn_0001454c ();
    0x0001f4b6 ldrd r3, r1, [r4, 0x14]                       |     __asm ("ldrd r3, r1, [r4, 0x14]");
    0x0001f4ba ldr r2, [r4, 8]                               |     r2 = *((r4 + 8));
    0x0001f4bc add r2, r1                                    |     r2 += r1;
    0x0001f4be subs r3, r3, r2                               |     r3 -= r2;
    0x0001f4c0 add r3, r0                                    |     r3 += r0;
    0x0001f4c2 cmp r3, r7                                    |     
    0x0001f4c4 ite ls                                        |     
                                                             |     if (r3 > r7) {
    0x0001f4c6 movls r0, 0                                   |         r0 = 0;
                                                             |     }
                                                             |     if (r3 <= r7) {
    0x0001f4c8 movhi r0, 1                                   |         r0 = 1;
                                                             |     }
    0x0001f4ca b 0x1f416                                     |     goto label_2;
                                                             | label_13:
    0x0001f4cc ldr r0, [pc, 0x1a8]                           |     
    0x0001f4ce add r0, pc                                    |     r0 = 0x3eb4a;
    0x0001f4d0 blx 0x128b8                                   |     fcn_000128b8 ();
    0x0001f4d4 dmb ish                                       |     __asm ("dmb ish");
    0x0001f4d8 str r0, [r5]                                  |     *(r5) = r0;
    0x0001f4da dmb ish                                       |     __asm ("dmb ish");
    0x0001f4de ldr r3, [r5]                                  |     r3 = *(r5);
    0x0001f4e0 b 0x1f410                                     |     goto label_3;
                                                             | label_15:
    0x0001f4e2 blx 0x13364                                   |     fcn_00013364 ();
    0x0001f4e6 ldr r1, [pc, 0x194]                           |     
    0x0001f4e8 mov r3, r5                                    |     r3 = r5;
    0x0001f4ea mov r2, r5                                    |     r2 = r5;
    0x0001f4ec mov r8, r0                                    |     r8 = r0;
    0x0001f4ee add r1, pc                                    |     r1 = 0x3eb70;
    0x0001f4f0 blx 0x12d2c                                   |     r0 = fcn_00012d2c ();
    0x0001f4f4 mov r3, r0                                    |     r3 = r0;
    0x0001f4f6 cmp r0, 0                                     |     
                                                             |     if (r0 != 0) {
    0x0001f4f8 bne 0x1f5ca                                   |         goto label_17;
                                                             |     }
    0x0001f4fa mov r2, r0                                    |     r2 = r0;
    0x0001f4fc mov r1, r7                                    |     r1 = r7;
    0x0001f4fe mov r0, r8                                    |     r0 = r8;
    0x0001f500 blx 0x12d2c                                   |     r0 = fcn_00012d2c ();
    0x0001f504 mov r2, r0                                    |     r2 = r0;
    0x0001f506 cmp r0, 0                                     |     
                                                             |     if (r0 != 0) {
    0x0001f508 bne 0x1f5ca                                   |         goto label_17;
                                                             |     }
    0x0001f50a ldr r1, [pc, 0x174]                           |     
    0x0001f50c mov r6, sp                                    |     r6 = sp;
    0x0001f50e mov r3, r6                                    |     r3 = r6;
    0x0001f510 mov r0, r8                                    |     r0 = r8;
    0x0001f512 add r1, pc                                    |     r1 = 0x3eb98;
    0x0001f514 blx 0x12d2c                                   |     r0 = fcn_00012d2c ();
    0x0001f518 cmp r0, 0                                     |     
                                                             |     if (r0 == 0) {
    0x0001f51a beq 0x1f5c4                                   |         goto label_18;
                                                             |     }
    0x0001f51c ldr r0, [sp]                                  |     r0 = *(sp);
    0x0001f51e cmp r0, 0                                     |     
                                                             |     if (r0 == 0) {
    0x0001f520 beq 0x1f5c4                                   |         goto label_18;
                                                             |     }
    0x0001f522 movs r2, 0xa                                  |     r2 = 0xa;
    0x0001f524 movs r1, 0                                    |     r1 = 0;
    0x0001f526 mvn r5, 0x80000000                            |     r5 = ~0x80000000;
    0x0001f52a blx 0x12a84                                   |     r0 = fcn_00012a84 ();
    0x0001f52e cmp r0, r5                                    |     
    0x0001f530 sbcs r1, r1, 0                                |     __asm ("sbcs r1, r1, 0");
                                                             |     if (r0 < r5) {
    0x0001f534 blt 0x1f5f0                                   |         goto label_19;
                                                             |     }
                                                             | label_6:
    0x0001f536 ldr r1, [pc, 0x14c]                           |     
    0x0001f538 mov r3, r6                                    |     r3 = r6;
    0x0001f53a movs r2, 0                                    |     r2 = 0;
    0x0001f53c mov r0, r8                                    |     r0 = r8;
    0x0001f53e mov.w r7, -1                                  |     r7 = -1;
    0x0001f542 add r1, pc                                    |     r1 = 0x3ebcc;
    0x0001f544 blx 0x12d2c                                   |     r0 = fcn_00012d2c ();
                                                             |     if (r0 != 0) {
    0x0001f548 cbz r0, 0x1f566                               |         
    0x0001f54a ldr r0, [sp]                                  |         r0 = *(sp);
                                                             |         if (r0 != 0) {
    0x0001f54c cbz r0, 0x1f562                               |             
    0x0001f54e movs r2, 0xa                                  |             r2 = 0xa;
    0x0001f550 movs r1, 0                                    |             r1 = 0;
    0x0001f552 blx 0x12a84                                   |             fcn_00012a84 ();
    0x0001f556 mvn r3, 0x80000000                            |             r3 = ~0x80000000;
    0x0001f55a cmp r0, r3                                    |             
    0x0001f55c sbcs r1, r1, 0                                |             __asm ("sbcs r1, r1, 0");
                                                             |             if (r0 < r3) {
    0x0001f560 blt 0x1f626                                   |                 goto label_20;
                                                             |             }
                                                             |         }
    0x0001f562 mvn r7, 0x80000000                            |         r7 = ~0x80000000;
                                                             |     }
                                                             | label_9:
    0x0001f566 ldr r1, [pc, 0x120]                           |     
    0x0001f568 mov r0, r8                                    |     r0 = r8;
    0x0001f56a add r1, pc                                    |     r1 = 0x3ebf8;
    0x0001f56c blx 0x14900                                   |     r0 = fcn_00014900 ();
    0x0001f570 mov r6, r0                                    |     r6 = r0;
    0x0001f572 str r0, [sp]                                  |     *(sp) = r0;
                                                             |     if (r0 != 0) {
    0x0001f574 cbz r0, 0x1f59a                               |         
    0x0001f576 movs r2, 0xa                                  |         r2 = 0xa;
    0x0001f578 movs r1, 0                                    |         r1 = 0;
    0x0001f57a blx 0x12a84                                   |         fcn_00012a84 ();
    0x0001f57e mvn r3, 0x80000000                            |         r3 = ~0x80000000;
    0x0001f582 cmp r0, r3                                    |         
    0x0001f584 sbcs r1, r1, 0                                |         __asm ("sbcs r1, r1, 0");
                                                             |         if (r0 < r3) {
    0x0001f588 blt 0x1f5d2                                   |             goto label_21;
                                                             |         }
    0x0001f58a mov r0, r8                                    |         r0 = r8;
    0x0001f58c blx 0x14c6c                                   |         fcn_00014c6c ();
    0x0001f590 cmp r5, 0                                     |         
                                                             |         if (r5 > 0) {
    0x0001f592 bgt 0x1f60e                                   |             goto label_22;
                                                             |         }
                                                             | label_7:
    0x0001f594 mvn r6, 0x80000000                            |         r6 = ~0x80000000;
    0x0001f598 b 0x1f488                                     |         goto label_4;
                                                             |     }
    0x0001f59a mov r0, r8                                    |     r0 = r8;
    0x0001f59c blx 0x14c6c                                   |     fcn_00014c6c ();
    0x0001f5a0 cmp r5, 0                                     |     
                                                             |     if (r5 <= 0) {
    0x0001f5a2 ble.w 0x1f47a                                 |         goto label_5;
                                                             |     }
    0x0001f5a6 mov r0, r6                                    |     r0 = r6;
    0x0001f5a8 blx 0x1454c                                   |     fcn_0001454c ();
    0x0001f5ac ldrd r3, r2, [r4, 0x14]                       |     __asm ("ldrd r3, r2, [r4, 0x14]");
    0x0001f5b0 subs r3, r3, r2                               |     r3 -= r2;
    0x0001f5b2 add r3, r0                                    |     r3 += r0;
    0x0001f5b4 cmp r3, r5                                    |     
                                                             |     if (r3 <= r5) {
    0x0001f5b6 blo.w 0x1f47a                                 |         goto label_5;
                                                             |     }
    0x0001f5ba adds r2, r7, 1                                |     r2 = r7 + 1;
                                                             |     if (r2 != r7) {
    0x0001f5bc bne.w 0x1f47a                                 |         goto label_5;
                                                             |     }
                                                             | label_8:
    0x0001f5c0 movs r0, 1                                    |     r0 = 1;
    0x0001f5c2 b 0x1f416                                     |     goto label_2;
                                                             | label_18:
    0x0001f5c4 mov.w r5, -1                                  |     r5 = -1;
    0x0001f5c8 b 0x1f536                                     |     goto label_6;
                                                             | label_17:
    0x0001f5ca mov r0, r8                                    |     r0 = r8;
    0x0001f5cc blx 0x14c6c                                   |     fcn_00014c6c ();
    0x0001f5d0 b 0x1f414                                     |     goto label_1;
                                                             | label_21:
    0x0001f5d2 movs r2, 0xa                                  |     r2 = 0xa;
    0x0001f5d4 ldr r0, [sp]                                  |     r0 = *(sp);
    0x0001f5d6 movs r1, 0                                    |     r1 = 0;
    0x0001f5d8 blx 0x12a84                                   |     r0 = fcn_00012a84 ();
    0x0001f5dc mov r6, r0                                    |     r6 = r0;
    0x0001f5de mov r0, r8                                    |     r0 = r8;
    0x0001f5e0 blx 0x14c6c                                   |     fcn_00014c6c ();
    0x0001f5e4 cmp r5, 0                                     |     
                                                             |     if (r5 > 0) {
    0x0001f5e6 bgt 0x1f634                                   |         goto label_23;
                                                             |     }
                                                             | label_10:
    0x0001f5e8 adds r5, r6, 1                                |     r5 = r6 + 1;
                                                             |     if (r5 != r6) {
    0x0001f5ea bne.w 0x1f488                                 |         goto label_4;
                                                             |     }
    0x0001f5ee b 0x1f47a                                     |     goto label_5;
                                                             | label_19:
    0x0001f5f0 ldr r0, [sp]                                  |     r0 = *(sp);
    0x0001f5f2 movs r2, 0xa                                  |     r2 = 0xa;
    0x0001f5f4 movs r1, 0                                    |     r1 = 0;
    0x0001f5f6 blx 0x12a84                                   |     r0 = fcn_00012a84 ();
    0x0001f5fa mov r5, r0                                    |     r5 = r0;
    0x0001f5fc cmp r0, 0                                     |     
                                                             |     if (r0 != 0) {
    0x0001f5fe bne 0x1f536                                   |         goto label_6;
                                                             |     }
    0x0001f600 mov r0, r8                                    |     r0 = r8;
    0x0001f602 blx 0x14c6c                                   |     fcn_00014c6c ();
    0x0001f606 movs r0, 1                                    |     r0 = 1;
    0x0001f608 b 0x1f416                                     |     goto label_2;
                                                             | label_14:
    0x0001f60a blx 0x146cc                                   |     fcn_000146cc ();
                                                             | label_22:
    0x0001f60e movs r0, 0                                    |     r0 = 0;
    0x0001f610 blx 0x1454c                                   |     fcn_0001454c ();
    0x0001f614 ldrd r3, r2, [r4, 0x14]                       |     __asm ("ldrd r3, r2, [r4, 0x14]");
    0x0001f618 subs r3, r3, r2                               |     r3 -= r2;
    0x0001f61a add r3, r0                                    |     r3 += r0;
    0x0001f61c cmp r5, r3                                    |     
                                                             |     if (r5 > r3) {
    0x0001f61e bhi 0x1f594                                   |         goto label_7;
                                                             |     }
    0x0001f620 adds r3, r7, 1                                |     r3 = r7 + 1;
                                                             |     if (r3 != r7) {
    0x0001f622 bne 0x1f594                                   |         goto label_7;
                                                             |     }
    0x0001f624 b 0x1f5c0                                     |     goto label_8;
                                                             | label_20:
    0x0001f626 ldr r0, [sp]                                  |     r0 = *(sp);
    0x0001f628 movs r2, 0xa                                  |     r2 = 0xa;
    0x0001f62a movs r1, 0                                    |     r1 = 0;
    0x0001f62c blx 0x12a84                                   |     r0 = fcn_00012a84 ();
    0x0001f630 mov r7, r0                                    |     r7 = r0;
    0x0001f632 b 0x1f566                                     |     goto label_9;
                                                             | label_23:
    0x0001f634 movs r0, 0                                    |     r0 = 0;
    0x0001f636 blx 0x1454c                                   |     fcn_0001454c ();
    0x0001f638 invalid                                       |     
    0x0001f63c adds r2, 5                                    |     r2 += 5;
    0x0001f63e subs r3, r3, r2                               |     r3 -= r2;
    0x0001f640 add r3, r0                                    |     r3 += r0;
    0x0001f642 cmp r5, r3                                    |     
                                                             |     if (r5 > r3) {
    0x0001f644 bhi 0x1f5e8                                   |         goto label_10;
                                                             |     }
    0x0001f646 adds r0, r7, 1                                |     r0 = r7 + 1;
                                                             |     if (r0 != r7) {
    0x0001f648 bne 0x1f5e8                                   |         goto label_10;
                                                             |     }
    0x0001f64a b 0x1f5c0                                     |     goto label_8;
                                                             | }
    ; assembly                                           | /* r2dec pseudo code output */
                                                         | /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/lib/libsoup-2.4.so.1.11.0 @ 0x1f910 */
                                                         | #include <stdint.h>
                                                         |  
    ; (fcn) fcn.0001f910 ()                              | void fcn_0001f910 (int16_t arg1, int16_t arg2) {
                                                         |     r0 = arg1;
                                                         |     r1 = arg2;
    0x0001f910 push.w {r4, r5, r6, r7, r8, lr}           |     
    0x0001f914 mov r5, r0                                |     r5 = r0;
    0x0001f916 mov r4, r1                                |     r4 = r1;
    0x0001f918 blx 0x13424                               |     fcn_00013424 ();
    0x0001f91c cmp r5, 0                                 |     
                                                         |     if (r5 == 0) {
    0x0001f91e beq 0x1fa00                               |         goto label_0;
                                                         |     }
    0x0001f920 ldr r3, [r5]                              |     r3 = *(r5);
    0x0001f922 mov r1, r0                                |     r1 = r0;
                                                         |     if (r3 != 0) {
    0x0001f924 cbz r3, 0x1f92c                           |         
    0x0001f926 ldr r3, [r3]                              |         r3 = *(r3);
    0x0001f928 cmp r3, r0                                |         
                                                         |         if (r3 == r0) {
    0x0001f92a beq 0x1f936                               |             goto label_1;
                                                         |         }
                                                         |     }
    0x0001f92c mov r0, r5                                |     r0 = r5;
    0x0001f92e blx 0x14320                               |     r0 = fcn_00014320 ();
    0x0001f932 cmp r0, 0                                 |     
                                                         |     if (r0 == 0) {
    0x0001f934 beq 0x1fa00                               |         goto label_0;
                                                         |     }
                                                         | label_1:
    0x0001f936 blx 0x13b00                               |     r0 = g_source_ref ();
    0x0001f93a mov r1, r0                                |     r1 = r0;
    0x0001f93c cmp r4, 0                                 |     
                                                         |     if (r4 == 0) {
    0x0001f93e beq 0x1fa1a                               |         goto label_2;
                                                         |     }
    0x0001f940 ldr r3, [r4]                              |     r3 = *(r4);
                                                         |     if (r3 != 0) {
    0x0001f942 cbz r3, 0x1f94a                           |         
    0x0001f944 ldr r3, [r3]                              |         r3 = *(r3);
    0x0001f946 cmp r3, r0                                |         
                                                         |         if (r3 == r0) {
    0x0001f948 beq 0x1f954                               |             goto label_3;
                                                         |         }
                                                         |     }
    0x0001f94a mov r0, r4                                |     r0 = r4;
    0x0001f94c blx 0x14320                               |     r0 = fcn_00014320 ();
    0x0001f950 cmp r0, 0                                 |     
                                                         |     if (r0 == 0) {
    0x0001f952 beq 0x1fa1a                               |         goto label_2;
                                                         |     }
                                                         | label_3:
    0x0001f954 mov r1, r4                                |     r1 = r4;
    0x0001f956 mov r0, r5                                |     r0 = r5;
    0x0001f958 bl 0x1e4a4                                |     r0 = fcn_0001e4a4 (r0, r1);
    0x0001f95c mov r6, r0                                |     r6 = r0;
    0x0001f95e cmp r0, 0                                 |     
                                                         |     if (r0 == 0) {
    0x0001f960 beq 0x1fa34                               |         goto label_4;
                                                         |     }
    0x0001f962 ldr r1, [pc, 0xec]                        |     
    0x0001f964 ldr r0, [r0, 0x24]                        |     r0 = *((r0 + 0x24));
    0x0001f966 add r1, pc                                |     r1 = 0x3f3bc;
    0x0001f968 blx 0x139f8                               |     fcn_000139f8 ();
    0x0001f96c ldr r1, [pc, 0xe4]                        |     
    0x0001f96e mov r8, r0                                |     r8 = r0;
    0x0001f970 ldr r0, [r6, 0x24]                        |     r0 = *((r6 + 0x24));
    0x0001f972 add r1, pc                                |     r1 = 0x3f3ca;
    0x0001f974 blx 0x139f8                               |     r0 = fcn_000139f8 ();
    0x0001f978 orrs.w r5, r8, r0                         |     r5 = r8 | r0;
    0x0001f97c mov r7, r0                                |     r7 = r0;
                                                         |     if (r5 == r8) {
    0x0001f97e beq 0x1fa14                               |         goto label_5;
                                                         |     }
    0x0001f980 movs r3, 1                                |     r3 = 1;
    0x0001f982 mov r0, r4                                |     r0 = r4;
    0x0001f984 str r3, [r6, 0x20]                        |     *((r6 + 0x20)) = r3;
    0x0001f986 blx 0x14d9c                               |     r0 = fcn_00014d9c ();
    0x0001f98a mov r1, r0                                |     r1 = r0;
    0x0001f98c ldr r0, [r4, 0xc]                         |     r0 = *((r4 + 0xc));
    0x0001f98e blx 0x15038                               |     r0 = fcn_00015038 ();
    0x0001f992 mov r5, r0                                |     r5 = r0;
    0x0001f994 mov r0, r4                                |     r0 = r4;
    0x0001f996 blx 0x14888                               |     r0 = fcn_00014888 ();
    0x0001f99a mov r1, r0                                |     r1 = r0;
    0x0001f99c mov r0, r5                                |     r0 = r5;
    0x0001f99e blx 0x1470c                               |     fcn_0001470c ();
    0x0001f9a2 blx 0x13424                               |     r0 = fcn_00013424 ();
    0x0001f9a6 mov r1, r0                                |     r1 = r0;
    0x0001f9a8 mov r0, r5                                |     r0 = r5;
    0x0001f9aa blx 0x131b4                               |     fcn_000131b4 ();
    0x0001f9ae ldr r1, [pc, 0xa8]                        |     
    0x0001f9b0 ldr r2, [r5, 0x1c]                        |     r2 = *((r5 + 0x1c));
    0x0001f9b2 ldr r0, [r4, 0x1c]                        |     r0 = *((r4 + 0x1c));
    0x0001f9b4 add r1, pc                                |     r1 = 0x3f412;
    0x0001f9b6 blx 0x13f5c                               |     g_cond_init ();
    0x0001f9ba mov r0, r4                                |     r0 = r4;
    0x0001f9bc bl 0x2f200                                |     r0 = fcn_0002f200 ();
    0x0001f9c0 mov r6, r0                                |     r6 = r0;
                                                         |     if (r0 == 0) {
    0x0001f9c2 cbz r0, 0x1f9d4                           |         goto label_6;
                                                         |     }
    0x0001f9c4 mov r4, r0                                |     r4 = r0;
                                                         |     do {
    0x0001f9c6 ldr r1, [r4]                              |         r1 = *(r4);
    0x0001f9c8 mov r0, r5                                |         r0 = r5;
    0x0001f9ca blx 0x131b4                               |         fcn_000131b4 ();
    0x0001f9ce ldr r4, [r4, 4]                           |         r4 = *((r4 + 4));
    0x0001f9d0 cmp r4, 0                                 |         
    0x0001f9d2 bne 0x1f9c6                               |         
                                                         |     } while (r4 != 0);
                                                         | label_6:
    0x0001f9d4 mov r0, r6                                |     r0 = r6;
    0x0001f9d6 blx 0x12f88                               |     fcn_00012f88 ();
    0x0001f9da cmp.w r8, 0                               |     
                                                         |     if (r8 != 0) {
    0x0001f9de beq 0x1f9ec                               |         
    0x0001f9e0 ldr r1, [pc, 0x78]                        |         
    0x0001f9e2 mov r2, r8                                |         r2 = r8;
    0x0001f9e4 ldr r0, [r5, 0x1c]                        |         r0 = *((r5 + 0x1c));
    0x0001f9e6 add r1, pc                                |         r1 = 0x3f446;
    0x0001f9e8 blx 0x12f00                               |         g_list_free ();
                                                         |     }
                                                         |     if (r7 != 0) {
    0x0001f9ec cbz r7, 0x1fa14                           |         
    0x0001f9ee ldr r1, [pc, 0x70]                        |         
    0x0001f9f0 mov r2, r7                                |         r2 = r7;
    0x0001f9f2 ldr r0, [r5, 0x1c]                        |         r0 = *((r5 + 0x1c));
    0x0001f9f4 add r1, pc                                |         r1 = 0x3f45a;
    0x0001f9f6 blx 0x12f00                               |         g_list_free ();
    0x0001f9fa mov r0, r5                                |         r0 = r5;
    0x0001f9fc pop.w {r4, r5, r6, r7, r8, pc}            |         
                                                         | label_0:
    0x0001fa00 ldr r1, [pc, 0x60]                        |         
    0x0001fa02 movs r5, 0                                |         r5 = 0;
    0x0001fa04 ldr r2, [pc, 0x60]                        |         
    0x0001fa06 ldr r0, [pc, 0x64]                        |         
    0x0001fa08 add r1, pc                                |         r1 = 0x3f470;
    0x0001fa0a add r2, pc                                |         r2 = 0x3f476;
    0x0001fa0c adds r1, 0xa8                             |         r1 += 0xa8;
    0x0001fa0e add r0, pc                                |         r0 = 0x3f480;
    0x0001fa10 blx 0x13f2c                               |         fcn_00013f2c ();
                                                         |     }
                                                         | label_5:
    0x0001fa14 mov r0, r5                                |     r0 = r5;
    0x0001fa16 pop.w {r4, r5, r6, r7, r8, pc}            |     
                                                         | label_2:
    0x0001fa1a ldr r1, [pc, 0x54]                        |     
    0x0001fa1c movs r5, 0                                |     r5 = 0;
    0x0001fa1e ldr r2, [pc, 0x54]                        |     
    0x0001fa20 ldr r0, [pc, 0x54]                        |     
    0x0001fa22 add r1, pc                                |     r1 = 0x3f498;
    0x0001fa24 add r2, pc                                |     r2 = 0x3f49e;
    0x0001fa26 adds r1, 0xa8                             |     r1 += 0xa8;
    0x0001fa28 add r0, pc                                |     r0 = 0x3f4a4;
    0x0001fa2a blx 0x13f2c                               |     fcn_00013f2c ();
    0x0001fa2e mov r0, r5                                |     r0 = r5;
    0x0001fa30 pop.w {r4, r5, r6, r7, r8, pc}            |     
                                                         | label_4:
    0x0001fa34 ldr r1, [pc, 0x44]                        |     
    0x0001fa36 mov r5, r6                                |     r5 = r6;
    0x0001fa38 ldr r2, [pc, 0x44]                        |     
    0x0001fa3a ldr r0, [pc, 0x48]                        |     
    0x0001fa3c add r1, pc                                |     r1 = 0x3f4bc;
    0x0001fa3e add r2, pc                                |     r2 = 0x3f4c2;
    0x0001fa40 adds r1, 0xa8                             |     r1 += 0xa8;
    0x0001fa42 add r0, pc                                |     r0 = 0x3f4cc;
    0x0001fa44 blx 0x13f2c                               |     fcn_00013f2c ();
    0x0001fa48 mov r0, r5                                |     r0 = r5;
    0x0001fa4a pop.w {r4, r5, r6, r7, r8, pc}            |     
                                                         | }
    ; assembly                                           | /* r2dec pseudo code output */
                                                         | /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/lib/libsoup-2.4.so.1.11.0 @ 0x20f00 */
                                                         | #include <stdint.h>
                                                         |  
    ; (fcn) fcn.00020f00 ()                              | void fcn_00020f00 (int16_t arg2) {
                                                         |     int16_t var_0h;
                                                         |     int16_t var_4h;
                                                         |     r1 = arg2;
                                                         |     if (? >= ?) {
    0x00020f00 strmi r4, [r8], -r7, lsr 20               |         *(r8) = r4;
                                                         |         r8 += 20;
                                                         |     }
    0x00020f04 ldr r3, [pc, 0x9c]                        |     
    0x00020f06 push {r4, r5, r6, r7, lr}                 |     
    0x00020f08 sub sp, 0xc                               |     
    0x00020f0a add r2, pc                                |     r2 += pc;
    0x00020f0c mov r4, r1                                |     r4 = r1;
    0x00020f0e movs r6, 0                                |     r6 = 0;
    0x00020f10 ldr r3, [r2, r3]                          |     r3 = *((r2 + r3));
    0x00020f12 ldr r3, [r3]                              |     r3 = *(0x20fa4);
    0x00020f14 str r3, [sp, 4]                           |     var_4h = r3;
    0x00020f16 mov.w r3, 0                               |     r3 = 0;
    0x00020f1a blx 0x141ec                               |     r0 = fcn_000141ec ();
    0x00020f1e mov r5, r0                                |     r5 = r0;
    0x00020f20 mov r0, r4                                |     r0 = r4;
    0x00020f22 ldr r3, [r5, 0x18]                        |     r3 = *((r5 + 0x18));
    0x00020f24 str r6, [sp]                              |     *(sp) = r6;
    0x00020f26 ldr r7, [r3]                              |     r7 = *(r3);
    0x00020f28 blx 0x15074                               |     fcn_00015074 ();
    0x00020f2c mov r1, r6                                |     r1 = r6;
    0x00020f2e mov r2, r0                                |     r2 = r0;
    0x00020f30 mov r3, sp                                |     r3 = sp;
    0x00020f32 mov r0, r7                                |     r0 = r7;
    0x00020f34 bl 0x329b4                                |     r0 = fcn_000329b4 (r0, r1, r2, r3);
                                                         |     if (r0 == 0) {
    0x00020f38 cbnz r0, 0x20f4c                          |         
    0x00020f3a ldr r6, [sp]                              |         r6 = *(sp);
    0x00020f3c blx 0x14618                               |         fcn_00014618 ();
    0x00020f40 movs r2, 0x1b                             |         r2 = 0x1b;
    0x00020f42 mov r1, r0                                |         r1 = r0;
    0x00020f44 mov r0, r6                                |         r0 = r6;
    0x00020f46 blx 0x14150                               |         r0 = fcn_00014150 ();
                                                         |         if (r0 != 0) {
    0x00020f4a cbnz r0, 0x20f92                          |             goto label_1;
                                                         |         }
                                                         |     }
    0x00020f4c ldr r3, [r5, 0x18]                        |     r3 = *((r5 + 0x18));
    0x00020f4e ldr r0, [r3]                              |     r0 = *(r3);
    0x00020f50 bl 0x319b8                                |     fcn_000319b8 (r0);
    0x00020f54 ldr r5, [sp]                              |     r5 = *(sp);
                                                         |     if (r5 == 0) {
    0x00020f56 cbz r5, 0x20f80                           |         goto label_2;
                                                         |     }
    0x00020f58 mov r1, r5                                |     r1 = r5;
    0x00020f5a mov r0, r4                                |     r0 = r4;
    0x00020f5c blx 0x141a0                               |     fcn_000141a0 ();
    0x00020f60 mov r0, r4                                |     r0 = r4;
    0x00020f62 blx 0x12cc4                               |     fcn_00012cc4 ();
    0x00020f66 movs r0, 0                                |     r0 = 0;
                                                         |     do {
                                                         | label_0:
    0x00020f68 ldr r2, [pc, 0x3c]                        |         
    0x00020f6a ldr r3, [pc, 0x38]                        |         r3 = *(0x20fa6);
    0x00020f6c add r2, pc                                |         r2 = 0x41f18;
    0x00020f6e ldr r3, [r2, r3]                          |         r3 = *(0x41f18);
    0x00020f70 ldr r2, [r3]                              |         r2 = *(0x41f18);
    0x00020f72 ldr r3, [sp, 4]                           |         r3 = var_4h;
    0x00020f74 eors r2, r3                               |         r2 ^= r3;
    0x00020f76 mov.w r3, 0                               |         r3 = 0;
                                                         |         if (r2 != r3) {
    0x00020f7a bne 0x20f9c                               |             goto label_3;
                                                         |         }
    0x00020f7c add sp, 0xc                               |         
    0x00020f7e pop {r4, r5, r6, r7, pc}                  |         
                                                         | label_2:
    0x00020f80 blx 0x155b0                               |         fcn_000155b0 ();
    0x00020f84 ldr r1, [pc, 0x24]                        |         
    0x00020f86 mov r2, r4                                |         r2 = r4;
    0x00020f88 add r1, pc                                |         r1 = 0x41f38;
    0x00020f8a blx 0x12a28                               |         fcn_00012a28 ();
    0x00020f8e mov r0, r5                                |         r0 = r5;
    0x00020f90 b 0x20f68                                 |         
                                                         |     } while (1);
                                                         | label_1:
    0x00020f92 ldr r0, [sp]                              |     r0 = *(sp);
    0x00020f94 blx 0x14eb0                               |     g_pollable_output_stream_write_nonblocking ();
    0x00020f98 movs r0, 1                                |     r0 = 1;
    0x00020f9a b 0x20f68                                 |     goto label_0;
                                                         | label_3:
    0x00020f9c blx 0x146cc                               |     fcn_000146cc ();
                                                         |     if (r0 == 1) {
    0x00020fa0 beq 0x20ea8                               |         void (*0x20ea8)() ();
                                                         |     }
    0x00020fa2 movs r4, r0                               |     r4 = r0;
    0x00020fa4 asrs r0, r0, 0x20                         |     r0 >>= 0x20;
    0x00020fa6 movs r0, r0                               |     
                                                         |     if (r0 != r0) {
    0x00020fa8 beq 0x20fec                               |         
    0x00020faa movs r4, r0                               |         r4 = r0;
    0x00020fac movs r5, r4                               |         r5 = r4;
    0x00020fae movs r0, r0                               |         
    0x00020fb0 push {r4, lr}                             |         
    0x00020fb2 movs r1, 1                                |         r1 = 1;
    0x00020fb4 mov r4, r0                                |         r4 = r0;
    0x00020fb6 blx 0x131c0                               |         fcn_000131c0 ();
    0x00020fba mov r0, r4                                |         r0 = r4;
    0x00020fbc blx 0x12cc4                               |         fcn_00012cc4 ();
    0x00020fc0 movs r0, 0                                |         r0 = 0;
    0x00020fc2 pop {r4, pc}                              |         
                                                         |     }
    0x00020fec mov r2, r6                                |     r2 = r6;
    0x00020fee str r3, [sp]                              |     *(sp) = r3;
    0x00020ff0 mov r3, r7                                |     r3 = r7;
    0x00020ff2 ldr r7, [r0, 0x44]                        |     r7 = *((r0 + 0x44));
    0x00020ff4 mov r0, r5                                |     r0 = r5;
    0x00020ff6 blx r7                                    |     r0 = uint32_t (*r7)(uint32_t, uint32_t, uint32_t) (r0, r2, r3);
    0x00020ff8 mov r4, r0                                |     r4 = r0;
                                                         |     if (r0 != 0) {
    0x00020ffa cbz r0, 0x21004                           |         
    0x00020ffc mov r0, r4                                |         r0 = r4;
    0x00020ffe add sp, 0xc                               |         
    0x00021000 pop.w {r4, r5, r6, r7, r8, sb, pc}        |         
                                                         |     }
    0x00021004 mov r2, r0                                |     r2 = r0;
    0x00021006 ldr.w r1, [r8, 0xc]                       |     r1 = *((r8 + 0xc));
    0x0002100a mov r0, r5                                |     r0 = r5;
    0x0002100c blx 0x12c08                               |     fcn_00012c08 ();
    0x00021010 mov r0, r4                                |     r0 = r4;
    0x00021012 add sp, 0xc                               |     
    0x00021014 pop.w {r4, r5, r6, r7, r8, sb, pc}        |     
                                                         | }
    ; assembly                                                   | /* r2dec pseudo code output */
                                                                 | /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/lib/libsoup-2.4.so.1.11.0 @ 0x3a78c */
                                                                 | #include <stdint.h>
                                                                 |  
    ; (fcn) fcn.0003a78c ()                                      | void fcn_0003a78c (int16_t arg1, int16_t arg2) {
                                                                 |     int16_t var_4h;
                                                                 |     int16_t var_8h;
                                                                 |     int16_t var_ch;
                                                                 |     int16_t var_24h;
                                                                 |     r0 = arg1;
                                                                 |     r1 = arg2;
    0x0003a78c push {r0, r1, r2, r4, r5, r8, sb, fp, lr}         |     
    0x0003a790 ldr r7, [pc, 0x3c0]                               |     r7 = *(0x3ab54);
    0x0003a792 mov sb, r0                                        |     sb = r0;
    0x0003a794 ldr r0, [pc, 0xd8]                                |     
    0x0003a796 sub sp, 0x2c                                      |     
    0x0003a798 add r3, pc                                        |     r3 += pc;
    0x0003a79a and r6, r1, 1                                     |     r6 = r1 & 1;
    0x0003a79e ldr r4, [r3]                                      |     r4 = *(r3);
    0x0003a7a0 add r5, sp, 0xc                                   |     r5 += var_ch;
    0x0003a7a2 ldr r2, [pc, 0xd0]                                |     r2 = *(0x3a876);
    0x0003a7a4 add r0, pc                                        |     r0 = 0x75018;
    0x0003a7a6 add.w r8, sp, 8                                   |     r8 += var_8h;
    0x0003a7aa add r7, sp, 4                                     |     r7 += var_4h;
    0x0003a7ac add r4, sb                                        |     r4 += sb;
    0x0003a7ae ldr r2, [r0, r2]                                  |     
    0x0003a7b0 add.w sl, r4, 0x68                                |     sl = r4 + 0x68;
    0x0003a7b4 mov r0, sl                                        |     r0 = sl;
    0x0003a7b6 ldr r2, [r2]                                      |     r2 = *(0x75018);
    0x0003a7b8 str r2, [sp, 0x24]                                |     var_24h = r2;
    0x0003a7ba mov.w r2, 0                                       |     r2 = 0;
    0x0003a7be blx 0x14b1c                                       |     fcn_00014b1c ();
    0x0003a7c2 ldr r1, [r4, 0x58]                                |     r1 = *((r4 + 0x58));
    0x0003a7c4 movs r4, 0                                        |     r4 = 0;
    0x0003a7c6 mov r0, r5                                        |     r0 = r5;
    0x0003a7c8 blx 0x13a4c                                       |     g_output_stream_write_finish ();
                                                                 |     do {
    0x0003a7cc mov r2, r8                                        |         r2 = r8;
    0x0003a7ce mov r1, r7                                        |         r1 = r7;
    0x0003a7d0 mov r0, r5                                        |         r0 = r5;
    0x0003a7d2 blx 0x13a28                                       |         r0 = fcn_00013a28 ();
    0x0003a7d6 mov fp, r0                                        |         
                                                                 |         if (r0 == 0) {
    0x0003a7d8 cbz r0, 0x3a822                                   |             goto label_1;
                                                                 |         }
                                                                 | label_0:
    0x0003a7da ldr r0, [sp, 4]                                   |         r0 = var_4h;
    0x0003a7dc bl 0x220b0                                        |         r0 = fcn_000220b0 (r0);
    0x0003a7e0 cmp r0, 4                                         |         
                                                                 |         if (r0 == 4) {
    0x0003a7e2 beq 0x3a7f2                                       |             goto label_2;
                                                                 |         }
    0x0003a7e4 cmp r0, 2                                         |         
    0x0003a7e6 ite ne                                            |         
                                                                 |         if (r0 == 2) {
    0x0003a7e8 movne r3, 0                                       |             r3 = 0;
                                                                 |         }
                                                                 |         if (r0 != 2) {
    0x0003a7ea andeq r3, r6, 1                                   |             r3 = r6 & 1;
                                                                 |         }
    0x0003a7ee cmp r3, 0                                         |         
    0x0003a7f0 beq 0x3a7cc                                       |         
                                                                 |     } while (r3 == 0);
                                                                 | label_2:
    0x0003a7f2 ldr r0, [sp, 4]                                   |     r0 = var_4h;
    0x0003a7f4 blx 0x13734                                       |     r0 = g_variant_new_string ();
    0x0003a7f8 mov r1, r0                                        |     r1 = r0;
    0x0003a7fa mov r0, r4                                        |     r0 = r4;
    0x0003a7fc blx 0x13cc0                                       |     r0 = fcn_00013cc0 ();
    0x0003a800 mov r4, r0                                        |     r4 = r0;
    0x0003a802 mov r0, r5                                        |     r0 = r5;
    0x0003a804 blx 0x13e0c                                       |     fcn_00013e0c ();
    0x0003a808 ldrd r2, r1, [sp, 4]                              |     __asm ("ldrd r2, r1, [var_8h]");
    0x0003a80c mov r0, sb                                        |     r0 = sb;
    0x0003a80e bl 0x3a6c8                                        |     fcn_0003a6c8 (r0, r1, r2);
    0x0003a812 mov r2, r8                                        |     r2 = r8;
    0x0003a814 mov r1, r7                                        |     r1 = r7;
    0x0003a816 mov r0, r5                                        |     r0 = r5;
    0x0003a818 blx 0x13a28                                       |     r0 = fcn_00013a28 ();
    0x0003a81c mov fp, r0                                        |     
    0x0003a81e cmp r0, 0                                         |     
                                                                 |     if (r0 != 0) {
    0x0003a820 bne 0x3a7da                                       |         goto label_0;
                                                                 |     }
                                                                 | label_1:
    0x0003a822 mov r0, sl                                        |     r0 = sl;
    0x0003a824 blx 0x13bb0                                       |     fcn_00013bb0 ();
                                                                 |     if (r4 == 0) {
    0x0003a828 cbz r4, 0x3a84a                                   |         goto label_3;
                                                                 |     }
    0x0003a82a mov r5, r4                                        |     r5 = r4;
                                                                 |     do {
    0x0003a82c ldr r0, [r5]                                      |         r0 = *(r5);
    0x0003a82e str r0, [sp, 4]                                   |         var_4h = r0;
    0x0003a830 bl 0x21fc4                                        |         fcn_00021fc4 (r0);
    0x0003a834 ldr r0, [sp, 4]                                   |         r0 = var_4h;
    0x0003a836 blx 0x12cc4                                       |         fcn_00012cc4 ();
    0x0003a83a ldr r5, [r5, 4]                                   |         r5 = *((r5 + 4));
    0x0003a83c cmp r5, 0                                         |         
    0x0003a83e bne 0x3a82c                                       |         
                                                                 |     } while (r5 != 0);
    0x0003a840 mov r0, r4                                        |     r0 = r4;
    0x0003a842 mov.w fp, 1                                       |     
    0x0003a846 blx 0x129b8                                       |     fcn_000129b8 ();
                                                                 | label_3:
    0x0003a84a ldr r2, [pc, 0x2c]                                |     
    0x0003a84c ldr r3, [pc, 0x24]                                |     r3 = *(0x3a874);
    0x0003a84e add r2, pc                                        |     r2 = 0x750cc;
    0x0003a850 ldr r3, [r2, r3]                                  |     r3 = *(0x750cc);
    0x0003a852 ldr r2, [r3]                                      |     r2 = *(0x750cc);
    0x0003a854 ldr r3, [sp, 0x24]                                |     r3 = var_24h;
    0x0003a856 eors r2, r3                                       |     r2 ^= r3;
    0x0003a858 mov.w r3, 0                                       |     r3 = 0;
                                                                 |     if (r2 == r3) {
    0x0003a85c bne 0x3a866                                       |         
    0x0003a85e mov r0, fp                                        |         r0 = fp;
    0x0003a860 add sp, 0x2c                                      |         
    0x0003a862 pop.w {r4, r5, r6, r7, r8, sb, sl, fp, pc}        |         
                                                                 |     }
    0x0003a866 blx 0x146cc                                       |     fcn_000146cc ();
    0x0003a86a nop                                               |     
    0x0003a86c ldr r5, [pc, 0x90]                                |     r5 = *(0x3a900);
    0x0003a86e movs r3, r0                                       |     r3 = r0;
    0x0003a870 adds r7, 0xe8                                     |     r7 += 0xe8;
    0x0003a872 movs r3, r0                                       |     r3 = r0;
    0x0003a874 asrs r0, r0, 0x20                                 |     r0 >>= 0x20;
    0x0003a876 movs r0, r0                                       |     
    0x0003a878 adds r7, 0x3e                                     |     r7 += 0x3e;
    0x0003a87a movs r3, r0                                       |     r3 = r0;
    0x0003a87c ldr r3, [pc, 0x74]                                |     
    0x0003a87e push.w {r4, r5, r6, r7, r8, lr}                   |     
    0x0003a882 mov r4, r0                                        |     r4 = r0;
    0x0003a884 ldr r5, [r0, 0x18]                                |     r5 = *((r0 + 0x18));
    0x0003a886 add r3, pc                                        |     
    0x0003a888 ldr r3, [r3]                                      |     r3 = *(0x7517e);
    0x0003a88a ldr r6, [pc, 0x6c]                                |     
    0x0003a88c add r5, r3                                        |     r5 += r3;
    0x0003a88e add.w r7, r5, 0x68                                |     r7 = r5 + 0x68;
    0x0003a892 add r6, pc                                        |     r6 = 0x75190;
    0x0003a894 mov r0, r7                                        |     r0 = r7;
    0x0003a896 blx 0x14b1c                                       |     fcn_00014b1c ();
    0x0003a89a ldr r3, [r4, 8]                                   |     r3 = *((r4 + 8));
                                                                 |     if (r3 != 0) {
    0x0003a89c cbz r3, 0x3a8aa                                   |         
    0x0003a89e mov r0, r7                                        |         r0 = r7;
    0x0003a8a0 blx 0x13bb0                                       |         fcn_00013bb0 ();
    0x0003a8a4 movs r0, 0                                        |         r0 = 0;
    0x0003a8a6 pop.w {r4, r5, r6, r7, r8, pc}                    |         
                                                                 |     }
    0x0003a8aa ldr r3, [r4]                                      |     r3 = *(r4);
    0x0003a8ac ldr.w r8, [r3]                                    |     r8 = *(r3);
    0x0003a8b0 ldr r3, [pc, 0x48]                                |     r3 = *(0x3a8fc);
    0x0003a8b2 ldr r6, [r6, r3]                                  |     r6 = *((r6 + r3));
    0x0003a8b4 dmb ish                                           |     __asm ("dmb ish");
    0x0003a8b8 ldr r3, [r6]                                      |     r3 = *(r6);
    0x0003a8ba dmb ish                                           |     __asm ("dmb ish");
                                                                 |     if (r3 == 0) {
    0x0003a8be cbz r3, 0x3a8dc                                   |         goto label_4;
                                                                 |     }
    0x0003a8c0 ldr r3, [r6]                                      |     r3 = *(r6);
                                                                 |     do {
    0x0003a8c2 cmp r8, r3                                        |         
    0x0003a8c4 ldr r1, [r4]                                      |         r1 = *(r4);
    0x0003a8c6 ite eq                                            |         
                                                                 |         if (r8 != r3) {
    0x0003a8c8 ldreq r0, [r5, 0x54]                              |             r0 = *((r5 + 0x54));
                                                                 |         }
                                                                 |         if (r8 == r3) {
    0x0003a8ca ldrne r0, [r5, 0x50]                              |             r0 = *((r5 + 0x50));
                                                                 |         }
    0x0003a8cc blx 0x13300                                       |         fcn_00013300 ();
    0x0003a8d0 mov r0, r7                                        |         r0 = r7;
    0x0003a8d2 blx 0x13bb0                                       |         fcn_00013bb0 ();
    0x0003a8d6 movs r0, 0                                        |         r0 = 0;
    0x0003a8d8 pop.w {r4, r5, r6, r7, r8, pc}                    |         
                                                                 | label_4:
    0x0003a8dc ldr r0, [pc, 0x20]                                |         
    0x0003a8de add r0, pc                                        |         r0 = 0x751e2;
    0x0003a8e0 blx 0x128b8                                       |         fcn_000128b8 ();
    0x0003a8e4 dmb ish                                           |         __asm ("dmb ish");
    0x0003a8e8 str r0, [r6]                                      |         *(r6) = r0;
    0x0003a8ea dmb ish                                           |         __asm ("dmb ish");
    0x0003a8ee ldr r3, [r6]                                      |         r3 = *(r6);
    0x0003a8f0 b 0x3a8c2                                         |         
                                                                 |     } while (1);
                                                                 | }
    ; assembly                               | /* r2dec pseudo code output */
                                             | /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/lib/libsoup-2.4.so.1.11.0 @ 0x3ea78 */
                                             | #include <stdint.h>
                                             |  
    ; (fcn) fcn.0003ea78 ()                  | void fcn_0003ea78 (uint32_t arg1, int16_t arg2, int16_t arg3, int16_t arg4) {
                                             |     int16_t var_0h;
                                             |     r0 = arg1;
                                             |     r1 = arg2;
                                             |     r2 = arg3;
                                             |     r3 = arg4;
    0x0003ea78 push {r4, lr}                 |     
    0x0003ea7a sub sp, 8                     |     
    0x0003ea7c ldr r4, [r1]                  |     r4 = *(r1);
    0x0003ea7e cmp r4, r0                    |     
                                             |     if (r4 != r0) {
    0x0003ea80 beq 0x3eaa4                   |         
    0x0003ea82 ldr r3, [pc, 0x2c]            |         
    0x0003ea84 movw r2, 0x7b4                |         r2 = 0x7b4;
    0x0003ea88 ldr.w ip, [pc, 0x28]          |         ip = *(0x0003eab4);
    0x0003ea8c ldr r1, [pc, 0x28]            |         
    0x0003ea8e ldr r0, [pc, 0x2c]            |         
    0x0003ea90 add r3, pc                    |         
    0x0003ea92 add ip, pc                    |         
    0x0003ea94 add.w r3, r3, 0x324           |         r3 = 0x7d86a;
    0x0003ea98 add r1, pc                    |         r1 = 0x7d554;
    0x0003ea9a str.w ip, [sp]                |         __asm ("str.w ip, [sp]");
    0x0003ea9e add r0, pc                    |         r0 = 0x7d560;
    0x0003eaa0 blx 0x13618                   |         fcn_00013618 ();
                                             |     }
    0x0003eaa4 add sp, 8                     |     
    0x0003eaa6 pop.w {r4, lr}                |     
    0x0003eaaa b.w 0x3e220                   |     return void (*0x3e220)() ();
                                             | }
    ; assembly                                       | /* r2dec pseudo code output */
                                                     | /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/lib/libsoup-2.4.so.1.11.0 @ 0x45d24 */
                                                     | #include <stdint.h>
                                                     |  
    ; (fcn) fcn.00045d24 ()                          | void fcn_00045d24 (int16_t arg2, int16_t arg3) {
                                                     |     r1 = arg2;
                                                     |     r2 = arg3;
    0x00045d24 push {r3, r4, r5, r6, r7, lr}         |     
    0x00045d26 mov r5, r1                            |     r5 = r1;
    0x00045d28 ldr r1, [pc, 0x64]                    |     
    0x00045d2a mov r7, r2                            |     r7 = r2;
    0x00045d2c add r1, pc                            |     r1 = 0x8bac0;
    0x00045d2e blx 0x139f8                           |     r0 = fcn_000139f8 ();
                                                     |     if (r0 == 0) {
    0x00045d32 cbz r0, 0x45d78                       |         goto label_1;
                                                     |     }
    0x00045d34 ldr r1, [pc, 0x5c]                    |     
    0x00045d36 mov.w r2, -1                          |     r2 = -1;
    0x00045d3a add r1, pc                            |     r1 = 0x8bad2;
    0x00045d3c blx 0x129c4                           |     r0 = fcn_000129c4 ();
    0x00045d40 mov r6, r0                            |     r6 = r0;
                                                     |     if (r0 == 0) {
    0x00045d42 cbz r0, 0x45d72                       |         goto label_2;
                                                     |     }
    0x00045d44 ldr r1, [r0]                          |     r1 = *(r0);
                                                     |     if (r1 == 0) {
    0x00045d46 cbz r1, 0x45d72                       |         goto label_2;
                                                     |     }
    0x00045d48 ldr r3, [r5]                          |     r3 = *(r5);
                                                     |     if (r3 == 0) {
    0x00045d4a cbz r3, 0x45d86                       |         goto label_3;
                                                     |     }
                                                     | label_0:
    0x00045d4c mov r4, r6                            |     r4 = r6;
                                                     |     if (r1 != 0) {
    0x00045d4e cbnz r1, 0x45d58                      |         goto label_4;
                                                     |     }
    0x00045d50 b 0x45d7c                             |     goto label_5;
                                                     |     do {
    0x00045d52 ldr r1, [r4, 4]!                      |         r1 = *((r4 += 4));
                                                     |         if (r1 == 0) {
    0x00045d56 cbz r1, 0x45d7c                       |             goto label_5;
                                                     |         }
                                                     | label_4:
    0x00045d58 ldr r0, [r5]                          |         r0 = *(r5);
    0x00045d5a blx 0x153d0                           |         r0 = fcn_000153d0 ();
    0x00045d5e cmp r0, 0                             |         
    0x00045d60 beq 0x45d52                           |         
                                                     |     } while (r0 == 0);
    0x00045d62 mov r0, r6                            |     r0 = r6;
    0x00045d64 blx 0x14ef8                           |     fcn_00014ef8 ();
                                                     |     if (r7 != 0) {
    0x00045d68 cbz r7, 0x45d78                       |         
    0x00045d6a ldr r3, [r5]                          |         r3 = *(r5);
    0x00045d6c movs r0, 1                            |         r0 = 1;
    0x00045d6e str r3, [r7]                          |         *(r7) = r3;
    0x00045d70 pop {r3, r4, r5, r6, r7, pc}          |         
                                                     | label_2:
    0x00045d72 mov r0, r6                            |         r0 = r6;
    0x00045d74 blx 0x14ef8                           |         fcn_00014ef8 ();
                                                     |     }
                                                     | label_1:
    0x00045d78 movs r0, 1                            |     r0 = 1;
    0x00045d7a pop {r3, r4, r5, r6, r7, pc}          |     
                                                     | label_5:
    0x00045d7c ldr r3, [r5, 4]!                      |     r3 = *((r5 += 4));
                                                     |     if (r3 != 0) {
    0x00045d80 cbz r3, 0x45d86                       |         
    0x00045d82 ldr r1, [r6]                          |         r1 = *(r6);
    0x00045d84 b 0x45d4c                             |         goto label_0;
                                                     |     }
                                                     | label_3:
    0x00045d86 mov r0, r6                            |     r0 = r6;
    0x00045d88 blx 0x14ef8                           |     fcn_00014ef8 ();
    0x00045d8c movs r0, 0                            |     r0 = 0;
    0x00045d8e pop {r3, r4, r5, r6, r7, pc}          |     
                                                     | }
    ; assembly                                                   | /* r2dec pseudo code output */
                                                                 | /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/lib/libsoup-2.4.so.1.11.0 @ 0x45da4 */
                                                                 | #include <stdint.h>
                                                                 |  
    ; (fcn) fcn.00045da4 ()                                      | void fcn_00045da4 (int16_t arg_50h, int16_t arg_54h, int16_t arg1, int16_t arg2, int16_t arg3, uint32_t arg4) {
                                                                 |     int16_t var_0h;
                                                                 |     int16_t var_ch;
                                                                 |     int16_t var_10h;
                                                                 |     int16_t var_14h;
                                                                 |     int16_t var_18h;
                                                                 |     int16_t var_1ch;
                                                                 |     int16_t var_20h;
                                                                 |     int16_t var_24h;
                                                                 |     r0 = arg1;
                                                                 |     r1 = arg2;
                                                                 |     r2 = arg3;
                                                                 |     r3 = arg4;
    0x00045da4 svcmi 0xf0e92d                                    |     __asm ("svcmi aav.0x000000ff");
    0x00045da8 mov r7, r1                                        |     r7 = r1;
    0x00045daa ldr.w r1, [pc, 0x424]                             |     r1 = *(0x000461d0);
    0x00045dae mov r6, r2                                        |     r6 = r2;
    0x00045db0 sub sp, 0x2c                                      |     
    0x00045db2 ldr.w r2, [pc, 0x420]                             |     
    0x00045db6 add r1, pc                                        |     r1 += pc;
    0x00045db8 ldr.w fp, [sp, 0x50]                              |     fp = *(arg_50h);
    0x00045dbc ldr r2, [r1, r2]                                  |     r2 = *((r1 + r2));
    0x00045dbe ldr r2, [r2]                                      |     r2 = *(0x461d6);
    0x00045dc0 str r2, [sp, 0x24]                                |     var_24h = r2;
    0x00045dc2 mov.w r2, 0                                       |     r2 = 0;
    0x00045dc6 ldr.w r2, [pc, 0x410]                             |     r2 = *(0x000461d8);
    0x00045dca add r2, pc                                        |     r2 += pc;
    0x00045dcc str r2, [sp, 0x18]                                |     var_18h = r2;
    0x00045dce ldr r2, [sp, 0x54]                                |     r2 = *(arg_54h);
    0x00045dd0 str r2, [sp, 0x10]                                |     var_10h = r2;
    0x00045dd2 cmp r3, 0                                         |     
                                                                 |     if (r3 == 0) {
    0x00045dd4 beq 0x45eba                                       |         goto label_23;
                                                                 |     }
    0x00045dd6 mov r8, r3                                        |     r8 = r3;
    0x00045dd8 ldr r3, [r3, 4]                                   |     r3 = *((r3 + 4));
    0x00045dda cmp r3, 0                                         |     
                                                                 |     if (r3 == 0) {
    0x00045ddc beq 0x45eba                                       |         goto label_23;
                                                                 |     }
    0x00045dde cmp r6, 0                                         |     
                                                                 |     if (r6 == 0) {
    0x00045de0 beq.w 0x46002                                     |         goto label_24;
                                                                 |     }
                                                                 | label_9:
    0x00045de4 mov r0, r7                                        |     r0 = r7;
    0x00045de6 blx 0x1460c                                       |     fcn_0001460c ();
    0x00045dea str r0, [sp, 0x1c]                                |     var_1ch = r0;
    0x00045dec cmp r0, 0                                         |     
                                                                 |     if (r0 == 0) {
    0x00045dee beq.w 0x461aa                                     |         goto label_25;
                                                                 |     }
    0x00045df2 ldr r3, [pc, 0x3e8]                               |     r3 = *(0x461de);
    0x00045df4 mov.w sl, 0                                       |     sl = 0;
    0x00045df8 ldr r2, [sp, 0x18]                                |     r2 = var_18h;
    0x00045dfa ldr r3, [r2, r3]                                  |     r3 = *((r2 + r3));
    0x00045dfc ldr r5, [r3]                                      |     r5 = *(0x461de);
                                                                 | label_11:
    0x00045dfe ldr.w sb, [sp, 0x1c]                              |     sb = var_1ch;
    0x00045e02 ldr r3, [pc, 0x3dc]                               |     
    0x00045e04 str r6, [sp, 0xc]                                 |     var_ch = r6;
    0x00045e06 mov r7, sb                                        |     r7 = sb;
    0x00045e08 add r3, pc                                        |     r3 = 0x8bfee;
    0x00045e0a str r3, [sp, 0x14]                                |     var_14h = r3;
                                                                 | label_0:
    0x00045e0c ldr r4, [r7]                                      |     r4 = *(r7);
    0x00045e0e ldrb r3, [r4]                                     |     r3 = *(r4);
    0x00045e10 ldrh.w r2, [r5, r3, lsl 1]                        |     offset_0 = r3 << 1;
                                                                 |     r2 = *((r5 + offset_0));
    0x00045e14 lsls r0, r2, 0x17                                 |     r0 = r2 << 0x17;
                                                                 |     if (r0 >= r2) {
    0x00045e16 bpl 0x45e24                                       |         goto label_26;
                                                                 |     }
                                                                 |     do {
    0x00045e18 ldrb r3, [r4, 1]!                                 |         r3 = *((r4 += 1));
    0x00045e1c ldrh.w r2, [r5, r3, lsl 1]                        |         offset_1 = r3 << 1;
                                                                 |         r2 = *((r5 + offset_1));
    0x00045e20 lsls r1, r2, 0x17                                 |         r1 = r2 << 0x17;
    0x00045e22 bmi 0x45e18                                       |         
                                                                 |     } while (r1 < r2);
                                                                 | label_26:
    0x00045e24 cmp r3, 0                                         |     
                                                                 |     if (r3 == 0) {
    0x00045e26 beq.w 0x460e8                                     |         goto label_27;
                                                                 |     }
    0x00045e2a movs r1, 0x3b                                     |     r1 = 0x3b;
    0x00045e2c mov r0, r4                                        |     r0 = r4;
    0x00045e2e blx 0x12ef0                                       |     r0 = fcn_00012ef0 ();
    0x00045e32 mov r6, r0                                        |     r6 = r0;
    0x00045e34 cmp r0, 0                                         |     
                                                                 |     if (r0 == 0) {
    0x00045e36 beq.w 0x45f5e                                     |         goto label_28;
                                                                 |     }
                                                                 | label_3:
    0x00045e3a cmp r4, r0                                        |     
                                                                 |     if (r4 >= r0) {
    0x00045e3c bhs 0x45e58                                       |         goto label_2;
                                                                 |     }
    0x00045e3e mov r3, r0                                        |     r3 = r0;
    0x00045e40 b 0x45e48                                         |     
                                                                 |     while (r2 < r2) {
    0x00045e42 cmp r4, r3                                        |         
                                                                 |         if (r4 == r3) {
    0x00045e44 beq.w 0x45f5a                                     |             goto label_29;
                                                                 |         }
    0x00045e48 mov r0, r3                                        |         r0 = r3;
    0x00045e4a ldrb r3, [r3, -0x1]                               |         r3 = *((r3 - 0x1));
    0x00045e4e ldrh.w r2, [r5, r3, lsl 1]                        |         offset_2 = r3 << 1;
                                                                 |         r2 = *((r5 + offset_2));
    0x00045e52 subs r3, r0, 1                                    |         r3 = r0 - 1;
    0x00045e54 lsls r2, r2, 0x17                                 |         r2 <<= 0x17;
    0x00045e56 bmi 0x45e42                                       |         
                                                                 |     }
                                                                 | label_2:
    0x00045e58 mov.w r3, 0                                       |     r3 = 0;
    0x00045e5c strb r3, [r0]                                     |     *(r0) = r3;
    0x00045e5e cmp.w sl, 0                                       |     
                                                                 |     if (sl != 0) {
    0x00045e62 beq 0x45e72                                       |         
    0x00045e64 mov r1, r4                                        |         r1 = r4;
    0x00045e66 mov r0, sl                                        |         r0 = sl;
    0x00045e68 blx 0x14758                                       |         r0 = fcn_00014758 ();
    0x00045e6c cmp r0, 0                                         |         
                                                                 |         if (r0 == 0) {
    0x00045e6e beq.w 0x4611a                                     |             goto label_30;
                                                                 |         }
                                                                 |     }
    0x00045e72 ldr r2, [sp, 0x14]                                |     r2 = var_14h;
    0x00045e74 add r3, sp, 0x20                                  |     r3 += var_20h;
    0x00045e76 mov r1, r4                                        |     r1 = r4;
    0x00045e78 mov r0, r8                                        |     r0 = r8;
    0x00045e7a blx 0x149c4                                       |     r0 = g_file_get_contents ();
    0x00045e7e cmp r0, 0                                         |     
                                                                 |     if (r0 != 0) {
    0x00045e80 bne 0x45efc                                       |         goto label_31;
                                                                 |     }
    0x00045e82 ldr r3, [sp, 0xc]                                 |     r3 = var_ch;
    0x00045e84 cmp r3, 0                                         |     
                                                                 |     if (r3 == 0) {
    0x00045e86 beq.w 0x45fc8                                     |         goto label_32;
                                                                 |     }
                                                                 | label_1:
    0x00045e8a ldr r7, [r7, 4]                                   |     r7 = *((r7 + 4));
    0x00045e8c cmp r7, 0                                         |     
                                                                 |     if (r7 != 0) {
    0x00045e8e bne 0x45e0c                                       |         goto label_0;
                                                                 |     }
                                                                 | label_12:
    0x00045e90 ldr r0, [sp, 0x1c]                                |     r0 = var_1ch;
    0x00045e92 blx 0x14804                                       |     fcn_00014804 ();
    0x00045e96 cmp.w sl, 0                                       |     
                                                                 |     if (sl != 0) {
    0x00045e9a beq 0x45ea2                                       |         
    0x00045e9c mov r0, sl                                        |         r0 = sl;
    0x00045e9e blx 0x12a5c                                       |         fcn_00012a5c ();
                                                                 |     }
                                                                 | label_20:
    0x00045ea2 cmp.w fp, 0                                       |     
                                                                 |     if (fp != 0) {
    0x00045ea6 beq 0x45ebc                                       |         
    0x00045ea8 ldr.w r0, [fp]                                    |         r0 = *(fp);
    0x00045eac blx 0x1487c                                       |         r0 = fcn_0001487c ();
    0x00045eb0 mov r3, r0                                        |         r3 = r0;
    0x00045eb2 movs r0, 1                                        |         r0 = 1;
    0x00045eb4 str.w r3, [fp]                                    |         __asm ("str.w r3, [fp]");
    0x00045eb8 b 0x45ebe                                         |         goto label_6;
                                                                 |         if (r6 == 0) {
                                                                 | label_23:
    0x00045eba cbz r6, 0x45eda                                   |             goto label_33;
                                                                 |         }
                                                                 |     }
    0x00045ebc movs r0, 1                                        |     r0 = 1;
                                                                 |     do {
                                                                 | label_6:
    0x00045ebe ldr r2, [pc, 0x324]                               |         
    0x00045ec0 ldr r3, [pc, 0x310]                               |         r3 = *(0x461d4);
    0x00045ec2 add r2, pc                                        |         r2 = 0x8c0ac;
    0x00045ec4 ldr r3, [r2, r3]                                  |         r3 = *(0x8c0ac);
    0x00045ec6 ldr r2, [r3]                                      |         r2 = *(0x8c0ac);
    0x00045ec8 ldr r3, [sp, 0x24]                                |         r3 = var_24h;
    0x00045eca eors r2, r3                                       |         r2 ^= r3;
    0x00045ecc mov.w r3, 0                                       |         r3 = 0;
                                                                 |         if (r2 != r3) {
    0x00045ed0 bne.w 0x461cc                                     |             goto label_34;
                                                                 |         }
    0x00045ed4 add sp, 0x2c                                      |         
    0x00045ed6 pop.w {r4, r5, r6, r7, r8, sb, sl, fp, pc}        |         
                                                                 | label_33:
    0x00045eda blx 0x12fc8                                       |         fcn_00012fc8 ();
    0x00045ede ldr r1, [pc, 0x308]                               |         
    0x00045ee0 mov r4, r0                                        |         r4 = r0;
    0x00045ee2 ldr r0, [pc, 0x308]                               |         
    0x00045ee4 add r1, pc                                        |         r1 = 0x8c0d2;
    0x00045ee6 add r0, pc                                        |         r0 = 0x8c0d8;
    0x00045ee8 blx 0x151c0                                       |         fcn_000151c0 ();
    0x00045eec movs r2, 2                                        |         r2 = 2;
    0x00045eee mov r3, r0                                        |         r3 = r0;
    0x00045ef0 mov r1, r4                                        |         r1 = r4;
    0x00045ef2 ldr r0, [sp, 0x10]                                |         r0 = var_10h;
    0x00045ef4 blx 0x14ab4                                       |         fcn_00014ab4 ();
    0x00045ef8 mov r0, r6                                        |         r0 = r6;
    0x00045efa b 0x45ebe                                         |         
                                                                 |     } while (1);
                                                                 | label_31:
    0x00045efc ldr r1, [sp, 0xc]                                 |     r1 = var_ch;
    0x00045efe cmp.w fp, 0                                       |     
    0x00045f02 ite ne                                            |     
                                                                 |     if (fp == 0) {
    0x00045f04 movne r1, 0                                       |         r1 = 0;
                                                                 |     }
                                                                 |     if (fp != 0) {
    0x00045f06 andeq r1, r1, 1                                   |         r1 &= 1;
                                                                 |     }
                                                                 |     if (r1 == 0) {
    0x00045f0a cbz r1, 0x45f68                                   |         goto label_35;
                                                                 |     }
    0x00045f0c cmp r6, 0                                         |     
                                                                 |     if (r6 == 0) {
    0x00045f0e beq 0x45e8a                                       |         goto label_1;
                                                                 |     }
    0x00045f10 ldr r2, [sp, 0x20]                                |     r2 = var_20h;
    0x00045f12 movs r1, 0                                        |     r1 = 0;
    0x00045f14 ldr.w r3, [r8]                                    |     r3 = *(r8);
    0x00045f18 ldr.w r3, [r3, r2, lsl 2]                         |     offset_3 = r2 << 2;
                                                                 |     r3 = *((r3 + offset_3));
    0x00045f1c ldr r0, [r3]                                      |     r0 = *(r3);
    0x00045f1e blx 0x13678                                       |     r0 = fcn_00013678 ();
    0x00045f22 mov sb, r0                                        |     sb = r0;
                                                                 | label_4:
    0x00045f24 adds r0, r6, 1                                    |     r0 = r6 + 1;
    0x00045f26 blx 0x13630                                       |     r0 = fcn_00013630 ();
    0x00045f2a mov r6, r0                                        |     r6 = r0;
    0x00045f2c cmp r0, 0                                         |     
                                                                 |     if (r0 == 0) {
    0x00045f2e beq.w 0x4617a                                     |         goto label_36;
                                                                 |     }
    0x00045f32 ldr r1, [sp, 0xc]                                 |     r1 = var_ch;
    0x00045f34 mov r2, r0                                        |     r2 = r0;
    0x00045f36 ldr r3, [sp, 0x10]                                |     r3 = var_10h;
    0x00045f38 mov r0, sb                                        |     r0 = sb;
    0x00045f3a adds r1, 1                                        |     r1++;
    0x00045f3c blx 0x15424                                       |     r0 = fcn_00015424 ();
    0x00045f40 cmp r0, 0                                         |     
                                                                 |     if (r0 == 0) {
    0x00045f42 beq.w 0x461b2                                     |         goto label_37;
                                                                 |     }
    0x00045f46 mov r0, r6                                        |     r0 = r6;
    0x00045f48 blx 0x12a5c                                       |     fcn_00012a5c ();
                                                                 | label_5:
    0x00045f4c cmp.w fp, 0                                       |     
                                                                 |     if (fp != 0) {
    0x00045f50 bne 0x45e8a                                       |         goto label_1;
                                                                 |     }
    0x00045f52 mov r0, sb                                        |     r0 = sb;
    0x00045f54 blx 0x12cc4                                       |     fcn_00012cc4 ();
    0x00045f58 b 0x45e8a                                         |     goto label_1;
                                                                 | label_29:
    0x00045f5a mov r0, r4                                        |     r0 = r4;
    0x00045f5c b 0x45e58                                         |     goto label_2;
                                                                 | label_28:
    0x00045f5e mov r0, r4                                        |     r0 = r4;
    0x00045f60 blx 0x13ca4                                       |     fcn_00013ca4 ();
    0x00045f64 add r0, r4                                        |     r0 += r4;
    0x00045f66 b 0x45e3a                                         |     goto label_3;
                                                                 | label_35:
    0x00045f68 ldr r2, [sp, 0x20]                                |     r2 = var_20h;
    0x00045f6a ldr.w r3, [r8]                                    |     r3 = *(r8);
    0x00045f6e ldr.w r3, [r3, r2, lsl 2]                         |     offset_4 = r2 << 2;
                                                                 |     r3 = *((r3 + offset_4));
    0x00045f72 ldr r0, [r3]                                      |     r0 = *(r3);
    0x00045f74 blx 0x13678                                       |     r0 = fcn_00013678 ();
    0x00045f78 mov sb, r0                                        |     sb = r0;
    0x00045f7a cmp.w fp, 0                                       |     
                                                                 |     if (fp != 0) {
    0x00045f7e beq 0x45f8e                                       |         
    0x00045f80 ldr.w r0, [fp]                                    |         r0 = *(fp);
    0x00045f84 mov r1, sb                                        |         r1 = sb;
    0x00045f86 blx 0x14ad8                                       |         g_socket_client_event_get_type ();
    0x00045f8a str.w r0, [fp]                                    |         __asm ("str.w r0, [fp]");
                                                                 |     }
    0x00045f8e cmp r6, 0                                         |     
                                                                 |     if (r6 != 0) {
    0x00045f90 bne 0x45f24                                       |         goto label_4;
                                                                 |     }
    0x00045f92 ldrd r1, r3, [sp, 0xc]                            |     __asm ("ldrd r1, r3, [var_10h]");
    0x00045f96 mov r2, r6                                        |     r2 = r6;
    0x00045f98 mov r0, sb                                        |     r0 = sb;
    0x00045f9a adds r1, 1                                        |     r1++;
    0x00045f9c blx 0x15424                                       |     r0 = fcn_00015424 ();
    0x00045fa0 cmp r0, 0                                         |     
                                                                 |     if (r0 != 0) {
    0x00045fa2 bne 0x45f4c                                       |         goto label_5;
                                                                 |     }
    0x00045fa4 mov r8, sb                                        |     r8 = sb;
                                                                 | label_21:
    0x00045fa6 cmp.w fp, 0                                       |     
                                                                 |     if (fp != 0) {
    0x00045faa bne 0x45fec                                       |         goto label_16;
                                                                 |     }
                                                                 | label_19:
    0x00045fac mov r0, r8                                        |     r0 = r8;
    0x00045fae blx 0x12cc4                                       |     fcn_00012cc4 ();
                                                                 |     do {
                                                                 | label_17:
    0x00045fb2 cmp.w sl, 0                                       |         
                                                                 |         if (sl != 0) {
    0x00045fb6 beq 0x45fbe                                       |             
                                                                 | label_7:
    0x00045fb8 mov r0, sl                                        |             r0 = sl;
    0x00045fba blx 0x12a5c                                       |             fcn_00012a5c ();
                                                                 |         }
                                                                 | label_8:
    0x00045fbe ldr r0, [sp, 0x1c]                                |         r0 = var_1ch;
    0x00045fc0 blx 0x14804                                       |         fcn_00014804 ();
    0x00045fc4 movs r0, 0                                        |         r0 = 0;
    0x00045fc6 b 0x45ebe                                         |         goto label_6;
                                                                 | label_32:
    0x00045fc8 blx 0x12fc8                                       |         fcn_00012fc8 ();
    0x00045fcc ldr r1, [pc, 0x220]                               |         
    0x00045fce mov r4, r0                                        |         r4 = r0;
    0x00045fd0 ldr r0, [pc, 0x220]                               |         
    0x00045fd2 add r1, pc                                        |         r1 = 0x8c1c6;
    0x00045fd4 add r0, pc                                        |         r0 = 0x8c1cc;
    0x00045fd6 blx 0x151c0                                       |         fcn_000151c0 ();
    0x00045fda mov r1, r4                                        |         r1 = r4;
    0x00045fdc mov r3, r0                                        |         r3 = r0;
    0x00045fde movs r2, 2                                        |         r2 = 2;
    0x00045fe0 ldr r0, [sp, 0x10]                                |         r0 = var_10h;
    0x00045fe2 blx 0x14ab4                                       |         fcn_00014ab4 ();
    0x00045fe6 cmp.w fp, 0                                       |         
    0x00045fea beq 0x45fb2                                       |         
                                                                 |     } while (fp == 0);
                                                                 | label_16:
    0x00045fec ldr r3, [pc, 0x208]                               |     r3 = *(0x461f8);
    0x00045fee ldr r2, [sp, 0x18]                                |     r2 = var_18h;
    0x00045ff0 ldr.w r0, [fp]                                    |     r0 = *(fp);
    0x00045ff4 ldr r1, [r2, r3]                                  |     r1 = *((r2 + r3));
    0x00045ff6 blx 0x13094                                       |     fcn_00013094 ();
    0x00045ffa cmp.w sl, 0                                       |     
                                                                 |     if (sl != 0) {
    0x00045ffe bne 0x45fb8                                       |         goto label_7;
                                                                 |     }
    0x00046000 b 0x45fbe                                         |     goto label_8;
                                                                 | label_24:
    0x00046002 ldr r1, [pc, 0x1f8]                               |     
    0x00046004 ldr r0, [r0, 0x1c]                                |     r0 = *(arg_50hx1c);
    0x00046006 add r1, pc                                        |     r1 = 0x8c208;
    0x00046008 blx 0x12954                                       |     r0 = fcn_00012954 ();
    0x0004600c mov sl, r0                                        |     sl = r0;
    0x0004600e cmp r0, 0                                         |     
                                                                 |     if (r0 == 0) {
    0x00046010 beq.w 0x46160                                     |         goto label_38;
                                                                 |     }
    0x00046014 ldrb r3, [r0]                                     |     r3 = *(r0);
    0x00046016 cmp r3, 0                                         |     
                                                                 |     if (r3 == 0) {
    0x00046018 beq.w 0x45de4                                     |         goto label_9;
                                                                 |     }
    0x0004601c blx 0x1460c                                       |     fcn_0001460c ();
    0x00046020 str r0, [sp, 0xc]                                 |     var_ch = r0;
    0x00046022 cmp r0, 0                                         |     
                                                                 |     if (r0 == 0) {
    0x00046024 beq.w 0x46174                                     |         goto label_39;
                                                                 |     }
    0x00046028 ldr r1, [sp, 0x18]                                |     r1 = var_18h;
    0x0004602a mov r2, r7                                        |     r2 = r7;
    0x0004602c ldr r3, [pc, 0x1ac]                               |     r3 = *(0x461dc);
    0x0004602e mov r7, r6                                        |     r7 = r6;
    0x00046030 mov sb, r7                                        |     sb = r7;
    0x00046032 mov r6, r0                                        |     r6 = r0;
    0x00046034 mov sl, r2                                        |     sl = r2;
    0x00046036 ldr r3, [r1, r3]                                  |     r3 = *((r1 + r3));
    0x00046038 str.w r8, [sp, 0x14]                              |     __asm ("str.w r8, [var_14h]");
    0x0004603c mov r8, r1                                        |     r8 = r1;
    0x0004603e ldr r5, [r3]                                      |     r5 = *(0x461dc);
                                                                 | label_10:
    0x00046040 ldr r4, [r6]                                      |     r4 = *(r6);
    0x00046042 ldrb r3, [r4]                                     |     r3 = *(r4);
    0x00046044 ldrh.w r2, [r5, r3, lsl 1]                        |     offset_5 = r3 << 1;
                                                                 |     r2 = *((r5 + offset_5));
    0x00046048 lsls r0, r2, 0x17                                 |     r0 = r2 << 0x17;
                                                                 |     if (r0 >= r2) {
    0x0004604a bpl 0x46058                                       |         goto label_40;
                                                                 |     }
                                                                 |     do {
    0x0004604c ldrb r3, [r4, 1]!                                 |         r3 = *((r4 += 1));
    0x00046050 ldrh.w r2, [r5, r3, lsl 1]                        |         offset_6 = r3 << 1;
                                                                 |         r2 = *((r5 + offset_6));
    0x00046054 lsls r1, r2, 0x17                                 |         r1 = r2 << 0x17;
    0x00046056 bmi 0x4604c                                       |         
                                                                 |     } while (r1 < r2);
                                                                 |     if (r3 != 0) {
                                                                 | label_40:
    0x00046058 cbnz r3, 0x46082                                  |         goto label_41;
                                                                 |     }
                                                                 | label_13:
    0x0004605a ldr r6, [r6, 4]                                   |     r6 = *((r6 + 4));
    0x0004605c cmp r6, 0                                         |     
                                                                 |     if (r6 != 0) {
    0x0004605e bne 0x46040                                       |         goto label_10;
                                                                 |     }
    0x00046060 mov r3, sl                                        |     r3 = sl;
    0x00046062 ldr r0, [sp, 0xc]                                 |     r0 = var_ch;
    0x00046064 mov sl, r7                                        |     sl = r7;
    0x00046066 mov r7, r3                                        |     r7 = r3;
    0x00046068 ldr.w r8, [sp, 0x14]                              |     r8 = var_14h;
    0x0004606c mov r6, sb                                        |     r6 = sb;
    0x0004606e blx 0x14804                                       |     fcn_00014804 ();
    0x00046072 mov r0, r7                                        |     r0 = r7;
    0x00046074 blx 0x1460c                                       |     fcn_0001460c ();
    0x00046078 str r0, [sp, 0x1c]                                |     var_1ch = r0;
    0x0004607a cmp r0, 0                                         |     
                                                                 |     if (r0 != 0) {
    0x0004607c bne.w 0x45dfe                                     |         goto label_11;
                                                                 |     }
    0x00046080 b 0x45e90                                         |     goto label_12;
                                                                 | label_41:
    0x00046082 movs r1, 0x3b                                     |     r1 = 0x3b;
    0x00046084 mov r0, r4                                        |     r0 = r4;
    0x00046086 blx 0x12ef0                                       |     r0 = fcn_00012ef0 ();
                                                                 |     if (r0 == 0) {
    0x0004608a cbz r0, 0x460c2                                   |         goto label_42;
                                                                 |     }
                                                                 | label_14:
    0x0004608c cmp r4, r0                                        |     
                                                                 |     if (r4 >= r0) {
    0x0004608e bhs 0x460a8                                       |         goto label_43;
                                                                 |     }
    0x00046090 mov r3, r0                                        |     r3 = r0;
    0x00046092 b 0x46098                                         |     
                                                                 |     while (r2 < r2) {
    0x00046094 cmp r4, r3                                        |         
                                                                 |         if (r4 == r3) {
    0x00046096 beq 0x460be                                       |             goto label_44;
                                                                 |         }
    0x00046098 mov r0, r3                                        |         r0 = r3;
    0x0004609a ldrb r3, [r3, -0x1]                               |         r3 = *((r3 - 0x1));
    0x0004609e ldrh.w r2, [r5, r3, lsl 1]                        |         offset_7 = r3 << 1;
                                                                 |         r2 = *((r5 + offset_7));
    0x000460a2 subs r3, r0, 1                                    |         r3 = r0 - 1;
    0x000460a4 lsls r2, r2, 0x17                                 |         r2 <<= 0x17;
    0x000460a6 bmi 0x46094                                       |         
                                                                 |     }
                                                                 |     do {
                                                                 | label_43:
    0x000460a8 strb.w sb, [r0]                                   |         *(r0) = sb;
                                                                 |         if (r7 == 0) {
    0x000460ac cbz r7, 0x460cc                                   |             goto label_45;
                                                                 |         }
                                                                 | label_15:
    0x000460ae mov r0, r4                                        |         r0 = r4;
    0x000460b0 blx 0x12dc0                                       |         r0 = fcn_00012dc0 ();
    0x000460b4 mov r1, r0                                        |         r1 = r0;
    0x000460b6 mov r0, r7                                        |         r0 = r7;
    0x000460b8 blx 0x129f8                                       |         fcn_000129f8 ();
    0x000460bc b 0x4605a                                         |         goto label_13;
                                                                 | label_44:
    0x000460be mov r0, r4                                        |         r0 = r4;
    0x000460c0 b 0x460a8                                         |         
                                                                 |     } while (1);
                                                                 | label_42:
    0x000460c2 mov r0, r4                                        |     r0 = r4;
    0x000460c4 blx 0x13ca4                                       |     fcn_00013ca4 ();
    0x000460c8 add r0, r4                                        |     r0 += r4;
    0x000460ca b 0x4608c                                         |     goto label_14;
                                                                 | label_45:
    0x000460cc ldr r2, [pc, 0x130]                               |     r2 = *(0x46200);
    0x000460ce mov r3, r7                                        |     r3 = r7;
    0x000460d0 ldr r1, [pc, 0x130]                               |     r1 = *(0x46204);
    0x000460d2 ldr r0, [pc, 0x134]                               |     r0 = *(0x4620a);
    0x000460d4 ldr.w r2, [r8, r2]                                |     r2 = *((r8 + r2));
    0x000460d8 ldr.w r1, [r8, r1]                                |     r1 = *((r8 + r1));
    0x000460dc ldr.w r0, [r8, r0]                                |     r0 = *((r8 + r0));
    0x000460e0 blx 0x13ac4                                       |     r0 = g_input_stream_close ();
    0x000460e4 mov r7, r0                                        |     r7 = r0;
    0x000460e6 b 0x460ae                                         |     goto label_15;
                                                                 | label_27:
    0x000460e8 ldr r6, [sp, 0xc]                                 |     r6 = var_ch;
    0x000460ea blx 0x12fc8                                       |     r0 = fcn_00012fc8 ();
    0x000460ee mov r4, r0                                        |     r4 = r0;
                                                                 |     if (r6 == 0) {
    0x000460f0 cbz r6, 0x46150                                   |         goto label_46;
                                                                 |     }
    0x000460f2 ldr r1, [pc, 0x118]                               |     
    0x000460f4 ldr r0, [pc, 0x118]                               |     
    0x000460f6 add r1, pc                                        |     r1 = 0x8c308;
    0x000460f8 add r0, pc                                        |     r0 = 0x8c30c;
    0x000460fa blx 0x151c0                                       |     r0 = fcn_000151c0 ();
    0x000460fe mov r3, r0                                        |     r3 = r0;
                                                                 | label_18:
    0x00046100 ldr r2, [pc, 0x110]                               |     
    0x00046102 mov r1, r4                                        |     r1 = r4;
    0x00046104 ldr r0, [sp, 0x10]                                |     r0 = var_10h;
    0x00046106 add r2, pc                                        |     r2 = 0x8c31e;
    0x00046108 str r2, [sp]                                      |     *(sp) = r2;
    0x0004610a movs r2, 2                                        |     r2 = 2;
    0x0004610c blx 0x14014                                       |     fcn_00014014 ();
    0x00046110 cmp.w fp, 0                                       |     
                                                                 |     if (fp != 0) {
    0x00046114 bne.w 0x45fec                                     |         goto label_16;
                                                                 |     }
    0x00046118 b 0x45fb2                                         |     goto label_17;
                                                                 | label_30:
    0x0004611a blx 0x12fc8                                       |     fcn_00012fc8 ();
    0x0004611e ldr r1, [pc, 0xf8]                                |     
    0x00046120 mov r4, r0                                        |     r4 = r0;
    0x00046122 ldr r0, [pc, 0xf8]                                |     
    0x00046124 add r1, pc                                        |     r1 = 0x8c342;
    0x00046126 add r0, pc                                        |     r0 = 0x8c348;
    0x00046128 blx 0x151c0                                       |     fcn_000151c0 ();
    0x0004612c mov r1, r4                                        |     r1 = r4;
    0x0004612e mov r3, r0                                        |     r3 = r0;
    0x00046130 movs r2, 2                                        |     r2 = 2;
    0x00046132 ldr r0, [sp, 0x10]                                |     r0 = var_10h;
    0x00046134 blx 0x14ab4                                       |     fcn_00014ab4 ();
    0x00046138 cmp.w fp, 0                                       |     
                                                                 |     if (fp == 0) {
    0x0004613c beq.w 0x45fb8                                     |         goto label_7;
                                                                 |     }
    0x00046140 ldr r3, [pc, 0xb4]                                |     r3 = *(0x461f8);
    0x00046142 ldr r2, [sp, 0x18]                                |     r2 = var_18h;
    0x00046144 ldr.w r0, [fp]                                    |     r0 = *(fp);
    0x00046148 ldr r1, [r2, r3]                                  |     r1 = *((r2 + r3));
    0x0004614a blx 0x13094                                       |     fcn_00013094 ();
    0x0004614e b 0x45fb8                                         |     goto label_7;
                                                                 | label_46:
    0x00046150 ldr r1, [pc, 0xcc]                                |     
    0x00046152 ldr r0, [pc, 0xd0]                                |     
    0x00046154 add r1, pc                                        |     r1 = 0x8c378;
    0x00046156 add r0, pc                                        |     r0 = 0x8c380;
    0x00046158 blx 0x151c0                                       |     r0 = fcn_000151c0 ();
    0x0004615c mov r3, r0                                        |     r3 = r0;
    0x0004615e b 0x46100                                         |     goto label_18;
                                                                 | label_38:
    0x00046160 mov r0, r7                                        |     r0 = r7;
    0x00046162 blx 0x1460c                                       |     fcn_0001460c ();
    0x00046166 str r0, [sp, 0x1c]                                |     var_1ch = r0;
                                                                 |     if (r0 == 0) {
    0x00046168 cbz r0, 0x461aa                                   |         goto label_25;
                                                                 |     }
    0x0004616a ldr r3, [pc, 0x70]                                |     r3 = *(0x461de);
    0x0004616c ldr r2, [sp, 0x18]                                |     r2 = var_18h;
    0x0004616e ldr r3, [r2, r3]                                  |     r3 = *((r2 + r3));
    0x00046170 ldr r5, [r3]                                      |     r5 = *(0x461de);
    0x00046172 b 0x45dfe                                         |     goto label_11;
                                                                 | label_39:
    0x00046174 blx 0x14804                                       |     fcn_00014804 ();
    0x00046178 b 0x45de4                                         |     goto label_9;
                                                                 | label_36:
    0x0004617a ldr r6, [sp, 0xc]                                 |     r6 = var_ch;
    0x0004617c mov r8, sb                                        |     r8 = sb;
    0x0004617e blx 0x12fc8                                       |     r0 = fcn_00012fc8 ();
    0x00046182 mov r5, r0                                        |     r5 = r0;
                                                                 |     if (r6 == 0) {
    0x00046184 cbz r6, 0x461bc                                   |         goto label_47;
                                                                 |     }
    0x00046186 ldr r1, [pc, 0xa0]                                |     
    0x00046188 ldr r0, [pc, 0xa0]                                |     
    0x0004618a add r1, pc                                        |     r1 = 0x8c3b8;
    0x0004618c add r0, pc                                        |     r0 = 0x8c3bc;
    0x0004618e blx 0x151c0                                       |     r0 = fcn_000151c0 ();
    0x00046192 mov r3, r0                                        |     r3 = r0;
                                                                 | label_22:
    0x00046194 ldr r0, [sp, 0x10]                                |     r0 = var_10h;
    0x00046196 mov r1, r5                                        |     r1 = r5;
    0x00046198 movs r2, 2                                        |     r2 = 2;
    0x0004619a str r4, [sp]                                      |     *(sp) = r4;
    0x0004619c blx 0x14014                                       |     fcn_00014014 ();
    0x000461a0 cmp.w fp, 0                                       |     
                                                                 |     if (fp != 0) {
    0x000461a4 bne.w 0x45fec                                     |         goto label_16;
                                                                 |     }
    0x000461a8 b 0x45fac                                         |     goto label_19;
                                                                 | label_25:
    0x000461aa movs r0, 0                                        |     r0 = 0;
    0x000461ac blx 0x14804                                       |     fcn_00014804 ();
    0x000461b0 b 0x45ea2                                         |     goto label_20;
                                                                 | label_37:
    0x000461b2 mov r0, r6                                        |     r0 = r6;
    0x000461b4 mov r8, sb                                        |     r8 = sb;
    0x000461b6 blx 0x12a5c                                       |     fcn_00012a5c ();
    0x000461ba b 0x45fa6                                         |     goto label_21;
                                                                 | label_47:
    0x000461bc ldr r1, [pc, 0x70]                                |     
    0x000461be ldr r0, [pc, 0x74]                                |     
    0x000461c0 add r1, pc                                        |     r1 = 0x8c3f4;
    0x000461c2 add r0, pc                                        |     r0 = 0x8c3fc;
    0x000461c4 blx 0x151c0                                       |     r0 = fcn_000151c0 ();
    0x000461c8 mov r3, r0                                        |     r3 = r0;
    0x000461ca b 0x46194                                         |     goto label_22;
                                                                 | label_34:
    0x000461cc blx 0x146cc                                       |     fcn_000146cc ();
    0x000461d0 strh r6, [r2, 0xe]                                |     *((r2 + 0xe)) = r6;
    0x000461d2 movs r2, r0                                       |     r2 = r0;
    0x000461d4 asrs r0, r0, 0x20                                 |     r0 >>= 0x20;
    0x000461d6 movs r0, r0                                       |     
    0x000461d8 strh r2, [r0, 0xe]                                |     *((r0 + 0xe)) = r2;
    0x000461da movs r2, r0                                       |     r2 = r0;
    0x000461dc asrs r0, r1, 0x20                                 |     r0 = r1 >> 0x20;
    0x000461de movs r0, r0                                       |     
    0x000461e0 mrc2 p15, 1, apsr_nzcv, c5, c15, 7                |     __asm ("mrc2 p15, 1, apsr_nzcv, c5, c15, 7");
    0x000461e4 strh r2, [r1, 6]                                  |     *((r1 + 6)) = r2;
    0x000461e6 movs r2, r0                                       |     r2 = r0;
    0x000461e8 adds r7, 0xd0                                     |     r7 += 0xd0;
    0x000461ea movs r1, r0                                       |     r1 = r0;
    0x000461ec pop {r1, r3, r5, pc}                              |     
                                                                 | }

[*] Function strcat used 1 times libsoup-2.4.so.1.11.0