[*] Binary protection state of fwmgr

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


[*] Function strcat tear down of fwmgr

    ; assembly                           | /* r2dec pseudo code output */
                                         | /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-80367616.squashfs_v4_le_extract/usr/sbin/fwmgr @ 0xa224 */
                                         | #include <stdint.h>
                                         |  
    ; (fcn) fcn.0000a224 ()              | void fcn_0000a224 (int16_t arg1, int16_t arg2) {
                                         |     int16_t var_0h;
                                         |     r0 = arg1;
                                         |     r1 = arg2;
    0x0000a224 invalid                   |     
    0x0000a228 sub sp, 0xc               |     
    0x0000a22a mov r5, r0                |     r5 = r0;
    0x0000a22c movw r1, 0x1ed            |     r1 = 0x1ed;
    0x0000a230 mov r0, r4                |     r0 = r4;
    0x0000a232 bl 0x11388                |     r0 = fcn_00011388 (r0, r1);
    0x0000a236 cmp r0, 0                 |     
                                         |     if (r0 >= 0) {
    0x0000a238 blt 0xa266                |         
    0x0000a23a ldr r2, [pc, 0x34]        |         
    0x0000a23c mov.w r3, 0x1000          |         r3 = 0x1000;
    0x0000a240 mov r1, r5                |         r1 = r5;
    0x0000a242 mov r0, r4                |         r0 = r4;
    0x0000a244 add r2, pc                |         r2 = 0x144ba;
    0x0000a246 str r2, [sp]              |         *(sp) = r2;
    0x0000a248 blx 0x3188                |         r0 = strcat_chk ()
    0x0000a24c cmp r0, 0                 |         
    0x0000a24e it ge                     |         
                                         |         if (r0 < 0) {
    0x0000a250 movge r0, 0               |             r0 = 0;
                                         |         }
                                         |         if (r0 >= 0) {
    0x0000a252 blt 0xa258                |             
    0x0000a254 add sp, 0xc               |             
    0x0000a256 pop {r4, r5, pc}          |             
                                         |         }
    0x0000a258 ldr r1, [pc, 0x18]        |         
    0x0000a25a mov r3, r5                |         r3 = r5;
    0x0000a25c mov r2, r4                |         r2 = r4;
    0x0000a25e movs r0, 2                |         r0 = 2;
    0x0000a260 add r1, pc                |         r1 = 0x144d8;
    0x0000a262 bl 0x10568                |         r0 = fcn_00010568 (r0, r1, r2);
                                         |     }
    0x0000a266 blx 0x317c                |     r0 = strncpy (r0, r1, r2);
    0x0000a26a ldr r0, [r0]              |     r0 = *(r0);
    0x0000a26c add sp, 0xc               |     
    0x0000a26e pop {r4, r5, pc}          |     
                                         | }
    ; assembly                               | /* r2dec pseudo code output */
                                             | /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-80367616.squashfs_v4_le_extract/usr/sbin/fwmgr @ 0xa278 */
                                             | #include <stdint.h>
                                             |  
    ; (fcn) fcn.0000a278 ()                  | void fcn_0000a278 (int16_t arg_178h, int16_t arg_1c0h, int16_t arg_218h) {
                                             |     int16_t var_5ch_2;
                                             |     int16_t var_a4h;
                                             |     int16_t var_0h_2;
                                             |     int16_t var_88h;
                                             |     int16_t var_64h;
    0x0000a278 invalid                       |     
    0x0000a27c strb r0, [r4, 0xb]            |     *((r4 + 0xb)) = r0;
    0x0000a27e ldr r3, [pc, 0xd8]            |     
    0x0000a280 push {r4, r5, r6, lr}         |     
    0x0000a282 sub sp, 0x68                  |     
    0x0000a284 ldr r4, [pc, 0xd4]            |     
    0x0000a286 add r1, pc                    |     r1 += pc;
    0x0000a288 ldr r0, [pc, 0xd4]            |     
    0x0000a28a ldr r3, [r1, r3]              |     r3 = *((r1 + r3));
    0x0000a28c add r4, pc                    |     r4 = 0x145ec;
    0x0000a28e ldr r5, [pc, 0xd4]            |     
    0x0000a290 mov r1, r4                    |     r1 = r4;
    0x0000a292 add r0, pc                    |     r0 = 0x145f6;
    0x0000a294 ldr r3, [r3]                  |     r3 = *(0xa35a);
    0x0000a296 str r3, [sp, 0x64]            |     var_64h = r3;
    0x0000a298 mov.w r3, 0                   |     r3 = 0;
    0x0000a29c add r5, pc                    |     r5 = 0x14606;
    0x0000a29e bl 0x9ff8                     |     r0 = fcn_00009ff8 (r0, r1, r2, r3);
    0x0000a2a2 cbz r0, 0xa2c4                |     
                                             |     while (r0 != 0) {
                                             | label_0:
    0x0000a2a4 blx 0x317c                    |         r0 = strncpy (r0, r1, r2);
    0x0000a2a8 ldr r4, [r0]                  |         r4 = *(r0);
                                             | label_1:
    0x0000a2aa ldr r2, [pc, 0xbc]            |         
    0x0000a2ac ldr r3, [pc, 0xa8]            |         r3 = *(0xa358);
    0x0000a2ae add r2, pc                    |         r2 = 0x1461c;
    0x0000a2b0 ldr r3, [r2, r3]              |         r3 = *(0x1461c);
    0x0000a2b2 ldr r2, [r3]                  |         r2 = *(0x1461c);
    0x0000a2b4 ldr r3, [sp, 0x64]            |         r3 = var_64h;
    0x0000a2b6 eors r2, r3                   |         r2 ^= r3;
    0x0000a2b8 mov.w r3, 0                   |         r3 = 0;
                                             |         if (r2 != r3) {
    0x0000a2bc bne 0xa350                    |             goto label_2;
                                             |         }
    0x0000a2be mov r0, r4                    |         r0 = r4;
    0x0000a2c0 add sp, 0x68                  |         
    0x0000a2c2 pop {r4, r5, r6, pc}          |         
    0x0000a2c4 ldr r0, [pc, 0xa4]            |         
    0x0000a2c6 movw r2, 0x1ed                |         r2 = 0x1ed;
    0x0000a2ca mov r1, r4                    |         r1 = r4;
    0x0000a2cc add r0, pc                    |         r0 = 0x1463c;
    0x0000a2ce bl 0x9ff8                     |         r0 = fcn_00009ff8 (r0, r1, r2, r3);
    0x0000a2d2 cmp r0, 0                     |         
    0x0000a2d4 bne 0xa2a4                    |         
                                             |     }
    0x0000a2d6 ldr r1, [pc, 0x98]            |     
    0x0000a2d8 ldr r0, [pc, 0x98]            |     
    0x0000a2da add r1, pc                    |     r1 = 0x14650;
    0x0000a2dc add r0, pc                    |     r0 = 0x14654;
    0x0000a2de bl 0xa224                     |     r0 = fcn_0000a224 (r0, r1);
    0x0000a2e2 cmp r0, 0                     |     
                                             |     if (r0 != 0) {
    0x0000a2e4 bne 0xa2a4                    |         goto label_0;
                                             |     }
    0x0000a2e6 ldr r1, [pc, 0x90]            |     
    0x0000a2e8 ldr r0, [pc, 0x90]            |     
    0x0000a2ea add r1, pc                    |     r1 = 0x14668;
    0x0000a2ec add r0, pc                    |     r0 = 0x1466c;
    0x0000a2ee bl 0xa224                     |     r0 = fcn_0000a224 (r0, r1);
    0x0000a2f2 mov r4, r0                    |     r4 = r0;
    0x0000a2f4 cmp r0, 0                     |     
                                             |     if (r0 != 0) {
    0x0000a2f6 bne 0xa2a4                    |         goto label_0;
                                             |     }
    0x0000a2f8 ldr r3, [pc, 0x84]            |     
    0x0000a2fa ldr r3, [r5, r3]              |     r3 = *((r5 + r3));
    0x0000a2fc ldr r3, [r3]                  |     r3 = *(0xa380);
    0x0000a2fe cmp r3, 0                     |     
                                             |     if (r3 != 0) {
    0x0000a300 bne 0xa2aa                    |         goto label_1;
                                             |     }
    0x0000a302 ldr r3, [pc, 0x80]            |     
    0x0000a304 movw r0, 0x10b                |     r0 = 0x10b;
    0x0000a308 ldr r3, [r5, r3]              |     r3 = *((r5 + r3));
    0x0000a30a ldr r3, [r3]                  |     
    0x0000a30c ldr r3, [r3, 0xc]             |     r3 = *(0xa392);
    0x0000a30e blx r3                        |     r0 = uint32_t (*r3)(uint32_t, uint32_t) (r0, r3);
    0x0000a310 cmp r0, 0                     |     
                                             |     if (r0 == 0) {
    0x0000a312 beq 0xa2aa                    |         goto label_1;
                                             |     }
    0x0000a314 ldr r5, [pc, 0x70]            |     
    0x0000a316 add r1, sp, 8                 |     r1 += var_88h;
    0x0000a318 add r5, pc                    |     r5 = 0x146a4;
    0x0000a31a mov r0, r5                    |     r0 = r5;
    0x0000a31c blx 0x2d9c                    |     r0 = fcn_00002d9c ();
                                             |     if (r0 != 0) {
    0x0000a320 cbz r0, 0xa326                |         
    0x0000a322 ldr r5, [pc, 0x68]            |         
    0x0000a324 add r5, pc                    |         r5 = 0x146b6;
                                             |     }
    0x0000a326 ldr r2, [pc, 0x68]            |     
    0x0000a328 mov.w r3, 0x1000              |     r3 = 0x1000;
    0x0000a32c ldr r6, [pc, 0x64]            |     
    0x0000a32e mov r0, r5                    |     r0 = r5;
    0x0000a330 add r2, pc                    |     r2 = 0x146c6;
    0x0000a332 add r6, pc                    |     r6 = 0x146ca;
    0x0000a334 str r2, [sp]                  |     *(sp) = r2;
    0x0000a336 mov r1, r6                    |     r1 = r6;
    0x0000a338 blx 0x3188                    |     r0 = strcat_chk ()
    0x0000a33c cmp r0, 0                     |     
                                             |     if (r0 >= 0) {
    0x0000a33e bge 0xa2aa                    |         goto label_1;
                                             |     }
    0x0000a340 ldr r1, [pc, 0x54]            |     
    0x0000a342 mov r3, r6                    |     r3 = r6;
    0x0000a344 mov r2, r5                    |     r2 = r5;
    0x0000a346 movs r0, 2                    |     r0 = 2;
    0x0000a348 add r1, pc                    |     r1 = 0x146e4;
    0x0000a34a bl 0x10568                    |     fcn_00010568 (r0, r1, r2);
    0x0000a34e b 0xa2a4                      |     goto label_0;
                                             | label_2:
    0x0000a350 blx 0x2eac                    |     socket (r0, r1, r2);
    0x0000a354 ldr r1, [sp, 0x218]           |     r1 = *(arg_218h);
    0x0000a356 movs r1, r0                   |     r1 = r0;
    0x0000a358 lsls r4, r2, 0xc              |     r4 = r2 << 0xc;
    0x0000a35a movs r0, r0                   |     
    0x0000a35c subs r4, r7, r0               |     r4 = r7 - r0;
    0x0000a35e movs r1, r0                   |     r1 = r0;
    0x0000a360 adds r2, r7, 0                |     r2 = r7 + 0;
    0x0000a362 movs r1, r0                   |     r1 = r0;
    0x0000a364 ldr r1, [sp, 0x1c0]           |     r1 = *(arg_1c0h);
    0x0000a366 movs r1, r0                   |     r1 = r0;
    0x0000a368 ldr r1, [sp, 0x178]           |     r1 = *(arg_178h);
    0x0000a36a movs r1, r0                   |     r1 = r0;
    0x0000a36c adds r0, r1, 0                |     r0 = r1 + 0;
    0x0000a36e movs r1, r0                   |     r1 = r0;
    0x0000a370 adds r6, r0, 0                |     r6 = r0 + 0;
    0x0000a372 movs r1, r0                   |     r1 = r0;
    0x0000a374 adds r4, r2, 0                |     r4 = r2 + 0;
    0x0000a376 movs r1, r0                   |     r1 = r0;
    0x0000a378 adds r6, r1, 0                |     r6 = r1 + 0;
    0x0000a37a movs r1, r0                   |     r1 = r0;
    0x0000a37c adds r4, r4, 0                |     r4 += 0;
    0x0000a37e movs r1, r0                   |     r1 = r0;
    0x0000a380 lsls r0, r5, 0xd              |     r0 = r5 << 0xd;
    0x0000a382 movs r0, r0                   |     
    0x0000a384 lsls r0, r1, 0xe              |     r0 = r1 << 0xe;
    0x0000a386 movs r0, r0                   |     
    0x0000a388 subs r4, r1, r6               |     r4 = r1 - r6;
    0x0000a38a movs r1, r0                   |     r1 = r0;
    0x0000a38c subs r4, r3, r6               |     r4 = r3 - r6;
    0x0000a38e movs r1, r0                   |     r1 = r0;
    0x0000a390 vrev64.32 d0, d0              |     __asm ("vrev64.32 d0, d0");
    0x0000a394 subs r2, r5, r7               |     r2 = r5 - r7;
    0x0000a396 movs r1, r0                   |     r1 = r0;
    0x0000a398 subs r4, r5, r7               |     r4 = r5 - r7;
    0x0000a39a movs r1, r0                   |     r1 = r0;
                                             | }
    ; assembly                                   | /* r2dec pseudo code output */
                                                 | /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-80367616.squashfs_v4_le_extract/usr/sbin/fwmgr @ 0xa454 */
                                                 | #include <stdint.h>
                                                 |  
    ; (fcn) fcn.0000a454 ()                      | void fcn_0000a454 (int16_t arg1) {
                                                 |     int16_t var_0h;
                                                 |     int16_t var_8h;
                                                 |     int16_t var_64h_2;
                                                 |     int16_t var_a4h_2;
                                                 |     int16_t var_e4h;
                                                 |     int16_t var_100h;
                                                 |     int16_t var_1e4h;
                                                 |     int16_t var_298h;
                                                 |     r0 = arg1;
    0x0000a454 rscslt fp, sl, r0, ror r5         |     __asm ("rscslt fp, sl, r0, ror r5");
    0x0000a458 ldr r6, [pc, 0xa4]                |     
    0x0000a45a mov r4, r0                        |     r4 = r0;
    0x0000a45c add r5, sp, 0x64                  |     r5 += var_64h_2;
    0x0000a45e movs r1, 1                        |     r1 = 1;
    0x0000a460 str r0, [sp]                      |     *(sp) = r0;
    0x0000a462 movs r2, 0x40                     |     r2 = 0x40;
    0x0000a464 ldr r0, [pc, 0x9c]                |     r0 = *(0xa504);
    0x0000a466 add r6, pc                        |     r6 = 0x1496a;
    0x0000a468 ldr r3, [pc, 0x9c]                |     
    0x0000a46a ldr r0, [r6, r0]                  |     
    0x0000a46c add r3, pc                        |     r3 = 0x14978;
    0x0000a46e ldr r0, [r0]                      |     r0 = *(0x1496a);
    0x0000a470 str r0, [sp, 0x1e4]               |     var_1e4h = r0;
    0x0000a472 mov.w r0, 0                       |     r0 = 0;
    0x0000a476 mov r0, r5                        |     r0 = r5;
    0x0000a478 blx 0x3200                        |     ERR_error_string ();
    0x0000a47c add r1, sp, 8                     |     r1 += var_8h;
    0x0000a47e mov r0, r5                        |     r0 = r5;
    0x0000a480 blx 0x2d9c                        |     r0 = fcn_00002d9c ();
                                                 |     if (r0 != 0) {
    0x0000a484 cbnz r0, 0xa4e0                   |         goto label_1;
                                                 |     }
    0x0000a486 ldr r2, [pc, 0x84]                |     
    0x0000a488 add r6, sp, 0xa4                  |     r6 += var_a4h_2;
    0x0000a48a ldr r3, [pc, 0x84]                |     
    0x0000a48c movs r1, 1                        |     r1 = 1;
    0x0000a48e mov r0, r6                        |     r0 = r6;
    0x0000a490 add r2, pc                        |     r2 = 0x149a2;
    0x0000a492 strd r2, r4, [sp]                 |     __asm ("strd r2, r4, [sp]");
    0x0000a496 add r3, pc                        |     r3 = 0x149ac;
    0x0000a498 movs r2, 0x40                     |     r2 = 0x40;
    0x0000a49a add r4, sp, 0xe4                  |     r4 += var_e4h;
    0x0000a49c blx 0x3200                        |     ERR_error_string ();
    0x0000a4a0 ldr r3, [pc, 0x70]                |     
    0x0000a4a2 mov.w r2, 0x100                   |     r2 = 0x100;
    0x0000a4a6 movs r1, 1                        |     r1 = 1;
    0x0000a4a8 mov r0, r4                        |     r0 = r4;
    0x0000a4aa strd r5, r6, [sp]                 |     __asm ("strd r5, r6, [sp]");
    0x0000a4ae add r3, pc                        |     r3 = 0x149c6;
    0x0000a4b0 blx 0x3200                        |     ERR_error_string ();
    0x0000a4b4 ldr r2, [pc, 0x60]                |     
    0x0000a4b6 movs r3, 1                        |     r3 = 1;
    0x0000a4b8 mov r1, r6                        |     r1 = r6;
    0x0000a4ba str r4, [sp]                      |     *(sp) = r4;
    0x0000a4bc add r2, pc                        |     r2 = 0x149d8;
    0x0000a4be mov r0, r2                        |     r0 = r2;
    0x0000a4c0 blx 0x3188                        |     r0 = strcat_chk ()
    0x0000a4c4 cmp r0, 0                         |     
                                                 |     if (r0 < 0) {
    0x0000a4c6 blt 0xa4ee                        |         goto label_2;
                                                 |     }
                                                 |     do {
                                                 | label_0:
    0x0000a4c8 ldr r2, [pc, 0x50]                |         
    0x0000a4ca ldr r3, [pc, 0x38]                |         r3 = *(0xa506);
    0x0000a4cc add r2, pc                        |         r2 = 0x149ec;
    0x0000a4ce ldr r3, [r2, r3]                  |         r3 = *(0x149ec);
    0x0000a4d0 ldr r2, [r3]                      |         r2 = *(0x149ec);
    0x0000a4d2 ldr r3, [sp, 0x1e4]               |         r3 = var_1e4h;
    0x0000a4d4 eors r2, r3                       |         r2 ^= r3;
    0x0000a4d6 mov.w r3, 0                       |         r3 = 0;
                                                 |         if (r2 != r3) {
    0x0000a4da bne 0xa4fc                        |             goto label_3;
                                                 |         }
    0x0000a4dc add sp, 0x1e8                     |         
    0x0000a4de pop {r4, r5, r6, pc}              |         
                                                 | label_1:
    0x0000a4e0 ldr r1, [pc, 0x3c]                |         
    0x0000a4e2 mov r2, r5                        |         r2 = r5;
    0x0000a4e4 movs r0, 5                        |         r0 = 5;
    0x0000a4e6 add r1, pc                        |         r1 = 0x14a0a;
    0x0000a4e8 bl 0x10568                        |         fcn_00010568 (r0, r1, r2);
    0x0000a4ec b 0xa4c8                          |         
                                                 |     } while (1);
                                                 | label_2:
    0x0000a4ee ldr r1, [pc, 0x34]                |     
    0x0000a4f0 mov r2, r6                        |     r2 = r6;
    0x0000a4f2 movs r0, 4                        |     r0 = 4;
    0x0000a4f4 add r1, pc                        |     r1 = 0x14a1e;
    0x0000a4f6 bl 0x10568                        |     fcn_00010568 (r0, r1, r2);
    0x0000a4fa b 0xa4c8                          |     goto label_0;
                                                 | label_3:
    0x0000a4fc blx 0x2eac                        |     socket (r0, r1, r2);
    0x0000a500 str r7, [sp, 0x298]               |     var_298h = r7;
    0x0000a502 movs r1, r0                       |     r1 = r0;
    0x0000a504 lsls r4, r2, 0xc                  |     r4 = r2 << 0xc;
    0x0000a506 movs r0, r0                       |     
    0x0000a508 subs r4, r7, r5                   |     r4 = r7 - r5;
    0x0000a50a movs r1, r0                       |     r1 = r0;
    0x0000a50c subs r0, r4, r6                   |     r0 = r4 - r6;
    0x0000a50e movs r1, r0                       |     r1 = r0;
    0x0000a510 lsrs r2, r5, 2                    |     r2 = r5 >> 2;
    0x0000a512 movs r1, r0                       |     r1 = r0;
    0x0000a514 subs r2, r2, r6                   |     r2 -= r6;
    0x0000a516 movs r1, r0                       |     r1 = r0;
    0x0000a518 adds r4, r6, r5                   |     r4 = r6 + r5;
    0x0000a51a movs r1, r0                       |     r1 = r0;
    0x0000a51c str r7, [sp, 0x100]               |     var_100h = r7;
    0x0000a51e movs r1, r0                       |     r1 = r0;
    0x0000a520 subs r2, r2, r4                   |     r2 -= r4;
    0x0000a522 movs r1, r0                       |     r1 = r0;
    0x0000a524 subs r4, r3, r5                   |     r4 = r3 - r5;
    0x0000a526 movs r1, r0                       |     r1 = r0;
                                                 | }
    ; assembly                                               | /* r2dec pseudo code output */
                                                             | /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-80367616.squashfs_v4_le_extract/usr/sbin/fwmgr @ 0xa63c */
                                                             | #include <stdint.h>
                                                             |  
    ; (fcn) fcn.0000a63c ()                                  | void fcn_0000a63c () {
                                                             |     int16_t var_0h;
                                                             |     int16_t var_4h;
                                                             |     int16_t var_3h;
                                                             |     int16_t var_10h;
                                                             |     int16_t var_2a8h;
                                                             |     int16_t var_310h;
                                                             |     int16_t var_1000h;
                                                             |     int32_t var_0h_2;
    0x0000a63c bmi 0x151cb90                                 |     
    0x0000a640 push.w {r4, r5, r6, r7, r8, sb, lr}           |     
    0x0000a644 sub.w sp, sp, 0x1000                          |     
    0x0000a648 add r1, pc                                    |     r1 += pc;
    0x0000a64a sub sp, 0x14                                  |     
    0x0000a64c add.w r0, sp, 0x1000                          |     r0 += var_1000h;
    0x0000a650 ldr r2, [r1, r2]                              |     r2 = *((r1 + r2));
    0x0000a652 adds r0, 0xc                                  |     r0 += 0xc;
    0x0000a654 ldr r5, [pc, 0x13c]                           |     
    0x0000a656 ldr r3, [pc, 0x140]                           |     r3 = *(0xa79a);
    0x0000a658 ldr r2, [r2]                                  |     r2 = *(r2);
    0x0000a65a str r2, [r0]                                  |     *(r0) = r2;
    0x0000a65c mov.w r2, 0                                   |     r2 = 0;
    0x0000a660 ldr r4, [pc, 0x138]                           |     
    0x0000a662 add r5, pc                                    |     r5 = 0x14dfa;
    0x0000a664 ldr r3, [r5, r3]                              |     
    0x0000a666 add r4, pc                                    |     r4 = 0x14e06;
    0x0000a668 ldr r3, [r3]                                  |     
    0x0000a66a ldr r3, [r3, 0x68]                            |     r3 = *(0x14e62);
    0x0000a66c blx r3                                        |     uint32_t (*r3)(uint32_t, uint32_t, uint32_t, uint32_t) (r0, r1, r2, r3);
    0x0000a66e ldr r2, [pc, 0x130]                           |     
    0x0000a670 movs r3, 0                                    |     r3 = 0;
    0x0000a672 ldr r1, [pc, 0x130]                           |     
    0x0000a674 add r2, pc                                    |     r2 = 0x14e1a;
    0x0000a676 add r1, pc                                    |     r1 = 0x14e20;
    0x0000a678 mov r0, r2                                    |     r0 = r2;
    0x0000a67a str r1, [sp]                                  |     *(sp) = r1;
    0x0000a67c mov r1, r4                                    |     r1 = r4;
    0x0000a67e blx 0x3188                                    |     r0 = strcat_chk ()
    0x0000a682 cmp r0, 0                                     |     
                                                             |     if (r0 < 0) {
    0x0000a684 blt 0xa74c                                    |         goto label_2;
                                                             |     }
    0x0000a686 ldr r1, [pc, 0x120]                           |     
    0x0000a688 movs r0, 7                                    |     r0 = 7;
    0x0000a68a add r1, pc                                    |     r1 = 0x14e38;
    0x0000a68c bl 0x10568                                    |     fcn_00010568 (r0, r1, r2);
    0x0000a690 ldr r0, [pc, 0x118]                           |     
    0x0000a692 movw r2, 0x1ed                                |     r2 = 0x1ed;
    0x0000a696 mov r1, r4                                    |     r1 = r4;
    0x0000a698 add r0, pc                                    |     r0 = 0x14e48;
    0x0000a69a bl 0x9ff8                                     |     r0 = fcn_00009ff8 (r0, r1, r2, r3);
    0x0000a69e cmp r0, 0                                     |     
                                                             |     if (r0 == 0) {
    0x0000a6a0 beq 0xa716                                    |         goto label_3;
                                                             |     }
    0x0000a6a2 blx 0x317c                                    |     r0 = strncpy (r0, r1, r2);
    0x0000a6a6 ldr r4, [r0]                                  |     r4 = *(r0);
    0x0000a6a8 cmp r4, 0                                     |     
                                                             |     if (r4 != 0) {
    0x0000a6aa bne 0xa720                                    |         goto label_0;
                                                             |     }
                                                             |     do {
    0x0000a6ac ldr r0, [pc, 0x100]                           |         
    0x0000a6ae movs r1, 2                                    |         r1 = 2;
    0x0000a6b0 add r0, pc                                    |         r0 = 0x14e64;
    0x0000a6b2 blx 0x2e3c                                    |         r0 = fcn_00002e3c ();
    0x0000a6b6 subs r7, r0, 0                                |         r7 = r0 - 0;
                                                             |         if (r7 < r0) {
    0x0000a6b8 blt 0xa770                                    |             goto label_4;
                                                             |         }
    0x0000a6ba add.w r8, sp, 0x10                            |         r8 += var_10h;
    0x0000a6be mov.w r2, 0xf00                               |         r2 = 0xf00;
    0x0000a6c2 sub.w r1, r8, 3                               |         r1 -= var_3h;
    0x0000a6c6 sub.w sb, r8, 4                               |         sb -= var_4h;
    0x0000a6ca blx 0x2d10                                    |         r0 = fcn_00002d10 ();
    0x0000a6ce subs r6, r0, 0                                |         r6 = r0 - 0;
                                                             |         if (r6 < r0) {
    0x0000a6d0 blt 0xa75e                                    |             goto label_5;
                                                             |         }
    0x0000a6d2 ldr r1, [pc, 0xe0]                            |         
    0x0000a6d4 movs r3, 0xa                                  |         r3 = 0xa;
    0x0000a6d6 adds r2, r6, 1                                |         r2 = r6 + 1;
    0x0000a6d8 strb r3, [r8, -0x4]                           |         *((r8 - 0x4)) = r3;
    0x0000a6dc mov r0, sb                                    |         r0 = sb;
    0x0000a6de strh.w r3, [sb, r2]                           |         *((sb + r2)) = r3;
    0x0000a6e2 add r1, pc                                    |         r1 = 0x14e9c;
    0x0000a6e4 bl 0xa174                                     |         fcn_0000a174 (r0);
    0x0000a6e8 ldr r3, [pc, 0xcc]                            |         
    0x0000a6ea ldr r3, [r5, r3]                              |         r3 = *((r5 + r3));
    0x0000a6ec ldr r3, [r3]                                  |         r3 = *(0xa7b8);
    0x0000a6ee cmp r3, 1                                     |         
                                                             |         if (r3 >= 1) {
    0x0000a6f0 bls 0xa6fc                                    |             
    0x0000a6f2 ldr r1, [pc, 0xc8]                            |             
    0x0000a6f4 mov r0, sb                                    |             r0 = sb;
    0x0000a6f6 add r1, pc                                    |             r1 = 0x14eb8;
    0x0000a6f8 bl 0xa174                                     |             fcn_0000a174 (r0);
                                                             |         }
    0x0000a6fc movs r3, 0                                    |         r3 = 0;
    0x0000a6fe sub.w r1, r8, 3                               |         r1 -= var_3h;
    0x0000a702 mov r2, r6                                    |         r2 = r6;
    0x0000a704 mov r0, r7                                    |         r0 = r7;
    0x0000a706 blx 0x2a6c                                    |         r0 = fcn_00002a6c ();
    0x0000a70a cmp r0, r6                                    |         
                                                             |         if (r0 < r6) {
    0x0000a70c blt 0xa782                                    |             goto label_6;
                                                             |         }
    0x0000a70e mov r0, r7                                    |         r0 = r7;
    0x0000a710 blx 0x2cec                                    |         fcn_00002cec ();
    0x0000a714 b 0xa726                                      |         goto label_1;
                                                             | label_3:
    0x0000a716 bl 0xa278                                     |         r0 = fcn_0000a278 (r0, r1, r2);
    0x0000a71a mov r4, r0                                    |         r4 = r0;
    0x0000a71c cmp r4, 0                                     |         
    0x0000a71e beq 0xa6ac                                    |         
                                                             |     } while (r4 == 0);
                                                             | label_0:
    0x0000a720 blx 0x317c                                    |     r0 = strncpy (r0, r1, r2);
    0x0000a724 ldr r4, [r0]                                  |     r4 = *(r0);
                                                             |     do {
                                                             | label_1:
    0x0000a726 ldr r2, [pc, 0x98]                            |         
    0x0000a728 add.w r1, sp, 0x1000                          |         r1 += var_1000h;
    0x0000a72c ldr r3, [pc, 0x60]                            |         r3 = *(0xa790);
    0x0000a72e adds r1, 0xc                                  |         r1 += 0xc;
    0x0000a730 add r2, pc                                    |         r2 = 0x14ef6;
    0x0000a732 ldr r3, [r2, r3]                              |         r3 = *(0x14ef6);
    0x0000a734 ldr r2, [r3]                                  |         r2 = *(0x14ef6);
    0x0000a736 ldr r3, [r1]                                  |         r3 = *(r1);
    0x0000a738 eors r2, r3                                   |         r2 ^= r3;
    0x0000a73a mov.w r3, 0                                   |         r3 = 0;
                                                             |         if (r2 != r3) {
    0x0000a73e bne 0xa788                                    |             goto label_7;
                                                             |         }
    0x0000a740 mov r0, r4                                    |         r0 = r4;
    0x0000a742 add.w sp, sp, 0x1000                          |         
    0x0000a746 add sp, 0x14                                  |         
    0x0000a748 pop.w {r4, r5, r6, r7, r8, sb, pc}            |         
                                                             | label_2:
    0x0000a74c ldr r1, [pc, 0x74]                            |         
    0x0000a74e movs r0, 2                                    |         r0 = 2;
    0x0000a750 add r1, pc                                    |         r1 = 0x14f18;
    0x0000a752 bl 0x10568                                    |         r0 = fcn_00010568 (r0, r1, r2);
    0x0000a756 blx 0x317c                                    |         r0 = strncpy (r0, r1, r2);
    0x0000a75a ldr r4, [r0]                                  |         r4 = *(r0);
    0x0000a75c b 0xa726                                      |         
                                                             |     } while (1);
                                                             | label_5:
    0x0000a75e ldr r1, [pc, 0x68]                            |     
    0x0000a760 add r1, pc                                    |     r1 = 0x14f2e;
                                                             |     do {
    0x0000a762 movs r0, 2                                    |         r0 = 2;
    0x0000a764 bl 0x10568                                    |         fcn_00010568 (r0, r1, r2);
    0x0000a768 mov r0, r7                                    |         r0 = r7;
    0x0000a76a bl 0x11530                                    |         fcn_00011530 (r0);
    0x0000a76e b 0xa720                                      |         goto label_0;
                                                             | label_4:
    0x0000a770 ldr r1, [pc, 0x58]                            |         
    0x0000a772 movs r0, 2                                    |         r0 = 2;
    0x0000a774 add r1, pc                                    |         r1 = 0x14f44;
    0x0000a776 bl 0x10568                                    |         fcn_00010568 (r0, r1, r2);
    0x0000a778 mrc2 p7, 7, apsr_nzcv, c7, c8, 7              |         __asm ("mrc2 p7, 7, apsr_nzcv, c7, c8, 7");
    0x0000a77c stc p8, c6, [r0, -0x10]                       |         __asm ("stc p8, c6, [r0, -0x10]");
    0x0000a77e ldr r4, [r0]                                  |         r4 = *(r0);
    0x0000a780 b 0xa726                                      |         goto label_1;
                                                             | label_6:
    0x0000a782 ldr r1, [pc, 0x4c]                            |         
    0x0000a784 add r1, pc                                    |         r1 = 0x14f5a;
    0x0000a786 b 0xa762                                      |         
                                                             |     } while (1);
                                                             | label_7:
    0x0000a788 blx 0x2eac                                    |     socket (r0, r1, r2);
    0x0000a78c str r5, [sp, 0x310]                           |     var_310h = r5;
    0x0000a78e movs r1, r0                                   |     r1 = r0;
    0x0000a790 lsls r4, r2, 0xc                              |     r4 = r2 << 0xc;
    0x0000a792 movs r0, r0                                   |     
    0x0000a794 str r5, [sp, 0x2a8]                           |     var_2a8h = r5;
    0x0000a796 movs r1, r0                                   |     r1 = r0;
    0x0000a798 lsls r0, r1, 0xe                              |     r0 = r1 << 0xe;
    0x0000a79a movs r0, r0                                   |     
    0x0000a79c asrs r2, r4, 0x19                             |     r2 = r4 >> 0x19;
    0x0000a79e movs r1, r0                                   |     r1 = r0;
    0x0000a7a0 adds r4, r1, r0                               |     r4 = r1 + r0;
    0x0000a7a2 movs r1, r0                                   |     r1 = r0;
    0x0000a7a4 ldc2l p0, c0, [r2], -0                        |     __asm ("ldc2l p0, c0, [r2], -0");
    0x0000a7a8 subs r6, r3, r2                               |     r6 = r3 - r2;
    0x0000a7aa movs r1, r0                                   |     r1 = r0;
    0x0000a7ac lsrs r4, r3, 8                                |     r4 = r3 >> 8;
    0x0000a7ae movs r1, r0                                   |     r1 = r0;
    0x0000a7b0 subs r4, r2, r2                               |     r4 = r2 - r2;
    0x0000a7b2 movs r1, r0                                   |     r1 = r0;
    0x0000a7b4 asrs r6, r4, 0x17                             |     r6 = r4 >> 0x17;
    0x0000a7b6 movs r1, r0                                   |     r1 = r0;
    0x0000a7b8 lsls r0, r5, 0xd                              |     r0 = r5 << 0xd;
    0x0000a7ba movs r0, r0                                   |     
    0x0000a7bc invalid                                       |     
                                                             | }
    ; assembly                                                       | /* r2dec pseudo code output */
                                                                     | /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-80367616.squashfs_v4_le_extract/usr/sbin/fwmgr @ 0xa7d4 */
                                                                     | #include <stdint.h>
                                                                     |  
    ; (fcn) fcn.0000a7d4 ()                                          | void fcn_0000a7d4 (int16_t arg_0h) {
                                                                     |     int16_t var_0h;
                                                                     |     int16_t var_4h;
                                                                     |     int16_t var_8h;
                                                                     |     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;
                                                                     |     int16_t var_28h;
                                                                     |     int16_t var_84h;
                                                                     |     int32_t var_10h_2;
                                                                     |     int16_t var_cch;
                                                                     |     int16_t var_1cch;
                                                                     |     int16_t var_2cch;
                                                                     |     int16_t var_2d4h;
    0x0000a7d4 blhs 0xfe648b58                                       |     __asm ("blhs aav.0x00019428");
    0x0000a7d8 ldr.w r3, [pc, 0xb98]                                 |     
    0x0000a7dc push.w {r4, r5, r6, r7, r8, sb, sl, fp, lr}           |     
    0x0000a7e0 sub.w sp, sp, 0x2d4                                   |     
    0x0000a7e4 add r2, pc                                            |     r2 += pc;
    0x0000a7e6 ldr.w r4, [pc, 0xb90]                                 |     
    0x0000a7ea ldr r3, [r2, r3]                                      |     r3 = *((r2 + r3));
    0x0000a7ec add r4, pc                                            |     r4 = 0x15b6a;
    0x0000a7ee ldr r3, [r3]                                          |     r3 = *(0xb374);
    0x0000a7f0 str r3, [sp, 0x2cc]                                   |     var_2cch = r3;
    0x0000a7f2 mov.w r3, 0                                           |     r3 = 0;
    0x0000a7f6 bl 0xa39c                                             |     r0 = fcn_0000a39c (r0);
    0x0000a7fa cmp r0, 0                                             |     
                                                                     |     if (r0 == 0) {
    0x0000a7fc beq.w 0xa982                                          |         goto label_50;
                                                                     |     }
    0x0000a800 ldr.w r3, [pc, 0xb78]                                 |     r3 = *(0xb37c);
    0x0000a804 ldr r6, [r4, r3]                                      |     r6 = *((r4 + r3));
    0x0000a806 ldr r2, [r6]                                          |     r2 = *(r6);
    0x0000a808 cmp r2, 0                                             |     
    0x0000a80a bne.w 0xa936                                          |     
                                                                     |     while (r3 == r3) {
                                                                     | label_0:
    0x0000a80e ldr.w r1, [pc, 0xb70]                                 |         
    0x0000a812 movs r0, 5                                            |         r0 = 5;
    0x0000a814 ldr.w r8, [pc, 0xb6c]                                 |         
    0x0000a816 ldrh r4, [r5, 0x1a]                                   |         r4 = *((r5 + 0x1a));
    0x0000a818 add r1, pc                                            |         r1 = 0x15b9e;
    0x0000a81a bl 0x10568                                            |         fcn_00010568 (r0, r1, r2);
    0x0000a81e ldr.w r3, [pc, 0xb68]                                 |         r3 = *(0xb38a);
    0x0000a822 add r8, pc                                            |         r8 = 0x15baa;
    0x0000a824 movs r2, 1                                            |         r2 = 1;
    0x0000a826 ldr r5, [r4, r3]                                      |         r5 = *((r4 + r3));
    0x0000a828 str r2, [r5]                                          |         *(r5) = r2;
                                                                     | label_2:
    0x0000a82a ldr.w r1, [pc, 0xb60]                                 |         
    0x0000a82e movs r6, 0                                            |         r6 = 0;
    0x0000a830 mov r3, r6                                            |         r3 = r6;
    0x0000a832 movs r2, 1                                            |         r2 = 1;
    0x0000a834 movs r0, 7                                            |         r0 = 7;
    0x0000a836 strd r6, r6, [sp, 4]                                  |         __asm ("strd r6, r6, [var_4h]");
    0x0000a83a add r1, pc                                            |         r1 = 0x15bcc;
    0x0000a83c str r6, [sp]                                          |         *(sp) = r6;
    0x0000a83e bl 0x10568                                            |         fcn_00010568 (r0, r1, r2);
    0x0000a842 ldr.w sl, [r5]                                        |         sl = *(r5);
    0x0000a844 adr r0, 0                                             |         r0 = 0;
    0x0000a846 str r6, [sp, 0x24]                                    |         var_24h = r6;
    0x0000a848 cmp.w sl, 1                                           |         
                                                                     |         if (sl == 1) {
    0x0000a84c beq.w 0xb842                                          |             goto label_51;
                                                                     |         }
    0x0000a850 ldr.w r0, [pc, 0xb3c]                                 |         
    0x0000a854 ldr.w r3, [pc, 0xb3c]                                 |         r3 = *(0xb394);
    0x0000a858 add r0, pc                                            |         r0 = 0x15bec;
    0x0000a85a ldr.w sb, [r4, r3]                                    |         sb = *((r4 + r3));
    0x0000a85c str r0, [sp, 0xc]                                     |         *((sp + 0xc)) = r0;
    0x0000a85e str r6, [sp, 0x10]                                    |         var_10h = r6;
                                                                     | label_3:
    0x0000a860 bl 0x8db8                                             |         r0 = fcn_00008db8 (r0);
    0x0000a864 cmp r0, 0                                             |         
                                                                     |         if (r0 == 0) {
    0x0000a866 beq.w 0xab68                                          |             goto label_52;
                                                                     |         }
    0x0000a86a ldr.w sl, [r5]                                        |         sl = *(r5);
    0x0000a86e cmp.w sl, 4                                           |         
                                                                     |         if (sl == 4) {
    0x0000a872 beq.w 0xb0f2                                          |             goto label_53;
                                                                     |         }
                                                                     | label_9:
    0x0000a876 ldr.w r3, [pc, 0xb20]                                 |         r3 = *(0xb39a);
    0x0000a87a ldr r3, [r4, r3]                                      |         r3 = *((r4 + r3));
    0x0000a87c ldrb r1, [r3]                                         |         r1 = *(r3);
    0x0000a87e str r3, [sp, 0x20]                                    |         var_20h = r3;
    0x0000a880 ldr r3, [sp, 0x10]                                    |         r3 = var_10h;
    0x0000a882 cmp r3, 0                                             |         
                                                                     |         if (r3 != 0) {
    0x0000a884 bne.w 0xab94                                          |             goto label_54;
                                                                     |         }
    0x0000a888 cmp.w sl, 1                                           |         
                                                                     |         if (sl < 1) {
    0x0000a88c bls.w 0xb798                                          |             goto label_55;
                                                                     |         }
                                                                     | label_18:
    0x0000a890 ldr.w r3, [pc, 0xb08]                                 |         r3 = *(0xb39c);
    0x0000a894 ldr r2, [sp, 0x20]                                    |         r2 = var_20h;
    0x0000a896 ldr r3, [r4, r3]                                      |         r3 = *((r4 + r3));
    0x0000a898 ldrb r1, [r2]                                         |         r1 = *(r2);
    0x0000a89a ldrb r3, [r3]                                         |         r3 = *(r3);
    0x0000a89c cmp r3, 0                                             |         
                                                                     |         if (r3 != 0) {
    0x0000a89e bne.w 0xaeea                                          |             goto label_56;
                                                                     |         }
                                                                     | label_13:
    0x0000a8a2 ldr.w r3, [pc, 0xafc]                                 |         r3 = *(0xb3a2);
    0x0000a8a6 ldr.w sl, [r5]                                        |         sl = *(r5);
    0x0000a8aa ldr.w fp, [r4, r3]                                    |         fp = *((r4 + r3));
    0x0000a8ac add sp, 0xc                                           |         
    0x0000a8ae ldrb.w r3, [fp]                                       |         r3 = *(fp);
                                                                     | label_4:
    0x0000a8b2 ldr.w r0, [pc, 0xaf0]                                 |         r0 = *(0xb3a6);
    0x0000a8b6 mov r2, sl                                            |         r2 = sl;
    0x0000a8b8 ldr r0, [r4, r0]                                      |         r0 = *((r4 + r0));
    0x0000a8ba str r1, [sp, 0xc]                                     |         var_ch = r1;
    0x0000a8bc ldr.w r1, [pc, 0xae8]                                 |         r1 = *(0xb3a8);
    0x0000a8c0 str r0, [sp, 0x14]                                    |         var_14h = r0;
    0x0000a8c2 ldr r1, [r4, r1]                                      |         r1 = *((r4 + r1));
    0x0000a8c4 str r3, [sp, 4]                                       |         var_4h = r3;
    0x0000a8c6 ldr r3, [r0]                                          |         r3 = *(0xb3a6);
    0x0000a8c8 mov r7, r1                                            |         r7 = r1;
    0x0000a8ca str r1, [sp, 0x1c]                                    |         var_1ch = r1;
    0x0000a8cc ldrb r0, [r7]                                         |         r0 = *(r7);
    0x0000a8ce ldr.w r1, [pc, 0xadc]                                 |         r1 = *(0xb3ae);
    0x0000a8d2 str r3, [sp, 0x18]                                    |         var_18h = r3;
    0x0000a8d4 str r0, [sp, 8]                                       |         var_8h = r0;
    0x0000a8d6 movs r0, 7                                            |         r0 = 7;
    0x0000a8d8 ldr r1, [r4, r1]                                      |         r1 = *((r4 + r1));
    0x0000a8da mov r7, r1                                            |         r7 = r1;
    0x0000a8dc str r1, [sp, 0x18]                                    |         var_18h = r1;
    0x0000a8de ldr r7, [r7]                                          |         r7 = *(r7);
    0x0000a8e0 ldr.w r1, [pc, 0xacc]                                 |         
    0x0000a8e4 str r7, [sp]                                          |         *(sp) = r7;
    0x0000a8e6 add r1, pc                                            |         r1 = 0x15c9a;
    0x0000a8e8 bl 0x10568                                            |         fcn_00010568 (r0, r1, r2);
    0x0000a8ec ldrb.w r3, [fp]                                       |         r3 = *(fp);
    0x0000a8f0 cmp r3, 0                                             |         
                                                                     |         if (r3 != 0) {
    0x0000a8f2 bne.w 0xaba8                                          |             goto label_57;
                                                                     |         }
    0x0000a8f6 ldr r3, [r5]                                          |         r3 = *(r5);
    0x0000a8f8 cmp r3, 0                                             |         
                                                                     |         if (r3 == 0) {
    0x0000a8fa beq.w 0xae00                                          |             goto label_58;
                                                                     |         }
    0x0000a8fe ldrb.w r3, [sb]                                       |         r3 = *(sb);
    0x0000a902 cmp r3, 0                                             |         
                                                                     |         if (r3 == 0) {
    0x0000a904 beq 0xa9d4                                            |             goto label_59;
                                                                     |         }
    0x0000a906 ldr.w r3, [pc, 0xaac]                                 |         
    0x0000a90a movs r0, 0x22                                         |         r0 = 0x22;
    0x0000a90c ldr.w sl, [r4, r3]                                    |         sl = *((r4 + r3));
    0x0000a910 ldr.w r3, [sl]                                        |         r3 = *(sl);
    0x0000a914 ldr r3, [r3, 0xc]                                     |         r3 = *(0xb3c2);
    0x0000a916 blx r3                                                |         r0 = uint32_t (*r3)(uint32_t, uint32_t) (r0, r3);
    0x0000a918 cmp r0, 0                                             |         
                                                                     |         if (r0 != 0) {
    0x0000a91a bne 0xa9d4                                            |             goto label_59;
                                                                     |         }
    0x0000a91c cmp.w r8, 0                                           |         
                                                                     |         if (r8 == 0) {
    0x0000a920 beq.w 0xb306                                          |             goto label_60;
                                                                     |         }
    0x0000a922 strh r1, [r6, 0x26]                                   |         *((r6 + 0x26)) = r1;
    0x0000a924 ldr.w r0, [pc, 0xa90]                                 |         
    0x0000a928 add r0, pc                                            |         r0 = 0x15ce4;
    0x0000a92a blx 0x2d84                                            |         fcn_00002d84 ();
    0x0000a92e ldr.w r1, [pc, 0xa8c]                                 |         
    0x0000a932 add r1, pc                                            |         r1 = 0x15cf4;
    0x0000a934 b 0xabd8                                              |         goto label_6;
    0x0000a936 ldr.w r1, [pc, 0xa88]                                 |         
    0x0000a93a mov.w r0, -1                                          |         r0 = -1;
    0x0000a93e add r1, pc                                            |         r1 = 0x15d04;
    0x0000a940 bl 0x10568                                            |         fcn_00010568 (r0, r1, r2);
    0x0000a944 ldr r3, [r6]                                          |         r3 = *(r6);
    0x0000a946 add.w r3, r3, r3, lsl 2                               |         r3 += (r3 << 2);
    0x0000a94a lsls r3, r3, 2                                        |         r3 <<= 2;
    0x0000a94c beq.w 0xa80e                                          |         
                                                                     |     }
    0x0000a950 movs r5, 0                                            |     r5 = 0;
    0x0000a952 b 0xa964                                              |     goto label_61;
                                                                     | label_1:
    0x0000a954 ldr r3, [r6]                                          |     r3 = *(r6);
    0x0000a956 adds r5, 1                                            |     r5++;
    0x0000a958 add.w r3, r3, r3, lsl 2                               |     r3 += (r3 << 2);
    0x0000a95c cmp.w r5, r3, lsl 2                                   |     
                                                                     |     if (r5 >= r3) {
    0x0000a960 bhs.w 0xa80e                                          |         goto label_0;
                                                                     |     }
    0x0000a962 add r7, sp, 0x154                                     |     r7 = sp + 0x154;
                                                                     | label_61:
    0x0000a964 movw r0, 0xc350                                       |     r0 = 0xc350;
    0x0000a968 blx 0x309c                                            |     fcn_0000309c ();
    0x0000a96c bl 0xa39c                                             |     r0 = fcn_0000a39c (r0);
    0x0000a970 cmp r0, 0                                             |     
                                                                     |     if (r0 != 0) {
    0x0000a972 bne 0xa954                                            |         goto label_1;
                                                                     |     }
    0x0000a974 ldr.w r1, [pc, 0xa4c]                                 |     
    0x0000a978 mov.w r0, -1                                          |     r0 = -1;
    0x0000a97c add r1, pc                                            |     r1 = 0x15d44;
    0x0000a97e bl 0x10568                                            |     fcn_00010568 (r0, r1, r2);
                                                                     | label_50:
    0x0000a982 ldr.w r3, [pc, 0xa04]                                 |     r3 = *(0xb38a);
    0x0000a986 ldr r5, [r4, r3]                                      |     r5 = *((r4 + r3));
    0x0000a988 ldr r3, [r5]                                          |     r3 = *(r5);
    0x0000a98a cmp r3, 1                                             |     
                                                                     |     if (r3 == 1) {
    0x0000a98c beq.w 0xaf2a                                          |         goto label_62;
                                                                     |     }
    0x0000a990 ldr.w r0, [pc, 0xa34]                                 |     
    0x0000a994 add r0, pc                                            |     r0 = 0x15d60;
    0x0000a996 bl 0x11290                                            |     r0 = fcn_00011290 (r0);
    0x0000a99a mov r8, r0                                            |     r8 = r0;
                                                                     |     if (r0 != 0) {
    0x0000a99c cbz r0, 0xaa02                                        |         
    0x0000a99e ldr.w r1, [pc, 0xa2c]                                 |         
    0x0000a9a2 movs r0, 5                                            |         r0 = 5;
    0x0000a9a4 add r1, pc                                            |         r1 = 0x15d76;
    0x0000a9a6 bl 0x10568                                            |         fcn_00010568 (r0, r1, r2);
    0x0000a9aa ldr.w r1, [pc, 0xa24]                                 |         
    0x0000a9ae mov r0, r8                                            |         r0 = r8;
    0x0000a9b0 add r1, pc                                            |         r1 = 0x15d86;
    0x0000a9b2 blx 0x3130                                            |         r0 = fcn_00003130 ();
    0x0000a9b6 cmp r0, 0                                             |         
                                                                     |         if (r0 == 0) {
    0x0000a9b8 beq.w 0xaf30                                          |             goto label_63;
                                                                     |         }
    0x0000a9bc ldr.w r1, [pc, 0xa14]                                 |         
    0x0000a9c0 mov r0, r8                                            |         r0 = r8;
    0x0000a9c2 add r1, pc                                            |         r1 = 0x15d9a;
    0x0000a9c4 blx 0x3130                                            |         r0 = fcn_00003130 ();
    0x0000a9c6 subs.w r8, r4, r0, lsl 8                              |         r8 = r4 - (r0 << 8);
                                                                     |         if (r8 != r4) {
    0x0000a9ca bne.w 0xaf14                                          |             goto label_64;
                                                                     |         }
    0x0000a9ce movs r3, 2                                            |         r3 = 2;
    0x0000a9d0 str r3, [r5]                                          |         *(r5) = r3;
    0x0000a9d2 b 0xaa0a                                              |         goto label_14;
                                                                     | label_59:
    0x0000a9d4 cmp.w r8, 0                                           |         
                                                                     |         if (r8 == 0) {
    0x0000a9d8 beq.w 0xb094                                          |             goto label_65;
                                                                     |         }
    0x0000a9dc ldr.w r1, [pc, 0x9f8]                                 |         
    0x0000a9e0 movs r2, 4                                            |         r2 = 4;
    0x0000a9e2 mov r0, r8                                            |         r0 = r8;
    0x0000a9e4 add r1, pc                                            |         r1 = 0x15dc0;
    0x0000a9e6 blx 0x2b08                                            |         r0 = fcn_00002b08 ();
    0x0000a9ea cmp r0, 0                                             |         
                                                                     |         if (r0 != 0) {
    0x0000a9ec bne.w 0xaf3e                                          |             goto label_66;
                                                                     |         }
    0x0000a9f0 ldr.w r0, [pc, 0x9e8]                                 |         
    0x0000a9f4 add r0, pc                                            |         r0 = 0x15dd4;
    0x0000a9f6 blx 0x2d84                                            |         fcn_00002d84 ();
    0x0000a9fa ldr.w r1, [pc, 0x9e4]                                 |         
    0x0000a9fe add r1, pc                                            |         r1 = 0x15de4;
    0x0000aa00 b 0xabd8                                              |         goto label_6;
                                                                     |     }
    0x0000aa02 ldr r3, [r5]                                          |     r3 = *(r5);
    0x0000aa04 cmp r3, 1                                             |     
                                                                     |     if (r3 == 1) {
    0x0000aa06 beq.w 0xa82a                                          |         goto label_2;
                                                                     |     }
                                                                     | label_14:
    0x0000aa0a ldr.w r3, [pc, 0x9a8]                                 |     r3 = *(0xb3b6);
    0x0000aa0e ldr.w r2, [pc, 0x984]                                 |     r2 = *(0xb396);
    0x0000aa12 ldr.w sl, [r4, r3]                                    |     sl = *((r4 + r3));
    0x0000aa16 ldr.w sb, [r4, r2]                                    |     sb = *((r4 + r2));
    0x0000aa1a ldr.w r3, [sl]                                        |     r3 = *(sl);
    0x0000aa1e ldr r2, [r3, 0xc]                                     |     r2 = *(0xb3c2);
    0x0000aa20 ldrb.w r3, [sb]                                       |     r3 = *(sb);
    0x0000aa24 cmp r3, 0                                             |     
                                                                     |     if (r3 != 0) {
    0x0000aa26 beq 0xaaa4                                            |         
    0x0000aa28 movs r0, 0x22                                         |         r0 = 0x22;
    0x0000aa2a blx r2                                                |         r0 = uint32_t (*r2)(uint32_t) (r0);
    0x0000aa2c mov r6, r0                                            |         r6 = r0;
    0x0000aa2e cmp r0, 0                                             |         
                                                                     |         if (r0 != 0) {
    0x0000aa30 bne 0xaaa4                                            |             goto label_67;
                                                                     |         }
    0x0000aa32 ldr.w r3, [sl]                                        |         r3 = *(sl);
    0x0000aa36 movs r0, 0x42                                         |         r0 = 0x42;
    0x0000aa38 ldr r3, [r3, 0xc]                                     |         r3 = *((r3 + 0xc));
    0x0000aa3a blx r3                                                |         uint32_t (*r3)(uint32_t, uint32_t) (r0, r3);
    0x0000aa3c str r0, [sp, 0x10]                                    |         var_10h = r0;
                                                                     |         if (r0 == 0) {
    0x0000aa3e cbz r0, 0xaaa4                                        |             goto label_67;
                                                                     |         }
    0x0000aa40 ldr r3, [r5]                                          |         r3 = *(r5);
    0x0000aa42 cmp r3, 0                                             |         
                                                                     |         if (r3 == 0) {
    0x0000aa44 beq.w 0xb154                                          |             goto label_68;
                                                                     |         }
                                                                     | label_28:
    0x0000aa48 ldr.w r1, [pc, 0x998]                                 |         
    0x0000aa4c movs r0, 7                                            |         r0 = 7;
    0x0000aa4e ldr.w r8, [pc, 0x998]                                 |         
    0x0000aa52 add r1, pc                                            |         r1 = 0x15e3a;
    0x0000aa54 bl 0x10568                                            |         fcn_00010568 (r0, r1, r2);
    0x0000aa58 ldr.w r3, [sl]                                        |         r3 = *(sl);
    0x0000aa5a adds r0, 0                                            |         r0 += 0;
    0x0000aa5c add r8, pc                                            |         r8 = 0x15e4a;
    0x0000aa5e movs r2, 1                                            |         r2 = 1;
    0x0000aa60 movs r0, 0x42                                         |         r0 = 0x42;
    0x0000aa62 mov r1, r8                                            |         r1 = r8;
    0x0000aa64 ldr r3, [r3, 0x14]                                    |         r3 = *((r3 + 0x14));
    0x0000aa66 blx r3                                                |         r0 = uint32_t (*r3)(uint32_t, uint32_t, uint32_t, uint32_t) (r0, r1, r2, r3);
    0x0000aa68 mov fp, r0                                            |         
    0x0000aa6a cmp r0, 0                                             |         
                                                                     |         if (r0 != 0) {
    0x0000aa6c bne.w 0xb34c                                          |             goto label_69;
                                                                     |         }
    0x0000aa70 ldr.w r1, [pc, 0x978]                                 |         
    0x0000aa74 movs r3, 1                                            |         r3 = 1;
    0x0000aa76 ldr r2, [r5]                                          |         r2 = *(r5);
    0x0000aa78 str r0, [sp, 8]                                       |         var_8h = r0;
    0x0000aa7a strd r3, r3, [sp]                                     |         __asm ("strd r3, r3, [sp]");
    0x0000aa7e add r1, pc                                            |         r1 = 0x15e6e;
    0x0000aa80 mov r3, r0                                            |         r3 = r0;
    0x0000aa82 movs r0, 7                                            |         r0 = 7;
    0x0000aa84 bl 0x10568                                            |         fcn_00010568 (r0, r1, r2);
    0x0000aa88 ldr.w sl, [r5]                                        |         sl = *(r5);
    0x0000aa8c cmp.w sl, 1                                           |         
    0x0000aa90 itt eq                                                |         
                                                                     |         if (sl != 1) {
    0x0000aa92 moveq r8, fp                                          |             r8 = fp;
                                                                     |         }
                                                                     |         if (sl != 1) {
    0x0000aa94 streq r8, [sp, 0x24]                                  |             var_24h = r8;
                                                                     |         }
                                                                     |         if (sl == 1) {
    0x0000aa98 beq 0xab4a                                            |             goto label_49;
                                                                     |         }
    0x0000aa9a mov r0, r8                                            |         r0 = r8;
    0x0000aa9c str.w fp, [sp, 0x24]                                  |         __asm ("str.w fp, [var_24h]");
    0x0000aaa0 mov r8, fp                                            |         r8 = fp;
    0x0000aaa2 b 0xa860                                              |         goto label_3;
                                                                     |     }
                                                                     | label_67:
    0x0000aaa4 ldr.w r3, [sl]                                        |     r3 = *(sl);
    0x0000aaa8 movs r0, 0x22                                         |     r0 = 0x22;
    0x0000aaaa ldr r3, [r3, 0xc]                                     |     r3 = *((r3 + 0xc));
    0x0000aaac blx r3                                                |     r0 = uint32_t (*r3)(uint32_t, uint32_t) (r0, r3);
    0x0000aaae mov r6, r0                                            |     r6 = r0;
                                                                     |     if (r0 != 0) {
    0x0000aab0 cbz r0, 0xab10                                        |         
    0x0000aab2 ldr.w r1, [pc, 0x93c]                                 |         
    0x0000aab6 movs r0, 7                                            |         r0 = 7;
    0x0000aab8 add r1, pc                                            |         r1 = 0x15eae;
    0x0000aaba bl 0x10568                                            |         fcn_00010568 (r0, r1, r2);
    0x0000aabe ldr.w r3, [sl]                                        |         r3 = *(sl);
    0x0000aac2 movs r2, 0                                            |         r2 = 0;
    0x0000aac4 ldr.w r1, [pc, 0x92c]                                 |         
    0x0000aac8 movs r0, 0x22                                         |         r0 = 0x22;
    0x0000aaca ldr r3, [r3, 0x14]                                    |         r3 = *((r3 + 0x14));
    0x0000aacc add r1, pc                                            |         r1 = 0x15ec4;
    0x0000aace blx r3                                                |         r0 = uint32_t (*r3)(uint32_t, uint32_t, uint32_t, uint32_t) (r0, r1, r2, r3);
    0x0000aad0 cmp r0, 0                                             |         
                                                                     |         if (r0 == 0) {
    0x0000aad2 beq.w 0xae42                                          |             goto label_70;
                                                                     |         }
    0x0000aad6 blx 0x317c                                            |         r0 = strncpy (r0, r1, r2);
    0x0000aada ldr r3, [r0]                                          |         r3 = *(r0);
    0x0000aadc mov r6, r0                                            |         r6 = r0;
    0x0000aade cmp r3, 0x10                                          |         
                                                                     |         if (r3 == 0x10) {
    0x0000aae0 beq.w 0xb2d4                                          |             goto label_71;
                                                                     |         }
    0x0000aae4 ldr.w r1, [pc, 0x910]                                 |         
    0x0000aae8 movs r0, 2                                            |         r0 = 2;
    0x0000aaea add r1, pc                                            |         r1 = 0x15ee6;
    0x0000aaec bl 0x10568                                            |         fcn_00010568 (r0, r1, r2);
    0x0000aaf0 ldr r3, [r6]                                          |         r3 = *(r6);
    0x0000aaf2 cmp r3, 0x3d                                          |         
    0x0000aaf4 it ne                                                 |         
                                                                     |         if (r3 != 0x3d) {
    0x0000aaf6 cmpne r3, 0x7e                                        |             __asm ("cmpne r3, 0x7e");
                                                                     |         }
                                                                     |         if (r3 != 0x3d) {
    0x0000aaf8 bne.w 0xb0c0                                          |             goto label_72;
                                                                     |         }
    0x0000aafc ldr.w r8, [pc, 0x8fc]                                 |         
    0x0000ab00 add r8, pc                                            |         r8 = 0x15f00;
                                                                     | label_25:
    0x0000ab02 movs r0, 0                                            |         r0 = 0;
    0x0000ab04 movs r2, 1                                            |         r2 = 1;
    0x0000ab06 mov r3, r0                                            |         r3 = r0;
    0x0000ab08 mov r6, r0                                            |         r6 = r0;
    0x0000ab0a str r2, [r5]                                          |         *(r5) = r2;
    0x0000ab0c str r0, [sp, 0x24]                                    |         var_24h = r0;
    0x0000ab0e b 0xab28                                              |         
                                                                     |     } else {
    0x0000ab10 ldr.w r1, [pc, 0x8ec]                                 |         
    0x0000ab14 movs r0, 5                                            |         r0 = 5;
    0x0000ab16 mov r8, r6                                            |         r8 = r6;
    0x0000ab18 add r1, pc                                            |         r1 = 0x15f1c;
    0x0000ab1a bl 0x10568                                            |         fcn_00010568 (r0, r1, r2);
    0x0000ab1e movs r0, 1                                            |         r0 = 1;
    0x0000ab20 mov r3, r6                                            |         r3 = r6;
    0x0000ab22 mov r2, r0                                            |         r2 = r0;
    0x0000ab24 str r0, [r5]                                          |         *(r5) = r0;
    0x0000ab26 str r0, [sp, 0x24]                                    |         var_24h = r0;
                                                                     |     }
                                                                     | label_7:
    0x0000ab28 ldr.w r1, [pc, 0x8d8]                                 |     
    0x0000ab2c movs r7, 0                                            |     r7 = 0;
    0x0000ab2e str r0, [sp, 8]                                       |     var_8h = r0;
    0x0000ab30 movs r0, 7                                            |     r0 = 7;
    0x0000ab32 strd r7, r7, [sp]                                     |     __asm ("strd r7, r7, [sp]");
    0x0000ab36 add r1, pc                                            |     r1 = 0x15f3e;
    0x0000ab38 bl 0x10568                                            |     fcn_00010568 (r0, r1, r2);
    0x0000ab3c ldr.w sl, [r5]                                        |     sl = *(r5);
    0x0000ab40 str r7, [sp, 0x10]                                    |     var_10h = r7;
    0x0000ab42 cmp.w sl, 1                                           |     
                                                                     |     if (sl != 1) {
    0x0000ab46 bne.w 0xade0                                          |         goto label_73;
                                                                     |     }
                                                                     | label_49:
    0x0000ab4a ldr.w r3, [pc, 0x854]                                 |     r3 = *(0xb3a2);
    0x0000ab4e mov.w sl, 1                                           |     sl = 1;
    0x0000ab50 lsrs r1, r0, 8                                        |     r1 = r0 >> 8;
    0x0000ab52 ldr.w fp, [r4, r3]                                    |     fp = *((r4 + r3));
    0x0000ab56 ldr.w r3, [pc, 0x840]                                 |     r3 = *(0xb39a);
    0x0000ab5a ldr r3, [r4, r3]                                      |     r3 = *((r4 + r3));
    0x0000ab5c mov r2, r3                                            |     r2 = r3;
    0x0000ab5e str r3, [sp, 0x20]                                    |     var_20h = r3;
    0x0000ab60 ldrb r1, [r2]                                         |     r1 = *(r2);
    0x0000ab62 ldrb.w r3, [fp]                                       |     r3 = *(fp);
    0x0000ab66 b 0xa8b2                                              |     goto label_4;
                                                                     | label_52:
    0x0000ab68 ldr r3, [r5]                                          |     r3 = *(r5);
    0x0000ab6a cmp r3, 0                                             |     
                                                                     |     if (r3 == 0) {
    0x0000ab6c beq.w 0xae72                                          |         goto label_74;
                                                                     |     }
    0x0000ab6e strh r1, [r0, 0xc]                                    |     *((r0 + 0xc)) = r1;
    0x0000ab70 cmp.w sl, 0                                           |     
    0x0000ab74 it ne                                                 |     
                                                                     |     if (sl != 0) {
    0x0000ab76 cmpne r3, sl                                          |         __asm ("cmpne r3, sl");
                                                                     |     }
                                                                     |     if (sl > 0) {
    0x0000ab78 bhi.w 0xaf6e                                          |         goto label_75;
                                                                     |     }
    0x0000ab7c cmp r3, 4                                             |     
                                                                     |     if (r3 != 4) {
    0x0000ab7e bne.w 0xb296                                          |         goto label_76;
                                                                     |     }
    0x0000ab82 ldr r2, [sp, 0x10]                                    |     r2 = var_10h;
    0x0000ab84 cmp r2, 0                                             |     
                                                                     |     if (r2 == 0) {
    0x0000ab86 beq.w 0xaf7a                                          |         goto label_77;
                                                                     |     }
    0x0000ab8a mov sl, r3                                            |     sl = r3;
                                                                     | label_17:
    0x0000ab8c ldr.w r3, [pc, 0x808]                                 |     r3 = *(0xb398);
    0x0000ab90 ldr r3, [r4, r3]                                      |     r3 = *((r4 + r3));
    0x0000ab92 str r3, [sp, 0x20]                                    |     var_20h = r3;
                                                                     | label_54:
    0x0000ab94 ldr.w r3, [pc, 0x808]                                 |     r3 = *(0xb3a0);
    0x0000ab98 ldr r2, [sp, 0x20]                                    |     r2 = var_20h;
    0x0000ab9a ldr.w fp, [r4, r3]                                    |     fp = *((r4 + r3));
    0x0000ab9e movs r3, 0                                            |     r3 = 0;
    0x0000aba0 ldrb r1, [r2]                                         |     r1 = *(r2);
    0x0000aba2 strb.w r3, [fp]                                       |     *(fp) = r3;
    0x0000aba6 b 0xa8b2                                              |     goto label_4;
                                                                     | label_57:
    0x0000aba8 ldr.w sl, [pc, 0x85c]                                 |     
    0x0000abac movs r1, 0                                            |     r1 = 0;
    0x0000abae ldr.w r0, [pc, 0x85c]                                 |     
    0x0000abb2 add sl, pc                                            |     sl = 0x15fbe;
    0x0000abb4 add r0, pc                                            |     r0 = 0x15fc6;
    0x0000abb6 bl 0x6bd0                                             |     fcn_00006bd0 (r0, r1, r2);
    0x0000abba add r1, sp, 0x28                                      |     r1 += var_28h;
    0x0000abbc mov r0, sl                                            |     r0 = sl;
    0x0000abbe blx 0x2d9c                                            |     r0 = fcn_00002d9c ();
    0x0000abc2 cmp r0, 0                                             |     
                                                                     |     if (r0 == 0) {
    0x0000abc4 beq.w 0xae52                                          |         goto label_78;
                                                                     |     }
                                                                     | label_8:
    0x0000abc8 ldr.w r0, [pc, 0x844]                                 |     
    0x0000abcc add r0, pc                                            |     r0 = 0x15fe0;
    0x0000abce blx 0x2d84                                            |     fcn_00002d84 ();
    0x0000abd2 ldr.w r1, [pc, 0x840]                                 |     
    0x0000abd6 add r1, pc                                            |     r1 = 0x15ff0;
                                                                     | label_6:
    0x0000abd8 ldr.w r0, [pc, 0x83c]                                 |     
    0x0000abdc movs r2, 0                                            |     r2 = 0;
    0x0000abde add r0, pc                                            |     r0 = 0x15ffa;
    0x0000abe0 bl 0x110d4                                            |     fcn_000110d4 (r0, r1, r2);
                                                                     | label_16:
    0x0000abe4 ldr r2, [r5]                                          |     r2 = *(r5);
    0x0000abe6 cmp r2, 0                                             |     
    0x0000abe8 ite ne                                                |     
                                                                     |     if (r2 == 0) {
    0x0000abea movne r3, 0                                           |         r3 = 0;
                                                                     |     }
                                                                     |     if (r2 != 0) {
    0x0000abec andeq r3, r6, 1                                       |         r3 = r6 & 1;
                                                                     |     }
    0x0000abf0 cmp r3, 0                                             |     
                                                                     |     if (r3 != 0) {
    0x0000abf2 bne.w 0xb058                                          |         goto label_79;
                                                                     |     }
                                                                     | label_23:
    0x0000abf6 ldrb.w r3, [sb]                                       |     r3 = *(sb);
    0x0000abfa cmp r3, 0                                             |     
                                                                     |     if (r3 == 0) {
    0x0000abfc beq.w 0xad20                                          |         goto label_80;
                                                                     |     }
    0x0000ac00 ldr r3, [sp, 0x14]                                    |     r3 = var_14h;
    0x0000ac02 bics r1, r2, 4                                        |     __asm ("bics r1, r2, 4");
    0x0000ac06 ldr r3, [r3]                                          |     r3 = *(r3);
                                                                     |     if (r3 != 0) {
    0x0000ac08 beq 0xac14                                            |         
                                                                     | label_33:
    0x0000ac0a ldr r1, [sp, 0x20]                                    |         r1 = var_20h;
    0x0000ac0c ldrb r1, [r1]                                         |         r1 = *(r1);
    0x0000ac0e cmp r1, 0                                             |         
                                                                     |         if (r1 != 0) {
    0x0000ac10 bne.w 0xaf36                                          |             goto label_81;
                                                                     |         }
                                                                     |     }
                                                                     | label_15:
    0x0000ac14 ldr.w r1, [pc, 0x784]                                 |     r1 = *(0xb39c);
    0x0000ac18 ldr r1, [r4, r1]                                      |     r1 = *((r4 + r1));
    0x0000ac1a ldrb r1, [r1]                                         |     r1 = *(r1);
    0x0000ac1c cmp r1, 0                                             |     
                                                                     |     if (r1 != 0) {
    0x0000ac1e bne.w 0xade8                                          |         goto label_82;
                                                                     |     }
    0x0000ac22 ldr r3, [sp, 0x18]                                    |     r3 = var_18h;
    0x0000ac24 ldr r0, [sp, 0x14]                                    |     r0 = var_14h;
    0x0000ac26 str r1, [r3]                                          |     *(r3) = r1;
    0x0000ac28 movs r3, 1                                            |     r3 = 1;
    0x0000ac2a str r3, [r0]                                          |     *(r0) = r3;
                                                                     |     do {
                                                                     | label_5:
    0x0000ac2c str r1, [sp]                                          |         *(sp) = r1;
    0x0000ac2e movs r0, 7                                            |         r0 = 7;
    0x0000ac30 ldr r1, [sp, 0x1c]                                    |         r1 = var_1ch;
    0x0000ac32 ldrb r1, [r1]                                         |         r1 = *(r1);
    0x0000ac34 str r1, [sp, 4]                                       |         var_4h = r1;
    0x0000ac36 ldr.w r1, [pc, 0x7e4]                                 |         
    0x0000ac3a add r1, pc                                            |         r1 = 0x1605c;
    0x0000ac3c bl 0x10568                                            |         fcn_00010568 (r0, r1, r2);
    0x0000ac40 ldr r2, [r5]                                          |         r2 = *(r5);
    0x0000ac42 cmp r2, 1                                             |         
                                                                     |         if (r2 < 1) {
    0x0000ac44 bls 0xad30                                            |             goto label_83;
                                                                     |         }
    0x0000ac46 cmp r6, 0                                             |         
                                                                     |         if (r6 != 0) {
    0x0000ac48 bne.w 0xafc4                                          |             goto label_84;
                                                                     |         }
                                                                     | label_27:
    0x0000ac4c ldr r3, [sp, 0x10]                                    |         r3 = var_10h;
    0x0000ac4e movs r6, 0                                            |         r6 = 0;
    0x0000ac50 str r3, [sp, 0x18]                                    |         var_18h = r3;
                                                                     | label_36:
    0x0000ac52 ldr.w r0, [pc, 0x7cc]                                 |         
    0x0000ac56 add r0, pc                                            |         r0 = 0x1607c;
    0x0000ac58 blx 0x2de8                                            |         r0 = fcn_00002de8 ();
    0x0000ac5c cmp r0, 0                                             |         
                                                                     |         if (r0 != 0) {
    0x0000ac5e bne.w 0xb086                                          |             goto label_85;
                                                                     |         }
                                                                     | label_24:
    0x0000ac62 ldr r3, [r5]                                          |         r3 = *(r5);
    0x0000ac64 cmp r3, 1                                             |         
                                                                     |         if (r3 == 1) {
    0x0000ac66 beq.w 0xae78                                          |             goto label_86;
                                                                     |         }
    0x0000ac6a ldr.w r3, [pc, 0x730]                                 |         r3 = *(0xb39e);
    0x0000ac6e ldr r3, [r4, r3]                                      |         r3 = *((r4 + r3));
    0x0000ac70 ldrb r3, [r3]                                         |         r3 = *(r3);
    0x0000ac72 cmp r3, 0                                             |         
                                                                     |         if (r3 != 0) {
    0x0000ac74 bne.w 0xaea2                                          |             goto label_87;
                                                                     |         }
    0x0000ac76 strh r5, [r2, 8]                                      |         *((r2 + 8)) = r5;
                                                                     | label_11:
    0x0000ac78 ldr.w r3, [pc, 0x738]                                 |         r3 = *(0xb3b4);
    0x0000ac7c ldr.w sl, [r4, r3]                                    |         sl = *((r4 + r3));
                                                                     | label_10:
    0x0000ac80 ldr.w r3, [sl]                                        |         r3 = *(sl);
    0x0000ac84 ldr r3, [r3, 0x70]                                    |         r3 = *((r3 + 0x70));
    0x0000ac86 blx r3                                                |         r0 = uint32_t (*r3)(uint32_t) (r3);
    0x0000ac88 cmp r0, 0                                             |         
                                                                     |         if (r0 != 0) {
    0x0000ac8a bne.w 0xadb8                                          |             goto label_12;
                                                                     |         }
    0x0000ac8e ldr.w r1, [sl]                                        |         r1 = *(sl);
    0x0000ac92 str r0, [sp, 0x1c]                                    |         var_1ch = r0;
    0x0000ac94 movs r0, 0x22                                         |         r0 = 0x22;
    0x0000ac96 ldr r2, [r1, 0xc]                                     |         r2 = *((r1 + 0xc));
    0x0000ac98 ldr.w sl, [r1, 0x60]                                  |         sl = *((r1 + 0x60));
    0x0000ac9c blx r2                                                |         uint32_t (*r2)(uint32_t, uint32_t, uint32_t) (r0, r1, r2);
    0x0000ac9e ldr r3, [sp, 0x10]                                    |         r3 = var_10h;
    0x0000aca0 eor r2, r0, 1                                         |         r2 = r0 ^ 1;
    0x0000aca4 orrs r2, r3                                           |         r2 |= r3;
    0x0000aca6 uxtb r2, r2                                           |         r2 = (int8_t) r2;
    0x0000aca8 cmp r2, 0                                             |         
                                                                     |         if (r2 == 0) {
    0x0000acaa beq.w 0xb0c8                                          |             goto label_88;
                                                                     |         }
    0x0000acae ldr r3, [sp, 0x1c]                                    |         r3 = var_1ch;
    0x0000acb0 ldr r1, [r5]                                          |         r1 = *(r5);
    0x0000acb2 mov r0, r3                                            |         r0 = r3;
                                                                     | label_26:
    0x0000acb4 sub.w r1, r1, 4                                       |         r1 -= 4;
    0x0000acb8 clz r1, r1                                            |         r1 &= r1;
    0x0000acbc lsrs r1, r1, 5                                        |         r1 >>= 5;
    0x0000acbe blx sl                                                |         r0 = sl (r0, r1, r3);
    0x0000acc0 cmp r0, 0                                             |         
                                                                     |         if (r0 != 0) {
    0x0000acc2 bne 0xadb8                                            |             goto label_12;
                                                                     |         }
    0x0000acc4 ldr.w r2, [pc, 0x75c]                                 |         
    0x0000acc8 mov r3, r0                                            |         r3 = r0;
    0x0000acca ldr.w r7, [pc, 0x75c]                                 |         
    0x0000acce ldr.w r1, [pc, 0x75c]                                 |         
    0x0000acd2 add r2, pc                                            |         r2 = 0x160fa;
    0x0000acd4 add r7, pc                                            |         r7 = 0x16102;
    0x0000acd6 mov r0, r2                                            |         r0 = r2;
    0x0000acd8 add r1, pc                                            |         r1 = 0x1610a;
    0x0000acda str r1, [sp]                                          |         *(sp) = r1;
    0x0000acdc mov r1, r7                                            |         r1 = r7;
    0x0000acde blx 0x3188                                            |         r0 = strcat_chk ()
    0x0000ace2 cmp r0, 0                                             |         
                                                                     |         if (r0 < 0) {
    0x0000ace4 blt.w 0xb2e0                                          |             goto label_89;
                                                                     |         }
    0x0000ace8 mov r0, r7                                            |         r0 = r7;
    0x0000acea mov.w r1, 0x4000                                      |         r1 = 0x4000;
    0x0000acee blx 0x2e3c                                            |         r0 = fcn_00002e3c ();
    0x0000acf2 cmp r0, 0                                             |         
                                                                     |         if (r0 < 0) {
    0x0000acf4 blt.w 0xb27c                                          |             goto label_90;
                                                                     |         }
    0x0000acf8 bl 0x9f18                                             |         r0 = fcn_00009f18 (r0);
    0x0000acfc cmp r0, 0                                             |         
                                                                     |         if (r0 != 0) {
    0x0000acfe bne.w 0xb246                                          |             goto label_91;
                                                                     |         }
                                                                     | label_30:
    0x0000ad02 ldr.w r0, [pc, 0x72c]                                 |         
    0x0000ad06 add r0, pc                                            |         r0 = 0x1613c;
    0x0000ad08 blx 0x3030                                            |         fcn_00003030 ();
    0x0000ad0c ldr r3, [sp, 0x18]                                    |         r3 = var_18h;
    0x0000ad0e cmp r0, 0                                             |         
    0x0000ad10 str r3, [sp, 0x10]                                    |         var_10h = r3;
                                                                     |         if (r0 < 0) {
    0x0000ad12 blt.w 0xb340                                          |             goto label_92;
                                                                     |         }
                                                                     | label_37:
    0x0000ad16 ldr r2, [r5]                                          |         r2 = *(r5);
    0x0000ad18 b 0xad36                                              |         goto label_35;
                                                                     | label_32:
    0x0000ad1a ldr.w r8, [pc, 0x718]                                 |         
    0x0000ad1e add r8, pc                                            |         r8 = 0x16158;
                                                                     | label_80:
    0x0000ad20 ldr r3, [sp, 0x18]                                    |         r3 = var_18h;
    0x0000ad22 mov.w r1, -1                                          |         r1 = -1;
    0x0000ad26 str r1, [r3]                                          |         *(r3) = r1;
    0x0000ad28 ldr r3, [sp, 0x14]                                    |         r3 = var_14h;
    0x0000ad2a str r1, [r3]                                          |         *(r3) = r1;
    0x0000ad2c mov r3, r1                                            |         r3 = r1;
    0x0000ad2e b 0xac2c                                              |         
                                                                     |     } while (1);
                                                                     | label_83:
    0x0000ad30 cmp r2, 0                                             |     
                                                                     |     if (r2 != 0) {
    0x0000ad32 bne.w 0xb33a                                          |         goto label_93;
                                                                     |     }
                                                                     | label_35:
    0x0000ad36 ldr r3, [sp, 0x10]                                    |     r3 = var_10h;
    0x0000ad38 movs r0, 7                                            |     r0 = 7;
    0x0000ad3a ldr.w r1, [pc, 0x6fc]                                 |     
    0x0000ad3e str r3, [sp]                                          |     *(sp) = r3;
    0x0000ad40 mov r3, r6                                            |     r3 = r6;
    0x0000ad42 add r1, pc                                            |     r1 = 0x16180;
    0x0000ad44 bl 0x10568                                            |     fcn_00010568 (r0, r1, r2);
    0x0000ad48 cmp r6, 0                                             |     
                                                                     |     if (r6 == 0) {
    0x0000ad4a beq.w 0xaf84                                          |         goto label_94;
                                                                     |     }
                                                                     | label_19:
    0x0000ad4e ldr r3, [r5]                                          |     r3 = *(r5);
    0x0000ad50 bics r3, r3, 4                                        |     __asm ("bics r3, r3, 4");
    0x0000ad54 ite ne                                                |     
                                                                     |     if (r6 == 0) {
    0x0000ad56 movne r0, 1                                           |         r0 = 1;
                                                                     |     }
                                                                     |     if (r6 != 0) {
    0x0000ad58 moveq r0, 0                                           |         r0 = 0;
                                                                     |     }
    0x0000ad5a bl 0x14cd4                                            |     r0 = fcn_00014cd4 (r0);
                                                                     |     if (r0 != 0) {
    0x0000ad5e cbnz r0, 0xadb8                                       |         goto label_12;
                                                                     |     }
    0x0000ad60 ldr.w r3, [pc, 0x650]                                 |     
    0x0000ad64 ldr.w sl, [r4, r3]                                    |     sl = *((r4 + r3));
    0x0000ad68 ldr.w r3, [sl]                                        |     r3 = *(sl);
    0x0000ad6c ldr r3, [r3, 0x68]                                    |     r3 = *(0xb41c);
    0x0000ad6e blx r3                                                |     uint32_t (*r3)(uint32_t) (r3);
    0x0000ad70 ldr.w r1, [pc, 0x6c8]                                 |     
    0x0000ad74 movs r0, 7                                            |     r0 = 7;
    0x0000ad76 add r1, pc                                            |     r1 = 0x161b6;
    0x0000ad78 bl 0x10568                                            |     fcn_00010568 (r0, r1, r2);
    0x0000ad7c ldr.w r1, [pc, 0x6c0]                                 |     
    0x0000ad80 movw r2, 0x1ed                                        |     r2 = 0x1ed;
    0x0000ad84 ldr.w r0, [pc, 0x6bc]                                 |     
    0x0000ad88 add r1, pc                                            |     r1 = 0x161cc;
    0x0000ad8a add r0, pc                                            |     r0 = 0x161d2;
    0x0000ad8c bl 0x9ff8                                             |     r0 = fcn_00009ff8 (r0, r1, r2, r3);
    0x0000ad90 cmp r0, 0                                             |     
                                                                     |     if (r0 == 0) {
    0x0000ad92 beq 0xae4c                                            |         goto label_95;
                                                                     |     }
    0x0000ad94 blx 0x317c                                            |     r0 = strncpy (r0, r1, r2);
    0x0000ad98 ldr r0, [r0]                                          |     r0 = *(r0);
                                                                     |     do {
                                                                     |         if (r0 == 0) {
    0x0000ad9a cbnz r0, 0xadb8                                       |             
    0x0000ad9c ldr.w r0, [pc, 0x6a8]                                 |             
    0x0000ada0 add r0, pc                                            |             r0 = 0x161ec;
    0x0000ada2 bl 0x11500                                            |             r0 = fcn_00011500 (r0);
                                                                     |             if (r0 != 0) {
    0x0000ada6 cbnz r0, 0xadb8                                       |                 goto label_12;
                                                                     |             }
    0x0000ada8 ldr.w r0, [pc, 0x6a0]                                 |             
    0x0000adac add r0, pc                                            |             r0 = 0x161fc;
    0x0000adae bl 0x11500                                            |             r0 = fcn_00011500 (r0);
    0x0000adb2 cmp r0, 0                                             |             
                                                                     |             if (r0 == 0) {
    0x0000adb4 beq.w 0xb15a                                          |                 goto label_96;
                                                                     |             }
                                                                     |         }
                                                                     | label_12:
    0x0000adb8 blx 0x317c                                            |         r0 = strncpy (r0, r1, r2);
    0x0000adbc ldr r0, [r0]                                          |         r0 = *(r0);
                                                                     | label_20:
    0x0000adbe ldr.w r2, [pc, 0x690]                                 |         
    0x0000adc2 ldr.w r3, [pc, 0x5b0]                                 |         r3 = *(0xb376);
    0x0000adc6 add r2, pc                                            |         r2 = 0x1621c;
    0x0000adc8 ldr r3, [r2, r3]                                      |         r3 = *(0x1621c);
    0x0000adca ldr r2, [r3]                                          |         r2 = *(0x1621c);
    0x0000adcc ldr r3, [sp, 0x2cc]                                   |         r3 = var_2cch;
    0x0000adce eors r2, r3                                           |         r2 ^= r3;
    0x0000add0 mov.w r3, 0                                           |         r3 = 0;
                                                                     |         if (r2 != r3) {
    0x0000add4 bne.w 0xb7fe                                          |             goto label_97;
                                                                     |         }
    0x0000add8 add.w sp, sp, 0x2d4                                   |         
    0x0000addc pop.w {r4, r5, r6, r7, r8, sb, sl, fp, pc}            |         
                                                                     | label_73:
    0x0000ade0 ldr.w r0, [pc, 0x670]                                 |         
    0x0000ade4 add r0, pc                                            |         r0 = 0x1623c;
    0x0000ade6 b 0xa860                                              |         goto label_3;
                                                                     | label_82:
    0x0000ade8 ldr r1, [sp, 0x18]                                    |         r1 = var_18h;
    0x0000adea adds r0, r3, 1                                        |         r0 = r3 + 1;
    0x0000adec ldr r1, [r1]                                          |         r1 = *(r1);
                                                                     |         if (r0 != r3) {
    0x0000adee bne.w 0xaf58                                          |             goto label_98;
                                                                     |         }
    0x0000adf2 cmp r1, 0                                             |         
                                                                     |         if (r1 <= 0) {
    0x0000adf4 ble.w 0xb0d2                                          |             goto label_99;
                                                                     |         }
    0x0000adf8 ldr r0, [sp, 0x14]                                    |         r0 = var_14h;
    0x0000adfa movs r3, 0                                            |         r3 = 0;
    0x0000adfc str r3, [r0]                                          |         *(r0) = r3;
    0x0000adfe b 0xac2c                                              |         goto label_5;
                                                                     | label_58:
    0x0000ae00 ldr.w r3, [pc, 0x654]                                 |         
    0x0000ae04 add.w sl, sp, 0xcc                                    |         sl += var_cch;
    0x0000ae08 movs r2, 0xff                                         |         r2 = 0xff;
    0x0000ae0a mov r1, sl                                            |         r1 = sl;
    0x0000ae0c add r3, pc                                            |         r3 = 0x16268;
    0x0000ae0e mov r0, r3                                            |         r0 = r3;
    0x0000ae10 mov r7, r3                                            |         r7 = r3;
    0x0000ae12 movs r3, 1                                            |         r3 = 1;
    0x0000ae14 bl 0x10ebc                                            |         fcn_00010ebc (r0, r1, r2, r3);
    0x0000ae16 invalid                                               |         
                                                                     |         if (r3 != 1) {
    0x0000ae1a bne.w 0xaf50                                          |             goto label_100;
                                                                     |         }
    0x0000ae1e mov r0, sl                                            |         r0 = sl;
    0x0000ae20 blx 0x3078                                            |         r0 = fcn_00003078 ();
    0x0000ae24 add.w r2, sl, r0                                      |         r2 = sl + r0;
    0x0000ae28 mov r3, r0                                            |         r3 = r0;
    0x0000ae2a ldrb r2, [r2, -0x1]                                   |         r2 = *((r2 - 0x1));
    0x0000ae2e mov r0, r7                                            |         r0 = r7;
    0x0000ae30 cmp r2, 0xa                                           |         
    0x0000ae32 itt ne                                                |         
                                                                     |         if (r2 == 0xa) {
    0x0000ae34 movne r2, 0xa                                         |             r2 = 0xa;
                                                                     |         }
                                                                     |         if (r2 != 0xa) {
    0x0000ae36 strhne r2, [sl, r3]                                   |             __asm ("strhne r2, [sl, r3]");
                                                                     |         }
    0x0000ae3a blx 0x2d84                                            |         fcn_00002d84 ();
    0x0000ae3e mov r1, sl                                            |         r1 = sl;
    0x0000ae40 b 0xabd8                                              |         goto label_6;
                                                                     | label_70:
    0x0000ae42 ldr r2, [r5]                                          |         r2 = *(r5);
    0x0000ae44 movs r3, 1                                            |         r3 = 1;
    0x0000ae46 mov r8, r0                                            |         r8 = r0;
    0x0000ae48 str r0, [sp, 0x24]                                    |         var_24h = r0;
    0x0000ae4a b 0xab28                                              |         goto label_7;
                                                                     | label_95:
    0x0000ae4c bl 0xa278                                             |         fcn_0000a278 (r0, r1, r2);
    0x0000ae50 b 0xad9a                                              |         
                                                                     |     } while (1);
                                                                     | label_78:
    0x0000ae52 ldr r3, [r5]                                          |     r3 = *(r5);
    0x0000ae54 cmp r3, 0                                             |     
                                                                     |     if (r3 == 0) {
    0x0000ae56 beq.w 0xb0b4                                          |         goto label_101;
                                                                     |     }
    0x0000ae5a ldr.w r1, [pc, 0x600]                                 |     
    0x0000ae5e movs r0, 7                                            |     r0 = 7;
    0x0000ae60 add r1, pc                                            |     r1 = 0x162c2;
    0x0000ae62 bl 0x10568                                            |     fcn_00010568 (r0, r1, r2);
    0x0000ae66 ldr.w r0, [pc, 0x5f8]                                 |     
    0x0000ae6a add r0, pc                                            |     r0 = 0x162d0;
    0x0000ae6c blx 0x2de8                                            |     fcn_00002de8 ();
    0x0000ae70 b 0xabc8                                              |     goto label_8;
                                                                     | label_74:
    0x0000ae72 str.w sl, [r5]                                        |     __asm ("str.w sl, [r5]");
    0x0000ae76 b 0xa876                                              |     goto label_9;
                                                                     | label_86:
    0x0000ae78 ldr r3, [sp, 0x18]                                    |     r3 = var_18h;
    0x0000ae7a cmp r3, 0                                             |     
                                                                     |     if (r3 != 0) {
    0x0000ae7c bne.w 0xb01c                                          |         goto label_102;
                                                                     |     }
                                                                     | label_22:
    0x0000ae80 cmp r6, 0                                             |     
                                                                     |     if (r6 != 0) {
    0x0000ae82 bne.w 0xb252                                          |         goto label_103;
                                                                     |     }
                                                                     | label_31:
    0x0000ae86 ldr.w r3, [pc, 0x514]                                 |     r3 = *(0xb39e);
    0x0000ae8a ldr r3, [r4, r3]                                      |     r3 = *((r4 + r3));
    0x0000ae8c ldrb r6, [r3]                                         |     r6 = *(r3);
    0x0000ae8e cmp r6, 0                                             |     
                                                                     |     if (r6 == 0) {
    0x0000ae90 beq.w 0xb0e8                                          |         goto label_104;
                                                                     |     }
    0x0000ae92 strh r2, [r5, 8]                                      |     *((r5 + 8)) = r2;
    0x0000ae94 ldr r3, [r5]                                          |     r3 = *(r5);
    0x0000ae96 cmp r3, 1                                             |     
    0x0000ae98 mov.w r3, 0                                           |     r3 = 0;
    0x0000ae9c mov r6, r3                                            |     r6 = r3;
    0x0000ae9e str r3, [sp, 0x18]                                    |     var_18h = r3;
                                                                     |     if (r3 == 1) {
    0x0000aea0 beq 0xaec4                                            |         goto label_105;
                                                                     |     }
                                                                     | label_87:
    0x0000aea2 ldr.w r3, [pc, 0x510]                                 |     
    0x0000aea6 movs r0, 0x22                                         |     r0 = 0x22;
    0x0000aea8 ldr.w sl, [r4, r3]                                    |     sl = *((r4 + r3));
    0x0000aeac ldr.w r3, [sl]                                        |     r3 = *(sl);
    0x0000aeb0 ldr r3, [r3, 0xc]                                     |     r3 = *(0xb3c2);
    0x0000aeb2 blx r3                                                |     r0 = uint32_t (*r3)(uint32_t, uint32_t) (r0, r3);
    0x0000aeb4 cmp r0, 0                                             |     
                                                                     |     if (r0 == 0) {
    0x0000aeb6 beq.w 0xac80                                          |         goto label_10;
                                                                     |     }
    0x0000aeba ldr r3, [r5]                                          |     r3 = *(r5);
    0x0000aebc subs r3, 2                                            |     r3 -= 2;
    0x0000aebe cmp r3, 1                                             |     
                                                                     |     if (r3 > 1) {
    0x0000aec0 bhi.w 0xac80                                          |         goto label_10;
                                                                     |     }
                                                                     | label_105:
    0x0000aec4 ldrb.w r0, [sb]                                       |     r0 = *(sb);
    0x0000aec8 ldr r3, [sp, 0x20]                                    |     r3 = var_20h;
    0x0000aeca ldrb r3, [r3]                                         |     r3 = *(r3);
    0x0000aecc cmp r0, 0                                             |     
                                                                     |     if (r0 == 0) {
    0x0000aece beq.w 0xb122                                          |         goto label_106;
                                                                     |     }
                                                                     |     if (r3 != 0) {
    0x0000aed2 cbz r3, 0xaeda                                        |         
    0x0000aed4 ldr r2, [sp, 0x1c]                                    |         r2 = var_1ch;
    0x0000aed6 movs r3, 1                                            |         r3 = 1;
    0x0000aed8 strb r3, [r2]                                         |         *(r2) = r3;
                                                                     |     }
    0x0000aeda movs r1, 0                                            |     r1 = 0;
    0x0000aedc movs r0, 1                                            |     r0 = 1;
    0x0000aede bl 0x97e0                                             |     r0 = fcn_000097e0 (r0, r1);
    0x0000aee2 cmp r0, 0                                             |     
                                                                     |     if (r0 == 0) {
    0x0000aee4 beq.w 0xac78                                          |         goto label_11;
                                                                     |     }
    0x0000aee8 b 0xadb8                                              |     goto label_12;
                                                                     | label_56:
    0x0000aeea cmp r1, 0                                             |     
                                                                     |     if (r1 != 0) {
    0x0000aeec bne.w 0xa8a2                                          |         goto label_13;
                                                                     |     }
    0x0000aef0 ldr.w r1, [pc, 0x570]                                 |     
    0x0000aef4 movs r0, 4                                            |     r0 = 4;
    0x0000aef6 add r1, pc                                            |     r1 = 0x1635e;
    0x0000aef8 bl 0x10568                                            |     fcn_00010568 (r0, r1, r2);
    0x0000aefc ldr.w r3, [pc, 0x4a0]                                 |     r3 = *(0xb3a0);
    0x0000af00 movs r2, 1                                            |     r2 = 1;
    0x0000af02 str r2, [r5]                                          |     *(r5) = r2;
    0x0000af04 mov sl, r2                                            |     sl = r2;
    0x0000af06 ldr.w fp, [r4, r3]                                    |     fp = *((r4 + r3));
    0x0000af0a ldr r3, [sp, 0x20]                                    |     r3 = var_20h;
    0x0000af0c ldrb r1, [r3]                                         |     r1 = *(r3);
    0x0000af0e ldrb.w r3, [fp]                                       |     r3 = *(fp);
    0x0000af12 b 0xa8b2                                              |     goto label_4;
                                                                     | label_64:
    0x0000af14 ldr.w r1, [pc, 0x550]                                 |     
    0x0000af18 mov r0, r8                                            |     r0 = r8;
    0x0000af1a add r1, pc                                            |     r1 = 0x16386;
    0x0000af1c blx 0x3130                                            |     r0 = fcn_00003130 ();
    0x0000af20 cmp r0, 0                                             |     
                                                                     |     if (r0 != 0) {
    0x0000af22 bne.w 0xb22e                                          |         goto label_107;
                                                                     |     }
                                                                     | label_29:
    0x0000af26 movs r3, 1                                            |     r3 = 1;
    0x0000af28 str r3, [r5]                                          |     *(r5) = r3;
                                                                     | label_62:
    0x0000af2a mov.w r8, 0                                           |     r8 = 0;
    0x0000af2e b 0xa82a                                              |     goto label_2;
                                                                     | label_63:
    0x0000af30 movs r3, 3                                            |     r3 = 3;
    0x0000af32 str r3, [r5]                                          |     *(r5) = r3;
    0x0000af34 b 0xaa0a                                              |     goto label_14;
                                                                     | label_81:
    0x0000af36 ldr r0, [sp, 0x1c]                                    |     r0 = var_1ch;
    0x0000af38 movs r1, 1                                            |     r1 = 1;
    0x0000af3a strb r1, [r0]                                         |     *(r0) = r1;
    0x0000af3c b 0xac14                                              |     goto label_15;
                                                                     | label_66:
    0x0000af3e ldr.w r0, [pc, 0x52c]                                 |     
    0x0000af42 add r0, pc                                            |     r0 = 0x163b4;
    0x0000af44 blx 0x2d84                                            |     fcn_00002d84 ();
    0x0000af48 ldr.w r1, [pc, 0x524]                                 |     
    0x0000af4c add r1, pc                                            |     r1 = 0x163c0;
    0x0000af4e b 0xabd8                                              |     goto label_6;
                                                                     | label_100:
    0x0000af50 mov r0, r7                                            |     r0 = r7;
    0x0000af52 blx 0x2d84                                            |     fcn_00002d84 ();
    0x0000af56 b 0xabe4                                              |     goto label_16;
                                                                     | label_98:
    0x0000af58 adds r0, r1, 1                                        |     r0 = r1 + 1;
                                                                     |     if (r0 != r1) {
    0x0000af5a bne.w 0xac2c                                          |         goto label_5;
                                                                     |     }
    0x0000af5e subs r1, r3, 1                                        |     r1 = r3 - 1;
    0x0000af60 cmp r1, 1                                             |     
                                                                     |     if (r1 > 1) {
    0x0000af62 bhi.w 0xb0e0                                          |         goto label_108;
                                                                     |     }
    0x0000af66 ldr r0, [sp, 0x18]                                    |     r0 = var_18h;
    0x0000af68 movs r1, 0                                            |     r1 = 0;
    0x0000af6a str r1, [r0]                                          |     *(r0) = r1;
    0x0000af6c b 0xac2c                                              |     goto label_5;
                                                                     | label_75:
    0x0000af6e ldr r3, [sp, 0x10]                                    |     r3 = var_10h;
    0x0000af70 str.w sl, [r5]                                        |     __asm ("str.w sl, [r5]");
    0x0000af74 cmp r3, 0                                             |     
                                                                     |     if (r3 != 0) {
    0x0000af76 bne.w 0xab8c                                          |         goto label_17;
                                                                     |     }
                                                                     | label_77:
    0x0000af7a ldr.w r3, [pc, 0x41c]                                 |     r3 = *(0xb39a);
    0x0000af7e ldr r3, [r4, r3]                                      |     r3 = *((r4 + r3));
    0x0000af80 str r3, [sp, 0x20]                                    |     var_20h = r3;
    0x0000af82 b 0xa890                                              |     goto label_18;
                                                                     | label_94:
    0x0000af84 ldr.w r3, [pc, 0x42c]                                 |     r3 = *(0xb3b4);
    0x0000af88 ldr.w sl, [r4, r3]                                    |     sl = *((r4 + r3));
                                                                     | label_21:
    0x0000af8c ldr.w r1, [pc, 0x4e4]                                 |     
    0x0000af90 movs r0, 7                                            |     r0 = 7;
    0x0000af92 add r1, pc                                            |     r1 = 0x1640a;
    0x0000af94 bl 0x10568                                            |     fcn_00010568 (r0, r1, r2);
    0x0000af96 invalid                                               |     
    0x0000af9a adds r0, 0                                            |     r0 += 0;
    0x0000af9c movs r2, 0                                            |     r2 = 0;
    0x0000af9e ldr.w r1, [pc, 0x4d8]                                 |     
    0x0000afa2 movs r0, 0x22                                         |     r0 = 0x22;
    0x0000afa4 ldr r3, [r3, 0x14]                                    |     r3 = *((r3 + 0x14));
    0x0000afa6 add r1, pc                                            |     r1 = 0x16424;
    0x0000afa8 blx r3                                                |     r0 = uint32_t (*r3)(uint32_t, uint32_t, uint32_t, uint32_t) (r0, r1, r2, r3);
    0x0000afaa cmp r0, 0                                             |     
                                                                     |     if (r0 == 0) {
    0x0000afac beq.w 0xad4e                                          |         goto label_19;
                                                                     |     }
    0x0000afb0 ldr.w r1, [pc, 0x4c8]                                 |     
    0x0000afb4 movs r0, 2                                            |     r0 = 2;
    0x0000afb6 add r1, pc                                            |     r1 = 0x16436;
    0x0000afb8 bl 0x10568                                            |     r0 = fcn_00010568 (r0, r1, r2);
    0x0000afbc blx 0x317c                                            |     r0 = strncpy (r0, r1, r2);
    0x0000afc0 ldr r0, [r0]                                          |     r0 = *(r0);
    0x0000afc2 b 0xadbe                                              |     goto label_20;
                                                                     | label_84:
    0x0000afc4 ldr.w r1, [pc, 0x4b8]                                 |     
    0x0000afc8 movs r0, 7                                            |     r0 = 7;
    0x0000afca add r1, pc                                            |     r1 = 0x1644e;
    0x0000afcc bl 0x10568                                            |     fcn_00010568 (r0, r1, r2);
    0x0000afd0 ldr.w r0, [pc, 0x4b0]                                 |     
    0x0000afd4 add r0, pc                                            |     r0 = 0x1645c;
    0x0000afd6 blx 0x3030                                            |     r0 = fcn_00003030 ();
    0x0000afda cmp r0, 0                                             |     
                                                                     |     if (r0 < 0) {
    0x0000afdc blt.w 0xb328                                          |         goto label_109;
                                                                     |     }
    0x0000afe0 ldr r3, [pc, 0x3d0]                                   |     
    0x0000afe2 movs r2, 1                                            |     r2 = 1;
    0x0000afe4 ldr.w r1, [pc, 0x4a0]                                 |     
    0x0000afe8 movs r0, 0x22                                         |     r0 = 0x22;
    0x0000afea ldr.w sl, [r4, r3]                                    |     sl = *((r4 + r3));
    0x0000afee add r1, pc                                            |     r1 = 0x1647a;
    0x0000aff0 ldr.w r3, [sl]                                        |     r3 = *(sl);
    0x0000aff4 ldr r3, [r3, 0x14]                                    |     r3 = *(0xb3c8);
    0x0000aff6 blx r3                                                |     r0 = uint32_t (*r3)(uint32_t, uint32_t, uint32_t, uint32_t) (r0, r1, r2, r3);
    0x0000aff8 cmp r0, 0                                             |     
                                                                     |     if (r0 != 0) {
    0x0000affa bne.w 0xb13e                                          |         goto label_110;
                                                                     |     }
    0x0000affe ldr r3, [r5]                                          |     r3 = *(r5);
    0x0000b000 cmp r3, 0                                             |     
                                                                     |     if (r3 != 0) {
    0x0000b002 bne.w 0xb6c2                                          |         goto label_111;
                                                                     |     }
    0x0000b006 ldr.w r1, [pc, 0x484]                                 |     
    0x0000b00a movs r2, 1                                            |     r2 = 1;
    0x0000b00c str r2, [sp]                                          |     *(sp) = r2;
    0x0000b00e movs r0, 7                                            |     r0 = 7;
    0x0000b010 mov r2, r3                                            |     r2 = r3;
    0x0000b012 str r6, [sp, 0x10]                                    |     var_10h = r6;
    0x0000b014 add r1, pc                                            |     r1 = 0x164a6;
    0x0000b016 bl 0x10568                                            |     fcn_00010568 (r0, r1, r2);
    0x0000b01a b 0xaf8c                                              |     goto label_21;
                                                                     | label_102:
    0x0000b01c ldr.w r1, [pc, 0x470]                                 |     
    0x0000b020 movs r0, 7                                            |     r0 = 7;
    0x0000b022 add r1, pc                                            |     r1 = 0x164b6;
    0x0000b024 bl 0x10568                                            |     fcn_00010568 (r0, r1, r2);
    0x0000b028 ldr r3, [pc, 0x388]                                   |     
    0x0000b02a movs r0, 0x42                                         |     r0 = 0x42;
    0x0000b02c ldr.w r1, [pc, 0x464]                                 |     
    0x0000b030 ldr.w sl, [r4, r3]                                    |     sl = *((r4 + r3));
    0x0000b034 add r1, pc                                            |     r1 = 0x164cc;
    0x0000b036 ldr.w r3, [sl]                                        |     r3 = *(sl);
    0x0000b03a ldr r3, [r3, 0x18]                                    |     r3 = *(0xb3cc);
    0x0000b03c blx r3                                                |     r0 = uint32_t (*r3)(uint32_t, uint32_t, uint32_t) (r0, r1, r3);
    0x0000b03e cmp r0, 0                                             |     
                                                                     |     if (r0 >= 0) {
    0x0000b040 bge.w 0xae80                                          |         goto label_22;
                                                                     |     }
    0x0000b044 ldr.w r1, [pc, 0x450]                                 |     
    0x0000b048 movs r0, 2                                            |     r0 = 2;
    0x0000b04a add r1, pc                                            |     r1 = 0x164e6;
    0x0000b04c bl 0x10568                                            |     r0 = fcn_00010568 (r0, r1, r2);
    0x0000b050 blx 0x317c                                            |     r0 = strncpy (r0, r1, r2);
    0x0000b054 ldr r0, [r0]                                          |     r0 = *(r0);
    0x0000b056 b 0xadbe                                              |     goto label_20;
                                                                     | label_79:
    0x0000b058 ldr.w r0, [pc, 0x440]                                 |     
    0x0000b05c add.w sl, sp, 0x84                                    |     sl += var_84h;
    0x0000b060 mov r1, sl                                            |     r1 = sl;
    0x0000b062 add r0, pc                                            |     r0 = 0x16502;
    0x0000b064 blx 0x300c                                            |     r0 = fcn_0000300c ();
    0x0000b068 cmp r0, 0                                             |     
                                                                     |     if (r0 < 0) {
    0x0000b06a blt.w 0xb288                                          |         goto label_112;
                                                                     |     }
    0x0000b06e ldr.w r2, [sl]                                        |     r2 = *(sl);
    0x0000b072 ldr.w r3, [sl, 0x10]                                  |     r3 = var_10h_2;
    0x0000b076 mul r2, r3, r2                                        |     r2 = r3 * r2;
    0x0000b07a cmp.w r2, 0x4000                                      |     
                                                                     |     if (r2 <= 0x4000) {
    0x0000b07e blo.w 0xb2a8                                          |         goto label_113;
                                                                     |     }
    0x0000b082 ldr r2, [r5]                                          |     r2 = *(r5);
    0x0000b084 b 0xabf6                                              |     goto label_23;
                                                                     | label_85:
    0x0000b086 ldr.w r1, [pc, 0x418]                                 |     
    0x0000b08a movs r0, 4                                            |     r0 = 4;
    0x0000b08c add r1, pc                                            |     r1 = 0x16532;
    0x0000b08e bl 0x10568                                            |     fcn_00010568 (r0, r1, r2);
    0x0000b092 b 0xac62                                              |     goto label_24;
                                                                     | label_65:
    0x0000b094 ldr r3, [r5]                                          |     r3 = *(r5);
    0x0000b096 cmp r3, 3                                             |     
                                                                     |     if (r3 == 3) {
    0x0000b098 beq.w 0xb2f2                                          |         goto label_114;
                                                                     |     }
    0x0000b09c ldr.w r0, [pc, 0x404]                                 |     
    0x0000b0a0 ldr.w r8, [pc, 0x404]                                 |     
    0x0000b0a4 add r0, pc                                            |     r0 = 0x1654c;
    0x0000b0a6 blx 0x2d84                                            |     fcn_00002d84 ();
    0x0000b0aa ldr.w r1, [pc, 0x400]                                 |     
    0x0000b0ae add r8, pc                                            |     r8 = 0x1655a;
    0x0000b0b0 add r1, pc                                            |     r1 = 0x16562;
    0x0000b0b2 b 0xabd8                                              |     goto label_6;
                                                                     | label_101:
    0x0000b0b4 ldr r1, [pc, 0x3f8]                                   |     
    0x0000b0b6 mov r0, sl                                            |     r0 = sl;
    0x0000b0b8 add r1, pc                                            |     r1 = 0x1656c;
    0x0000b0ba bl 0x1155c                                            |     fcn_0001155c (r0);
    0x0000b0be b 0xabc8                                              |     goto label_8;
                                                                     | label_72:
    0x0000b0c0 ldr.w r8, [pc, 0x3f0]                                 |     r8 = fcn.000110f8;
    0x0000b0c4 add r8, pc                                            |     r8 += pc;
    0x0000b0c6 b 0xab02                                              |     goto label_25;
                                                                     | label_88:
    0x0000b0c8 ldr r1, [r5]                                          |     r1 = *(r5);
    0x0000b0ca subs r0, r1, 1                                        |     r0 = r1 - 1;
    0x0000b0cc it ne                                                 |     
                                                                     |     if (r0 == r1) {
    0x0000b0ce movne r0, 1                                           |         r0 = 1;
                                                                     |     }
    0x0000b0d0 b 0xacb4                                              |     goto label_26;
                                                                     | label_99:
    0x0000b0d2 ldr r0, [sp, 0x14]                                    |     r0 = var_14h;
    0x0000b0d4 adds r7, r1, 1                                        |     r7 = r1 + 1;
    0x0000b0d6 mov.w r3, 2                                           |     r3 = 2;
    0x0000b0da str r3, [r0]                                          |     *(r0) = r3;
                                                                     |     if (r7 != r1) {
    0x0000b0dc bne.w 0xac2c                                          |         goto label_5;
                                                                     |     }
                                                                     | label_108:
    0x0000b0e0 ldr r0, [sp, 0x18]                                    |     r0 = var_18h;
    0x0000b0e2 movs r1, 0xa                                          |     r1 = 0xa;
    0x0000b0e4 str r1, [r0]                                          |     *(r0) = r1;
    0x0000b0e6 b 0xac2c                                              |     goto label_5;
                                                                     | label_104:
    0x0000b0e8 ldr r3, [pc, 0x2c8]                                   |     r3 = *(0xb3b4);
    0x0000b0ea ldr.w sl, [r4, r3]                                    |     sl = *((r4 + r3));
    0x0000b0ee str r6, [sp, 0x18]                                    |     var_18h = r6;
    0x0000b0f0 b 0xac80                                              |     goto label_10;
                                                                     | label_53:
    0x0000b0f2 ldr r1, [pc, 0x3c4]                                   |     
    0x0000b0f4 movs r0, 5                                            |     r0 = 5;
    0x0000b0f6 add r1, pc                                            |     r1 = 0x165b4;
    0x0000b0f8 bl 0x10568                                            |     fcn_00010568 (r0, r1, r2);
    0x0000b0fc ldr r2, [sp, 0x10]                                    |     r2 = var_10h;
    0x0000b0fe movs r3, 1                                            |     r3 = 1;
    0x0000b100 mov sl, r3                                            |     sl = r3;
    0x0000b102 str r3, [r5]                                          |     *(r5) = r3;
    0x0000b104 cmp r2, 0                                             |     
                                                                     |     if (r2 != 0) {
    0x0000b106 bne.w 0xab8c                                          |         goto label_17;
                                                                     |     }
    0x0000b10a ldr r3, [pc, 0x294]                                   |     r3 = *(0xb3a2);
    0x0000b10c ldr.w fp, [r4, r3]                                    |     fp = *((r4 + r3));
    0x0000b10e add sp, 0xc                                           |     
    0x0000b110 ldr r3, [pc, 0x284]                                   |     r3 = *(0xb398);
    0x0000b112 ldr r3, [r4, r3]                                      |     r3 = *((r4 + r3));
    0x0000b114 mov r2, r3                                            |     r2 = r3;
    0x0000b116 str r3, [sp, 0x20]                                    |     var_20h = r3;
    0x0000b118 ldrb r1, [r2]                                         |     r1 = *(r2);
    0x0000b11a ldrb.w r3, [fp]                                       |     r3 = *(fp);
    0x0000b11e b.w 0xa8b2                                            |     goto label_4;
                                                                     | label_106:
    0x0000b122 ldr r2, [pc, 0x290]                                   |     r2 = *(0xb3b6);
    0x0000b124 ldr.w sl, [r4, r2]                                    |     sl = *((r4 + r2));
    0x0000b128 ldr.w r2, [sl]                                        |     r2 = *(sl);
    0x0000b12c cmp r3, 0                                             |     
                                                                     |     if (r3 == 0) {
    0x0000b12e beq.w 0xac80                                          |         goto label_10;
                                                                     |     }
    0x0000b132 ldr r3, [r2, 0x28]                                    |     r3 = *((r2 + 0x28));
    0x0000b134 blx r3                                                |     r0 = uint32_t (*r3)(uint32_t) (r3);
    0x0000b136 cmp r0, 0                                             |     
                                                                     |     if (r0 == 0) {
    0x0000b138 beq.w 0xac80                                          |         goto label_10;
                                                                     |     }
    0x0000b13c b 0xadb8                                              |     goto label_12;
                                                                     | label_110:
    0x0000b13e ldr r1, [pc, 0x37c]                                   |     
    0x0000b140 movs r0, 4                                            |     r0 = 4;
    0x0000b142 ldr.w r8, [pc, 0x37c]                                 |     
    0x0000b146 add r1, pc                                            |     r1 = 0x16608;
    0x0000b148 bl 0x10568                                            |     fcn_00010568 (r0, r1, r2);
    0x0000b14c movs r3, 1                                            |     r3 = 1;
    0x0000b14e add r8, pc                                            |     r8 = 0x16614;
    0x0000b150 str r3, [r5]                                          |     *(r5) = r3;
    0x0000b152 b 0xac4c                                              |     goto label_27;
                                                                     | label_68:
    0x0000b154 movs r3, 4                                            |     r3 = 4;
    0x0000b156 str r3, [r5]                                          |     *(r5) = r3;
    0x0000b158 b 0xaa48                                              |     goto label_28;
                                                                     | label_96:
    0x0000b15a ldr r0, [pc, 0x368]                                   |     
    0x0000b15c add r0, pc                                            |     r0 = 0x16626;
    0x0000b15e bl 0x11500                                            |     r0 = fcn_00011500 (r0);
    0x0000b162 cmp r0, 0                                             |     
                                                                     |     if (r0 != 0) {
    0x0000b164 bne.w 0xadb8                                          |         goto label_12;
                                                                     |     }
    0x0000b168 ldr r3, [r5]                                          |     r3 = *(r5);
    0x0000b16a cmp r3, 1                                             |     
                                                                     |     if (r3 > 1) {
    0x0000b16c bhi.w 0xb524                                          |         goto label_115;
                                                                     |     }
                                                                     | label_39:
    0x0000b170 ldr r3, [sp, 0x10]                                    |     r3 = var_10h;
    0x0000b172 cmp r3, 0                                             |     
                                                                     |     if (r3 != 0) {
    0x0000b174 bne.w 0xb67a                                          |         goto label_116;
                                                                     |     }
                                                                     | label_40:
    0x0000b178 ldrb.w r3, [sb]                                       |     r3 = *(sb);
    0x0000b17c cmp r3, 0                                             |     
                                                                     |     if (r3 == 0) {
    0x0000b17e beq.w 0xb35e                                          |         goto label_117;
                                                                     |     }
    0x0000b182 ldr r2, [pc, 0x218]                                   |     r2 = *(0xb39e);
    0x0000b184 ldr r6, [r4, r2]                                      |     r6 = *((r4 + r2));
    0x0000b186 ldrb r1, [r6]                                         |     r1 = *(r6);
                                                                     |     if (r1 == 0) {
    0x0000b188 cbnz r1, 0xb190                                       |         
    0x0000b18a ldrb.w r0, [fp]                                       |         r0 = *(fp);
                                                                     |         if (r0 == 0) {
    0x0000b18e cbz r0, 0xb1a8                                        |             goto label_38;
                                                                     |         }
                                                                     |     }
                                                                     | label_42:
    0x0000b190 movs r2, 0                                            |     r2 = 0;
    0x0000b192 mov r0, r2                                            |     r0 = r2;
    0x0000b194 bl 0x91f4                                             |     r0 = fcn_000091f4 (r0, r1, r2);
    0x0000b198 cmp r0, 0                                             |     
                                                                     |     if (r0 != 0) {
    0x0000b19a bne.w 0xadb8                                          |         goto label_12;
                                                                     |     }
    0x0000b19e ldr r3, [pc, 0x1fc]                                   |     r3 = *(0xb39e);
    0x0000b1a0 ldr r6, [r4, r3]                                      |     r6 = *((r4 + r3));
    0x0000b1a2 ldrb.w r3, [sb]                                       |     r3 = *(sb);
    0x0000b1a6 ldrb r0, [r6]                                         |     r0 = *(r6);
                                                                     | label_38:
    0x0000b1a8 ldr r1, [pc, 0x31c]                                   |     
    0x0000b1aa ldr r2, [r5]                                          |     r2 = *(r5);
    0x0000b1ac strd r3, r0, [sp, 4]                                  |     __asm ("strd r3, r0, [var_4h]");
    0x0000b1b0 movs r3, 0                                            |     r3 = 0;
    0x0000b1b2 str r3, [sp]                                          |     *(sp) = r3;
    0x0000b1b4 add r1, pc                                            |     r1 = 0x16680;
    0x0000b1b6 movs r3, 1                                            |     r3 = 1;
    0x0000b1b8 movs r0, 7                                            |     r0 = 7;
    0x0000b1ba bl 0x10568                                            |     fcn_00010568 (r0, r1, r2);
    0x0000b1be ldr r3, [r5]                                          |     r3 = *(r5);
    0x0000b1c0 cmp r3, 0                                             |     
                                                                     |     if (r3 != 0) {
    0x0000b1c2 bne.w 0xb6ca                                          |         goto label_118;
                                                                     |     }
                                                                     | label_41:
    0x0000b1c6 ldr r3, [sp, 0x14]                                    |     r3 = var_14h;
    0x0000b1c8 ldr r1, [r3]                                          |     r1 = *(r3);
    0x0000b1ca cmp r1, 1                                             |     
                                                                     |     if (r1 == 1) {
    0x0000b1cc beq.w 0xb776                                          |         void (*0xb776)() ();
                                                                     |     }
                                                                     | label_34:
    0x0000b22a movs r0, 0                                            |     r0 = 0;
    0x0000b22c b 0xadbe                                              |     goto label_20;
                                                                     | label_107:
    0x0000b22e ldrb.w r3, [r8]                                       |     r3 = *(r8);
    0x0000b232 cmp r3, 0                                             |     
                                                                     |     if (r3 == 0) {
    0x0000b234 beq.w 0xaf26                                          |         goto label_29;
                                                                     |     }
    0x0000b238 ldr r1, [pc, 0x294]                                   |     
    0x0000b23a mov r2, r8                                            |     r2 = r8;
    0x0000b23c movs r0, 4                                            |     r0 = 4;
    0x0000b23e add r1, pc                                            |     r1 = 0x16712;
    0x0000b240 bl 0x10568                                            |     fcn_00010568 (r0, r1, r2);
    0x0000b244 b 0xaf26                                              |     goto label_29;
                                                                     | label_91:
    0x0000b246 ldr r1, [pc, 0x28c]                                   |     
    0x0000b248 movs r0, 4                                            |     r0 = 4;
    0x0000b24a add r1, pc                                            |     r1 = 0x16724;
    0x0000b24c bl 0x10568                                            |     fcn_00010568 (r0, r1, r2);
    0x0000b250 b 0xad02                                              |     goto label_30;
                                                                     | label_103:
    0x0000b252 ldr r1, [pc, 0x284]                                   |     
    0x0000b254 movs r0, 7                                            |     r0 = 7;
    0x0000b256 add r1, pc                                            |     r1 = 0x16734;
    0x0000b258 bl 0x10568                                            |     fcn_00010568 (r0, r1, r2);
    0x0000b25c ldr r0, [pc, 0x27c]                                   |     
    0x0000b25e add r0, pc                                            |     r0 = 0x1673e;
    0x0000b260 blx 0x3030                                            |     r0 = fcn_00003030 ();
    0x0000b264 cmp r0, 0                                             |     
                                                                     |     if (r0 >= 0) {
    0x0000b266 bge.w 0xae86                                          |         goto label_31;
                                                                     |     }
    0x0000b26a ldr r1, [pc, 0x274]                                   |     
    0x0000b26c movs r0, 2                                            |     r0 = 2;
    0x0000b26e add r1, pc                                            |     r1 = 0x16754;
    0x0000b270 bl 0x10568                                            |     r0 = fcn_00010568 (r0, r1, r2);
    0x0000b274 blx 0x317c                                            |     strncpy (r0, r1, r2);
    0x0000b276 vmlal.s8 q3, d2, d0                                   |     __asm ("vmlal.s8 q3, d2, d0");
    0x0000b27a b 0xadbe                                              |     goto label_20;
                                                                     | label_90:
    0x0000b27c ldr r1, [pc, 0x264]                                   |     
    0x0000b27e movs r0, 4                                            |     r0 = 4;
    0x0000b280 add r1, pc                                            |     r1 = 0x16768;
    0x0000b282 bl 0x10568                                            |     fcn_00010568 (r0, r1, r2);
    0x0000b286 b 0xad02                                              |     goto label_30;
                                                                     | label_112:
    0x0000b288 ldr r1, [pc, 0x25c]                                   |     
    0x0000b28a movs r0, 4                                            |     r0 = 4;
    0x0000b28c add r1, pc                                            |     r1 = 0x16778;
    0x0000b28e bl 0x10568                                            |     fcn_00010568 (r0, r1, r2);
    0x0000b292 ldr r2, [r5]                                          |     r2 = *(r5);
    0x0000b294 b 0xabf6                                              |     goto label_23;
                                                                     | label_76:
    0x0000b296 ldr r1, [pc, 0x254]                                   |     
    0x0000b298 movs r0, 5                                            |     r0 = 5;
    0x0000b29a add r1, pc                                            |     r1 = 0x1678c;
    0x0000b29c bl 0x10568                                            |     fcn_00010568 (r0, r1, r2);
    0x0000b2a0 ldr.w sl, [r5]                                        |     sl = *(r5);
    0x0000b2a4 b.w 0xa876                                            |     goto label_9;
                                                                     | label_113:
    0x0000b2a8 ldr r1, [pc, 0x244]                                   |     
    0x0000b2aa lsrs r2, r2, 0xa                                      |     r2 >>= 0xa;
    0x0000b2ac movs r0, 3                                            |     r0 = 3;
    0x0000b2ae add r1, pc                                            |     r1 = 0x167a2;
    0x0000b2b0 bl 0x10568                                            |     fcn_00010568 (r0, r1, r2);
    0x0000b2b4 movs r0, 3                                            |     r0 = 3;
    0x0000b2b6 bl 0x9eb8                                             |     fcn_00009eb8 (r0);
    0x0000b2ba ldrb.w r3, [sb]                                       |     r3 = *(sb);
    0x0000b2be movs r2, 3                                            |     r2 = 3;
    0x0000b2c0 str r2, [r5]                                          |     *(r5) = r2;
    0x0000b2c2 cmp r3, 0                                             |     
                                                                     |     if (r3 == 0) {
    0x0000b2c4 beq.w 0xad1a                                          |         goto label_32;
                                                                     |     }
    0x0000b2c8 ldr r3, [sp, 0x14]                                    |     r3 = var_14h;
    0x0000b2ca ldr.w r8, [pc, 0x228]                                 |     
    0x0000b2ce ldr r3, [r3]                                          |     r3 = *(r3);
    0x0000b2d0 add r8, pc                                            |     r8 = 0x167ca;
    0x0000b2d2 b 0xac0a                                              |     goto label_33;
                                                                     | label_71:
    0x0000b2d4 ldr r1, [pc, 0x220]                                   |     
    0x0000b2d6 movs r0, 4                                            |     r0 = 4;
    0x0000b2d8 add r1, pc                                            |     r1 = 0x167d4;
    0x0000b2da bl 0x10568                                            |     fcn_00010568 (r0, r1, r2);
    0x0000b2de b 0xb22a                                              |     goto label_34;
                                                                     | label_89:
    0x0000b2e0 ldr r1, [pc, 0x218]                                   |     
    0x0000b2e2 movs r0, 4                                            |     r0 = 4;
    0x0000b2e4 ldr r3, [sp, 0x18]                                    |     r3 = var_18h;
    0x0000b2e6 add r1, pc                                            |     r1 = 0x167e6;
    0x0000b2e8 str r3, [sp, 0x10]                                    |     var_10h = r3;
    0x0000b2ea bl 0x10568                                            |     fcn_00010568 (r0, r1, r2);
    0x0000b2ee ldr r2, [r5]                                          |     r2 = *(r5);
    0x0000b2f0 b 0xad36                                              |     goto label_35;
                                                                     | label_114:
    0x0000b2f2 ldr r0, [pc, 0x20c]                                   |     
    0x0000b2f4 ldr.w r8, [pc, 0x20c]                                 |     
    0x0000b2f8 add r0, pc                                            |     r0 = 0x167fe;
    0x0000b2fa blx 0x2d84                                            |     fcn_00002d84 ();
    0x0000b2fe ldr r1, [pc, 0x208]                                   |     
    0x0000b300 add r8, pc                                            |     r8 = 0x16808;
    0x0000b302 add r1, pc                                            |     r1 = 0x16810;
    0x0000b304 b 0xabd8                                              |     goto label_6;
                                                                     | label_60:
    0x0000b306 ldr r3, [r5]                                          |     r3 = *(r5);
    0x0000b308 cmp r3, 4                                             |     
                                                                     |     if (r3 == 4) {
    0x0000b30a beq.w 0xb66a                                          |         goto label_119;
                                                                     |     }
    0x0000b30e cmp r3, 3                                             |     
                                                                     |     if (r3 == 3) {
    0x0000b310 beq.w 0xb6ac                                          |         goto label_120;
                                                                     |     }
    0x0000b314 ldr r0, [pc, 0x1f4]                                   |     
    0x0000b316 ldr.w r8, [pc, 0x1f8]                                 |     
    0x0000b31a add r0, pc                                            |     r0 = 0x1682a;
    0x0000b31c blx 0x2d84                                            |     fcn_00002d84 ();
    0x0000b320 ldr r1, [pc, 0x1f0]                                   |     
    0x0000b322 add r8, pc                                            |     r8 = 0x16838;
    0x0000b324 add r1, pc                                            |     r1 = 0x1683c;
    0x0000b326 b 0xabd8                                              |     goto label_6;
                                                                     | label_109:
    0x0000b328 ldr r1, [pc, 0x1ec]                                   |     
    0x0000b32a movs r0, 2                                            |     r0 = 2;
    0x0000b32c add r1, pc                                            |     r1 = 0x16848;
    0x0000b32e bl 0x10568                                            |     r0 = fcn_00010568 (r0, r1, r2);
    0x0000b332 blx 0x317c                                            |     r0 = strncpy (r0, r1, r2);
    0x0000b336 ldr r0, [r0]                                          |     r0 = *(r0);
    0x0000b338 b 0xadbe                                              |     goto label_20;
                                                                     | label_93:
    0x0000b33a ldr r3, [sp, 0x10]                                    |     r3 = var_10h;
    0x0000b33c str r3, [sp, 0x18]                                    |     var_18h = r3;
    0x0000b33e b 0xac52                                              |     goto label_36;
                                                                     | label_92:
    0x0000b340 ldr r1, [pc, 0x1d8]                                   |     
    0x0000b342 movs r0, 4                                            |     r0 = 4;
    0x0000b344 add r1, pc                                            |     r1 = 0x16864;
    0x0000b346 bl 0x10568                                            |     fcn_00010568 (r0, r1, r2);
    0x0000b34a b 0xad16                                              |     goto label_37;
                                                                     | label_69:
    0x0000b34c ldr r1, [pc, 0x1d0]                                   |     
    0x0000b34e movs r0, 2                                            |     r0 = 2;
    0x0000b350 add r1, pc                                            |     r1 = 0x16874;
    0x0000b352 bl 0x10568                                            |     r0 = fcn_00010568 (r0, r1, r2);
    0x0000b356 blx 0x317c                                            |     r0 = strncpy (r0, r1, r2);
    0x0000b35a ldr r0, [r0]                                          |     r0 = *(r0);
    0x0000b35c b 0xadbe                                              |     goto label_20;
                                                                     | label_117:
    0x0000b35e ldrb.w r2, [fp]                                       |     r2 = *(fp);
    0x0000b362 cmp r2, 0                                             |     
                                                                     |     if (r2 != 0) {
    0x0000b364 bne.w 0xb6ea                                          |         goto label_121;
                                                                     |     }
    0x0000b368 ldr r2, [pc, 0x30]                                    |     r2 = *(0xb39c);
    0x0000b36a ldr r6, [r4, r2]                                      |     r6 = *((r4 + r2));
    0x0000b36c ldrb r0, [r6]                                         |     r0 = *(r6);
    0x0000b36e b 0xb1a8                                              |     goto label_38;
                                                                     | label_115:
    0x0000b524 ldr r1, [pc, 0x328]                                   |     
    0x0000b526 movs r0, 7                                            |     r0 = 7;
    0x0000b528 add r1, pc                                            |     r1 = 0x16d7c;
    0x0000b52a bl 0x10568                                            |     fcn_00010568 (r0, r1, r2);
    0x0000b52e ldr r3, [r5]                                          |     r3 = *(r5);
    0x0000b530 cmp r3, 4                                             |     
                                                                     |     if (r3 != 4) {
    0x0000b532 bne.w 0xb6ee                                          |         goto label_122;
                                                                     |     }
    0x0000b536 ldr.w r3, [sl]                                        |     r3 = *(sl);
    0x0000b53a movw r2, 0x8001                                       |     r2 = 0x8001;
    0x0000b53e ldr r1, [pc, 0x314]                                   |     
    0x0000b540 movs r0, 0x41                                         |     r0 = 0x41;
    0x0000b542 ldr r3, [r3, 0x14]                                    |     r3 = *((r3 + 0x14));
    0x0000b544 add r1, pc                                            |     r1 = 0x16d9e;
    0x0000b546 blx r3                                                |     r0 = uint32_t (*r3)(uint32_t, uint32_t, uint32_t, uint32_t) (r0, r1, r2, r3);
    0x0000b548 cmp r0, 0                                             |     
                                                                     |     if (r0 != 0) {
    0x0000b54a bne.w 0xb700                                          |         goto label_123;
                                                                     |     }
                                                                     | label_43:
    0x0000b54e ldr r6, [r5]                                          |     r6 = *(r5);
    0x0000b550 cmp r6, 4                                             |     
                                                                     |     if (r6 == 4) {
    0x0000b552 bne 0xb564                                            |         
    0x0000b554 ldr.w r3, [sl]                                        |         r3 = *(sl);
    0x0000b558 movs r0, 0x4b                                         |         r0 = 0x4b;
    0x0000b55a ldr r3, [r3, 0xc]                                     |         r3 = *((r3 + 0xc));
    0x0000b55c blx r3                                                |         r0 = uint32_t (*r3)(uint32_t, uint32_t) (r0, r3);
    0x0000b55e cmp r0, 0                                             |         
                                                                     |         if (r0 != 0) {
    0x0000b560 bne.w 0xb7a6                                          |             goto label_124;
                                                                     |         }
                                                                     |     }
                                                                     | label_47:
    0x0000b564 ldr r1, [pc, 0x2f0]                                   |     
    0x0000b566 movs r0, 7                                            |     r0 = 7;
    0x0000b568 add r1, pc                                            |     r1 = 0x16dc4;
    0x0000b56a bl 0x10568                                            |     fcn_00010568 (r0, r1, r2);
    0x0000b56e ldr r0, [pc, 0x2ec]                                   |     
    0x0000b570 add r0, pc                                            |     r0 = 0x16dd2;
    0x0000b572 bl 0xa454                                             |     fcn_0000a454 (r0);
    0x0000b576 ldr r0, [pc, 0x2e8]                                   |     
    0x0000b578 add r0, pc                                            |     
    0x0000b57a bl 0xa454                                             |     fcn_0000a454 (r0);
    0x0000b57c vceq.i32 d20, d27, d25                                |     __asm ("vceq.i32 d20, d27, d25");
    0x0000b580 add r0, pc                                            |     r0 = 0x22362;
    0x0000b582 bl 0xa454                                             |     fcn_0000a454 (r0);
    0x0000b586 ldr.w r3, [sl]                                        |     r3 = *(sl);
    0x0000b58a movs r0, 0x4b                                         |     r0 = 0x4b;
    0x0000b58c ldr r3, [r3, 0xc]                                     |     r3 = *((r3 + 0xc));
    0x0000b58e blx r3                                                |     r0 = uint32_t (*r3)(uint32_t, uint32_t) (r0, r3);
    0x0000b590 cmp r0, 0                                             |     
                                                                     |     if (r0 == 0) {
    0x0000b592 beq.w 0xb760                                          |         goto label_125;
                                                                     |     }
    0x0000b596 ldr r1, [pc, 0x2d0]                                   |     
    0x0000b598 add r1, pc                                            |     r1 = 0x16e06;
                                                                     | label_45:
    0x0000b59a movs r0, 7                                            |     r0 = 7;
    0x0000b59c bl 0x10568                                            |     fcn_00010568 (r0, r1, r2);
    0x0000b5a0 ldr r3, [r5]                                          |     r3 = *(r5);
    0x0000b5a2 cmp r3, 4                                             |     
                                                                     |     if (r3 == 4) {
    0x0000b5a4 beq.w 0xb786                                          |         goto label_126;
                                                                     |     }
    0x0000b5a8 cmp r3, 3                                             |     
                                                                     |     if (r3 == 3) {
    0x0000b5aa beq.w 0xb792                                          |         goto label_127;
                                                                     |     }
    0x0000b5ae cmp r3, 2                                             |     
                                                                     |     if (r3 == 2) {
    0x0000b5b0 beq.w 0xb7f2                                          |         goto label_128;
                                                                     |     }
    0x0000b5b4 ldr r3, [pc, 0x2b4]                                   |     
    0x0000b5b6 add r3, pc                                            |     r3 = 0x16e26;
                                                                     | label_46:
    0x0000b5b8 str r3, [sp, 4]                                       |     var_4h = r3;
    0x0000b5ba add r6, sp, 0x1cc                                     |     r6 += var_1cch;
    0x0000b5bc ldr r3, [pc, 0x2b0]                                   |     
    0x0000b5be mov.w r2, 0x100                                       |     r2 = 0x100;
    0x0000b5c2 ldr r7, [pc, 0x2b0]                                   |     
    0x0000b5c4 movs r1, 1                                            |     r1 = 1;
    0x0000b5c6 mov r0, r6                                            |     r0 = r6;
    0x0000b5c8 add r3, pc                                            |     r3 = 0x16e3c;
    0x0000b5ca str r3, [sp, 0xc]                                     |     var_ch = r3;
    0x0000b5cc add r7, pc                                            |     r7 = 0x16e46;
    0x0000b5ce ldr r3, [pc, 0x2a8]                                   |     
    0x0000b5d0 str r7, [sp, 8]                                       |     var_8h = r7;
    0x0000b5d2 add r3, pc                                            |     r3 = 0x16e50;
    0x0000b5d4 str r3, [sp]                                          |     *(sp) = r3;
    0x0000b5d6 ldr r3, [pc, 0x2a4]                                   |     
    0x0000b5d8 add r3, pc                                            |     
    0x0000b5da blx 0x3200                                            |     ERR_error_string ();
    0x0000b5de mov r0, r6                                            |     r0 = r6;
    0x0000b5e0 blx 0x2de8                                            |     fcn_00002de8 ();
    0x0000b5e4 ldr r1, [pc, 0x298]                                   |     
    0x0000b5e6 mov r6, r0                                            |     r6 = r0;
    0x0000b5e8 movs r0, 7                                            |     r0 = 7;
    0x0000b5ea add r1, pc                                            |     r1 = 0x16e6e;
    0x0000b5ec bl 0x10568                                            |     fcn_00010568 (r0, r1, r2);
    0x0000b5f0 ldr r0, [pc, 0x290]                                   |     
    0x0000b5f2 add r0, pc                                            |     r0 = 0x16e7a;
    0x0000b5f4 blx 0x3030                                            |     fcn_00003030 ();
    0x0000b5f8 ldr r0, [pc, 0x28c]                                   |     
    0x0000b5fa add r0, pc                                            |     r0 = 0x16e86;
    0x0000b5fc blx 0x3030                                            |     fcn_00003030 ();
    0x0000b600 ldr r0, [pc, 0x288]                                   |     
    0x0000b602 add r0, pc                                            |     r0 = 0x16e92;
    0x0000b604 blx 0x3030                                            |     fcn_00003030 ();
    0x0000b608 ldr r0, [pc, 0x284]                                   |     
    0x0000b60a add r0, pc                                            |     r0 = 0x16e9e;
    0x0000b60c blx 0x3030                                            |     fcn_00003030 ();
    0x0000b610 ldr r0, [pc, 0x280]                                   |     
    0x0000b612 add r0, pc                                            |     r0 = 0x16eaa;
    0x0000b614 blx 0x3030                                            |     fcn_00003030 ();
    0x0000b618 ldr.w r3, [sl]                                        |     r3 = *(sl);
    0x0000b61c mov r1, r7                                            |     r1 = r7;
    0x0000b61e movs r0, 0x41                                         |     r0 = 0x41;
    0x0000b620 ldr r3, [r3, 0x18]                                    |     r3 = *(0x16e72);
    0x0000b622 blx r3                                                |     r0 = uint32_t (*r3)(uint32_t, uint32_t, uint32_t) (r0, r1, r3);
    0x0000b624 cmp r0, 0                                             |     
                                                                     |     if (r0 < 0) {
    0x0000b626 blt.w 0xb802                                          |         goto label_129;
                                                                     |     }
                                                                     | label_44:
    0x0000b62a lsls r3, r6, 0x19                                     |     r3 = r6 << 0x19;
    0x0000b62c ubfx r2, r6, 8, 8                                     |     r2 = (r6 >> 8) & ((1 << 8) - 1);
                                                                     |     if (r3 != r6) {
    0x0000b630 bne 0xb63e                                            |         goto label_130;
                                                                     |     }
    0x0000b632 cmp r2, 0x7f                                          |     
                                                                     |     if (r2 == 0x7f) {
    0x0000b634 beq.w 0xb7e6                                          |         goto label_131;
                                                                     |     }
    0x0000b638 cmp r2, 0                                             |     
                                                                     |     if (r2 == 0) {
    0x0000b63a beq.w 0xb170                                          |         goto label_39;
                                                                     |     }
                                                                     | label_130:
    0x0000b63e ldr r1, [pc, 0x258]                                   |     
    0x0000b640 movs r0, 2                                            |     r0 = 2;
    0x0000b642 add r1, pc                                            |     r1 = 0x16ee0;
    0x0000b644 bl 0x10568                                            |     fcn_00010568 (r0, r1, r2);
    0x0000b648 ldr r3, [r5]                                          |     r3 = *(r5);
    0x0000b64a cmp r3, 4                                             |     
                                                                     |     if (r3 != 4) {
    0x0000b64c bne.w 0xb170                                          |         goto label_39;
                                                                     |     }
    0x0000b650 ldr r3, [sp, 0x14]                                    |     r3 = var_14h;
    0x0000b652 ldr r3, [r3]                                          |     r3 = *(r3);
    0x0000b654 cmp r3, 1                                             |     
                                                                     |     if (r3 == 1) {
    0x0000b656 beq.w 0xb170                                          |         goto label_39;
                                                                     |     }
    0x0000b65a blx 0x317c                                            |     strncpy (r0, r1, r2);
    0x0000b65e movs r3, 0x34                                         |     r3 = 0x34;
    0x0000b660 mov r2, r0                                            |     r2 = r0;
    0x0000b662 str r3, [r2]                                          |     *(r2) = r3;
    0x0000b664 mov r0, r3                                            |     r0 = r3;
    0x0000b666 b.w 0xadbe                                            |     goto label_20;
                                                                     | label_119:
    0x0000b66a ldr r0, [pc, 0x230]                                   |     
    0x0000b66c add r0, pc                                            |     r0 = 0x16f0e;
    0x0000b66e blx 0x2d84                                            |     fcn_00002d84 ();
    0x0000b672 ldr r1, [pc, 0x22c]                                   |     
    0x0000b674 add r1, pc                                            |     r1 = 0x16f1a;
    0x0000b676 b.w 0xabd8                                            |     goto label_6;
                                                                     | label_116:
    0x0000b67a ldr r1, [pc, 0x228]                                   |     
    0x0000b67c movs r0, 7                                            |     r0 = 7;
    0x0000b67e add r1, pc                                            |     r1 = 0x16f28;
    0x0000b680 bl 0x10568                                            |     fcn_00010568 (r0, r1, r2);
    0x0000b684 ldr.w r3, [sl]                                        |     r3 = *(sl);
    0x0000b688 movs r0, 0x42                                         |     r0 = 0x42;
    0x0000b68a ldr r1, [pc, 0x21c]                                   |     
    0x0000b68c ldr r3, [r3, 0x18]                                    |     r3 = *((r3 + 0x18));
    0x0000b68e add r1, pc                                            |     r1 = 0x16f3c;
    0x0000b690 blx r3                                                |     r0 = uint32_t (*r3)(uint32_t, uint32_t, uint32_t) (r0, r1, r3);
    0x0000b692 cmp r0, 0                                             |     
                                                                     |     if (r0 >= 0) {
    0x0000b694 bge.w 0xb178                                          |         goto label_40;
                                                                     |     }
    0x0000b698 ldr r1, [pc, 0x210]                                   |     
    0x0000b69a movs r0, 2                                            |     r0 = 2;
    0x0000b69c add r1, pc                                            |     r1 = 0x16f4c;
    0x0000b69e bl 0x10568                                            |     r0 = fcn_00010568 (r0, r1, r2);
    0x0000b6a2 blx 0x317c                                            |     r0 = strncpy (r0, r1, r2);
    0x0000b6a6 ldr r0, [r0]                                          |     r0 = *(r0);
    0x0000b6a8 b.w 0xadbe                                            |     goto label_20;
                                                                     | label_120:
    0x0000b6ac ldr r0, [pc, 0x200]                                   |     
    0x0000b6ae ldr.w r8, [pc, 0x204]                                 |     
    0x0000b6b2 add r0, pc                                            |     r0 = 0x16f66;
    0x0000b6b4 blx 0x2d84                                            |     fcn_00002d84 ();
    0x0000b6b6 sbc.w sb, r6, pc, ror 17                              |     __asm ("sbc.w sb, r6, pc, ror 17");
    0x0000b6b8 ldr r1, [pc, 0x1fc]                                   |     
    0x0000b6ba add r8, pc                                            |     r8 = 0x16f74;
    0x0000b6bc add r1, pc                                            |     r1 = 0x16f78;
    0x0000b6be b.w 0xabd8                                            |     goto label_6;
                                                                     | label_111:
    0x0000b6c2 str r6, [sp, 0x18]                                    |     var_18h = r6;
    0x0000b6c4 mov r6, r0                                            |     r6 = r0;
    0x0000b6c6 b.w 0xac52                                            |     goto label_36;
                                                                     | label_118:
    0x0000b6ca ldr r0, [pc, 0x1f0]                                   |     
    0x0000b6cc add r0, pc                                            |     r0 = 0x16f8e;
    0x0000b6ce bl 0x10d94                                            |     r0 = fcn_00010d94 (r0);
    0x0000b6d2 cmp r0, 0                                             |     
                                                                     |     if (r0 != 0) {
    0x0000b6d4 bne.w 0xadb8                                          |         goto label_12;
                                                                     |     }
    0x0000b6d8 ldr r0, [pc, 0x1e4]                                   |     
    0x0000b6da add r0, pc                                            |     r0 = 0x16f9e;
    0x0000b6dc bl 0x10d94                                            |     r0 = fcn_00010d94 (r0);
    0x0000b6de smmla r8, sl, r0, r2                                  |     __asm ("smmla r8, sl, r0, r2");
    0x0000b6e0 cmp r0, 0                                             |     
                                                                     |     if (r0 == 0) {
    0x0000b6e2 beq.w 0xb1c6                                          |         goto label_41;
                                                                     |     }
    0x0000b6e4 add r5, sp, 0x1c0                                     |     r5 = sp + 0x1c0;
    0x0000b6e6 b.w 0xadb8                                            |     goto label_12;
                                                                     | label_121:
    0x0000b6ea mov r1, r3                                            |     r1 = r3;
    0x0000b6ec b 0xb190                                              |     goto label_42;
                                                                     | label_122:
    0x0000b6ee ldr r1, [pc, 0x1d4]                                   |     
    0x0000b6f0 ldr r0, [pc, 0x1d4]                                   |     
    0x0000b6f2 add r1, pc                                            |     r1 = 0x16fbc;
    0x0000b6f4 add r0, pc                                            |     r0 = 0x16fc0;
    0x0000b6f6 bl 0xa224                                             |     r0 = fcn_0000a224 (r0, r1);
    0x0000b6fa cmp r0, 0                                             |     
                                                                     |     if (r0 == 0) {
    0x0000b6fc beq.w 0xb54e                                          |         goto label_43;
                                                                     |     }
                                                                     | label_123:
    0x0000b700 ldr r1, [pc, 0x1c8]                                   |     
    0x0000b702 movs r0, 4                                            |     r0 = 4;
    0x0000b704 add r1, pc                                            |     r1 = 0x16fd4;
    0x0000b706 bl 0x10568                                            |     fcn_00010568 (r0, r1, r2);
    0x0000b70a ldr r1, [pc, 0x1c4]                                   |     
    0x0000b70c movs r0, 7                                            |     r0 = 7;
    0x0000b70e add r1, pc                                            |     r1 = 0x16fe4;
    0x0000b710 bl 0x10568                                            |     fcn_00010568 (r0, r1, r2);
    0x0000b714 ldr r3, [r5]                                          |     r3 = *(r5);
    0x0000b716 cmp r3, 4                                             |     
                                                                     |     if (r3 == 4) {
    0x0000b718 beq 0xb7e0                                            |         goto label_132;
                                                                     |     }
    0x0000b71a cmp r3, 3                                             |     
                                                                     |     if (r3 == 3) {
    0x0000b71c beq 0xb7f8                                            |         goto label_133;
                                                                     |     }
    0x0000b71e cmp r3, 2                                             |     
                                                                     |     if (r3 == 2) {
    0x0000b720 beq.w 0xb83c                                          |         goto label_134;
                                                                     |     }
    0x0000b724 ldr r3, [pc, 0x1ac]                                   |     
    0x0000b726 add r3, pc                                            |     r3 = 0x16ffe;
                                                                     | label_48:
    0x0000b728 str r3, [sp, 4]                                       |     var_4h = r3;
    0x0000b72a add r6, sp, 0x1cc                                     |     r6 += var_1cch;
    0x0000b72c ldr r3, [pc, 0x1a8]                                   |     
    0x0000b72e mov.w r2, 0x100                                       |     r2 = 0x100;
    0x0000b732 movs r1, 1                                            |     r1 = 1;
    0x0000b734 mov r0, r6                                            |     r0 = r6;
    0x0000b736 add r3, pc                                            |     r3 = 0x17012;
    0x0000b738 strd r3, r3, [sp, 8]                                  |     __asm ("strd r3, r3, [var_ch]");
    0x0000b73c ldr r3, [pc, 0x19c]                                   |     
    0x0000b73e add r3, pc                                            |     r3 = 0x1701e;
    0x0000b740 str r3, [sp]                                          |     *(sp) = r3;
    0x0000b742 ldr r3, [pc, 0x19c]                                   |     
    0x0000b744 add r3, pc                                            |     r3 = 0x1702a;
    0x0000b746 blx 0x3200                                            |     ERR_error_string ();
    0x0000b74a mov r0, r6                                            |     r0 = r6;
    0x0000b74c blx 0x2de8                                            |     r0 = fcn_00002de8 ();
    0x0000b750 mov r6, r0                                            |     r6 = r0;
    0x0000b752 b 0xb62a                                              |     goto label_44;
                                                                     | label_125:
    0x0000b760 ldr r0, [pc, 0x184]                                   |     
    0x0000b762 add r0, pc                                            |     r0 = 0x1704e;
    0x0000b764 bl 0xa454                                             |     fcn_0000a454 (r0);
    0x0000b768 ldr r0, [pc, 0x180]                                   |     
    0x0000b76a add r0, pc                                            |     r0 = 0x1705a;
    0x0000b76c bl 0xa454                                             |     fcn_0000a454 (r0);
    0x0000b770 ldr r1, [pc, 0x17c]                                   |     
    0x0000b772 add r1, pc                                            |     r1 = 0x17066;
    0x0000b774 b 0xb59a                                              |     goto label_45;
                                                                     | label_126:
    0x0000b786 ldr r3, [pc, 0x16c]                                   |     
    0x0000b788 add r3, pc                                            |     r3 = 0x17082;
    0x0000b78a b 0xb5b8                                              |     goto label_46;
                                                                     | label_127:
    0x0000b792 ldr r3, [pc, 0x164]                                   |     
    0x0000b794 add r3, pc                                            |     r3 = 0x17092;
    0x0000b796 b 0xb5b8                                              |     goto label_46;
                                                                     | label_55:
    0x0000b798 ldr r3, [pc, 0x160]                                   |     r3 = *(0xb8fc);
    0x0000b79a ldr.w fp, [r4, r3]                                    |     fp = *((r4 + r3));
    0x0000b79e ldrb.w r3, [fp]                                       |     r3 = *(fp);
    0x0000b7a2 b.w 0xa8b2                                            |     goto label_4;
    0x0000b7a4 invalid                                               |     
                                                                     | label_124:
    0x0000b7a6 ldr r1, [pc, 0x158]                                   |     
    0x0000b7a8 movs r0, 7                                            |     r0 = 7;
    0x0000b7aa add r1, pc                                            |     r1 = 0x170b0;
    0x0000b7ac bl 0x10568                                            |     fcn_00010568 (r0, r1, r2);
    0x0000b7b0 ldr.w r3, [sl]                                        |     r3 = *(sl);
    0x0000b7b4 movs r2, 1                                            |     r2 = 1;
    0x0000b7b6 ldr r1, [pc, 0x14c]                                   |     
    0x0000b7b8 movs r0, 0x4b                                         |     r0 = 0x4b;
    0x0000b7ba ldr r3, [r3, 0x14]                                    |     r3 = *((r3 + 0x14));
    0x0000b7bc add r1, pc                                            |     r1 = 0x170c6;
    0x0000b7be blx r3                                                |     r0 = uint32_t (*r3)(uint32_t, uint32_t, uint32_t, uint32_t) (r0, r1, r2, r3);
                                                                     |     if (r0 != 0) {
    0x0000b7c0 cbnz r0, 0xb816                                       |         goto label_135;
                                                                     |     }
    0x0000b7c2 ldr r1, [pc, 0x144]                                   |     
    0x0000b7c4 ldr r0, [pc, 0x144]                                   |     
    0x0000b7c6 add r1, pc                                            |     r1 = 0x170d4;
    0x0000b7c8 add r0, pc                                            |     r0 = 0x170d8;
    0x0000b7ca invalid                                               |     
    0x0000b7cc stc2 p8, c2, [fp, -0]!                                |     __asm ("stc2 p8, c2, [fp, -0]!");
                                                                     |     if (r0 == 0) {
    0x0000b7d0 beq.w 0xb564                                          |         goto label_47;
                                                                     |     }
    0x0000b7d2 add r6, sp, 0x320                                     |     r6 = sp + 0x320;
    0x0000b7d4 ldr r1, [pc, 0x138]                                   |     
    0x0000b7d6 mov r0, r6                                            |     r0 = r6;
    0x0000b7d8 add r1, pc                                            |     r1 = 0x170ec;
    0x0000b7da bl 0x10568                                            |     fcn_00010568 (r0, r1, r2);
    0x0000b7de b 0xb564                                              |     goto label_47;
                                                                     | label_132:
    0x0000b7e0 ldr r3, [pc, 0x130]                                   |     
    0x0000b7e2 add r3, pc                                            |     r3 = 0x170fa;
    0x0000b7e4 b 0xb728                                              |     goto label_48;
                                                                     | label_131:
    0x0000b7e6 ldr r1, [pc, 0x130]                                   |     
    0x0000b7e8 movs r0, 5                                            |     r0 = 5;
    0x0000b7ea add r1, pc                                            |     r1 = 0x17108;
    0x0000b7ec bl 0x10568                                            |     fcn_00010568 (r0, r1, r2);
    0x0000b7f0 b 0xb170                                              |     goto label_39;
                                                                     | label_128:
    0x0000b7f2 ldr r3, [pc, 0x128]                                   |     
    0x0000b7f4 add r3, pc                                            |     r3 = 0x17116;
    0x0000b7f6 b 0xb5b8                                              |     goto label_46;
                                                                     | label_133:
    0x0000b7f8 ldr r3, [pc, 0x124]                                   |     
    0x0000b7fa add r3, pc                                            |     r3 = 0x1711e;
    0x0000b7fc b 0xb728                                              |     goto label_48;
                                                                     | label_97:
    0x0000b7fe blx 0x2eac                                            |     socket (r0, r1, r2);
                                                                     | label_129:
    0x0000b802 ldr r1, [pc, 0x120]                                   |     
    0x0000b804 movs r0, 2                                            |     r0 = 2;
    0x0000b806 add r1, pc                                            |     r1 = 0x17130;
    0x0000b808 bl 0x10568                                            |     r0 = fcn_00010568 (r0, r1, r2);
    0x0000b80c blx 0x317c                                            |     r0 = strncpy (r0, r1, r2);
    0x0000b810 ldr r0, [r0]                                          |     r0 = *(r0);
    0x0000b812 b.w 0xadbe                                            |     goto label_20;
                                                                     | label_135:
    0x0000b816 ldr r1, [pc, 0x110]                                   |     
    0x0000b818 movs r0, 2                                            |     r0 = 2;
    0x0000b81a add r1, pc                                            |     r1 = 0x17148;
    0x0000b81c bl 0x10568                                            |     fcn_00010568 (r0, r1, r2);
    0x0000b81e mcr2 p7, 5, pc, c4, c7, 7                             |     __asm ("mcr2 p7, 5, pc, c4, c7, 7");
    0x0000b822 stc p8, c6, [ip], 0                                   |     __asm ("stc p8, c6, [ip], 0");
    0x0000b826 b.w 0xadbe                                            |     goto label_20;
                                                                     | label_134:
    0x0000b83c ldr r3, [pc, 0xec]                                    |     
    0x0000b83e add r3, pc                                            |     r3 = 0x1716e;
    0x0000b840 b 0xb728                                              |     goto label_48;
                                                                     | label_51:
    0x0000b842 ldr r3, [pc, 0xec]                                    |     r3 = *(0xb932);
    0x0000b844 str r6, [sp, 0x10]                                    |     var_10h = r6;
    0x0000b846 ldr.w sb, [r4, r3]                                    |     sb = *((r4 + r3));
    0x0000b84a b.w 0xab4a                                            |     goto label_49;
                                                                     |     /* Beware that this jump is a conditional jump.
                                                                     |      * r2dec transformed it as a return, due being the
                                                                     |      * last instruction. Please, check 'pdda' output
                                                                     |      * for more hints. */
    0x0000b84c cbnz r6, 0xb86e                                       |     return void (*0xb86e)() ();
                                                                     | }
    ; assembly                           | /* r2dec pseudo code output */
                                         | /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-80367616.squashfs_v4_le_extract/usr/sbin/fwmgr @ 0xbaf4 */
                                         | #include <stdint.h>
                                         |  
    ; (fcn) fcn.0000baf4 ()              | void fcn_0000baf4 () {
                                         |     int16_t var_0h;
                                         |     int16_t var_8h;
                                         |     int16_t var_64h;
                                         | label_3:
    0x0000b874 lsrs r4, r4, 9            |     r4 >>= 9;
    0x0000b876 movs r1, r0               |     r1 = r0;
    0x0000b878 asrs r6, r2, 0x15         |     r6 = r2 >> 0x15;
    0x0000b87a movs r1, r0               |     r1 = r0;
    0x0000b87c asrs r4, r0, 0x15         |     r4 = r0 >> 0x15;
    0x0000b87e movs r1, r0               |     r1 = r0;
    0x0000b880 asrs r2, r3, 0x15         |     r2 = r3 >> 0x15;
    0x0000b882 movs r1, r0               |     r1 = r0;
    0x0000b884 asrs r6, r6, 0x15         |     r6 >>= 0x15;
    0x0000b886 movs r1, r0               |     r1 = r0;
    0x0000b888 asrs r2, r0, 0x16         |     r2 = r0 >> 0x16;
    0x0000b88a movs r1, r0               |     r1 = r0;
    0x0000b88c asrs r2, r2, 0x16         |     r2 >>= 0x16;
    0x0000b88e movs r1, r0               |     r1 = r0;
    0x0000b890 asrs r2, r2, 0xf          |     r2 >>= 0xf;
    0x0000b892 movs r1, r0               |     r1 = r0;
    0x0000b894 asrs r6, r5, 0xd          |     r6 = r5 >> 0xd;
    0x0000b896 movs r1, r0               |     r1 = r0;
    0x0000b898 asrs r6, r3, 0x11         |     r6 = r3 >> 0x11;
    0x0000b89a movs r1, r0               |     r1 = r0;
    0x0000b89c lsrs r4, r3, 0x1f         |     r4 = r3 >> 0x1f;
    0x0000b89e movs r1, r0               |     r1 = r0;
    0x0000b8a0 lsrs r0, r3, 0xe          |     r0 = r3 >> 0xe;
    0x0000b8a2 movs r1, r0               |     r1 = r0;
    0x0000b8a4 asrs r6, r5, 5            |     r6 = r5 >> 5;
    0x0000b8a6 movs r1, r0               |     r1 = r0;
    0x0000b8a8 invalid                   |     
    0x0000baf4 ldr r1, [pc, 0xe0]        |     
    0x0000baf6 ldr r2, [pc, 0xe4]        |     r2 = *(0xbbde);
    0x0000baf8 push {r4, r5, lr}         |     
    0x0000bafa sub sp, 0x6c              |     
    0x0000bafc add r1, pc                |     r1 = 0x176d8;
    0x0000bafe ldr r4, [pc, 0xe0]        |     
    0x0000bb00 ldr r2, [r1, r2]          |     
    0x0000bb02 ldr r3, [pc, 0xe0]        |     r3 = *(0xbbe6);
    0x0000bb04 add r4, pc                |     r4 = 0x176ea;
    0x0000bb06 ldr r2, [r2]              |     r2 = *(0x176d8);
    0x0000bb08 str r2, [sp, 0x64]        |     var_64h = r2;
    0x0000bb0a mov.w r2, 0               |     r2 = 0;
    0x0000bb0e ldr r3, [r4, r3]          |     
    0x0000bb10 ldr r3, [r3]              |     r3 = *(0x176ea);
    0x0000bb12 cmp r3, 1                 |     
                                         |     if (r3 > 1) {
    0x0000bb14 bhi 0xbb78                |         goto label_4;
                                         |     }
    0x0000bb16 ldr r3, [pc, 0xd0]        |     
    0x0000bb18 movs r2, 8                |     r2 = 8;
    0x0000bb1a ldr r1, [pc, 0xd0]        |     
    0x0000bb1c mov.w r0, 0x102           |     r0 = 0x102;
    0x0000bb20 ldr r3, [r4, r3]          |     r3 = *((r4 + r3));
    0x0000bb22 add r1, pc                |     r1 = 0x17714;
    0x0000bb24 ldr r3, [r3]              |     
    0x0000bb26 ldr r3, [r3, 0x14]        |     r3 = *(0xbbfe);
    0x0000bb28 blx r3                    |     r0 = uint32_t (*r3)(uint32_t, uint32_t, uint32_t, uint32_t) (r0, r1, r2, r3);
                                         |     if (r0 != 0) {
    0x0000bb2a cbz r0, 0xbb42            |         
    0x0000bb2c blx 0x317c                |         r0 = strncpy (r0, r1, r2);
    0x0000bb30 ldr r3, [r0]              |         r3 = *(r0);
    0x0000bb32 mov r5, r0                |         r5 = r0;
    0x0000bb34 cmp r3, 0x10              |         
                                         |         if (r3 != 0x10) {
    0x0000bb36 bne 0xbb9e                |             goto label_5;
                                         |         }
    0x0000bb38 ldr r1, [pc, 0xb4]        |         
    0x0000bb3a movs r0, 4                |         r0 = 4;
    0x0000bb3c add r1, pc                |         r1 = 0x17730;
    0x0000bb3e bl 0x10568                |         fcn_00010568 (r0, r1, r2);
                                         |     }
    0x0000bb42 ldr r0, [pc, 0xb0]        |     
    0x0000bb44 add r5, sp, 8             |     r5 += var_8h;
    0x0000bb46 mov r1, r5                |     r1 = r5;
    0x0000bb48 add r0, pc                |     r0 = 0x17742;
    0x0000bb4a blx 0x2d9c                |     r0 = fcn_00002d9c ();
                                         |     if (r0 == 0) {
    0x0000bb4e cbz r0, 0xbbac            |         goto label_6;
                                         |     }
                                         | label_1:
    0x0000bb50 ldr r0, [pc, 0xa4]        |     
    0x0000bb52 mov r1, r5                |     r1 = r5;
    0x0000bb54 add r0, pc                |     r0 = 0x17750;
    0x0000bb56 blx 0x2d9c                |     r0 = fcn_00002d9c ();
    0x0000bb5a cmp r0, 0                 |     
                                         |     if (r0 == 0) {
    0x0000bb5c beq 0xbbc8                |         goto label_7;
                                         |     }
                                         |     do {
                                         | label_2:
    0x0000bb5e movs r0, 0                |         r0 = 0;
                                         | label_0:
    0x0000bb60 ldr r2, [pc, 0x98]        |         
    0x0000bb62 ldr r3, [pc, 0x78]        |         r3 = *(0xbbde);
    0x0000bb64 add r2, pc                |         r2 = 0x17764;
    0x0000bb66 ldr r3, [r2, r3]          |         r3 = *(0x17764);
    0x0000bb68 ldr r2, [r3]              |         r2 = *(0x17764);
    0x0000bb6a ldr r3, [sp, 0x64]        |         r3 = var_64h;
    0x0000bb6c eors r2, r3               |         r2 ^= r3;
    0x0000bb6e mov.w r3, 0               |         r3 = 0;
                                         |         if (r2 != r3) {
    0x0000bb72 bne 0xbbd2                |             goto label_8;
                                         |         }
    0x0000bb74 add sp, 0x6c              |         
    0x0000bb76 pop {r4, r5, pc}          |         
                                         | label_4:
    0x0000bb78 ldr r2, [pc, 0x84]        |         
    0x0000bb7a movs r3, 8                |         r3 = 8;
    0x0000bb7c ldr r4, [pc, 0x84]        |         
    0x0000bb7e ldr r1, [pc, 0x88]        |         
    0x0000bb80 add r2, pc                |         r2 = 0x17784;
    0x0000bb82 add r4, pc                |         r4 = 0x1778a;
    0x0000bb84 mov r0, r2                |         r0 = r2;
    0x0000bb86 add r1, pc                |         r1 = 0x17794;
    0x0000bb88 str r4, [sp]              |         *(sp) = r4;
    0x0000bb8a blx 0x3188                |         r0 = strcat_chk ()
    0x0000bb8e cmp r0, 0                 |         
                                         |         if (r0 < 0) {
    0x0000bb90 blt 0xbbb6                |             goto label_9;
                                         |         }
    0x0000bb92 ldr r1, [pc, 0x78]        |         
    0x0000bb94 movs r0, 7                |         r0 = 7;
    0x0000bb96 add r1, pc                |         r1 = 0x177a8;
    0x0000bb98 bl 0x10568                |         fcn_00010568 (r0, r1, r2);
    0x0000bb9c b 0xbb5e                  |         
                                         |     } while (1);
                                         | label_5:
    0x0000bb9e ldr r1, [pc, 0x70]        |     
    0x0000bba0 movs r0, 2                |     r0 = 2;
    0x0000bba2 add r1, pc                |     r1 = 0x177b8;
    0x0000bba4 bl 0x10568                |     fcn_00010568 (r0, r1, r2);
    0x0000bba8 ldr r0, [r5]              |     r0 = *(r5);
    0x0000bbaa b 0xbb60                  |     goto label_0;
                                         | label_6:
    0x0000bbac ldr r3, [pc, 0x64]        |     r3 = *(0xbc14);
    0x0000bbae movs r2, 1                |     r2 = 1;
    0x0000bbb0 ldr r3, [r4, r3]          |     r3 = *((r4 + r3));
    0x0000bbb2 strb r2, [r3]             |     *(r3) = r2;
    0x0000bbb4 b 0xbb50                  |     goto label_1;
                                         | label_9:
    0x0000bbb6 ldr r1, [pc, 0x60]        |     
    0x0000bbb8 movs r0, 2                |     r0 = 2;
    0x0000bbba add r1, pc                |     r1 = 0x177d8;
    0x0000bbbc bl 0x10568                |     r0 = fcn_00010568 (r0, r1, r2);
    0x0000bbc0 blx 0x317c                |     r0 = strncpy (r0, r1, r2);
    0x0000bbc4 ldr r0, [r0]              |     r0 = *(r0);
    0x0000bbc6 b 0xbb60                  |     goto label_0;
                                         | label_7:
    0x0000bbc8 ldr r0, [pc, 0x50]        |     
    0x0000bbca add r0, pc                |     r0 = 0x177ea;
    0x0000bbcc blx 0x2de8                |     fcn_00002de8 ();
    0x0000bbd0 b 0xbb5e                  |     goto label_2;
                                         | label_8:
    0x0000bbd2 blx 0x2eac                |     socket (r0, r1, r2);
    0x0000bbd6 nop                       |     
    0x0000bbd8 strh r0, [r2, 8]          |     *((r2 + 8)) = r0;
    0x0000bbda movs r1, r0               |     r1 = r0;
    0x0000bbdc lsls r4, r2, 0xc          |     r4 = r2 << 0xc;
    0x0000bbde movs r0, r0               |     
    0x0000bbe0 strh r0, [r1, 8]          |     *((r1 + 8)) = r0;
    0x0000bbe2 movs r1, r0               |     r1 = r0;
    0x0000bbe4 lsls r0, r5, 0xd          |     r0 = r5 << 0xd;
    0x0000bbe6 movs r0, r0               |     
    0x0000bbe8 lsls r0, r1, 0xe          |     r0 = r1 << 0xe;
    0x0000bbea movs r0, r0               |     
    0x0000bbec b 0xb874                  |     goto label_3;
                                         | }
    ; assembly                                   | /* r2dec pseudo code output */
                                                 | /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-80367616.squashfs_v4_le_extract/usr/sbin/fwmgr @ 0xbc20 */
                                                 | #include <stdint.h>
                                                 |  
    ; (fcn) fcn.0000bc20 ()                      | void fcn_0000bc20 (int16_t arg1) {
                                                 |     int16_t var_0h;
                                                 |     int16_t var_ch;
                                                 |     int16_t var_40ch;
                                                 |     int16_t var_410h;
                                                 |     r0 = arg1;
    0x0000bc20 ldr r2, [pc, 0x164]               |     
    0x0000bc22 ldr r3, [pc, 0x168]               |     r3 = *(0xbd8e);
    0x0000bc24 push {r4, r5, r6, lr}             |     
    0x0000bc26 mov r5, r0                        |     r5 = r0;
    0x0000bc28 add r2, pc                        |     r2 = 0x179b4;
    0x0000bc2a ldr r0, [pc, 0x164]               |     
    0x0000bc2c sub.w sp, sp, 0x410               |     
    0x0000bc30 ldr r3, [r2, r3]                  |     
    0x0000bc32 ldr r4, [pc, 0x160]               |     
    0x0000bc34 add r0, pc                        |     r0 = 0x179ca;
    0x0000bc36 ldr r3, [r3]                      |     r3 = *(0x179b4);
    0x0000bc38 str.w r3, [sp, 0x40c]             |     __asm ("str.w r3, [var_40ch]");
    0x0000bc3c mov.w r3, 0                       |     r3 = 0;
    0x0000bc40 blx 0x3030                        |     r0 = fcn_00003030 ();
    0x0000bc44 cmp r0, 0                         |     
    0x0000bc46 add r4, pc                        |     r4 = 0x179e0;
                                                 |     if (r0 < 0) {
    0x0000bc48 blt 0xbce0                        |         goto label_4;
                                                 |     }
    0x0000bc4a ldr r0, [pc, 0x14c]               |     
    0x0000bc4c add r0, pc                        |     r0 = 0x179ea;
    0x0000bc4e blx 0x3030                        |     r0 = fcn_00003030 ();
    0x0000bc52 cmp r0, 0                         |     
                                                 |     if (r0 < 0) {
    0x0000bc54 blt 0xbd4c                        |         goto label_5;
                                                 |     }
    0x0000bc56 ldr r3, [pc, 0x144]               |     r3 = *(0xbd9e);
    0x0000bc58 ldr r6, [r4, r3]                  |     r6 = *((r4 + r3));
    0x0000bc5a ldrb r3, [r6]                     |     r3 = *(r6);
    0x0000bc5c cmp r3, 0                         |     
                                                 |     if (r3 == 0) {
    0x0000bc5e beq 0xbcd6                        |         goto label_6;
                                                 |     }
    0x0000bc60 cmp r5, 0                         |     
                                                 |     if (r5 != 0) {
    0x0000bc62 bne 0xbd1c                        |         goto label_7;
                                                 |     }
    0x0000bc64 ldr r3, [pc, 0x138]               |     
    0x0000bc66 mov r2, r5                        |     r2 = r5;
    0x0000bc68 ldr r1, [pc, 0x138]               |     
    0x0000bc6a movs r0, 0x24                     |     r0 = 0x24;
    0x0000bc6c ldr r3, [r4, r3]                  |     r3 = *((r4 + r3));
    0x0000bc6e add r1, pc                        |     r1 = 0x17a16;
    0x0000bc70 ldr r3, [r3]                      |     
    0x0000bc72 ldr r3, [r3, 0x14]                |     r3 = *(0xbdb4);
    0x0000bc74 blx r3                            |     r0 = uint32_t (*r3)(uint32_t, uint32_t, uint32_t, uint32_t) (r0, r1, r2, r3);
    0x0000bc76 cmp r0, 0                         |     
                                                 |     if (r0 != 0) {
    0x0000bc78 bne 0xbd5e                        |         goto label_8;
                                                 |     }
                                                 | label_2:
    0x0000bc7a ldr r4, [pc, 0x12c]               |     
    0x0000bc7c ldr r1, [pc, 0x12c]               |     
    0x0000bc7e add r4, pc                        |     r4 = 0x17a2c;
    0x0000bc80 add r1, pc                        |     r1 = 0x17a30;
                                                 |     do {
    0x0000bc82 ldr r0, [pc, 0x12c]               |         
    0x0000bc84 movw r2, 0x1ed                    |         r2 = 0x1ed;
    0x0000bc88 add r0, pc                        |         r0 = 0x17a3e;
    0x0000bc8a bl 0x9ff8                         |         r0 = fcn_00009ff8 (r0, r1, r2, r3);
                                                 |         if (r0 == 0) {
    0x0000bc8e cbnz r0, 0xbcb4                   |             
    0x0000bc90 ldr r3, [pc, 0x120]               |             
    0x0000bc92 add r5, sp, 0xc                   |             r5 += var_ch;
    0x0000bc94 mov.w r2, 0x400                   |             r2 = 0x400;
    0x0000bc98 movs r1, 1                        |             r1 = 1;
    0x0000bc9a mov r0, r5                        |             r0 = r5;
    0x0000bc9c str r4, [sp]                      |             *(sp) = r4;
    0x0000bc9e add r3, pc                        |             r3 = 0x17a56;
    0x0000bca0 blx 0x3200                        |             ERR_error_string ();
    0x0000bca4 ldr r0, [pc, 0x110]               |             
    0x0000bca6 movw r1, 0x1ed                    |             r1 = 0x1ed;
    0x0000bcaa add r0, pc                        |             r0 = 0x17a66;
    0x0000bcac bl 0x11388                        |             r0 = fcn_00011388 (r0, r1);
    0x0000bcb0 mov r2, r0                        |             r2 = r0;
                                                 |             if (r0 == 0) {
    0x0000bcb2 cbz r0, 0xbcf2                    |                 goto label_9;
                                                 |             }
                                                 |         }
                                                 | label_1:
    0x0000bcb4 blx 0x317c                        |         r0 = strncpy (r0, r1, r2);
    0x0000bcb8 ldr r0, [r0]                      |         r0 = *(r0);
                                                 | label_0:
    0x0000bcba ldr r2, [pc, 0x100]               |         
    0x0000bcbc ldr r3, [pc, 0xcc]                |         r3 = *(0xbd8c);
    0x0000bcbe add r2, pc                        |         r2 = 0x17a80;
    0x0000bcc0 ldr r3, [r2, r3]                  |         r3 = *(0x17a80);
    0x0000bcc2 ldr r2, [r3]                      |         r2 = *(0x17a80);
    0x0000bcc4 ldr.w r3, [sp, 0x40c]             |         r3 = var_40ch;
    0x0000bcc8 eors r2, r3                       |         r2 ^= r3;
    0x0000bcca mov.w r3, 0                       |         r3 = 0;
                                                 |         if (r2 != r3) {
    0x0000bcce bne 0xbd82                        |             goto label_10;
                                                 |         }
    0x0000bcd0 add.w sp, sp, 0x410               |         
    0x0000bcd4 pop {r4, r5, r6, pc}              |         
                                                 | label_6:
    0x0000bcd6 ldr r4, [pc, 0xe8]                |         
    0x0000bcd8 ldr r1, [pc, 0xe8]                |         
    0x0000bcda add r4, pc                        |         r4 = 0x17aa0;
    0x0000bcdc add r1, pc                        |         r1 = 0x17aa4;
    0x0000bcde b 0xbc82                          |         
                                                 |     } while (1);
                                                 | label_4:
    0x0000bce0 ldr r1, [pc, 0xe4]                |     
    0x0000bce2 movs r0, 2                        |     r0 = 2;
    0x0000bce4 add r1, pc                        |     r1 = 0x17ab0;
    0x0000bce6 bl 0x10568                        |     r0 = fcn_00010568 (r0, r1, r2);
    0x0000bcea blx 0x317c                        |     r0 = strncpy (r0, r1, r2);
    0x0000bcee ldr r0, [r0]                      |     r0 = *(r0);
    0x0000bcf0 b 0xbcba                          |     goto label_0;
                                                 | label_9:
    0x0000bcf2 ldr r0, [pc, 0xd8]                |     
    0x0000bcf4 mov r1, r5                        |     r1 = r5;
    0x0000bcf6 add r0, pc                        |     r0 = 0x17ac8;
    0x0000bcf8 bl 0x110d4                        |     r0 = fcn_000110d4 (r0, r1, r2);
    0x0000bcfc cmp r0, 0                         |     
                                                 |     if (r0 != 0) {
    0x0000bcfe bne 0xbcb4                        |         goto label_1;
                                                 |     }
    0x0000bd00 ldrb r3, [r6]                     |     r3 = *(r6);
    0x0000bd02 cmp r3, 0                         |     
                                                 |     if (r3 != 0) {
    0x0000bd04 bne 0xbd70                        |         goto label_11;
                                                 |     }
    0x0000bd06 ldr r1, [pc, 0xc8]                |     
    0x0000bd08 ldr r0, [pc, 0xc8]                |     
    0x0000bd0a add r1, pc                        |     r1 = 0x17ae0;
    0x0000bd0c add r0, pc                        |     r0 = 0x17ae4;
    0x0000bd0e bl 0x1155c                        |     fcn_0001155c (r0);
    0x0000bd10 invalid                           |     
                                                 | label_3:
    0x0000bd12 bl 0xbaf4                         |     r0 = fcn_0000baf4 ();
    0x0000bd16 cmp r0, 0                         |     
                                                 |     if (r0 == 0) {
    0x0000bd18 beq 0xbcba                        |         goto label_0;
                                                 |     }
    0x0000bd1a b 0xbcb4                          |     goto label_1;
                                                 | label_7:
    0x0000bd1c ldr r2, [pc, 0xb8]                |     
    0x0000bd1e movs r3, 0                        |     r3 = 0;
    0x0000bd20 ldr r4, [pc, 0xb8]                |     
    0x0000bd22 ldr r1, [pc, 0xbc]                |     
    0x0000bd24 add r2, pc                        |     r2 = 0x17b00;
    0x0000bd26 add r4, pc                        |     r4 = 0x17b06;
    0x0000bd28 mov r0, r2                        |     r0 = r2;
    0x0000bd2a add r1, pc                        |     r1 = 0x17b10;
    0x0000bd2c str r1, [sp]                      |     *(sp) = r1;
    0x0000bd2e mov r1, r4                        |     r1 = r4;
    0x0000bd30 blx 0x3188                        |     r0 = strcat_chk ()
    0x0000bd34 cmp r0, 0                         |     
                                                 |     if (r0 >= 0) {
    0x0000bd36 bge 0xbc7a                        |         goto label_2;
                                                 |     }
    0x0000bd38 ldr r1, [pc, 0xa8]                |     
    0x0000bd3a mov r2, r4                        |     r2 = r4;
    0x0000bd3c movs r0, 2                        |     r0 = 2;
    0x0000bd3e add r1, pc                        |     r1 = 0x17b26;
    0x0000bd40 bl 0x10568                        |     r0 = fcn_00010568 (r0, r1, r2);
    0x0000bd44 blx 0x317c                        |     r0 = strncpy (r0, r1, r2);
    0x0000bd46 ands.w r8, sl, r0, lsl 24         |     r8 = sl & (r0 << 24);
    0x0000bd4a b 0xbcba                          |     goto label_0;
                                                 | label_5:
    0x0000bd4c ldr r1, [pc, 0x98]                |     
    0x0000bd4e movs r0, 2                        |     r0 = 2;
    0x0000bd50 add r1, pc                        |     r1 = 0x17b3c;
    0x0000bd52 bl 0x10568                        |     r0 = fcn_00010568 (r0, r1, r2);
    0x0000bd56 blx 0x317c                        |     r0 = strncpy (r0, r1, r2);
    0x0000bd5a ldr r0, [r0]                      |     r0 = *(r0);
    0x0000bd5c b 0xbcba                          |     goto label_0;
                                                 | label_8:
    0x0000bd5e ldr r1, [pc, 0x8c]                |     
    0x0000bd60 movs r0, 2                        |     r0 = 2;
    0x0000bd62 add r1, pc                        |     r1 = 0x17b54;
    0x0000bd64 bl 0x10568                        |     r0 = fcn_00010568 (r0, r1, r2);
    0x0000bd68 blx 0x317c                        |     r0 = strncpy (r0, r1, r2);
    0x0000bd6c ldr r0, [r0]                      |     r0 = *(r0);
    0x0000bd6e b 0xbcba                          |     goto label_0;
                                                 | label_11:
    0x0000bd70 ldr r1, [pc, 0x7c]                |     
    0x0000bd72 ldr r0, [pc, 0x80]                |     
    0x0000bd74 add r1, pc                        |     r1 = 0x17b68;
    0x0000bd76 add r0, pc                        |     r0 = 0x17b70;
    0x0000bd78 bl 0xa224                         |     r0 = fcn_0000a224 (r0, r1);
    0x0000bd7c cmp r0, 0                         |     
                                                 |     if (r0 == 0) {
    0x0000bd7e beq 0xbd12                        |         goto label_3;
                                                 |     }
    0x0000bd80 b 0xbcb4                          |     goto label_1;
                                                 | label_10:
    0x0000bd82 blx 0x2eac                        |     socket (r0, r1, r2);
    0x0000bd86 nop                               |     
    0x0000bd88 ldrb r4, [r4, 0x1f]               |     r4 = *((r4 + 0x1f));
    0x0000bd8a movs r1, r0                       |     r1 = r0;
    0x0000bd8c lsls r4, r2, 0xc                  |     r4 = r2 << 0xc;
    0x0000bd8e movs r0, r0                       |     
    0x0000bd90 lsls r4, r3, 0xb                  |     r4 = r3 << 0xb;
    0x0000bd92 movs r1, r0                       |     r1 = r0;
    0x0000bd94 ldrb r6, [r0, 0x1f]               |     r6 = *((r0 + 0x1f));
    0x0000bd96 movs r1, r0                       |     r1 = r0;
    0x0000bd98 b 0xb7cc                          |     return void (*0xb7cc)() ();
                                                 | }
    ; assembly                                               | /* r2dec pseudo code output */
                                                             | /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-80367616.squashfs_v4_le_extract/usr/sbin/fwmgr @ 0x12acc */
                                                             | #include <stdint.h>
                                                             |  
    ; (fcn) fcn.00012acc ()                                  | void fcn_00012acc (int16_t arg_1100h) {
                                                             |     int16_t var_0h_2;
                                                             |     int16_t var_8h_2;
                                                             |     int16_t var_64h;
                                                             |     int16_t var_1160h;
                                                             |     int16_t var_0h_5;
                                                             |     int16_t var_1180h;
                                                             |     int32_t var_0h_4;
                                                             |     int16_t var_4h;
                                                             |     int16_t var_1100h;
                                                             |     int32_t var_0h_3;
                                                             |     int16_t var_0h;
                                                             |     int16_t var_8h;
                                                             |     int16_t var_ch;
                                                             |     int16_t var_8ch;
    0x00012acc blx 0x2db4                                    |     r0 = fcn_00002db4 ();
    0x00012ad0 cmp r0, 0                                     |     
                                                             |     if (r0 != 0) {
    0x00012ad2 bne 0x12b46                                   |         goto label_13;
                                                             |     }
    0x00012ad4 mov r0, r5                                    |     r0 = r5;
    0x00012ad6 bl 0x173e4                                    |     fcn_000173e4 (r0, r1, r2, r3, r4, r5);
    0x00012ada movs r0, 0                                    |     r0 = 0;
                                                             |     do {
    0x00012adc ldr r2, [pc, 0xac]                            |         
    0x00012ade add.w r1, sp, 0x1100                          |         r1 += arg_1100h;
    0x00012ae2 ldr r3, [pc, 0x8c]                            |         r3 = *(0x12b72);
    0x00012ae4 adds r1, 0x14                                 |         r1 += 0x14;
    0x00012ae6 add r2, pc                                    |         r2 = 0x25676;
    0x00012ae8 ldr r3, [r2, r3]                              |         r3 = imp.__stack_chk_guard;
    0x00012aea ldr r2, [r3]                                  |         r2 = imp.__stack_chk_guard;
    0x00012aec ldr r3, [r1]                                  |         r3 = *(r1);
    0x00012aee eors r2, r3                                   |         r2 ^= r3;
    0x00012af0 mov.w r3, 0                                   |         r3 = 0;
                                                             |         if (r2 != r3) {
    0x00012af4 bne 0x12b66                                   |             goto label_14;
                                                             |         }
    0x00012af6 add.w sp, sp, 0x1100                          |         
    0x00012afa add sp, 0x1c                                  |         
    0x00012afc pop.w {r4, r5, r6, r7, r8, sb, pc}            |         
                                                             | label_13:
    0x00012b46 ldr r1, [pc, 0x54]                            |         
    0x00012b48 movs r0, 2                                    |         r0 = 2;
    0x00012b4a add r1, pc                                    |         r1 = 0x256ec;
    0x00012b4c bl 0x10568                                    |         r0 = fcn_00010568 (r0, r1, r2);
    0x00012b50 blx 0x317c                                    |         r0 = strncpy (r0, r1, r2);
    0x00012b54 ldr r0, [r0]                                  |         r0 = *(r0);
    0x00012b56 b 0x12adc                                     |         
                                                             |     } while (1);
                                                             | label_14:
    0x00012b66 blx 0x2eac                                    |     socket (r0, r1, r2);
    0x00012b6a nop                                           |     
    0x00012b6c asrs r6, r5, 7                                |     r6 = r5 >> 7;
    0x00012b6e movs r1, r0                                   |     r1 = r0;
    0x00012b70 lsls r4, r2, 0xc                              |     r4 = r2 << 0xc;
    0x00012b72 movs r0, r0                                   |     
    0x00012b74 ldrh r6, [r7, 0x14]                           |     r6 = *((r7 + 0x14));
    0x00012b76 movs r1, r0                                   |     r1 = r0;
    0x00012b78 ldrh r4, [r1, 0x10]                           |     r4 = *((r1 + 0x10));
    0x00012b7a movs r1, r0                                   |     r1 = r0;
    0x00012b7c bpl 0x12b7c                                   |     
    0x00012b7e movs r0, r0                                   |     
    0x00012b80 ldrh r2, [r3, 0x12]                           |     r2 = *((r3 + 0x12));
    0x00012b82 movs r1, r0                                   |     r1 = r0;
    0x00012b84 ldm r7!, {r2, r6}                             |     r2 = *(r7!);
                                                             |     r6 = *((r7! + 4));
    0x00012b86 movs r0, r0                                   |     
    0x00012b88 asrs r4, r4, 0x15                             |     r4 >>= 0x15;
    0x00012b8a movs r1, r0                                   |     r1 = r0;
    0x00012b8c asrs r6, r4, 4                                |     r6 = r4 >> 4;
    0x00012b8e movs r1, r0                                   |     r1 = r0;
    0x00012b90 ldm r6, {r4, r6, r7}                          |     r4 = *(r6);
                                                             |     r6 = *((r6 + 4));
                                                             |     r7 = *((r6 + 8));
    0x00012b92 movs r0, r0                                   |     
    0x00012b94 ldrh r6, [r7, 8]                              |     r6 = *((r7 + 8));
    0x00012b96 movs r1, r0                                   |     r1 = r0;
    0x00012b98 asrs r2, r6, 0x13                             |     r2 = r6 >> 0x13;
    0x00012b9a movs r1, r0                                   |     r1 = r0;
    0x00012b9c ldm r6, {r1, r2, r3, r4, r6}                  |     r1 = *(r6);
                                                             |     r2 = *((r6 + 4));
                                                             |     r3 = *((r6 + 8));
                                                             |     r4 = *((r6 + 12));
                                                             |     r6 = *((r6 + 16));
    0x00012b9e movs r0, r0                                   |     
    0x00012ba0 ldr r1, [pc, 0x88]                            |     
    0x00012ba2 movw r3, 0x10b                                |     r3 = 0x10b;
    0x00012ba6 ldr r2, [pc, 0x88]                            |     r2 = *(0x12c32);
    0x00012ba8 cmp r0, r3                                    |     
    0x00012baa push {r4, lr}                                 |     
    0x00012bac sub sp, 0x90                                  |     
    0x00012bae add r1, pc                                    |     r1 = 0x257de;
    0x00012bb0 ldr r2, [r1, r2]                              |     
    0x00012bb2 ldr r2, [r2]                                  |     r2 = imp.__stack_chk_guard;
                                                             |     while (r1 >= r0);
    0x00012bb4 str r2, [sp, 0x8c]                            |     var_8ch = r2;
    0x00012bb6 mov.w r2, 0                                   |     r2 = 0;
                                                             |     if (r0 == r3) {
    0x00012bba beq 0x12c14                                   |         goto label_15;
                                                             |     }
    0x00012bbc ldr.w ip, [pc, 0x74]                          |     
    0x00012bc0 movs r2, 0                                    |     r2 = 0;
    0x00012bc2 mov r3, r2                                    |     r3 = r2;
    0x00012bc4 add ip, pc                                    |     ip = 0x257fc;
    0x00012bc6 b 0x12bd0                                     |     
                                                             |     while (r0 != r1) {
    0x00012bc8 adds r3, 1                                    |         r3++;
    0x00012bca adds r2, 0x41                                 |         r2 += 0x41;
    0x00012bcc cmp r3, 0x80                                  |         
                                                             |         if (r3 == 0x80) {
    0x00012bce beq 0x12c1c                                   |             goto label_16;
                                                             |         }
    0x00012bd0 ldr.w r1, [ip, r2, lsl 2]                     |         offset_0 = r2 << 2;
                                                             |         r1 = *((ip + offset_0));
    0x00012bd4 cmp r0, r1                                    |         
    0x00012bd6 bne 0x12bc8                                   |         
                                                             |     }
    0x00012bd8 mov r0, r3                                    |     r0 = r3;
                                                             | label_0:
    0x00012bda ldr r3, [pc, 0x5c]                            |     
    0x00012bdc add r4, sp, 0xc                               |     r4 += var_ch;
    0x00012bde movs r1, 1                                    |     r1 = 1;
    0x00012be0 str r0, [sp]                                  |     *(sp) = r0;
    0x00012be2 movs r2, 0x80                                 |     r2 = 0x80;
    0x00012be4 mov r0, r4                                    |     r0 = r4;
    0x00012be6 add r3, pc                                    |     r3 = 0x25824;
    0x00012be8 blx 0x3200                                    |     ERR_error_string ();
    0x00012bec movs r3, 0                                    |     r3 = 0;
    0x00012bee mov r1, r4                                    |     r1 = r4;
    0x00012bf0 add r0, sp, 8                                 |     r0 += var_8h;
    0x00012bf2 str r3, [sp, 8]                               |     var_8h = r3;
    0x00012bf4 bl 0x10fa4                                    |     r0 = fcn_00010fa4 (r0, r1);
                                                             |     if (r0 != 0) {
    0x00012bf8 cbnz r0, 0x12c1c                              |         goto label_16;
                                                             |     }
    0x00012bfa ldr r0, [sp, 8]                               |     r0 = var_8h;
                                                             |     do {
    0x00012bfc ldr r2, [pc, 0x3c]                            |         
    0x00012bfe ldr r3, [pc, 0x30]                            |         r3 = *(0x12c32);
    0x00012c00 add r2, pc                                    |         r2 = 0x25840;
    0x00012c02 ldr r3, [r2, r3]                              |         r3 = imp.__stack_chk_guard;
    0x00012c04 ldr r2, [r3]                                  |         r2 = imp.__stack_chk_guard;
    0x00012c06 ldr r3, [sp, 0x8c]                            |         r3 = var_8ch;
    0x00012c08 eors r2, r3                                   |         r2 ^= r3;
    0x00012c0a mov.w r3, 0                                   |         r3 = 0;
                                                             |         if (r2 != r3) {
    0x00012c0e bne 0x12c26                                   |             goto label_17;
                                                             |         }
    0x00012c10 add sp, 0x90                                  |         
    0x00012c12 pop {r4, pc}                                  |         
                                                             | label_15:
    0x00012c14 ldr r3, [pc, 0x28]                            |         
    0x00012c16 add r3, pc                                    |         r3 = 0x2585a;
    0x00012c18 ldrb r3, [r3, 4]                              |         r3 = *((r3 + 4));
                                                             |         if (r3 != 0) {
    0x00012c1a cbnz r3, 0x12c22                              |             goto label_18;
                                                             |         }
                                                             | label_16:
    0x00012c1c mov.w r0, -1                                  |         r0 = -1;
    0x00012c20 b 0x12bfc                                     |         
                                                             |     } while (1);
                                                             | label_18:
    0x00012c22 movs r0, 0                                    |     r0 = 0;
    0x00012c24 b 0x12bda                                     |     goto label_0;
                                                             | label_17:
    0x00012c26 blx 0x2eac                                    |     socket (r0, r1, r2);
    0x00012c2a nop                                           |     
    0x00012c2c asrs r6, r3, 1                                |     r6 = r3 >> 1;
    0x00012c2e movs r1, r0                                   |     r1 = r0;
    0x00012c30 lsls r4, r2, 0xc                              |     r4 = r2 << 0xc;
    0x00012c32 movs r0, r0                                   |     
    0x00012c34 ldrh r0, [r5, 8]                              |     r0 = *((r5 + 8));
    0x00012c36 movs r1, r0                                   |     r1 = r0;
    0x00012c38 ldm r6!, {r1, r3, r4, r5}                     |     r1 = *(r6!);
                                                             |     r3 = *((r6! + 4));
                                                             |     r4 = *((r6! + 8));
                                                             |     r5 = *((r6! + 12));
    0x00012c3a movs r0, r0                                   |     
    0x00012c3c asrs r4, r1, 0x20                             |     r4 = r1 >> 0x20;
    0x00012c3e movs r1, r0                                   |     r1 = r0;
    0x00012c40 ldrh r6, [r1, 2]                              |     r6 = *((r1 + 2));
    0x00012c42 movs r1, r0                                   |     r1 = r0;
    0x00012c44 push.w {r4, r5, r6, r7, r8, sb, sl, lr}       |     
    0x00012c48 sub.w sp, sp, 0x1100                          |     
    0x00012c4c ldr r4, [pc, 0x130]                           |     
    0x00012c4e sub sp, 0x18                                  |     
    0x00012c50 add.w r5, sp, 0x1100                          |     r5 += var_1100h;
    0x00012c54 movw r2, 0x1110                               |     r2 = 0x1110;
    0x00012c56 asrs r0, r2, 8                                |     r0 = r2 >> 8;
    0x00012c58 ldr r0, [pc, 0x128]                           |     r0 = *(0x12d84);
    0x00012c5a adds r5, 0x14                                 |     r5 += 0x14;
    0x00012c5c add r4, pc                                    |     r4 = 0x259e0;
    0x00012c5e ldr r1, [pc, 0x128]                           |     
    0x00012c60 ldr r3, [pc, 0x128]                           |     
    0x00012c62 add r7, sp, 4                                 |     r7 += var_4h;
    0x00012c64 ldr r0, [r4, r0]                              |     
    0x00012c66 add r1, pc                                    |     r1 = 0x259f4;
    0x00012c68 ldr r4, [pc, 0x124]                           |     
    0x00012c6a ldr.w r8, [pc, 0x128]                         |     
    0x00012c6e add r3, pc                                    |     r3 = 0x259fe;
    0x00012c70 ldr r0, [r0]                                  |     r0 = imp.__stack_chk_guard;
    0x00012c72 str r0, [r5]                                  |     *(r5) = r0;
    0x00012c74 mov.w r0, 0                                   |     r0 = 0;
    0x00012c78 ldm r1, {r0, r1}                              |     r0 = *(r1);
                                                             |     r1 = *((r1 + 4));
    0x00012c7a ldr.w sl, [pc, 0x11c]                         |     
    0x00012c7e add r4, pc                                    |     r4 = 0x25a12;
    0x00012c80 ldr.w sb, [pc, 0x118]                         |     
    0x00012c84 add.w r6, r4, 0x8200                          |     r6 = r4 + 0x8200;
    0x00012c88 str r0, [r3, 8]                               |     *((r3 + 8)) = r0;
    0x00012c8a add r8, pc                                    |     r8 = 0x25a24;
    0x00012c8c strb r1, [r3, 0xc]                            |     *((r3 + 0xc)) = r1;
    0x00012c8e add r0, sp, 4                                 |     r0 += var_4h;
    0x00012c90 movs r1, 0                                    |     r1 = 0;
    0x00012c92 add sl, pc                                    |     sl = 0x25a30;
    0x00012c94 movs r5, 0                                    |     r5 = 0;
    0x00012c96 add sb, pc                                    |     sb = 0x25a36;
    0x00012c98 adds r4, 0x84                                 |     r4 += 0x84;
    0x00012c9a adds r6, 0x84                                 |     r6 += 0x84;
    0x00012c9c add.w r8, r8, 8                               |     r8 += 8;
    0x00012ca0 blx 0x2c8c                                    |     fcn_00002c8c ();
    0x00012ca4 b 0x12cba                                     |     
                                                             |     while (r3 != 0x20) {
    0x00012ca6 cmp r3, 0x40                                  |         
                                                             |         if (r3 == 0x40) {
    0x00012ca8 bne 0x12cb0                                   |             
    0x00012caa ldrb r3, [r4]                                 |             r3 = *(r4);
    0x00012cac cmp r3, 0                                     |             
                                                             |             if (r3 != 0) {
    0x00012cae bne 0x12d56                                   |                 goto label_19;
                                                             |             }
                                                             |         }
                                                             | label_1:
    0x00012cb0 add.w r4, r4, 0x104                           |         r4 += 0x104;
    0x00012cb4 adds r5, 1                                    |         r5++;
    0x00012cb6 cmp r4, r6                                    |         
                                                             |         if (r4 == r6) {
    0x00012cb8 beq 0x12cea                                   |             goto label_20;
                                                             |         }
                                                             | label_2:
    0x00012cba ldr r3, [r4, -0x84]                           |         r3 = *((r4 - 0x84));
    0x00012cbe and r3, r3, 0xe0                              |         r3 &= 0xe0;
    0x00012cc2 cmp r3, 0x20                                  |         
    0x00012cc4 bne 0x12ca6                                   |         
                                                             |     }
    0x00012cc6 ldr r1, [pc, 0xd8]                            |     
    0x00012cc8 mov r0, r4                                    |     r0 = r4;
    0x00012cca add r1, pc                                    |     r1 = 0x25a70;
    0x00012ccc blx 0x3130                                    |     r0 = fcn_00003130 ();
    0x00012cd0 cmp r0, 0                                     |     
                                                             |     if (r0 == 0) {
    0x00012cd2 beq 0x12cb0                                   |         goto label_1;
                                                             |     }
    0x00012cd4 mov r1, r5                                    |     r1 = r5;
    0x00012cd6 mov r3, r8                                    |     r3 = r8;
    0x00012cd8 movs r2, 0                                    |     r2 = 0;
    0x00012cda mov r0, r7                                    |     r0 = r7;
    0x00012cdc add.w r4, r4, 0x104                           |     r4 += 0x104;
    0x00012ce0 adds r5, 1                                    |     r5++;
    0x00012ce2 bl 0x12594                                    |     fcn_00012594 (r0, r1, r2, r3);
    0x00012ce6 cmp r4, r6                                    |     
                                                             |     if (r4 != r6) {
    0x00012ce8 bne 0x12cba                                   |         goto label_2;
                                                             |     }
                                                             | label_20:
    0x00012cea ldr r3, [pc, 0xb8]                            |     
    0x00012cec movw r1, 0x6f03                               |     
    0x00012cee strb r3, [r0, 4]                              |     *((r0 + 4)) = r3;
    0x00012cf0 mov r2, r7                                    |     r2 = r7;
    0x00012cf2 movt r1, 0x5110                               |     r1 = 0x51106f03;
    0x00012cf4 asrs r0, r2, 4                                |     r0 = r2 >> 4;
    0x00012cf6 add r3, pc                                    |     r3 = 0x25aa0;
    0x00012cf8 ldr r0, [r3]                                  |     r0 = imp.__stack_chk_guard;
    0x00012cfa blx 0x2db4                                    |     r0 = fcn_00002db4 ();
    0x00012cfe mov r5, r0                                    |     r5 = r0;
                                                             |     if (r0 != 0) {
    0x00012d00 cbnz r0, 0x12d64                              |         goto label_21;
                                                             |     }
    0x00012d02 ldr r2, [pc, 0xa4]                            |     r2 = *(0x12daa);
    0x00012d04 movs r1, 1                                    |     r1 = 1;
    0x00012d06 ldr r4, [pc, 0xa4]                            |     
    0x00012d08 mov r3, r0                                    |     r3 = r0;
    0x00012d0a ldr.w r2, [sl, r2]                            |     r2 = *((sl + r2));
    0x00012d0e add r4, pc                                    |     r4 = 0x25ac0;
    0x00012d10 strb r1, [r2]                                 |     *(r2) = r1;
    0x00012d12 mov r2, r0                                    |     r2 = r0;
    0x00012d14 b 0x12d1e                                     |     
                                                             |     while (r1 != 0x41) {
    0x00012d16 adds r2, 1                                    |         r2++;
    0x00012d18 adds r3, 0x41                                 |         r3 += 0x41;
    0x00012d1a cmp r2, 0x80                                  |         
                                                             |         if (r2 == 0x80) {
    0x00012d1c beq 0x12d76                                   |             goto label_22;
                                                             |         }
    0x00012d1e ldr.w r1, [r4, r3, lsl 2]                     |         offset_1 = r3 << 2;
                                                             |         r1 = *((r4 + offset_1));
    0x00012d22 cmp r1, 0x41                                  |         
    0x00012d24 bne 0x12d16                                   |         
                                                             |     }
                                                             | label_3:
    0x00012d26 ldr r1, [pc, 0x88]                            |     
    0x00012d28 movs r0, 5                                    |     r0 = 5;
    0x00012d2a add r1, pc                                    |     r1 = 0x25ae0;
    0x00012d2c bl 0x10568                                    |     fcn_00010568 (r0, r1, r2);
                                                             |     do {
    0x00012d30 ldr r2, [pc, 0x80]                            |         
    0x00012d32 add.w r1, sp, 0x1100                          |         r1 += var_1100h;
    0x00012d36 ldr r3, [pc, 0x4c]                            |         r3 = *(0x12d86);
    0x00012d38 adds r1, 0x14                                 |         r1 += 0x14;
    0x00012d3a add r2, pc                                    |         r2 = 0x25af2;
    0x00012d3c ldr r3, [r2, r3]                              |         r3 = imp.__stack_chk_guard;
    0x00012d3e ldr r2, [r3]                                  |         r2 = imp.__stack_chk_guard;
    0x00012d40 ldr r3, [r1]                                  |         r3 = *(r1);
    0x00012d42 eors r2, r3                                   |         r2 ^= r3;
    0x00012d44 mov.w r3, 0                                   |         r3 = 0;
                                                             |         if (r2 != r3) {
    0x00012d48 bne 0x12d7c                                   |             goto label_23;
                                                             |         }
    0x00012d4a mov r0, r5                                    |         r0 = r5;
    0x00012d4c add.w sp, sp, 0x1100                          |         
    0x00012d4e ldrb r0, [r1, r6]                             |         r0 = *((r1 + r6));
    0x00012d50 add sp, 0x18                                  |         
    0x00012d52 pop.w {r4, r5, r6, r7, r8, sb, sl, pc}        |         
                                                             | label_19:
    0x00012d56 mov r3, sb                                    |         r3 = sb;
    0x00012d58 movs r2, 0                                    |         r2 = 0;
    0x00012d5a mov r1, r5                                    |         r1 = r5;
    0x00012d5c mov r0, r7                                    |         r0 = r7;
    0x00012d5e bl 0x12594                                    |         fcn_00012594 (r0, r1, r2, r3);
    0x00012d62 b 0x12cb0                                     |         goto label_1;
                                                             | label_21:
    0x00012d64 ldr r1, [pc, 0x50]                            |         
    0x00012d66 movs r0, 2                                    |         r0 = 2;
    0x00012d68 add r1, pc                                    |         r1 = 0x25b24;
    0x00012d6a bl 0x10568                                    |         r0 = fcn_00010568 (r0, r1, r2);
    0x00012d6e blx 0x317c                                    |         r0 = strncpy (r0, r1, r2);
    0x00012d72 ldr r5, [r0]                                  |         r5 = *(r0);
    0x00012d74 b 0x12d30                                     |         
                                                             |     } while (1);
                                                             | label_22:
    0x00012d76 mov.w r2, -1                                  |     r2 = -1;
    0x00012d7a b 0x12d26                                     |     goto label_3;
                                                             | label_23:
    0x00012d7c blx 0x2eac                                    |     socket (r0, r1, r2);
    0x00012d80 lsrs r0, r6, 0x1e                             |     r0 = r6 >> 0x1e;
    0x00012d82 movs r1, r0                                   |     r1 = r0;
    0x00012d84 lsls r4, r2, 0xc                              |     r4 = r2 << 0xc;
    0x00012d86 movs r0, r0                                   |     
    0x00012d88 ldm r2!, {r1, r3, r7}                         |     r1 = *(r2!);
                                                             |     r3 = *((r2! + 4));
                                                             |     r7 = *((r2! + 8));
    0x00012d8a movs r0, r0                                   |     
    0x00012d8c strh r6, [r6, 0x3e]                           |     *((r6 + 0x3e)) = r6;
    0x00012d8e movs r1, r0                                   |     r1 = r0;
    0x00012d90 ldrh r6, [r5, 2]                              |     r6 = *((r5 + 2));
    0x00012d92 movs r1, r0                                   |     r1 = r0;
    0x00012d94 strh r2, [r3, 0x3e]                           |     *((r3 + 0x3e)) = r2;
    0x00012d96 movs r1, r0                                   |     r1 = r0;
    0x00012d98 lsrs r2, r7, 0x1d                             |     r2 = r7 >> 0x1d;
    0x00012d9a movs r1, r0                                   |     r1 = r0;
    0x00012d9c strb r2, [r2, 0x19]                           |     *((r2 + 0x19)) = r2;
    0x00012d9e movs r0, r0                                   |     
    0x00012da0 ldm r2, {r1, r2, r5}                          |     r1 = *(r2);
                                                             |     r2 = *((r2 + 4));
                                                             |     r5 = *((r2 + 8));
    0x00012da2 movs r0, r0                                   |     
    0x00012da4 asrs r6, r6, 0xc                              |     r6 >>= 0xc;
    0x00012da6 movs r1, r0                                   |     r1 = r0;
    0x00012da8 lsls r4, r1, 0xe                              |     r4 = r1 << 0xe;
    0x00012daa movs r0, r0                                   |     
    0x00012dac strh r6, [r3, 0x3e]                           |     *((r3 + 0x3e)) = r6;
    0x00012dae movs r1, r0                                   |     r1 = r0;
    0x00012db0 ldm r5!, {r1, r4, r6}                         |     r1 = *(r5!);
                                                             |     r4 = *((r5! + 4));
                                                             |     r6 = *((r5! + 8));
    0x00012db2 movs r0, r0                                   |     
    0x00012db4 lsrs r2, r2, 0x1b                             |     r2 >>= 0x1b;
    0x00012db6 movs r1, r0                                   |     r1 = r0;
    0x00012db8 ldm r4!, {r5, r6, r7}                         |     r5 = *(r4!);
                                                             |     r6 = *((r4! + 4));
                                                             |     r7 = *((r4! + 8));
    0x00012dba movs r0, r0                                   |     
    0x00012dbc push.w {r4, r5, r6, r7, r8, sb, lr}           |     
    0x00012dbe mvns r0, r6                                   |     r0 = ~r6;
    0x00012dc0 sub.w sp, sp, 0x1180                          |     
    0x00012dc4 ldr r4, [pc, 0x1f8]                           |     
    0x00012dc6 sub sp, 0x1c                                  |     
    0x00012dc8 add.w r6, sp, 0x1180                          |     r6 += var_1180h;
    0x00012dcc movs r3, 0                                    |     r3 = 0;
    0x00012dce ldr r2, [pc, 0x1f4]                           |     r2 = *(0x12fc6);
    0x00012dd0 adds r6, 0x14                                 |     r6 += 0x14;
    0x00012dd2 add r4, pc                                    |     r4 = 0x25d96;
    0x00012dd4 ldr r0, [pc, 0x1f0]                           |     
    0x00012dd6 ldr r5, [pc, 0x1f4]                           |     
    0x00012dd8 mov r1, r3                                    |     r1 = r3;
    0x00012dda ldr r2, [r4, r2]                              |     
    0x00012ddc add r0, pc                                    |     r0 = 0x25da8;
    0x00012dde add r5, pc                                    |     r5 = 0x25db0;
    0x00012de0 ldr r2, [r2]                                  |     r2 = imp.__stack_chk_guard;
    0x00012de2 str r2, [r6]                                  |     *(r6) = r2;
    0x00012de4 mov.w r2, 0                                   |     r2 = 0;
    0x00012de8 b 0x12df2                                     |     
                                                             |     while (r2 != 0x2d) {
    0x00012dea adds r1, 1                                    |         r1++;
    0x00012dec adds r3, 0x41                                 |         r3 += 0x41;
    0x00012dee cmp r1, 0x80                                  |         
                                                             |         if (r1 == 0x80) {
    0x00012df0 beq 0x12e4a                                   |             goto label_5;
                                                             |         }
    0x00012df2 ldr.w r2, [r0, r3, lsl 2]                     |         offset_2 = r3 << 2;
                                                             |         r2 = *((r0 + offset_2));
    0x00012df6 cmp r2, 0x2d                                  |         
    0x00012df8 bne 0x12dea                                   |         
                                                             |     }
    0x00012dfa ldr r3, [pc, 0x1d4]                           |     
    0x00012dfc add.w r4, sp, 0x1160                          |     r4 += var_1160h;
    0x00012e00 adds r4, 0x14                                 |     r4 += 0x14;
    0x00012e02 movs r2, 0x20                                 |     r2 = 0x20;
    0x00012e04 str r1, [sp]                                  |     *(sp) = r1;
    0x00012e06 mov r0, r4                                    |     r0 = r4;
    0x00012e08 add r3, pc                                    |     r3 = 0x25dde;
    0x00012e0a movs r1, 1                                    |     r1 = 1;
    0x00012e0c ldr r6, [pc, 0x1c4]                           |     
    0x00012e0e blx 0x3200                                    |     ERR_error_string ();
    0x00012e12 ldr r2, [pc, 0x1c4]                           |     
    0x00012e14 movs r3, 0                                    |     r3 = 0;
    0x00012e16 ldr r1, [pc, 0x1c4]                           |     
    0x00012e18 add r6, pc                                    |     r6 = 0x25df0;
    0x00012e1a mov r0, r4                                    |     r0 = r4;
    0x00012e1c str r6, [sp]                                  |     *(sp) = r6;
    0x00012e1e add r2, pc                                    |     r2 = 0x25dfc;
    0x00012e20 add r1, pc                                    |     r1 = 0x25e02;
    0x00012e22 blx 0x3188                                    |     strcat_chk ()
    0x00012e24 invalid                                       |     
                                                             |     if (r3 < 0) {
    0x00012e28 blt.w 0x12f7a                                 |         goto label_24;
                                                             |     }
    0x00012e2a strh r7, [r4, 4]                              |     *((r4 + 4)) = r7;
    0x00012e2c ldr r0, [pc, 0x1b0]                           |     
    0x00012e2e add r1, sp, 8                                 |     r1 += var_8h_2;
    0x00012e30 add r0, pc                                    |     r0 = 0x25e14;
    0x00012e32 blx 0x2d9c                                    |     r0 = fcn_00002d9c ();
    0x00012e36 cmp r0, 0                                     |     
                                                             |     if (r0 == 0) {
    0x00012e38 beq.w 0x12f98                                 |         goto label_25;
                                                             |     }
                                                             | label_7:
    0x00012e3c ldr r0, [pc, 0x1a4]                           |     
    0x00012e3e add r0, pc                                    |     r0 = 0x25e26;
    0x00012e40 blx 0x3030                                    |     fcn_00003030 ();
    0x00012e42 ldrd r2, r8, [r6], 0                          |     __asm ("ldrd r2, r8, [r6], 0");
                                                             |     if (r0 < 0) {
    0x00012e46 blt.w 0x12fa2                                 |         goto label_26;
                                                             |     }
                                                             | label_5:
    0x00012e4a bl 0x128e0                                    |     r0 = fcn_000128e0 ();
    0x00012e4e mov r6, r0                                    |     r6 = r0;
    0x00012e50 cmp r0, 0                                     |     
                                                             |     if (r0 != 0) {
    0x00012e52 bne.w 0x12f72                                 |         goto label_27;
                                                             |     }
    0x00012e54 strh r6, [r1, 4]                              |     *((r1 + 4)) = r6;
    0x00012e56 ldr.w r8, [pc, 0x190]                         |     
    0x00012e5a mov r7, r0                                    |     r7 = r0;
    0x00012e5c mov r4, r0                                    |     r4 = r0;
    0x00012e5e add r8, pc                                    |     r8 = 0x25e4c;
    0x00012e60 b 0x12e82                                     |     
                                                             |     while (r3 != 0xe0) {
    0x00012e62 ldr r2, [pc, 0x188]                           |         r2 = *(0x12fee);
    0x00012e64 ldr r2, [r5, r2]                              |         r2 = *((r5 + r2));
    0x00012e66 ldrb r2, [r2]                                 |         r2 = *(r2);
    0x00012e68 eor r2, r2, 1                                 |         r2 ^= 1;
    0x00012e6c cmp r3, 0x40                                  |         
    0x00012e6e ite ne                                        |         
                                                             |         if (r3 == 0x40) {
    0x00012e70 movne r2, 0                                   |             r2 = 0;
                                                             |         }
                                                             |         if (r3 != 0x40) {
    0x00012e72 andeq r2, r2, 1                               |             r2 &= 1;
                                                             |         }
                                                             |         if (r2 != 0) {
    0x00012e76 cbnz r2, 0x12e8e                              |             goto label_28;
                                                             |         }
    0x00012e78 adds r4, 0x41                                 |         r4 += 0x41;
    0x00012e7a adds r7, 1                                    |         r7++;
    0x00012e7c cmp.w r4, 0x2080                              |         
                                                             |         if (r4 == 0x2080) {
    0x00012e80 beq 0x12ea0                                   |             goto label_29;
                                                             |         }
                                                             | label_4:
    0x00012e82 ldr.w r3, [r8, r4, lsl 2]                     |         offset_3 = r4 << 2;
                                                             |         r3 = *((r8 + offset_3));
    0x00012e86 and r3, r3, 0xe0                              |         r3 &= 0xe0;
    0x00012e8a cmp r3, 0xe0                                  |         
    0x00012e8c bne 0x12e62                                   |         
                                                             |     }
                                                             | label_28:
    0x00012e8e mov r0, r7                                    |     r0 = r7;
    0x00012e90 adds r4, 0x41                                 |     r4 += 0x41;
    0x00012e92 bl 0x11860                                    |     fcn_00011860 (r0);
    0x00012e96 cmp.w r4, 0x2080                              |     
    0x00012e9a add.w r7, r7, 1                               |     r7++;
                                                             |     if (r4 != 0x2080) {
    0x00012e9e bne 0x12e82                                   |         goto label_4;
                                                             |     }
                                                             | label_29:
    0x00012ea0 ldr r3, [pc, 0x14c]                           |     
    0x00012ea2 add r3, pc                                    |     r3 = 0x25e96;
    0x00012ea4 ldrb r2, [r3, 8]                              |     r2 = *((r3 + 8));
    0x00012ea6 cmp r2, 0                                     |     
                                                             |     if (r2 == 0) {
    0x00012ea8 beq 0x12f42                                   |         goto label_8;
                                                             |     }
    0x00012eaa ldr r1, [r3, 8]                               |     r1 = *((r3 + 8));
    0x00012eac movw r2, 0x6e2d                               |     
    0x00012eb0 movt r2, 0x7765                               |     r2 = 0x77656e2d;
    0x00012eb2 strb r5, [r4, 9]                              |     *((r4 + 9)) = r5;
    0x00012eb4 adds r3, 8                                    |     r3 += 8;
    0x00012eb6 cmp r1, r2                                    |     
                                                             |     if (r1 == r2) {
    0x00012eb8 beq 0x12fae                                   |         goto label_30;
                                                             |     }
                                                             | label_9:
    0x00012eba ldr r3, [pc, 0x138]                           |     r3 = *(0x12ff6);
    0x00012ebc ldr r4, [r5, r3]                              |     r4 = *((r5 + r3));
    0x00012ebe ldrb r3, [r4]                                 |     r3 = *(r4);
    0x00012ec0 cmp r3, 0                                     |     
                                                             |     if (r3 != 0) {
    0x00012ec2 bne 0x12f86                                   |         goto label_31;
                                                             |     }
    0x00012ec4 ldr r2, [pc, 0x130]                           |     
    0x00012ec6 movs r0, 6                                    |     r0 = 6;
    0x00012ec8 ldr r1, [pc, 0x130]                           |     
    0x00012eca add r2, pc                                    |     r2 = 0x25ec6;
    0x00012ecc add r1, pc                                    |     r1 = 0x25ecc;
    0x00012ece adds r2, 8                                    |     r2 += 8;
    0x00012ed0 bl 0x10568                                    |     fcn_00010568 (r0, r1, r2);
                                                             | label_6:
    0x00012ed4 ldrb r3, [r4]                                 |     r3 = *(r4);
    0x00012ed6 cmp r3, 0                                     |     
                                                             |     if (r3 == 0) {
    0x00012ed8 beq 0x12fb6                                   |         goto label_32;
                                                             |     }
    0x00012eda ldr r1, [pc, 0x124]                           |     
    0x00012edc add r1, pc                                    |     r1 = 0x25ee2;
                                                             | label_10:
    0x00012ede ldr r0, [pc, 0x124]                           |     
    0x00012ee0 movs r5, 0                                    |     r5 = 0;
    0x00012ee2 ldr.w r8, [pc, 0x124]                         |     
    0x00012ee4 strh r4, [r4, 8]                              |     *((r4 + 8)) = r4;
    0x00012ee6 mov r4, r5                                    |     r4 = r5;
    0x00012ee8 ldr r7, [pc, 0x120]                           |     
    0x00012eea add.w sb, sp, 0x64                            |     sb += var_64h;
    0x00012eec lsrs r4, r4, 5                                |     r4 >>= 5;
    0x00012eee add r0, pc                                    |     r0 = 0x25ef8;
    0x00012ef0 add r8, pc                                    |     r8 = 0x25efe;
    0x00012ef2 adds r0, 8                                    |     r0 += 8;
    0x00012ef4 add r7, pc                                    |     r7 = 0x25f04;
    0x00012ef6 add.w r8, r8, 8                               |     r8 += 8;
    0x00012efa blx 0x2e00                                    |     fcn_00002e00 ();
    0x00012efe movw r2, 0x1110                               |     r2 = 0x1110;
    0x00012f02 mov r1, r5                                    |     r1 = r5;
    0x00012f04 add r0, sp, 0x64                              |     r0 += var_64h;
    0x00012f06 blx 0x2c8c                                    |     fcn_00002c8c ();
                                                             |     do {
    0x00012f0a ldr.w r3, [r7, r4, lsl 2]                     |         offset_4 = r4 << 2;
                                                             |         r3 = *((r7 + offset_4));
    0x00012f0e and r3, r3, 0xe0                              |         r3 &= 0xe0;
    0x00012f12 cmp r3, 0x20                                  |         
                                                             |         if (r3 == 0x20) {
    0x00012f14 bne 0x12f22                                   |             
    0x00012f16 mov r3, r8                                    |             r3 = r8;
    0x00012f18 movs r2, 0                                    |             r2 = 0;
    0x00012f1a mov r1, r5                                    |             r1 = r5;
    0x00012f1c mov r0, sb                                    |             r0 = sb;
    0x00012f1e bl 0x12594                                    |             fcn_00012594 (r0, r1, r2, r3);
    0x00012f20 invalid                                       |             
                                                             |         }
    0x00012f22 adds r4, 0x41                                 |         r4 += 0x41;
    0x00012f24 adds r5, 1                                    |         r5++;
    0x00012f26 cmp.w r4, 0x2080                              |         
    0x00012f2a bne 0x12f0a                                   |         
                                                             |     } while (r4 != 0x2080);
    0x00012f2c ldr r3, [pc, 0xe0]                            |     
    0x00012f2e movw r1, 0x6f03                               |     
    0x00012f32 mov r2, sb                                    |     r2 = sb;
    0x00012f34 movt r1, 0x5110                               |     r1 = 0x51106f03;
    0x00012f38 add r3, pc                                    |     r3 = 0x25f4c;
    0x00012f3a ldr r0, [r3]                                  |     r0 = imp.__stack_chk_guard;
    0x00012f3c blx 0x2db4                                    |     r0 = fcn_00002db4 ();
    0x00012f40 cbnz r0, 0x12f68                              |     
                                                             |     while (1) {
                                                             | label_8:
    0x00012f42 ldr r2, [pc, 0xd0]                            |         
    0x00012f44 add.w r1, sp, 0x1180                          |         r1 += var_1180h;
    0x00012f48 ldr r3, [pc, 0x78]                            |         r3 = *(0x12fc4);
    0x00012f4a adds r1, 0x14                                 |         r1 += 0x14;
    0x00012f4c add r2, pc                                    |         r2 = 0x25f66;
    0x00012f4e ldr r3, [r2, r3]                              |         r3 = imp.__stack_chk_guard;
    0x00012f50 ldr r2, [r3]                                  |         r2 = imp.__stack_chk_guard;
    0x00012f52 ldr r3, [r1]                                  |         r3 = *(r1);
    0x00012f54 eors r2, r3                                   |         r2 ^= r3;
    0x00012f56 mov.w r3, 0                                   |         r3 = 0;
                                                             |         if (r2 != r3) {
    0x00012f5a bne 0x12fbc                                   |             goto label_33;
                                                             |         }
    0x00012f5c mov r0, r6                                    |         r0 = r6;
    0x00012f5e add.w sp, sp, 0x1180                          |         
    0x00012f62 add sp, 0x1c                                  |         
    0x00012f64 pop.w {r4, r5, r6, r7, r8, sb, pc}            |         
    0x00012f68 ldr r1, [pc, 0xac]                            |         
    0x00012f6a movs r0, 2                                    |         r0 = 2;
    0x00012f6c add r1, pc                                    |         r1 = 0x25f88;
    0x00012f6e bl 0x10568                                    |         r0 = fcn_00010568 (r0, r1, r2);
                                                             | label_27:
    0x00012f72 blx 0x317c                                    |         r0 = strncpy (r0, r1, r2);
    0x00012f76 ldr r6, [r0]                                  |         r6 = *(r0);
    0x00012f78 b 0x12f42                                     |         
                                                             |     }
                                                             | label_24:
    0x00012f7a ldr r1, [pc, 0xa0]                            |     
    0x00012f7c movs r0, 4                                    |     r0 = 4;
    0x00012f7e add r1, pc                                    |     r1 = 0x25fa0;
    0x00012f80 bl 0x10568                                    |     fcn_00010568 (r0, r1, r2);
    0x00012f84 b 0x12e4a                                     |     goto label_5;
                                                             | label_31:
    0x00012f86 ldr r2, [pc, 0x98]                            |     
    0x00012f88 movs r0, 6                                    |     r0 = 6;
    0x00012f8a ldr r1, [pc, 0x98]                            |     
    0x00012f8c add r2, pc                                    |     r2 = 0x25fb2;
    0x00012f8e add r1, pc                                    |     r1 = 0x25fb8;
    0x00012f90 adds r2, 8                                    |     r2 += 8;
    0x00012f92 bl 0x10568                                    |     fcn_00010568 (r0, r1, r2);
    0x00012f96 b 0x12ed4                                     |     goto label_6;
                                                             | label_25:
    0x00012f98 ldr r0, [pc, 0x8c]                            |     
    0x00012f9a add r0, pc                                    |     r0 = 0x25fc6;
    0x00012f9c blx 0x2de8                                    |     fcn_00002de8 ();
    0x00012fa0 b 0x12e3c                                     |     goto label_7;
                                                             | label_26:
    0x00012fa2 ldr r1, [pc, 0x88]                            |     
    0x00012fa4 movs r0, 3                                    |     r0 = 3;
    0x00012fa6 add r1, pc                                    |     r1 = 0x25fd8;
    0x00012fa8 bl 0x10568                                    |     fcn_00010568 (r0, r1, r2);
    0x00012faa invalid                                       |     
                                                             | label_30:
    0x00012fae ldrb r3, [r3, 4]                              |     r3 = *((r3 + 4));
    0x00012fb0 cmp r3, 0                                     |     
                                                             |     if (r3 == 0) {
    0x00012fb2 beq 0x12f42                                   |         goto label_8;
                                                             |     }
    0x00012fb4 b 0x12eba                                     |     goto label_9;
                                                             | label_32:
    0x00012fb6 ldr r1, [pc, 0x78]                            |     
    0x00012fb8 add r1, pc                                    |     r1 = 0x25fee;
    0x00012fba b 0x12ede                                     |     goto label_10;
                                                             | label_33:
    0x00012fbc blx 0x2eac                                    |     socket (r0, r1, r2);
    0x00012fc0 lsrs r2, r7, 0x18                             |     r2 = r7 >> 0x18;
    0x00012fc2 movs r1, r0                                   |     r1 = r0;
    0x00012fc4 lsls r4, r2, 0xc                              |     r4 = r2 << 0xc;
    0x00012fc6 movs r0, r0                                   |     
    0x00012fc8 strh r0, [r2, 0x38]                           |     *((r2 + 0x38)) = r0;
    0x00012fca movs r1, r0                                   |     r1 = r0;
    0x00012fcc lsrs r6, r5, 0x18                             |     r6 = r5 >> 0x18;
    0x00012fce movs r1, r0                                   |     r1 = r0;
    0x00012fd0 ldm r4, {r4, r5, r7}                          |     r4 = *(r4);
                                                             |     r5 = *((r4 + 4));
                                                             |     r7 = *((r4 + 8));
    0x00012fd2 movs r0, r0                                   |     
    0x00012fd4 strb r0, [r2, 0x13]                           |     *((r2 + 0x13)) = r0;
    0x00012fd6 movs r0, r0                                   |     
    0x00012fd8 ldm r4!, {r1, r3, r5, r7}                     |     r1 = *(r4!);
                                                             |     r3 = *((r4! + 4));
                                                             |     r5 = *((r4! + 8));
                                                             |     r7 = *((r4! + 12));
    0x00012fda movs r0, r0                                   |     
    0x00012fdc strh r0, [r3, 0x18]                           |     *((r3 + 0x18)) = r0;
    0x00012fde movs r0, r0                                   |     
    0x00012fe0 ldm r4!, {r6, r7}                             |     r6 = *(r4!);
                                                             |     r7 = *((r4! + 4));
    0x00012fe2 movs r0, r0                                   |     
    0x00012fe4 strh r2, [r7, 0x16]                           |     *((r7 + 0x16)) = r2;
    0x00012fe6 movs r0, r0                                   |     
    0x00012fe8 strh r6, [r1, 0x34]                           |     *((r1 + 0x34)) = r6;
    0x00012fea movs r1, r0                                   |     r1 = r0;
    0x00012fec lsls r0, r2, 0xf                              |     r0 = r2 << 0xf;
    0x00012fee movs r0, r0                                   |     
    0x00012ff0 strh r2, [r0, 0x2e]                           |     *((r0 + 0x2e)) = r2;
    0x00012ff2 movs r1, r0                                   |     r1 = r0;
    0x00012ff4 lsls r4, r1, 0xe                              |     r4 = r1 << 0xe;
    0x00012ff6 movs r0, r0                                   |     
    0x00012ff8 strh r2, [r3, 0x2c]                           |     *((r3 + 0x2c)) = r2;
    0x00012ffa movs r1, r0                                   |     r1 = r0;
    0x00012ffc ldm r4, {r4, r6, r7}                          |     r4 = *(r4);
                                                             |     r6 = *((r4 + 4));
                                                             |     r7 = *((r4 + 8));
    0x00012ffe movs r0, r0                                   |     
    0x00013000 ldm r0!, {r2, r4}                             |     r2 = *(r0!);
                                                             |     r4 = *((r0! + 4));
    0x00013002 movs r0, r0                                   |     
    0x00013004 strh r6, [r6, 0x2a]                           |     *((r6 + 0x2a)) = r6;
    0x00013006 movs r1, r0                                   |     r1 = r0;
    0x00013008 strh r4, [r6, 0x2a]                           |     *((r6 + 0x2a)) = r4;
    0x0001300a movs r1, r0                                   |     r1 = r0;
    0x0001300c strh r0, [r7, 0x2e]                           |     *((r7 + 0x2e)) = r0;
    0x0001300e movs r1, r0                                   |     r1 = r0;
    0x00013010 asrs r4, r6, 3                                |     r4 = r6 >> 3;
    0x00013012 movs r1, r0                                   |     r1 = r0;
    0x00013014 lsrs r0, r0, 0x13                             |     r0 >>= 0x13;
    0x00013016 movs r1, r0                                   |     r1 = r0;
    0x00013018 ldm r4, {r2, r3, r4, r6}                      |     r2 = *(r4);
                                                             |     r3 = *((r4 + 4));
                                                             |     r4 = *((r4 + 8));
                                                             |     r6 = *((r4 + 12));
    0x0001301a movs r0, r0                                   |     
    0x0001301c ldm r3!, {r1, r4, r6}                         |     r1 = *(r3!);
                                                             |     r4 = *((r3! + 4));
                                                             |     r6 = *((r3! + 8));
    0x0001301e movs r0, r0                                   |     
    0x00013020 strh r0, [r3, 0x26]                           |     *((r3 + 0x26)) = r0;
    0x00013022 movs r1, r0                                   |     r1 = r0;
    0x00013024 ldm r3!, {r1, r2, r4, r6, r7}                 |     r1 = *(r3!);
                                                             |     r2 = *((r3! + 4));
                                                             |     r4 = *((r3! + 8));
                                                             |     r6 = *((r3! + 12));
                                                             |     r7 = *((r3! + 16));
    0x00013026 movs r0, r0                                   |     
    0x00013028 ldm r3!, {r1, r2, r4, r5, r6}                 |     r1 = *(r3!);
                                                             |     r2 = *((r3! + 4));
                                                             |     r4 = *((r3! + 8));
                                                             |     r5 = *((r3! + 12));
                                                             |     r6 = *((r3! + 16));
    0x0001302a movs r0, r0                                   |     
    0x0001302c ldm r3, {r1, r3, r4, r7}                      |     r1 = *(r3);
                                                             |     r3 = *((r3 + 4));
                                                             |     r4 = *((r3 + 8));
                                                             |     r7 = *((r3 + 12));
    0x0001302e movs r0, r0                                   |     
    0x00013030 strb r0, [r6, 0xc]                            |     *((r6 + 0xc)) = r0;
    0x00013032 movs r0, r0                                   |     
    0x00013034 push.w {r4, r5, r6, r7, r8, lr}               |     
    0x00013036 rors r0, r6                                   |     __asm ("rors r0, r6");
    0x00013038 mov r7, r0                                    |     r7 = r0;
    0x0001303a ldr.w r8, [pc, 0x9c]                          |     
    0x0001303e add r8, pc                                    |     r8 = 0x2611c;
    0x00013040 bl 0x12300                                    |     r0 = fcn_00012300 ();
                                                             |     if (r0 != 0) {
    0x00013044 cbnz r0, 0x1309c                              |         goto label_34;
                                                             |     }
    0x00013046 mov r5, r0                                    |     r5 = r0;
                                                             |     if (r7 == 0) {
    0x00013048 cbz r7, 0x130a8                               |         goto label_35;
                                                             |     }
                                                             | label_11:
    0x0001304a ldr r6, [pc, 0x90]                            |     
    0x0001304c movs r4, 0                                    |     r4 = 0;
    0x0001304e add r6, pc                                    |     r6 = 0x26130;
                                                             |     do {
    0x00013050 ldr.w r3, [r6, r4, lsl 2]                     |         offset_5 = r4 << 2;
                                                             |         r3 = *((r6 + offset_5));
    0x00013054 mov r0, r5                                    |         r0 = r5;
    0x00013056 adds r4, 0x41                                 |         r4 += 0x41;
    0x00013058 adds r5, 1                                    |         r5++;
    0x0001305a and r2, r3, 0xe0                              |         r2 = r3 & 0xe0;
    0x0001305e subs r3, 0x25                                 |         r3 -= 0x25;
    0x00013060 cmp r2, 0x40                                  |         
    0x00013062 it ne                                         |         
                                                             |         if (r2 != 0x40) {
    0x00013064 cmpne r3, 3                                   |             __asm ("cmpne r3, 3");
                                                             |         }
                                                             |         if (r2 >= 0x40) {
    0x00013066 bls 0x13074                                   |             
    0x00013068 cmp r2, 0xe0                                  |             
    0x0001306a ite ne                                        |             
                                                             |             if (r2 == 0xe0) {
    0x0001306c movne r3, 0                                   |                 r3 = 0;
                                                             |             }
                                                             |             if (r2 != 0xe0) {
    0x0001306e andeq r3, r7, 1                               |                 r3 = r7 & 1;
                                                             |             }
                                                             |             if (r3 == 0) {
    0x00013072 cbz r3, 0x13078                               |                 goto label_36;
                                                             |             }
                                                             |         }
    0x00013074 bl 0x11860                                    |         fcn_00011860 (r0);
                                                             | label_36:
    0x00013078 cmp.w r4, 0x2080                              |         
    0x0001307c bne 0x13050                                   |         
                                                             |     } while (r4 != 0x2080);
    0x0001307e ldr r2, [pc, 0x60]                            |     r2 = *(0x130e2);
    0x00013080 movs r1, 0                                    |     r1 = 0;
    0x00013082 ldr r3, [pc, 0x60]                            |     r3 = *(0x130e6);
    0x00013084 ldr.w r2, [r8, r2]                            |     r2 = *((r8 + r2));
    0x00013086 movs r0, 2                                    |     r0 = 2;
    0x00013088 strb r1, [r2]                                 |     *(r2) = r1;
    0x0001308a ldr.w r3, [r8, r3]                            |     r3 = *((r8 + r3));
    0x0001308e strb r1, [r3]                                 |     *(r3) = r1;
    0x00013090 bl 0x9554                                     |     fcn_00009554 ();
    0x00013094 bl 0x128e0                                    |     r0 = fcn_000128e0 ();
    0x00013098 mov r4, r0                                    |     r4 = r0;
                                                             |     if (r0 == 0) {
    0x0001309a cbz r0, 0x130ce                               |         goto label_37;
                                                             |     }
                                                             | label_34:
    0x0001309c blx 0x317c                                    |     r0 = strncpy (r0, r1, r2);
    0x000130a0 ldr r4, [r0]                                  |     r4 = *(r0);
    0x000130a2 mov r0, r4                                    |     r0 = r4;
    0x000130a4 pop.w {r4, r5, r6, r7, r8, pc}                |     
                                                             | label_35:
    0x000130a8 ldr r0, [pc, 0x3c]                            |     
    0x000130aa mov r3, r7                                    |     r3 = r7;
    0x000130ac mov r2, r7                                    |     r2 = r7;
    0x000130ae add r0, pc                                    |     r0 = 0x2619a;
    0x000130b0 b 0x130b8                                     |     goto label_38;
                                                             | label_12:
    0x000130b2 adds r2, 1                                    |     r2++;
    0x000130b4 cmp r2, 0x80                                  |     
                                                             |     if (r2 == 0x80) {
    0x000130b6 beq 0x1304a                                   |         goto label_11;
                                                             |     }
                                                             | label_38:
    0x000130b8 ldr.w r1, [r0, r3, lsl 2]                     |     offset_6 = r3 << 2;
                                                             |     r1 = *((r0 + offset_6));
    0x000130bc adds r3, 0x41                                 |     r3 += 0x41;
    0x000130be cmp r1, 0x41                                  |     
                                                             |     if (r1 != 0x41) {
    0x000130c0 bne 0x130b2                                   |         goto label_12;
                                                             |     }
    0x000130c2 ldr r1, [pc, 0x28]                            |     
    0x000130c4 movs r0, 6                                    |     r0 = 6;
    0x000130c6 add r1, pc                                    |     r1 = 0x261b8;
    0x000130c8 bl 0x10568                                    |     fcn_00010568 (r0, r1, r2);
    0x000130cc b 0x1304a                                     |     goto label_11;
                                                             | label_37:
    0x000130ce bl 0x17b8c                                    |     fcn_00017b8c ();
    0x000130d2 mov r0, r4                                    |     r0 = r4;
    0x000130d4 pop.w {r4, r5, r6, r7, r8, pc}                |     
    0x000130d6 strh r0, [r6, 0xe]                            |     *((r6 + 0xe)) = r0;
                                                             | }
    ; assembly                                                   | /* r2dec pseudo code output */
                                                                 | /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-80367616.squashfs_v4_le_extract/usr/sbin/fwmgr @ 0x139a8 */
                                                                 | #include <stdint.h>
                                                                 |  
                                                                 | #define BIT_MASK(t,v) ((t)(-((v)!= 0)))&(((t)-1)>>((sizeof(t)*CHAR_BIT)-(v)))
                                                                 |  
    ; (fcn) fcn.000139a8 ()                                      | void fcn_000139a8 (int16_t arg1, int16_t arg2, int16_t arg3) {
                                                                 |     int16_t var_0h;
                                                                 |     int16_t var_ch;
                                                                 |     int16_t var_8ch;
                                                                 |     int16_t var_1h;
                                                                 |     int16_t var_ach;
                                                                 |     int16_t var_cch;
                                                                 |     int16_t var_41h;
                                                                 |     int16_t var_0h_2;
                                                                 |     r0 = arg1;
                                                                 |     r1 = arg2;
                                                                 |     r2 = arg3;
    0x000139a8 push.w {r4, r5, r6, r7, r8, sb, sl, fp, lr}       |     
    0x000139ac mov r7, r2                                        |     r7 = r2;
    0x000139ae ldr r2, [pc, 0x264]                               |     
    0x000139b0 sub sp, 0xd4                                      |     
    0x000139b2 add.w r8, sp, 0x8c                                |     r8 += var_8ch;
    0x000139b6 mov r4, r0                                        |     r4 = r0;
    0x000139b8 ldr r3, [pc, 0x25c]                               |     r3 = *(0x13c18);
    0x000139ba mov r6, r1                                        |     r6 = r1;
    0x000139bc add r2, pc                                        |     r2 = 0x275d6;
    0x000139be ldr.w sb, [pc, 0x25c]                             |     
    0x000139c2 mov r1, r0                                        |     r1 = r0;
    0x000139c4 mov r0, r8                                        |     r0 = r8;
    0x000139c6 ldr r3, [r2, r3]                                  |     
    0x000139c8 add sb, pc                                        |     sb = 0x275ea;
    0x000139ca ldr r3, [r3]                                      |     r3 = imp.__stack_chk_guard;
    0x000139cc str r3, [sp, 0xcc]                                |     var_cch = r3;
    0x000139ce mov.w r3, 0                                       |     r3 = 0;
    0x000139d2 bl 0x1380c                                        |     r0 = fcn_0001380c (r0, r1, r2);
                                                                 |     if (r0 != 0) {
    0x000139d6 cbnz r0, 0x13a2a                                  |         goto label_1;
                                                                 |     }
    0x000139d8 movw r3, 0x10b                                    |     r3 = 0x10b;
    0x000139dc mov r5, r0                                        |     r5 = r0;
    0x000139de cmp r4, r3                                        |     
                                                                 |     if (r4 == r3) {
    0x000139e0 beq 0x13adc                                       |         goto label_7;
                                                                 |     }
    0x000139e2 ldr r2, [pc, 0x23c]                               |     
    0x000139e4 mov ip, r0                                        |     
    0x000139e6 mov lr, r0                                        |     lr = r0;
    0x000139e8 add r2, pc                                        |     r2 = 0x2760e;
    0x000139ea b 0x139fa                                         |     
                                                                 |     while (r4 != r3) {
    0x000139ec add.w lr, lr, 1                                   |         lr += var_1h;
    0x000139f0 add.w ip, ip, 0x41                                |         
    0x000139f4 cmp.w lr, 0x80                                    |         
                                                                 |         if (lr == 0x80) {
    0x000139f8 beq 0x13a4e                                       |             goto label_8;
                                                                 |         }
    0x000139fa ldr.w r3, [r2, ip, lsl 2]                         |         offset_0 = ip << 2;
                                                                 |         r3 = *((r2 + offset_0));
    0x000139fe cmp r4, r3                                        |         
    0x00013a00 bne 0x139ec                                       |         
                                                                 |     }
    0x00013a02 cmp r4, 0x41                                      |     
    0x00013a04 mov sl, lr                                        |     sl = lr;
                                                                 |     if (r4 != 0x41) {
    0x00013a06 beq 0x13a58                                       |         
    0x00013a08 bic fp, r4, 0xe0                                  |         fp = BIT_MASK (r4, 0xe0);
    0x00013a0c cmp.w fp, 2                                       |         
                                                                 |         if (fp == 2) {
    0x00013a10 beq 0x13a72                                       |             goto label_9;
                                                                 |         }
                                                                 | label_0:
    0x00013a12 ldr r2, [pc, 0x210]                               |         
    0x00013a14 mov r3, r7                                        |         r3 = r7;
    0x00013a16 mov r1, r6                                        |         r1 = r6;
    0x00013a18 mov r0, r8                                        |         r0 = r8;
    0x00013a1a add r2, pc                                        |         r2 = 0x27644;
    0x00013a1c str r2, [sp]                                      |         *(sp) = r2;
    0x00013a1e ldr r2, [pc, 0x208]                               |         
    0x00013a20 add r2, pc                                        |         r2 = 0x2764e;
    0x00013a22 blx 0x3188                                        |         r0 = strcat_chk ()
    0x00013a26 cmp r0, 0                                         |         
                                                                 |         if (r0 < 0) {
    0x00013a28 bge 0x13a30                                       |             
                                                                 | label_1:
    0x00013a2a blx 0x317c                                        |             r0 = strncpy (r0, r1, r2);
    0x00013a2e ldr r5, [r0]                                      |             r5 = *(r0);
                                                                 |         }
                                                                 | label_2:
    0x00013a30 ldr r2, [pc, 0x1f8]                               |         
    0x00013a32 ldr r3, [pc, 0x1e4]                               |         r3 = *(0x13c1a);
    0x00013a34 add r2, pc                                        |         r2 = 0x27664;
    0x00013a36 ldr r3, [r2, r3]                                  |         r3 = imp.__stack_chk_guard;
    0x00013a38 ldr r2, [r3]                                      |         r2 = imp.__stack_chk_guard;
    0x00013a3a ldr r3, [sp, 0xcc]                                |         r3 = var_cch;
    0x00013a3c eors r2, r3                                       |         r2 ^= r3;
    0x00013a3e mov.w r3, 0                                       |         r3 = 0;
                                                                 |         if (r2 != r3) {
    0x00013a42 bne.w 0x13c10                                     |             goto label_10;
                                                                 |         }
    0x00013a46 mov r0, r5                                        |         r0 = r5;
    0x00013a48 add sp, 0xd4                                      |         
    0x00013a4a pop.w {r4, r5, r6, r7, r8, sb, sl, fp, pc}        |         
                                                                 | label_8:
    0x00013a4e cmp r4, 0x41                                      |         
                                                                 |         if (r4 != 0x41) {
    0x00013a50 bne.w 0x13b88                                     |             goto label_11;
                                                                 |         }
    0x00013a54 mov.w sl, -1                                      |         sl = -1;
                                                                 |     }
    0x00013a58 ldr r1, [pc, 0x1d4]                               |     
    0x00013a5a movs r3, 0                                        |     r3 = 0;
    0x00013a5c add r1, pc                                        |     r1 = 0x27690;
    0x00013a5e b 0x13a68                                         |     
                                                                 |     while (r2 != 0x4b) {
    0x00013a60 adds r3, 0x41                                     |         r3 += 0x41;
    0x00013a62 cmp.w r3, 0x2080                                  |         
                                                                 |         if (r3 == 0x2080) {
    0x00013a66 beq 0x13b0e                                       |             goto label_12;
                                                                 |         }
    0x00013a68 ldr.w r2, [r1, r3, lsl 2]                         |         offset_1 = r3 << 2;
                                                                 |         r2 = *((r1 + offset_1));
    0x00013a6c cmp r2, 0x4b                                      |         
    0x00013a6e bne 0x13a60                                       |         
                                                                 |     }
    0x00013a70 b 0x13a12                                         |     goto label_0;
                                                                 | label_9:
    0x00013a72 ldr r3, [pc, 0x1c0]                               |     r3 = *(0x13c36);
    0x00013a74 ldr.w r3, [sb, r3]                                |     r3 = *((sb + r3));
    0x00013a76 adds r0, 3                                        |     r0 += 3;
    0x00013a78 ldrb r3, [r3]                                     |     r3 = *(r3);
                                                                 |     if (r3 == 0) {
    0x00013a7a cbz r3, 0x13a92                                   |         goto label_3;
                                                                 |     }
                                                                 | label_4:
    0x00013a7c subs.w r1, r4, 0x22                               |     r1 = r4 - 0x22;
    0x00013a80 mov r0, sl                                        |     r0 = sl;
    0x00013a82 it ne                                             |     
                                                                 |     if (r1 == r4) {
    0x00013a84 movne r1, 1                                       |         r1 = 1;
                                                                 |     }
    0x00013a86 mov.w fp, 2                                       |     
    0x00013a8a bl 0x16fb0                                        |     r0 = fcn_00016fb0 (r0, r1, r2, r3, r4, r5);
    0x00013a8e cmp r0, 0                                         |     
                                                                 |     if (r0 != 0) {
    0x00013a90 bne 0x13a2a                                       |         goto label_1;
                                                                 |     }
                                                                 | label_3:
    0x00013a92 mov r0, sl                                        |     r0 = sl;
    0x00013a94 bl 0x17760                                        |     r0 = fcn_00017760 (r0);
    0x00013a98 cmp r0, 0                                         |     
                                                                 |     if (r0 == 0) {
    0x00013a9a beq 0x13a2a                                       |         goto label_1;
                                                                 |     }
    0x00013a9c ldr r2, [pc, 0x198]                               |     
    0x00013a9e mov r3, r7                                        |     r3 = r7;
    0x00013aa0 str r0, [sp]                                      |     *(sp) = r0;
    0x00013aa2 mov r1, r6                                        |     r1 = r6;
    0x00013aa4 mov r0, r8                                        |     r0 = r8;
    0x00013aa6 add r2, pc                                        |     r2 = 0x276e2;
    0x00013aa8 blx 0x3188                                        |     r0 = strcat_chk ()
    0x00013aac cmp r0, 0                                         |     
                                                                 |     if (r0 < 0) {
    0x00013aae blt 0x13a2a                                       |         goto label_1;
                                                                 |     }
    0x00013ab0 cmp.w fp, 2                                       |     
                                                                 |     if (fp != 2) {
    0x00013ab4 bne 0x13ba6                                       |         goto label_13;
                                                                 |     }
    0x00013ab6 subs.w r2, r4, 0x22                               |     r2 = r4 - 0x22;
    0x00013aba mov r1, sl                                        |     r1 = sl;
    0x00013abc it ne                                             |     
                                                                 |     if (r2 == r4) {
    0x00013abe movne r2, 1                                       |         r2 = 1;
                                                                 |     }
    0x00013ac0 mov r0, r6                                        |     r0 = r6;
    0x00013ac2 bl 0x64f8                                         |     r0 = fcn_000064f8 (r0, r1, r2);
    0x00013ac6 cmp r0, 0                                         |     
                                                                 |     if (r0 == 0) {
    0x00013ac8 beq 0x13a30                                       |         goto label_2;
                                                                 |     }
                                                                 | label_5:
    0x00013aca blx 0x317c                                        |     r0 = strncpy (r0, r1, r2);
    0x00013ace mov r4, r0                                        |     r4 = r0;
    0x00013ad0 mov r0, r6                                        |     r0 = r6;
    0x00013ad2 ldr r5, [r4]                                      |     r5 = *(r4);
    0x00013ad4 blx 0x3030                                        |     fcn_00003030 ();
    0x00013ad8 str r5, [r4]                                      |     *(r4) = r5;
    0x00013ada b 0x13a30                                         |     goto label_2;
                                                                 | label_7:
    0x00013adc ldr r3, [pc, 0x15c]                               |     
    0x00013ade add r3, pc                                        |     r3 = 0x2771e;
    0x00013ae0 ldrb r2, [r3, 4]                                  |     r2 = *((r3 + 4));
    0x00013ae2 ldr r3, [pc, 0x150]                               |     r3 = *(0x13c36);
    0x00013ae4 ldr.w r3, [sb, r3]                                |     r3 = *((sb + r3));
    0x00013ae8 ldrb r3, [r3]                                     |     r3 = *(r3);
                                                                 |     if (r2 != 0) {
    0x00013aea cbnz r2, 0x13afc                                  |         goto label_14;
                                                                 |     }
    0x00013aec mov fp, r4                                        |     
    0x00013aee mov.w sl, -1                                      |     sl = -1;
    0x00013af2 cmp r3, 0                                         |     
                                                                 |     if (r3 == 0) {
    0x00013af4 beq 0x13a92                                       |         goto label_3;
                                                                 |     }
    0x00013af6 mov.w sl, -1                                      |     sl = -1;
    0x00013afa b 0x13b00                                         |     goto label_15;
                                                                 | label_14:
    0x00013afc mov sl, r0                                        |     sl = r0;
                                                                 |     if (r3 == 0) {
    0x00013afe cbz r3, 0x13b0a                                   |         goto label_16;
                                                                 |     }
                                                                 | label_15:
    0x00013b00 movs r0, 0                                        |     r0 = 0;
    0x00013b02 bl 0x175ac                                        |     r0 = fcn_000175ac (r0, r1, r2, r3, r4, r5, r6);
    0x00013b06 cmp r0, 0                                         |     
                                                                 |     if (r0 != 0) {
    0x00013b08 bne 0x13a2a                                       |         goto label_1;
                                                                 |     }
                                                                 | label_16:
    0x00013b0a mov fp, r4                                        |     
    0x00013b0c b 0x13a92                                         |     goto label_3;
                                                                 | label_12:
    0x00013b0e movs r1, 2                                        |     r1 = 2;
    0x00013b10 mov r0, r8                                        |     r0 = r8;
    0x00013b12 blx 0x2e3c                                        |     fcn_00002e3c ();
    0x00013b16 subs.w sb, r0, 0                                  |     sb -= var_8ch;
                                                                 |     if (sb < var_8ch) {
    0x00013b1a blt 0x13bf2                                       |         goto label_17;
                                                                 |     }
    0x00013b1c ldr r1, [pc, 0x120]                               |     
    0x00013b1e add r3, sp, 0xc                                   |     r3 += var_ch;
    0x00013b20 movs r2, 0x80                                     |     r2 = 0x80;
    0x00013b22 mov r0, r3                                        |     r0 = r3;
    0x00013b24 add r1, pc                                        |     r1 = 0x27768;
    0x00013b26 blx 0x3054                                        |     fcn_00003054 ();
    0x00013b2a movw r1, 0x4f07                                   |     
    0x00013b2e mov r2, r0                                        |     r2 = r0;
    0x00013b30 movt r1, 0x4080                                   |     r1 = 0x40804f07;
    0x00013b34 mov r0, sb                                        |     r0 = sb;
    0x00013b36 blx 0x2db4                                        |     r0 = fcn_00002db4 ();
    0x00013b3a mov r4, r0                                        |     r4 = r0;
    0x00013b3c cmp r0, 0                                         |     
                                                                 |     if (r0 != 0) {
    0x00013b3e bne 0x13bc2                                       |         goto label_18;
                                                                 |     }
    0x00013b40 ldr r3, [pc, 0x100]                               |     
    0x00013b42 movs r2, 0x20                                     |     r2 = 0x20;
    0x00013b44 str.w sl, [sp]                                    |     __asm ("str.w sl, [sp]");
    0x00013b48 add.w sl, sp, 0xac                                |     sl += var_ach;
    0x00013b4c movs r1, 1                                        |     r1 = 1;
    0x00013b4e mov r0, sl                                        |     r0 = sl;
    0x00013b50 add r3, pc                                        |     r3 = 0x27798;
    0x00013b52 blx 0x3200                                        |     ERR_error_string ();
    0x00013b56 ldr r3, [pc, 0xf0]                                |     
    0x00013b58 mov r0, sl                                        |     r0 = sl;
    0x00013b5a ldr r2, [pc, 0xf0]                                |     
    0x00013b5c mov r1, r6                                        |     r1 = r6;
    0x00013b5e add r3, pc                                        |     r3 = 0x277ac;
    0x00013b60 str r3, [sp]                                      |     *(sp) = r3;
    0x00013b62 add r2, pc                                        |     r2 = 0x277b4;
    0x00013b64 mov r3, r7                                        |     r3 = r7;
    0x00013b66 blx 0x3188                                        |     r0 = strcat_chk ()
    0x00013b6a mov r3, r0                                        |     r3 = r0;
    0x00013b6c cmp r0, 0                                         |     
                                                                 |     if (r0 == 0) {
    0x00013b6e beq 0x13c00                                       |         goto label_19;
                                                                 |     }
    0x00013b70 mov r2, r4                                        |     r2 = r4;
    0x00013b72 movw r1, 0x4f08                                   |     r1 = 0x4f08;
    0x00013b76 mov r0, sb                                        |     r0 = sb;
    0x00013b78 blx 0x2db4                                        |     r0 = fcn_00002db4 ();
    0x00013b7c cmp r0, 0                                         |     
                                                                 |     if (r0 != 0) {
    0x00013b7e bne 0x13c0a                                       |         goto label_20;
                                                                 |     }
    0x00013b80 mov r0, sb                                        |     r0 = sb;
    0x00013b82 blx 0x2cec                                        |     fcn_00002cec ();
    0x00013b86 b 0x13a12                                         |     goto label_0;
                                                                 | label_11:
    0x00013b88 bic fp, r4, 0xe0                                  |     fp = BIT_MASK (r4, 0xe0);
    0x00013b8c cmp.w fp, 2                                       |     
                                                                 |     if (fp != 2) {
    0x00013b90 bne 0x13bd6                                       |         goto label_21;
                                                                 |     }
    0x00013b92 ldr r3, [pc, 0xa0]                                |     r3 = *(0x13c36);
    0x00013b94 mov.w sl, -1                                      |     sl = -1;
    0x00013b98 ldr.w r3, [sb, r3]                                |     r3 = *((sb + r3));
    0x00013b9c ldrb r3, [r3]                                     |     r3 = *(r3);
    0x00013b9e cmp r3, 0                                         |     
                                                                 |     if (r3 != 0) {
    0x00013ba0 bne.w 0x13a7c                                     |         goto label_4;
                                                                 |     }
    0x00013ba4 b 0x13a92                                         |     goto label_3;
                                                                 | label_13:
    0x00013ba6 movw r3, 0x10b                                    |     r3 = 0x10b;
    0x00013baa cmp r4, r3                                        |     
                                                                 |     if (r4 != r3) {
    0x00013bac bne.w 0x13a30                                     |         goto label_2;
                                                                 |     }
    0x00013bb0 movs r2, 2                                        |     r2 = 2;
    0x00013bb2 mov r1, sl                                        |     r1 = sl;
    0x00013bb4 mov r0, r6                                        |     r0 = r6;
    0x00013bb6 bl 0x64f8                                         |     r0 = fcn_000064f8 (r0, r1, r2);
    0x00013bba cmp r0, 0                                         |     
                                                                 |     if (r0 == 0) {
    0x00013bbc beq.w 0x13a30                                     |         goto label_2;
                                                                 |     }
    0x00013bc0 b 0x13aca                                         |     goto label_5;
                                                                 | label_18:
    0x00013bc2 ldr r1, [pc, 0x8c]                                |     
    0x00013bc4 add r1, pc                                        |     r1 = 0x2781a;
                                                                 | label_6:
    0x00013bc6 mov r2, r8                                        |     r2 = r8;
    0x00013bc8 movs r0, 2                                        |     r0 = 2;
    0x00013bca bl 0x10568                                        |     fcn_00010568 (r0, r1, r2);
    0x00013bce mov r0, sb                                        |     r0 = sb;
    0x00013bd0 bl 0x11530                                        |     fcn_00011530 (r0);
    0x00013bd4 b 0x13a2a                                         |     goto label_1;
                                                                 | label_21:
    0x00013bd6 ldr r2, [pc, 0x7c]                                |     
    0x00013bd8 mov r3, r7                                        |     r3 = r7;
    0x00013bda mov r1, r6                                        |     r1 = r6;
    0x00013bdc mov r0, r8                                        |     r0 = r8;
    0x00013bde add r2, pc                                        |     r2 = 0x27838;
    0x00013be0 str r2, [sp]                                      |     *(sp) = r2;
    0x00013be2 ldr r2, [pc, 0x74]                                |     
    0x00013be4 add r2, pc                                        |     r2 = 0x27842;
    0x00013be6 blx 0x3188                                        |     r0 = strcat_chk ()
    0x00013bea cmp r0, 0                                         |     
                                                                 |     if (r0 < 0) {
    0x00013bec blt.w 0x13a2a                                     |         goto label_1;
                                                                 |     }
    0x00013bf0 b 0x13a30                                         |     goto label_2;
                                                                 | label_17:
    0x00013bf2 ldr r1, [pc, 0x68]                                |     
    0x00013bf4 mov r2, r8                                        |     r2 = r8;
    0x00013bf6 movs r0, 2                                        |     r0 = 2;
    0x00013bf8 add r1, pc                                        |     r1 = 0x2785a;
    0x00013bfa bl 0x10568                                        |     fcn_00010568 (r0, r1, r2);
    0x00013bfe b 0x13a2a                                         |     goto label_1;
                                                                 | label_19:
    0x00013c00 mov r0, sb                                        |     r0 = sb;
    0x00013c02 mov r5, r3                                        |     r5 = r3;
    0x00013c04 blx 0x2cec                                        |     fcn_00002cec ();
    0x00013c08 b 0x13a30                                         |     goto label_2;
                                                                 | label_20:
    0x00013c0a ldr r1, [pc, 0x54]                                |     
    0x00013c0c add r1, pc                                        |     r1 = 0x27872;
    0x00013c0e b 0x13bc6                                         |     goto label_6;
                                                                 | label_10:
    0x00013c10 blx 0x2eac                                        |     socket (r0, r1, r2);
    0x00013c14 lsls r0, r2, 9                                    |     r0 = r2 << 9;
    0x00013c16 movs r1, r0                                       |     r1 = r0;
    0x00013c18 lsls r4, r2, 0xc                                  |     r4 = r2 << 0xc;
    0x00013c1a movs r0, r0                                       |     
    0x00013c1c lsls r4, r0, 9                                    |     r4 = r0 << 9;
    0x00013c1e movs r1, r0                                       |     r1 = r0;
    0x00013c20 ldrb r4, [r0, 0xc]                                |     r4 = *((r0 + 0xc));
    0x00013c22 movs r1, r0                                       |     r1 = r0;
    0x00013c24 ldr r6, [r1, 0xc]                                 |     r6 = *((r1 + 0xc));
    0x00013c26 movs r0, r0                                       |     
    0x00013c28 stm r0!, {r3, r5, r7}                             |     *(r0!) = r3;
                                                                 |     *((r0! + 4)) = r5;
                                                                 |     *((r0! + 8)) = r7;
    0x00013c2a movs r0, r0                                       |     
    0x00013c2c lsls r0, r3, 7                                    |     r0 = r3 << 7;
    0x00013c2e movs r1, r0                                       |     r1 = r0;
    0x00013c30 ldrb r0, [r2, 0xa]                                |     r0 = *((r2 + 0xa));
    0x00013c32 movs r1, r0                                       |     r1 = r0;
    0x00013c34 lsls r0, r0, 0xf                                  |     r0 <<= 0xf;
    0x00013c36 movs r0, r0                                       |     
    0x00013c38 stm r0!, {r1, r5}                                 |     *(r0!) = r1;
                                                                 |     *((r0! + 4)) = r5;
    0x00013c3a movs r0, r0                                       |     
    0x00013c3c ldrb r6, [r0, 6]                                  |     r6 = *((r0 + 6));
    0x00013c3e movs r1, r0                                       |     r1 = r0;
    0x00013c40 ldm r2!, {r7}                                     |     r7 = *(r2!);
    0x00013c42 movs r0, r0                                       |     
    0x00013c44 stm r4!, {r4}                                     |     *(r4!) = r4;
    0x00013c46 movs r0, r0                                       |     
    0x00013c48 str r2, [r1, 0x78]                                |     *((r1 + 0x78)) = r2;
    0x00013c4a movs r0, r0                                       |     
    0x00013c4c stm r4!, {r1, r4}                                 |     *(r4!) = r1;
                                                                 |     *((r4! + 4)) = r4;
    0x00013c4e movs r0, r0                                       |     
    0x00013c50 stm r3!, {r4, r5, r6}                             |     *(r3!) = r4;
                                                                 |     *((r3! + 4)) = r5;
                                                                 |     *((r3! + 8)) = r6;
    0x00013c52 movs r0, r0                                       |     
    0x00013c54 str r2, [r1, 0x70]                                |     *((r1 + 0x70)) = r2;
    0x00013c56 movs r0, r0                                       |     
    0x00013c58 bkpt 0xe4                                         |     __asm ("bkpt 0xe4");
                                                                 | }

[*] Function strcat used 13 times fwmgr