[*] Binary protection state of fwmgr

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


[*] Function fprintf tear down of fwmgr

    ; assembly                       | /* r2dec pseudo code output */
                                     | /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/sbin/fwmgr @ 0x3d9c */
                                     | #include <stdint.h>
                                     |  
    ; (fcn) fcn.00003d9c ()          | void fcn_00003d9c (int16_t arg_138h, int16_t arg_240h) {
                                     |     int16_t var_4h_2;
                                     |     int16_t var_44h;
                                     |     int16_t var_4h;
                                     |     int16_t var_6h;
                                     |     int16_t var_64h;
    0x00003d9c push {r4, r5, lr}     |     
    0x00003d9e sub sp, 0x6c          |     
    0x00003da0 ldr r4, [pc, 0x88]    |     
    0x00003da2 add r5, sp, 4         |     r5 += var_4h;
    0x00003da4 movs r2, 0x60         |     r2 = 0x60;
    0x00003da6 movs r1, 0            |     r1 = 0;
    0x00003da8 ldr r3, [pc, 0x84]    |     r3 = *(0x3e30);
    0x00003daa mov r0, r5            |     r0 = r5;
    0x00003dac add r4, pc            |     r4 = 0x7bdc;
    0x00003dae ldr r3, [r4, r3]      |     
    0x00003db0 ldr r3, [r3]          |     r3 = *(0x7bdc);
    0x00003db2 str r3, [sp, 0x64]    |     var_64h = r3;
    0x00003db4 mov.w r3, 0           |     r3 = 0;
    0x00003db8 blx 0x2938            |     fcn_00002938 ();
    0x00003dbc ldr r0, [pc, 0x74]    |     
    0x00003dbe movs r1, 2            |     r1 = 2;
    0x00003dc0 add r0, pc            |     r0 = 0x7bf8;
    0x00003dc2 blx 0x2730            |     r0 = open (r0, r1, r2);
    0x00003dc6 subs r4, r0, 0        |     r4 = r0 - 0;
                                     |     if (r4 < r0) {
    0x00003dc8 blt 0x3e02            |         goto label_1;
                                     |     }
    0x00003dca movw r1, 0x4906       |     
    0x00003dce mov r2, r5            |     r2 = r5;
    0x00003dd0 movt r1, 0x8060       |     r1 = 0x80604906;
    0x00003dd4 blx 0x2a8c            |     r0 = fcn_00002a8c ();
    0x00003dd8 mov r5, r0            |     r5 = r0;
    0x00003dda mov r0, r4            |     r0 = r4;
    0x00003ddc bl 0x10978            |     fcn_00010978 (r0);
                                     |     if (r5 != 0) {
    0x00003de0 cbnz r5, 0x3e0c       |         goto label_2;
                                     |     }
    0x00003de2 ldrh.w r0, [sp, 6]    |     r0 = var_6h;
    0x00003de6 and r0, r0, 1         |     r0 &= 1;
                                     |     do {
                                     | label_0:
    0x00003dea ldr r2, [pc, 0x4c]    |         
    0x00003dec ldr r3, [pc, 0x40]    |         r3 = *(0x3e30);
    0x00003dee add r2, pc            |         r2 = 0x7c2c;
    0x00003df0 ldr r3, [r2, r3]      |         r3 = *(0x7c2c);
    0x00003df2 ldr r2, [r3]          |         r2 = *(0x7c2c);
    0x00003df4 ldr r3, [sp, 0x64]    |         r3 = var_64h;
    0x00003df6 eors r2, r3           |         r2 ^= r3;
    0x00003df8 mov.w r3, 0           |         r3 = 0;
                                     |         if (r2 != r3) {
    0x00003dfc bne 0x3e28            |             goto label_3;
                                     |         }
    0x00003dfe add sp, 0x6c          |         
    0x00003e00 pop {r4, r5, pc}      |         
                                     | label_1:
    0x00003e02 ldr r1, [pc, 0x38]    |         
    0x00003e04 movs r0, 2            |         r0 = 2;
    0x00003e06 add r1, pc            |         r1 = 0x7c48;
    0x00003e08 bl 0xfcdc             |         r0 = fcn_0000fcdc (r0);
                                     | label_2:
    0x00003e0c blx 0x2f88            |         r0 = cxa_finalize ();
    0x00003e10 ldr r3, [r0]          |         r3 = *(r0);
    0x00003e12 cmp r3, 0x13          |         
    0x00003e14 it eq                 |         
                                     |         if (r3 != 0x13) {
    0x00003e16 moveq r0, 0           |             r0 = 0;
                                     |         }
    0x00003e18 beq 0x3dea            |         
                                     |     } while (r3 == 0x13);
    0x00003e1a ldr r1, [pc, 0x24]    |     
    0x00003e1c movs r0, 4            |     r0 = 4;
    0x00003e1e add r1, pc            |     r1 = 0x7c64;
    0x00003e20 bl 0xfcdc             |     fcn_0000fcdc (r0);
    0x00003e24 movs r0, 0            |     r0 = 0;
    0x00003e26 b 0x3dea              |     goto label_0;
                                     | label_3:
    0x00003e28 blx 0x2cdc            |     fprintf_chk ()
    0x00003e2c add r6, sp, 0x240     |     r6 += arg_240h;
    0x00003e2e movs r2, r0           |     r2 = r0;
    0x00003e30 lsls r4, r1, 0xd      |     r4 = r1 << 0xd;
    0x00003e32 movs r0, r0           |     
    0x00003e34 adds r4, r0, 1        |     r4 = r0 + 1;
    0x00003e36 movs r1, r0           |     r1 = r0;
    0x00003e38 add r6, sp, 0x138     |     r6 += arg_138h;
    0x00003e3a movs r2, r0           |     r2 = r0;
    0x00003e3c adds r6, r1, 0        |     r6 = r1 + 0;
    0x00003e3e movs r1, r0           |     r1 = r0;
    0x00003e40 subs r6, r2, 3        |     r6 = r2 - 3;
    0x00003e42 movs r1, r0           |     r1 = r0;
                                     | }
    ; assembly                                               | /* r2dec pseudo code output */
                                                             | /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/sbin/fwmgr @ 0x3fa4 */
                                                             | #include <stdint.h>
                                                             |  
    ; (fcn) fcn.00003fa4 ()                                  | void fcn_00003fa4 (int16_t arg_210h, int16_t arg_238h, int16_t arg1, int16_t arg2) {
                                                             |     int16_t var_0h;
                                                             |     int16_t var_8h;
                                                             |     int16_t var_ch;
                                                             |     int16_t var_14h;
                                                             |     int16_t var_18h;
                                                             |     int16_t sig;
                                                             |     int16_t var_24h;
                                                             |     int16_t var_2ch;
                                                             |     int16_t var_30h;
                                                             |     int16_t var_32h;
                                                             |     int16_t var_34h;
                                                             |     int16_t var_38h;
                                                             |     int16_t var_3ah;
                                                             |     char * s2;
                                                             |     int16_t var_3eh;
                                                             |     int16_t var_42h;
                                                             |     int16_t var_46h;
                                                             |     int16_t var_4ah;
                                                             |     int16_t var_4eh;
                                                             |     int16_t var_52h;
                                                             |     int16_t var_56h;
                                                             |     int16_t var_5ah;
                                                             |     int16_t var_5ch;
                                                             |     char * s1;
                                                             |     int16_t var_bch;
                                                             |     int16_t var_c0h;
                                                             |     r0 = arg1;
                                                             |     r1 = arg2;
    0x00003fa4 blmi 0xfe596a00                               |     __asm ("blmi 0xfe596a00");
    0x00003fa8 push.w {r4, r5, r6, r7, r8, sb, sl, lr}       |     
    0x00003fac sub sp, 0xc0                                  |     
    0x00003fae add r2, pc                                    |     r2 += pc;
    0x00003fb0 ldr r4, [pc, 0x250]                           |     
    0x00003fb2 mov r7, r0                                    |     r7 = r0;
    0x00003fb4 mov r6, r1                                    |     r6 = r1;
    0x00003fb6 ldr r3, [r2, r3]                              |     r3 = *((r2 + r3));
    0x00003fb8 add r4, pc                                    |     r4 = 0x81c0;
    0x00003fba ldr r3, [r3]                                  |     r3 = *(r3);
    0x00003fbc str r3, [sp, 0xbc]                            |     var_bch = r3;
    0x00003fbe mov.w r3, 0                                   |     r3 = 0;
    0x00003fc2 blx 0x2df8                                    |     r0 = fcn_00002df8 ();
    0x00003fc6 subs r5, r0, 0                                |     r5 = r0 - 0;
                                                             |     if (r5 < r0) {
    0x00003fc8 blt 0x404c                                    |         goto label_2;
                                                             |     }
                                                             |     if (r5 == r0) {
    0x00003fca beq 0x4062                                    |         goto label_3;
                                                             |     }
    0x00003fcc ldr r0, [pc, 0x238]                           |     
    0x00003fce mov.w r2, 0x1a4                               |     r2 = 0x1a4;
    0x00003fd2 movw r1, 0x241                                |     r1 = 0x241;
    0x00003fd6 add r0, pc                                    |     r0 = 0x81e2;
    0x00003fd8 blx 0x2730                                    |     r0 = open (r0, r1, r2);
    0x00003fdc subs r4, r0, 0                                |     r4 = r0 - 0;
                                                             |     if (r4 < r0) {
    0x00003fde blt 0x4022                                    |         goto label_4;
                                                             |     }
    0x00003fe0 ldr r3, [pc, 0x228]                           |     
    0x00003fe2 movs r2, 0x10                                 |     r2 = 0x10;
    0x00003fe4 str r5, [sp]                                  |     *(sp) = r5;
    0x00003fe6 add r5, sp, 0xac                              |     r5 += s1;
    0x00003fe8 movs r1, 1                                    |     r1 = 1;
    0x00003fea mov r0, r5                                    |     r0 = r5;
    0x00003fec add r3, pc                                    |     r3 = 0x81fc;
    0x00003fee blx 0x2e80                                    |     strncmp (r0, r1, r2);
    0x00003ff2 mov r1, r5                                    |     r1 = r5;
    0x00003ff4 mov r2, r0                                    |     r2 = r0;
    0x00003ff6 mov r0, r4                                    |     r0 = r4;
    0x00003ff8 blx 0x29e4                                    |     r0 = fcn_000029e4 ();
    0x00003ffc cmp r0, 0                                     |     
                                                             |     if (r0 < 0) {
    0x00003ffe blt 0x4034                                    |         goto label_5;
                                                             |     }
    0x00004000 movs r4, r0                                   |     r4 = r0;
    0x00004002 movs r0, r0                                   |     
    0x00004004 movs r3, r5                                   |     r3 = r5;
    0x00004006 movs r0, r0                                   |     
                                                             |     do {
                                                             | label_0:
    0x00004008 ldrb r4, [r2, 0x1c]                           |         r4 = *((r2 + 0x1c));
    0x0000400a movs r7, r2                                   |         r7 = r2;
    0x0000400c ands r0, r0                                   |         r0 &= r0;
    0x0000400e movs r0, r0                                   |         
    0x00004010 lsls r0, r7, 4                                |         r0 = r7 << 4;
    0x00004012 movs r0, r0                                   |         
    0x00004014 eors r2, r3                                   |         r2 ^= r3;
    0x00004016 mov.w r3, 0                                   |         r3 = 0;
                                                             |         if (r2 != r3) {
    0x0000401a bne 0x405e                                    |             goto label_6;
                                                             |         }
    0x0000401c movs r0, r2                                   |         r0 = r2;
    0x0000401e movs r0, r0                                   |         
    0x00004020 strh r0, [r6, 0x3e]                           |         *((r6 + 0x3e)) = r0;
                                                             | label_4:
    0x00004022 ldr r1, [pc, 0x1f0]                           |         
    0x00004024 movs r0, 2                                    |         r0 = 2;
    0x00004026 add r1, pc                                    |         r1 = 0x8240;
    0x00004028 bl 0xfcdc                                     |         r0 = fcn_0000fcdc (r0);
    0x0000402c blx 0x2f88                                    |         r0 = cxa_finalize ();
    0x00004030 ldr r0, [r0]                                  |         r0 = *(r0);
    0x00004032 b 0x4008                                      |         
                                                             |     } while (1);
                                                             | label_5:
    0x00004034 ldr r1, [pc, 0x1e0]                           |     
    0x00004036 movs r0, 2                                    |     r0 = 2;
    0x00004038 add r1, pc                                    |     r1 = 0x8254;
    0x0000403a bl 0xfcdc                                     |     fcn_0000fcdc (r0);
    0x0000403e mov r0, r4                                    |     r0 = r4;
    0x00004040 bl 0x10978                                    |     r0 = fcn_00010978 (r0);
    0x00004044 blx 0x2f88                                    |     r0 = cxa_finalize ();
    0x00004048 ldr r0, [r0]                                  |     r0 = *(r0);
    0x0000404a b 0x4008                                      |     goto label_0;
                                                             | label_2:
    0x0000404c ldr r1, [pc, 0x1cc]                           |     
    0x0000404e movs r0, 2                                    |     r0 = 2;
    0x00004050 add r1, pc                                    |     r1 = 0x8270;
    0x00004052 bl 0xfcdc                                     |     r0 = fcn_0000fcdc (r0);
    0x00004056 blx 0x2f88                                    |     r0 = cxa_finalize ();
    0x0000405a ldr r0, [r0]                                  |     r0 = *(r0);
    0x0000405c b 0x4008                                      |     goto label_0;
                                                             | label_6:
    0x0000405e blx 0x2cdc                                    |     fprintf_chk ()
                                                             | label_3:
    0x00004062 ldr.w ip, [pc, 0x1bc]                         |     
    0x00004066 mov.w r8, 1                                   |     r8 = 1;
    0x0000406a ldr.w lr, [pc, 0x1b8]                         |     lr = *(0x4226);
    0x0000406e add ip, pc                                    |     ip = 0x8294;
    0x00004070 movs r2, r0                                   |     r2 = r0;
    0x00004072 movs r0, r0                                   |     
    0x00004074 str r3, [r7, 0xc]                             |     *((r7 + 0xc)) = r3;
    0x00004076 ldrh.w r3, [ip]                               |     r3 = *(ip);
    0x0000407a str r0, [r7]                                  |     *(r7) = r0;
    0x0000407c mov r0, r8                                    |     r0 = r8;
    0x0000407e str r1, [r7, 4]                               |     *((r7 + 4)) = r1;
    0x00004080 movs r1, 4                                    |     r1 = 4;
    0x00004082 strh r3, [r7, 0x10]                           |     *((r7 + 0x10)) = r3;
    0x00004084 ldrb.w r3, [ip, 2]                            |     r3 = *((ip + 2));
    0x00004088 str r2, [r7, 8]                               |     *((r7 + 8)) = r2;
    0x0000408a mov.w r2, 0x800                               |     r2 = 0x800;
    0x0000408e strb r3, [r7, 0x12]                           |     *((r7 + 0x12)) = r3;
    0x00004090 ldr.w r3, [r4, lr]                            |     r3 = *((r4 + lr));
    0x00004094 strb.w r8, [r3]                               |     *(r3) = r8;
    0x00004098 blx 0x2e98                                    |     ferror (r0);
    0x0000409c mov r1, r5                                    |     r1 = r5;
    0x0000409e mov r0, r8                                    |     r0 = r8;
    0x000040a0 blx 0x2e5c                                    |     r0 = sprintf_chk ();
    0x000040a4 subs r7, r0, 0                                |     r7 = r0 - 0;
                                                             |     if (r7 < r0) {
    0x000040a6 blt 0x41a6                                    |         goto label_7;
                                                             |     }
    0x000040a8 mov r3, r5                                    |     r3 = r5;
    0x000040aa add r2, sp, 0xc                               |     r2 += var_ch;
    0x000040ac mov r1, r5                                    |     r1 = r5;
    0x000040ae str r6, [sp, 0x14]                            |     var_14h = r6;
    0x000040b0 strd r5, r5, [sp, 0xc]                        |     __asm ("strd r5, r5, [sp, 0xc]");
    0x000040b4 str r5, [sp, 0x18]                            |     var_18h = r5;
    0x000040b6 blx 0x2ed4                                    |     r0 = sysinfo ();
    0x000040ba cmp r0, 0                                     |     
                                                             |     if (r0 < 0) {
    0x000040bc blt 0x4198                                    |         goto label_8;
                                                             |     }
    0x000040be mov r2, r5                                    |     r2 = r5;
    0x000040c0 movw r1, 0x801                                |     r1 = 0x801;
    0x000040c4 mov r0, r8                                    |     r0 = r8;
    0x000040c6 blx 0x2a20                                    |     r0 = fcn_00002a20 ();
    0x000040ca subs r6, r0, 0                                |     r6 = r0 - 0;
                                                             |     if (r6 < r0) {
    0x000040cc blt.w 0x41ec                                  |         goto label_9;
                                                             |     }
    0x000040d0 ldr r4, [pc, 0x154]                           |     
    0x000040d2 movs r2, 0x4e                                 |     r2 = 0x4e;
    0x000040d4 mov r1, r5                                    |     r1 = r5;
    0x000040d6 add r0, sp, 0x5c                              |     r0 += var_5ch;
    0x000040d8 blx 0x2938                                    |     fcn_00002938 ();
    0x000040dc add r4, pc                                    |     r4 = 0x8308;
    0x000040de strh.w r8, [sp, 0x3c]                         |     s2 = r8;
    0x000040e2 ldm r4!, {r0, r1, r2, r3}                     |     r0 = *(r4!);
                                                             |     r1 = *((r4! + 4));
                                                             |     r2 = *((r4! + 8));
                                                             |     r3 = *((r4! + 12));
    0x000040e4 str.w r0, [sp, 0x3e]                          |     __asm ("str.w r0, [var_3eh]");
    0x000040e8 str.w r1, [sp, 0x42]                          |     __asm ("str.w r1, [var_42h]");
    0x000040ec str.w r2, [sp, 0x46]                          |     __asm ("str.w r2, [var_46h]");
    0x000040f0 ldm r4!, {r0, r1, r2}                         |     r0 = *(r4!);
                                                             |     r1 = *((r4! + 4));
                                                             |     r2 = *((r4! + 8));
    0x000040f2 str.w r3, [sp, 0x4a]                          |     __asm ("str.w r3, [var_4ah]");
    0x000040f6 ldrh r3, [r4]                                 |     r3 = *(r4);
    0x000040f8 str.w r0, [sp, 0x4e]                          |     __asm ("str.w r0, [var_4eh]");
    0x000040fc mov r0, r6                                    |     r0 = r6;
    0x000040fe str.w r1, [sp, 0x52]                          |     __asm ("str.w r1, [var_52h]");
    0x00004102 add r1, sp, 0x3c                              |     r1 += s2;
    0x00004104 strh.w r3, [sp, 0x5a]                         |     var_5ah = r3;
    0x00004108 ldrb r3, [r4, 2]                              |     r3 = *((r4 + 2));
    0x0000410a str.w r2, [sp, 0x56]                          |     __asm ("str.w r2, [var_56h]");
    0x0000410e movs r2, 0x6e                                 |     r2 = 0x6e;
    0x00004110 strb.w r3, [sp, 0x5c]                         |     var_5ch = r3;
    0x00004114 blx 0x2bbc                                    |     strstr (r0, r1);
    0x00004116 ldcl p8, c2, [r2, -0]                         |     __asm ("ldcl p8, c2, [r2, -0]");
                                                             |     if (r2 < 0x6e) {
    0x0000411a blt 0x41de                                    |         goto label_10;
                                                             |     }
    0x0000411c movs r1, 5                                    |     r1 = 5;
    0x0000411e mov r0, r6                                    |     r0 = r6;
    0x00004120 blx 0x28fc                                    |     r0 = fcn_000028fc ();
    0x00004124 cmp r0, 0                                     |     
                                                             |     if (r0 < 0) {
    0x00004126 blt 0x41d0                                    |         goto label_11;
                                                             |     }
    0x00004128 add.w sb, sp, 0x30                            |     sb += var_30h;
    0x0000412c add.w sl, sp, 0x2c                            |     sl += var_2ch;
                                                             |     do {
                                                             | label_1:
    0x00004130 mov.w r2, -1                                  |         r2 = -1;
    0x00004134 movs r1, 2                                    |         r1 = 2;
    0x00004136 mov r0, sl                                    |         r0 = sl;
    0x00004138 str.w r5, [sb]                                |         __asm ("str.w r5, [sb]");
    0x0000413c str.w r5, [sb, 8]                             |         __asm ("str.w r5, [sb, 8]");
    0x00004140 str r7, [sp, 0x2c]                            |         var_2ch = r7;
    0x00004142 strh.w r8, [sp, 0x30]                         |         var_30h = r8;
    0x00004146 str r6, [sp, 0x34]                            |         var_34h = r6;
    0x00004148 strh.w r8, [sp, 0x38]                         |         var_38h = r8;
    0x0000414c blx 0x2d00                                    |         r0 = PEM_read_PUBKEY ();
    0x00004150 movs r5, r0                                   |         r5 = r0;
    0x00004152 movs r0, r0                                   |         
    0x00004154 ldrh.w r3, [sp, 0x32]                         |         r3 = var_32h;
    0x00004158 ands r2, r3, 1                                |         r2 = r3 & 1;
                                                             |         if (r2 != r3) {
    0x0000415c bne 0x41b4                                    |             goto label_12;
                                                             |         }
    0x0000415e ldrh.w r3, [sp, 0x3a]                         |         r3 = var_3ah;
    0x00004162 lsls r3, r3, 0x1f                             |         r3 <<= 0x1f;
    0x00004164 bpl 0x4130                                    |         
                                                             |     } while (r3 >= r3);
    0x00004166 mov.w r3, 0x800                               |     r3 = 0x800;
    0x0000416a mov r1, r2                                    |     r1 = r2;
    0x0000416c mov r0, r6                                    |     r0 = r6;
    0x0000416e blx 0x2c94                                    |     r0 = strdup (r0);
    0x00004172 subs r4, r0, 0                                |     r4 = r0 - 0;
                                                             |     if (r4 < r0) {
    0x00004174 blt 0x4130                                    |         goto label_1;
                                                             |     }
    0x00004176 add r1, sp, 0x1c                              |     r1 += sig;
    0x00004178 mov r0, r7                                    |     r0 = r7;
    0x0000417a blx 0x2e8c                                    |     r0 = kill (r0, r1);
    0x0000417e cmp r0, 0                                     |     
                                                             |     if (r0 >= 0) {
    0x00004180 blt 0x4190                                    |         
    0x00004182 ldr r3, [sp, 0x24]                            |         r3 = var_24h;
    0x00004184 movs r2, 4                                    |         r2 = 4;
    0x00004186 add r1, sp, 8                                 |         r1 += var_8h;
    0x00004188 mov r0, r4                                    |         r0 = r4;
    0x0000418a str r3, [sp, 8]                               |         var_8h = r3;
    0x0000418c blx 0x29e4                                    |         fcn_000029e4 ();
                                                             |     }
    0x00004190 mov r0, r4                                    |     r0 = r4;
    0x00004192 blx 0x2bf8                                    |     EVP_PKEY_verify_init ();
    0x00004196 b 0x4130                                      |     goto label_1;
                                                             | label_8:
    0x00004198 ldr r1, [pc, 0x90]                            |     
    0x0000419a movs r0, 2                                    |     r0 = 2;
    0x0000419c add r1, pc                                    |     r1 = 0x83cc;
    0x0000419e bl 0xfcdc                                     |     r0 = fcn_0000fcdc (r0);
    0x000041a2 bl 0x3f88                                     |     void (*0x3f88)(uint32_t) (r0);
                                                             | label_7:
    0x000041a6 ldr r1, [pc, 0x88]                            |     
    0x000041a8 movs r0, 2                                    |     r0 = 2;
    0x000041aa add r1, pc                                    |     r1 = 0x83e0;
    0x000041ac bl 0xfcdc                                     |     r0 = fcn_0000fcdc (r0);
    0x000041b0 bl 0x3f88                                     |     void (*0x3f88)(uint32_t) (r0);
                                                             | label_12:
    0x000041b4 ldr r1, [pc, 0x7c]                            |     
    0x000041b6 movs r0, 4                                    |     r0 = 4;
    0x000041b8 add r1, pc                                    |     r1 = 0x83f0;
    0x000041ba bl 0xfcdc                                     |     r0 = fcn_0000fcdc (r0);
    0x000041be bl 0x3f88                                     |     void (*0x3f88)(uint32_t) (r0);
    0x000041c2 ldr r1, [pc, 0x74]                            |     
    0x000041c4 movs r0, 2                                    |     r0 = 2;
    0x000041c6 add r1, pc                                    |     r1 = 0x8404;
    0x000041c8 bl 0xfcdc                                     |     r0 = fcn_0000fcdc (r0);
    0x000041cc bl 0x3f88                                     |     void (*0x3f88)(uint32_t) (r0);
                                                             | label_11:
    0x000041d0 ldr r1, [pc, 0x68]                            |     
    0x000041d2 movs r0, 2                                    |     r0 = 2;
    0x000041d4 add r1, pc                                    |     r1 = 0x8414;
    0x000041d6 bl 0xfcdc                                     |     r0 = fcn_0000fcdc (r0);
    0x000041da bl 0x3f88                                     |     void (*0x3f88)(uint32_t) (r0);
                                                             | label_10:
    0x000041de ldr r1, [pc, 0x60]                            |     
    0x000041e0 movs r0, 2                                    |     r0 = 2;
    0x000041e2 add r1, pc                                    |     r1 = 0x8428;
    0x000041e4 bl 0xfcdc                                     |     r0 = fcn_0000fcdc (r0);
    0x000041e8 bl 0x3f88                                     |     void (*0x3f88)(uint32_t) (r0);
                                                             | label_9:
    0x000041ec ldr r1, [pc, 0x54]                            |     
    0x000041ee movs r0, 2                                    |     r0 = 2;
    0x000041f0 add r1, pc                                    |     r1 = 0x8438;
    0x000041f2 bl 0xfcdc                                     |     r0 = fcn_0000fcdc (r0);
    0x000041f6 bl 0x3f88                                     |     void (*0x3f88)(uint32_t) (r0);
    0x000041fa nop                                           |     
    0x000041fc add r4, sp, 0x238                             |     r4 += arg_238h;
    0x000041fe movs r2, r0                                   |     r2 = r0;
    0x00004200 lsls r4, r1, 0xd                              |     r4 = r1 << 0xd;
    0x00004202 movs r0, r0                                   |     
    0x00004204 add r4, sp, 0x210                             |     r4 += arg_210h;
    0x00004206 movs r2, r0                                   |     r2 = r0;
    0x00004208 movs r1, 0x5e                                 |     r1 = 0x5e;
    0x0000420a movs r1, r0                                   |     r1 = r0;
    0x0000420c movs r0, 0x6c                                 |     r0 = 0x6c;
    0x0000420e movs r1, r0                                   |     r1 = r0;
    0x00004210 add r4, sp, 0xc0                              |     r4 += var_c0h;
    0x00004212 movs r2, r0                                   |     r2 = r0;
    0x00004214 movs r0, 0xa                                  |     r0 = 0xa;
    0x00004216 movs r1, r0                                   |     r1 = r0;
    0x00004218 movs r0, 0x24                                 |     r0 = 0x24;
    0x0000421a movs r1, r0                                   |     r1 = r0;
    0x0000421c subs r0, r0, 1                                |     r0--;
    0x0000421e movs r1, r0                                   |     r1 = r0;
    0x00004220 subs r2, r1, 1                                |     r2 = r1 - 1;
    0x00004222 movs r1, r0                                   |     r1 = r0;
    0x00004224 lsls r0, r1, 0xd                              |     r0 = r1 << 0xd;
    0x00004226 movs r0, r0                                   |     
    0x00004228 subs r4, r5, 6                                |     r4 = r5 - 6;
    0x0000422a movs r1, r0                                   |     r1 = r0;
    0x0000422c adds r4, r4, 5                                |     r4 += 5;
    0x0000422e movs r1, r0                                   |     r1 = r0;
    0x00004230 adds r2, r4, 4                                |     r2 = r4 + 4;
    0x00004232 movs r1, r0                                   |     r1 = r0;
    0x00004234 subs r0, r2, 1                                |     r0 = r2 - 1;
    0x00004236 movs r1, r0                                   |     r1 = r0;
    0x00004238 subs r2, r2, 0                                |     
    0x0000423a movs r1, r0                                   |     r1 = r0;
    0x0000423c adds r0, r2, 7                                |     r0 = r2 + 7;
    0x0000423e movs r1, r0                                   |     r1 = r0;
    0x00004240 adds r2, r1, 6                                |     r2 = r1 + 6;
    0x00004242 movs r1, r0                                   |     r1 = r0;
    0x00004244 adds r4, r0, 5                                |     r4 = r0 + 5;
    0x00004246 movs r1, r0                                   |     r1 = r0;
                                                             | }
    ; assembly                           | /* r2dec pseudo code output */
                                         | /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/sbin/fwmgr @ 0x4248 */
                                         | #include <stdint.h>
                                         |  
    ; (fcn) fcn.00004248 ()              | void fcn_00004248 (int16_t arg_298h, int16_t arg_398h) {
                                         |     int16_t var_4h;
                                         |     int16_t var_44h;
    0x00004248 ldr.w ip, [pc, 0x64]      |     ip = *(0x000042b0);
    0x0000424c movs r3, 1                |     r3 = 1;
    0x0000424e ldr r0, [pc, 0x64]        |     
    0x00004250 movs r2, 0x40             |     r2 = 0x40;
    0x00004252 push {r4, r5, lr}         |     
    0x00004254 sub sp, 0x4c              |     
    0x00004256 add ip, pc                |     
    0x00004258 ldr r4, [pc, 0x5c]        |     
    0x0000425a add r5, sp, 4             |     r5 += var_4h;
    0x0000425c ldr.w r0, [ip, r0]        |     r0 = *((ip + r0));
    0x00004260 mov r1, r5                |     r1 = r5;
    0x00004262 add r4, pc                |     r4 = 0x851e;
    0x00004264 ldr r0, [r0]              |     r0 = *(0x42b6);
    0x00004266 str r0, [sp, 0x44]        |     var_44h = r0;
    0x00004268 mov.w r0, 0               |     r0 = 0;
    0x0000426c mov r0, r4                |     r0 = r4;
    0x0000426e bl 0x10338                |     r0 = fcn_00010338 (r0, r1, r2, r3);
                                         |     if (r0 == 0) {
    0x00004272 cbnz r0, 0x4292           |         
    0x00004274 movs r2, 0xa              |         r2 = 0xa;
    0x00004276 mov r1, r0                |         r1 = r0;
    0x00004278 mov r0, r5                |         r0 = r5;
    0x0000427a blx 0x2b38                |         sd_bus_message_is_empty ();
    0x0000427e movs r1, 0xf              |         r1 = 0xf;
    0x00004280 blx 0x2eb0                |         timerfd_settime ();
    0x00004284 mov r0, r4                |         r0 = r4;
    0x00004286 blx 0x2acc                |         strtoul (r0, r1, r2);
    0x0000428a add.w r0, r4, 0x1c        |         r0 = r4 + 0x1c;
    0x0000428e blx 0x2acc                |         strtoul (r0, r1, r2);
                                         |     }
    0x00004292 ldr r2, [pc, 0x28]        |     
    0x00004294 ldr r3, [pc, 0x1c]        |     r3 = *(0x42b4);
    0x00004296 add r2, pc                |     r2 = 0x8558;
    0x00004298 ldr r3, [r2, r3]          |     r3 = *(0x8558);
    0x0000429a ldr r2, [r3]              |     r2 = *(0x8558);
    0x0000429c ldr r3, [sp, 0x44]        |     r3 = var_44h;
    0x0000429e eors r2, r3               |     r2 ^= r3;
    0x000042a0 mov.w r3, 0               |     r3 = 0;
                                         |     if (r2 == r3) {
    0x000042a4 bne 0x42aa                |         
    0x000042a6 add sp, 0x4c              |         
    0x000042a8 pop {r4, r5, pc}          |         
                                         |     }
    0x000042aa blx 0x2cdc                |     fprintf_chk ()
    0x000042ae nop                       |     
    0x000042b0 add r1, sp, 0x398         |     r1 += arg_398h;
    0x000042b2 movs r2, r0               |     r2 = r0;
    0x000042b4 lsls r4, r1, 0xd          |     r4 = r1 << 0xd;
    0x000042b6 movs r0, r0               |     
    0x000042b8 subs r2, r2, 3            |     r2 -= 3;
    0x000042ba movs r1, r0               |     r1 = r0;
    0x000042bc add r1, sp, 0x298         |     r1 += arg_298h;
    0x000042be movs r2, r0               |     r2 = r0;
                                         | }
    ; assembly                                   | /* r2dec pseudo code output */
                                                 | /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/sbin/fwmgr @ 0x42c0 */
                                                 | #include <stdint.h>
                                                 |  
    ; (fcn) fcn.000042c0 ()                      | void fcn_000042c0 (int16_t arg_1b8h, int16_t arg_390h) {
                                                 |     int16_t var_0h;
                                                 |     void * addr;
                                                 |     int16_t var_6h;
                                                 |     int16_t var_ah;
                                                 |     int16_t var_eh;
                                                 |     int16_t var_12h;
                                                 |     int16_t var_16h;
                                                 |     int16_t var_1ah;
                                                 |     int16_t var_1eh;
                                                 |     int16_t var_22h;
                                                 |     int16_t var_24h;
                                                 |     int16_t var_74h;
    0x000042c0 invalid                           |     
    0x000042c4 ldr r4, [pc, 0xe4]                |     
    0x000042c6 sub sp, 0x7c                      |     
    0x000042c8 movs r2, 0                        |     r2 = 0;
    0x000042ca mov r0, r1                        |     r0 = r1;
    0x000042cc ldr r3, [pc, 0xe0]                |     r3 = *(0x43b0);
    0x000042ce add r4, pc                        |     r4 = 0x867e;
    0x000042d0 ldr r3, [r4, r3]                  |     
    0x000042d2 ldr r3, [r3]                      |     r3 = *(0x867e);
    0x000042d4 str r3, [sp, 0x74]                |     var_74h = r3;
    0x000042d6 mov.w r3, 0                       |     r3 = 0;
    0x000042da blx 0x2a20                        |     r0 = fcn_00002a20 ();
    0x000042de subs r4, r0, 0                    |     r4 = r0 - 0;
                                                 |     if (r4 < r0) {
    0x000042e0 blt 0x4380                        |         goto label_1;
                                                 |     }
    0x000042e2 movs r2, 0x4e                     |     r2 = 0x4e;
    0x000042e4 movs r1, 0                        |     r1 = 0;
    0x000042e6 add r0, sp, 0x24                  |     r0 += var_24h;
    0x000042e8 blx 0x2938                        |     fcn_00002938 ();
    0x000042ec ldr.w ip, [pc, 0xc4]              |     
    0x000042f0 movs r3, 1                        |     r3 = 1;
    0x000042f2 strh.w r3, [sp, 4]                |     addr = r3;
    0x000042f6 add ip, pc                        |     ip = 0x86ae;
    0x000042f8 ldm.w ip!, {r0, r1, r2, r3}       |     r0 = *(ip!);
                                                 |     r1 = *((ip! + 4));
                                                 |     r2 = *((ip! + 8));
                                                 |     r3 = *((ip! + 12));
    0x000042fc str.w r0, [sp, 6]                 |     __asm ("str.w r0, [var_6h]");
    0x00004300 str.w r1, [sp, 0xa]               |     __asm ("str.w r1, [var_ah]");
    0x00004304 str.w r2, [sp, 0xe]               |     __asm ("str.w r2, [var_eh]");
    0x00004308 ldm.w ip!, {r0, r1, r2}           |     r0 = *(ip!);
                                                 |     r1 = *((ip! + 4));
                                                 |     r2 = *((ip! + 8));
    0x0000430c str.w r3, [sp, 0x12]              |     __asm ("str.w r3, [var_12h]");
    0x00004310 ldrh.w r3, [ip]                   |     r3 = *(ip);
    0x00004314 str.w r0, [sp, 0x16]              |     __asm ("str.w r0, [var_16h]");
    0x00004316 movs r6, r2                       |     r6 = r2;
    0x00004318 mov r0, r4                        |     r0 = r4;
    0x0000431a str.w r1, [sp, 0x1a]              |     __asm ("str.w r1, [var_1ah]");
    0x0000431e add r1, sp, 4                     |     r1 += addr;
    0x00004320 strh.w r3, [sp, 0x22]             |     var_22h = r3;
    0x00004324 ldrb.w r3, [ip, 2]                |     r3 = *((ip + 2));
    0x00004328 str.w r2, [sp, 0x1e]              |     __asm ("str.w r2, [var_1eh]");
    0x0000432c movs r2, 0x6e                     |     r2 = 0x6e;
    0x0000432e strb.w r3, [sp, 0x24]             |     var_24h = r3;
    0x00004332 blx 0x279c                        |     r0 = connect (r0, r1, r2);
    0x00004336 cmp r0, 0                         |     
                                                 |     if (r0 < 0) {
    0x00004338 blt 0x436c                        |         goto label_2;
                                                 |     }
    0x0000433a movs r5, 0                        |     r5 = 0;
    0x0000433c movs r2, 4                        |     r2 = 4;
    0x0000433e mov r1, sp                        |     r1 = sp;
    0x00004340 mov r0, r4                        |     r0 = r4;
    0x00004342 str r5, [sp]                      |     *(sp) = r5;
    0x00004344 blx 0x29d8                        |     r0 = fcn_000029d8 ();
    0x00004348 cmp r0, r5                        |     
                                                 |     if (r0 < r5) {
    0x0000434a blt 0x43a2                        |         goto label_3;
                                                 |     }
    0x0000434c mov r0, r4                        |     r0 = r4;
    0x0000434e blx 0x2bf8                        |     EVP_PKEY_verify_init ();
    0x00004352 ldr r0, [sp]                      |     r0 = *(sp);
                                                 |     do {
                                                 | label_0:
    0x00004354 ldr r2, [pc, 0x60]                |         
    0x00004356 ldr r3, [pc, 0x58]                |         r3 = *(0x43b2);
    0x00004358 add r2, pc                        |         r2 = 0x8714;
    0x0000435a ldr r3, [r2, r3]                  |         r3 = *(0x8714);
    0x0000435c ldr r2, [r3]                      |         r2 = *(0x8714);
    0x0000435e ldr r3, [sp, 0x74]                |         r3 = var_74h;
    0x00004360 eors r2, r3                       |         r2 ^= r3;
    0x00004362 mov.w r3, 0                       |         r3 = 0;
                                                 |         if (r2 != r3) {
    0x00004366 bne 0x43a8                        |             goto label_4;
                                                 |         }
    0x00004368 add sp, 0x7c                      |         
    0x0000436a pop {r4, r5, pc}                  |         
                                                 | label_2:
    0x0000436c blx 0x2f88                        |         r0 = cxa_finalize ();
    0x00004370 ldr r3, [r0]                      |         r3 = *(r0);
    0x00004372 cmp r3, 2                         |         
                                                 |         if (r3 != 2) {
    0x00004374 bne 0x438e                        |             goto label_5;
                                                 |         }
    0x00004376 mov r0, r4                        |         r0 = r4;
    0x00004378 blx 0x2bf8                        |         EVP_PKEY_verify_init ();
    0x0000437c movs r0, 0                        |         r0 = 0;
    0x0000437e b 0x4354                          |         
                                                 |     } while (1);
                                                 | label_1:
    0x00004380 ldr r1, [pc, 0x38]                |     
    0x00004382 movs r0, 4                        |     r0 = 4;
    0x00004384 add r1, pc                        |     r1 = 0x8744;
    0x00004386 bl 0xfcdc                         |     fcn_0000fcdc (r0);
    0x0000438a movs r0, 0                        |     r0 = 0;
    0x0000438c b 0x4354                          |     goto label_0;
                                                 | label_5:
    0x0000438e ldr r1, [pc, 0x30]                |     
    0x00004390 add r1, pc                        |     r1 = 0x8756;
                                                 |     do {
    0x00004392 movs r0, 4                        |         r0 = 4;
    0x00004394 bl 0xfcdc                         |         fcn_0000fcdc (r0);
    0x00004398 mov r0, r4                        |         r0 = r4;
    0x0000439a blx 0x2bf8                        |         EVP_PKEY_verify_init ();
    0x0000439e movs r0, 0                        |         r0 = 0;
    0x000043a0 b 0x4354                          |         goto label_0;
                                                 | label_3:
    0x000043a2 ldr r1, [pc, 0x20]                |         
    0x000043a4 add r1, pc                        |         r1 = 0x876e;
    0x000043a6 b 0x4392                          |         
                                                 |     } while (1);
                                                 | label_4:
    0x000043a8 blx 0x2cdc                        |     fprintf_chk ()
    0x000043ac add r1, sp, 0x1b8                 |     r1 += arg_1b8h;
    0x000043ae movs r2, r0                       |     r2 = r0;
    0x000043b0 lsls r4, r1, 0xd                  |     r4 = r1 << 0xd;
    0x000043b2 movs r0, r0                       |     
    0x000043b4 adds r2, r2, 6                    |     r2 += 6;
    0x000043b6 movs r1, r0                       |     r1 = r0;
    0x000043b8 add r0, sp, 0x390                 |     r0 += arg_390h;
    0x000043ba movs r2, r0                       |     r2 = r0;
    0x000043bc adds r4, r4, 4                    |     r4 += 4;
    0x000043be movs r1, r0                       |     r1 = r0;
    0x000043c0 adds r4, r7, 4                    |     r4 = r7 + 4;
    0x000043c2 movs r1, r0                       |     r1 = r0;
    0x000043c4 adds r4, r3, 5                    |     r4 = r3 + 5;
    0x000043c6 movs r1, r0                       |     r1 = r0;
    0x000043c8 ldr r3, [pc, 0xc]                 |     
    0x000043ca movs r2, 1                        |     r2 = 1;
    0x000043cc movs r1, 0                        |     r1 = 0;
    0x000043ce movs r0, 0xf                      |     r0 = 0xf;
    0x000043d0 add r3, pc                        |     r3 = 0x87ac;
    0x000043d2 strb r2, [r3]                     |     *(r3) = r2;
    0x000043d4 b.w 0x2820                        |     return void (*0x2820)() ();
                                                 | }
    ; assembly                                                   | /* r2dec pseudo code output */
                                                                 | /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/sbin/fwmgr @ 0x584c */
                                                                 | #include <stdint.h>
                                                                 |  
    ; (fcn) fcn.0000584c ()                                      | void fcn_0000584c (int16_t arg_0h, int16_t arg_138h, int16_t arg_1a0h, int16_t arg_268h, int16_t arg_298h, int16_t arg_258h, int16_t arg_2b8h, int16_t arg_288h, int16_t arg_380h) {
                                                                 |     int16_t var_4h;
                                                                 |     int16_t var_8h;
                                                                 |     void * s1;
                                                                 |     int16_t var_14h;
                                                                 |     int16_t var_18h;
                                                                 |     int16_t var_1ch;
                                                                 |     int16_t var_0h;
                                                                 |     int16_t var_0h_2;
                                                                 |     int32_t var_4h_2;
                                                                 |     int16_t var_20h;
                                                                 |     int16_t var_88h;
                                                                 |     int16_t var_104h;
    0x0000584c sbclt fp, r3, r0, lsr r5                          |     __asm ("sbclt fp, r3, r0, lsr r5");
    0x00005850 ldr r5, [pc, 0xfc]                                |     
    0x00005852 mov r4, sp                                        |     r4 = sp;
    0x00005854 mov.w r2, 0x100                                   |     r2 = 0x100;
    0x00005858 mov r1, r4                                        |     r1 = r4;
    0x0000585a ldr r0, [pc, 0xf8]                                |     r0 = *(0x5956);
    0x0000585c add r5, pc                                        |     r5 = 0xb1b0;
    0x0000585e ldr r3, [pc, 0xf8]                                |     
    0x00005860 ldr r0, [r5, r0]                                  |     
    0x00005862 add r3, pc                                        |     r3 = 0xb1c0;
    0x00005864 ldr r0, [r0]                                      |     r0 = *(0xb1b0);
    0x00005866 str r0, [sp, 0x104]                               |     var_104h = r0;
    0x00005868 mov.w r0, 0                                       |     r0 = 0;
    0x0000586c ldr r0, [r3]                                      |     r0 = *(0xb1c0);
    0x0000586e blx 0x29d8                                        |     r0 = fcn_000029d8 ();
    0x00005872 subs r3, r0, 0                                    |     r3 = r0 - 0;
                                                                 |     if (r3 <= r0) {
    0x00005874 ble 0x591a                                        |         goto label_6;
                                                                 |     }
    0x00005876 movs r5, 0                                        |     r5 = 0;
    0x00005878 movs r1, 0xa                                      |     r1 = 0xa;
    0x0000587a strb r5, [r4, r3]                                 |     *((r4 + r3)) = r5;
    0x0000587c mov r0, r4                                        |     r0 = r4;
    0x0000587e blx 0x28e4                                        |     r0 = fcn_000028e4 ();
    0x00005882 mov r3, r0                                        |     r3 = r0;
    0x00005884 cmp r0, 0                                         |     
                                                                 |     if (r0 == 0) {
    0x00005886 beq 0x591a                                        |         goto label_6;
                                                                 |     }
    0x00005888 strb r5, [r3], 1                                  |     *(r3) = r5;
                                                                 |     r3++;
    0x0000588c movw r2, 0x7553                                   |     
    0x00005890 ldr r1, [r4]                                      |     r1 = *(r4);
    0x00005892 movt r2, 0x6363                                   |     r2 = 0x63637553;
    0x00005896 cmp r1, r2                                        |     
                                                                 |     if (r1 == r2) {
    0x00005898 beq 0x590a                                        |         goto label_7;
                                                                 |     }
                                                                 | label_1:
    0x0000589a movs r5, 1                                        |     r5 = 1;
                                                                 | label_2:
    0x0000589c ldr r2, [pc, 0xbc]                                |     
    0x0000589e add r2, pc                                        |     r2 = 0xb1fe;
    0x000058a0 ldr r0, [r2, 0xc]                                 |     r0 = *(0xb20a);
                                                                 |     if (r5 != 0) {
    0x000058a2 cbnz r5, 0x58e8                                   |         goto label_8;
                                                                 |     }
    0x000058a4 ldr r1, [pc, 0xb8]                                |     
    0x000058a6 mov r2, r3                                        |     r2 = r3;
    0x000058a8 add r1, pc                                        |     r1 = 0xb20c;
    0x000058aa blx 0x2a74                                        |     r0 = fcn_00002a74 ();
    0x000058ae cmp r0, 0                                         |     
                                                                 |     if (r0 < 0) {
    0x000058b0 blt 0x5938                                        |         goto label_9;
                                                                 |     }
                                                                 |     do {
                                                                 | label_0:
    0x000058b2 ldr r5, [pc, 0xb0]                                |         
    0x000058b4 ldr r4, [pc, 0xb0]                                |         
    0x000058b6 add r5, pc                                        |         r5 = 0xb220;
    0x000058b8 add r4, pc                                        |         r4 = 0xb224;
    0x000058ba ldr r0, [r5]                                      |         r0 = *(0xb220);
    0x000058bc blx 0x2bf8                                        |         EVP_PKEY_verify_init ();
    0x000058c0 mov.w r3, -1                                      |         r3 = -1;
    0x000058c4 ldr r0, [r4, 0xc]                                 |         r0 = *(0xb230);
    0x000058c6 str r3, [r5]                                      |         *(r5) = r3;
    0x000058c8 blx 0x2a5c                                        |         fcn_00002a5c ();
    0x000058cc movs r3, 0                                        |         r3 = 0;
    0x000058ce ldr r2, [pc, 0x9c]                                |         
    0x000058d0 str r3, [r4, 0xc]                                 |         *((r4 + 0xc)) = r3;
    0x000058d2 ldr r3, [pc, 0x80]                                |         r3 = *(0x5956);
    0x000058d4 add r2, pc                                        |         r2 = 0xb246;
    0x000058d6 ldr r3, [r2, r3]                                  |         r3 = *(0xb246);
    0x000058d8 ldr r2, [r3]                                      |         r2 = *(0xb246);
    0x000058da ldr r3, [sp, 0x104]                               |         r3 = var_104h;
    0x000058dc eors r2, r3                                       |         r2 ^= r3;
    0x000058de mov.w r3, 0                                       |         r3 = 0;
                                                                 |         if (r2 != r3) {
    0x000058e2 bne 0x594c                                        |             goto label_10;
                                                                 |         }
    0x000058e4 add sp, 0x10c                                     |         
    0x000058e6 pop {r4, r5, pc}                                  |         
                                                                 | label_8:
    0x000058e8 ldr r2, [pc, 0x84]                                |         
    0x000058ea mov r1, r4                                        |         r1 = r4;
    0x000058ec add r2, pc                                        |         r2 = 0xb260;
    0x000058ee blx 0x2e44                                        |         r0 = sd_bus_add_object_vtable ();
    0x000058f2 cmp r0, 0                                         |         
    0x000058f4 bge 0x58b2                                        |         
                                                                 |     } while (r0 >= 0);
    0x000058f6 rsbs r0, r0, 0                                    |     r0 -= ;
    0x000058f8 blx 0x273c                                        |     strerror (r0);
    0x000058fc ldr r1, [pc, 0x74]                                |     
    0x000058fe mov r2, r0                                        |     r2 = r0;
    0x00005900 movs r0, 2                                        |     r0 = 2;
    0x00005902 add r1, pc                                        |     r1 = 0xb27a;
    0x00005904 bl 0xfcdc                                         |     fcn_0000fcdc (r0);
    0x00005908 b 0x58b2                                          |     goto label_0;
                                                                 | label_7:
    0x0000590a ldr r1, [r4, 4]                                   |     r1 = var_4h_2;
    0x0000590c movw r2, 0x7365                                   |     
    0x00005910 movt r2, 0x73                                     |     r2 = 0x737365;
    0x00005914 cmp r1, r2                                        |     
                                                                 |     if (r1 != r2) {
    0x00005916 bne 0x589a                                        |         goto label_1;
                                                                 |     }
    0x00005918 b 0x589c                                          |     goto label_2;
                                                                 | label_6:
    0x0000591a ldr r1, [pc, 0x5c]                                |     
    0x0000591c movs r0, 2                                        |     r0 = 2;
    0x0000591e add r1, pc                                        |     r1 = 0xb29c;
    0x00005920 bl 0xfcdc                                         |     fcn_0000fcdc (r0);
    0x00005924 ldr r3, [pc, 0x54]                                |     
    0x00005926 ldr r2, [pc, 0x58]                                |     
    0x00005928 ldr r1, [pc, 0x58]                                |     
    0x0000592a add r3, pc                                        |     r3 = 0xb2aa;
    0x0000592c ldr r0, [r3, 0xc]                                 |     r0 = *(0xb2b6);
    0x0000592e add r2, pc                                        |     r2 = 0xb2b4;
    0x00005930 add r1, pc                                        |     r1 = 0xb2b8;
    0x00005932 blx 0x2e44                                        |     sd_bus_add_object_vtable ();
    0x00005936 b 0x58b2                                          |     goto label_0;
                                                                 | label_9:
    0x00005938 rsbs r0, r0, 0                                    |     r0 -= ;
    0x0000593a blx 0x273c                                        |     strerror (r0);
    0x0000593e ldr r1, [pc, 0x48]                                |     
    0x00005940 mov r2, r0                                        |     r2 = r0;
    0x00005942 movs r0, 2                                        |     r0 = 2;
    0x00005944 add r1, pc                                        |     r1 = 0xb2d2;
    0x00005946 bl 0xfcdc                                         |     fcn_0000fcdc (r0);
    0x0000594a b 0x58b2                                          |     goto label_0;
                                                                 | label_10:
    0x0000594c blx 0x2cdc                                        |     fprintf_chk ()
    0x00005950 str r3, [sp, 0x380]                               |     *(arg_380h) = r3;
    0x00005952 movs r2, r0                                       |     r2 = r0;
    0x00005954 lsls r4, r1, 0xd                                  |     r4 = r1 << 0xd;
    0x00005956 movs r0, r0                                       |     
    0x00005958 str r7, [sp, 0x288]                               |     *(arg_288h) = r7;
    0x0000595a movs r2, r0                                       |     r2 = r0;
    0x0000595c ldr r1, [sp, 0x88]                                |     r1 = var_88h;
    0x0000595e movs r2, r0                                       |     r2 = r0;
    0x00005960 lsrs r0, r1, 0x17                                 |     r0 = r1 >> 0x17;
    0x00005962 movs r1, r0                                       |     r1 = r0;
    0x00005964 str r7, [sp, 0x138]                               |     *(arg_138h) = r7;
    0x00005966 movs r2, r0                                       |     r2 = r0;
    0x00005968 ldr r1, [sp, 0x20]                                |     r1 = var_20h;
    0x0000596a movs r2, r0                                       |     r2 = r0;
    0x0000596c str r3, [sp, 0x1a0]                               |     *(arg_1a0h) = r3;
    0x0000596e movs r2, r0                                       |     r2 = r0;
    0x00005970 strb r0, [r7, r2]                                 |     *((r7 + r2)) = r0;
    0x00005972 movs r1, r0                                       |     r1 = r0;
    0x00005974 asrs r6, r6, 7                                    |     r6 >>= 7;
    0x00005976 movs r1, r0                                       |     r1 = r0;
    0x00005978 asrs r2, r0, 9                                    |     r2 = r0 >> 9;
    0x0000597a movs r1, r0                                       |     r1 = r0;
    0x0000597c ldr r0, [sp, 0x258]                               |     r0 = *(arg_258h);
    0x0000597e movs r2, r0                                       |     r2 = r0;
    0x00005980 asrs r6, r5, 9                                    |     r6 = r5 >> 9;
    0x00005982 movs r1, r0                                       |     r1 = r0;
    0x00005984 lsrs r0, r7, 1                                    |     r0 = r7 >> 1;
    0x00005986 movs r1, r0                                       |     r1 = r0;
    0x00005988 asrs r4, r5, 7                                    |     r4 = r5 >> 7;
    0x0000598a movs r1, r0                                       |     r1 = r0;
    0x0000598c push.w {r4, r5, r6, r7, r8, sb, sl, fp, lr}       |     
    0x00005990 sub sp, 0x24                                      |     
    0x00005992 ldr r4, [pc, 0x2b8]                               |     
    0x00005994 ldr r1, [pc, 0x2b8]                               |     r1 = *(0x5c50);
    0x00005996 add r4, pc                                        |     r4 = 0xb5e8;
    0x00005998 ldr.w fp, [pc, 0x2b8]                             |     fp = *(0x00005c54);
    0x0000599c ldr r3, [pc, 0x2b8]                               |     r3 = *(0x5c58);
    0x0000599e ldr r1, [r4, r1]                                  |     
    0x000059a0 mov r4, r0                                        |     r4 = r0;
    0x000059a2 add fp, pc                                        |     
    0x000059a4 ldr r1, [r1]                                      |     r1 = *(0xb5e8);
    0x000059a6 str r1, [sp, 0x1c]                                |     var_1ch = r1;
    0x000059a8 mov.w r1, 0                                       |     r1 = 0;
    0x000059ac movs r1, 0                                        |     r1 = 0;
    0x000059ae ldr.w r8, [fp, r3]                                |     r8 = *((fp + r3));
    0x000059b2 ldr r3, [pc, 0x2a8]                               |     r3 = *(0x5c5e);
    0x000059b4 str r2, [sp, 0xc]                                 |     s1 = r2;
    0x000059b6 mov.w r2, -1                                      |     r2 = -1;
    0x000059ba str.w r1, [r8]                                    |     __asm ("str.w r1, [r8]");
    0x000059be ldr.w r3, [fp, r3]                                |     r3 = *((fp + r3));
    0x000059c2 mov r1, r3                                        |     r1 = r3;
    0x000059c4 str r3, [sp, 4]                                   |     var_4h = r3;
    0x000059c6 ldr r3, [pc, 0x298]                               |     r3 = *(0x5c62);
    0x000059c8 str r2, [r1]                                      |     *(r1) = r2;
    0x000059ca movs r1, 0x61                                     |     r1 = 0x61;
    0x000059cc ldr.w r3, [fp, r3]                                |     r3 = *((fp + r3));
    0x000059d0 str r2, [r3]                                      |     *(r3) = r2;
    0x000059d2 ldr r2, [pc, 0x290]                               |     
    0x000059d4 str r3, [sp, 8]                                   |     var_8h = r3;
    0x000059d6 add r2, pc                                        |     r2 = 0xb640;
    0x000059d8 blx 0x2cb8                                        |     r0 = keyctl_link ();
    0x000059dc cmp r0, 0                                         |     
                                                                 |     if (r0 < 0) {
    0x000059de blt.w 0x5c32                                      |         goto label_11;
                                                                 |     }
    0x000059e2 ldr r5, [pc, 0x284]                               |     
    0x000059e4 ldr r6, [pc, 0x284]                               |     
    0x000059e6 ldr.w sb, [pc, 0x288]                             |     
    0x000059ea add r5, pc                                        |     r5 = 0xb658;
    0x000059ec add r6, pc                                        |     r6 = 0xb65c;
    0x000059ee add sb, pc                                        |     sb = 0xb664;
                                                                 | label_3:
    0x000059f0 movs r1, 0                                        |     r1 = 0;
    0x000059f2 mov r0, r4                                        |     r0 = r4;
    0x000059f4 blx 0x2d58                                        |     r0 = fcn_00002d58 ();
                                                                 |     if (r0 != 0) {
    0x000059f8 cbnz r0, 0x5a58                                   |         goto label_12;
                                                                 |     }
                                                                 |     do {
    0x000059fa add r3, sp, 0x18                                  |         r3 += var_18h;
    0x000059fc add r2, sp, 0x14                                  |         r2 += var_14h;
    0x000059fe mov r1, r5                                        |         r1 = r5;
    0x00005a00 mov r0, r4                                        |         r0 = r4;
    0x00005a02 blx 0x2bc8                                        |         r0 = statvfs ();
    0x00005a06 cmp r0, 0                                         |         
                                                                 |         if (r0 < 0) {
    0x00005a08 blt.w 0x5b78                                      |             goto label_13;
                                                                 |         }
    0x00005a0c ldr r7, [sp, 0x14]                                |         r7 = var_14h;
    0x00005a0e mov r1, r6                                        |         r1 = r6;
    0x00005a10 mov r0, r7                                        |         r0 = r7;
    0x00005a12 blx 0x2f70                                        |         r0 = vdprintf_chk ();
    0x00005a16 cmp r0, 0                                         |         
                                                                 |         if (r0 != 0) {
    0x00005a18 bne 0x5a98                                        |             goto label_14;
                                                                 |         }
    0x00005a1a ldr r7, [sp, 0x18]                                |         r7 = var_18h;
    0x00005a1c ldr r1, [pc, 0x254]                               |         
    0x00005a1e mov r0, r7                                        |         r0 = r7;
    0x00005a20 add r1, pc                                        |         r1 = 0xb698;
    0x00005a22 blx 0x2f70                                        |         r0 = vdprintf_chk ();
    0x00005a26 cmp r0, 0                                         |         
                                                                 |         if (r0 == 0) {
    0x00005a28 beq 0x5aba                                        |             goto label_15;
                                                                 |         }
    0x00005a2a ldr r1, [pc, 0x24c]                               |         
    0x00005a2c mov r0, r7                                        |         r0 = r7;
    0x00005a2e add r1, pc                                        |         r1 = 0xb6ac;
    0x00005a30 blx 0x2f70                                        |         r0 = vdprintf_chk ();
    0x00005a34 cmp r0, 0                                         |         
                                                                 |         if (r0 == 0) {
    0x00005a36 beq 0x5aba                                        |             goto label_15;
                                                                 |         }
    0x00005a38 ldr r1, [pc, 0x240]                               |         
    0x00005a3a mov r0, r7                                        |         r0 = r7;
    0x00005a3c add r1, pc                                        |         r1 = 0xb6bc;
    0x00005a3e blx 0x2f70                                        |         r0 = vdprintf_chk ();
    0x00005a42 cmp r0, 0                                         |         
                                                                 |         if (r0 != 0) {
    0x00005a44 bne 0x5b12                                        |             goto label_16;
                                                                 |         }
    0x00005a46 movs r3, 3                                        |         r3 = 3;
    0x00005a48 movs r1, 0                                        |         r1 = 0;
    0x00005a4a mov r0, r4                                        |         r0 = r4;
    0x00005a4c str.w r3, [r8]                                    |         __asm ("str.w r3, [r8]");
    0x00005a50 blx 0x2d58                                        |         r0 = fcn_00002d58 ();
    0x00005a54 cmp r0, 0                                         |         
    0x00005a56 beq 0x59fa                                        |         
                                                                 |     } while (r0 == 0);
                                                                 | label_12:
    0x00005a58 movs r0, 0                                        |     r0 = 0;
    0x00005a5a bl 0x10130                                        |     r0 = fcn_00010130 (r0);
    0x00005a5e cmp r0, 0                                         |     
                                                                 |     if (r0 != 0) {
    0x00005a60 bne.w 0x5c1e                                      |         goto label_17;
                                                                 |     }
    0x00005a64 bl 0xf484                                         |     r0 = fcn_0000f484 ();
    0x00005a68 cmp r0, 0                                         |     
                                                                 |     if (r0 == 0) {
    0x00005a6a beq.w 0x5bce                                      |         goto label_18;
                                                                 |     }
    0x00005a6e blx 0x2f88                                        |     r0 = cxa_finalize ();
    0x00005a72 ldr r3, [r0]                                      |     r3 = *(r0);
    0x00005a74 cmp r3, 2                                         |     
                                                                 |     if (r3 == 2) {
    0x00005a76 beq.w 0x5bba                                      |         goto label_19;
                                                                 |     }
    0x00005a7a cmp r3, 0x54                                      |     
                                                                 |     if (r3 != 0x54) {
    0x00005a7c bne.w 0x5ba6                                      |         goto label_20;
                                                                 |     }
    0x00005a80 ldr r2, [pc, 0x1fc]                               |     
    0x00005a82 mvn r4, 4                                         |     r4 = ~4;
    0x00005a86 ldr r1, [pc, 0x1fc]                               |     
    0x00005a88 ldr r0, [sp, 0xc]                                 |     r0 = s1;
    0x00005a8a add r2, pc                                        |     r2 = 0xb70e;
    0x00005a8c add r1, pc                                        |     r1 = 0xb716;
    0x00005a8e blx 0x2af0                                        |     r0 = memcpy (r0, r1, r2);
                                                                 | label_4:
    0x00005a92 bl 0x1029c                                        |     fcn_0001029c ();
    0x00005a96 b 0x5b8a                                          |     goto label_5;
                                                                 | label_14:
    0x00005a98 mov r1, sb                                        |     r1 = sb;
    0x00005a9a mov r0, r7                                        |     r0 = r7;
    0x00005a9c blx 0x2f70                                        |     r0 = vdprintf_chk ();
                                                                 |     if (r0 == 0) {
    0x00005aa0 cbnz r0, 0x5ac2                                   |         
    0x00005aa2 ldr r7, [sp, 0x18]                                |         r7 = var_18h;
    0x00005aa4 ldr r1, [pc, 0x1e0]                               |         
    0x00005aa6 mov r0, r7                                        |         r0 = r7;
    0x00005aa8 add r1, pc                                        |         r1 = 0xb734;
    0x00005aaa blx 0x2f70                                        |         r0 = vdprintf_chk ();
                                                                 |         if (r0 != 0) {
    0x00005aae cbnz r0, 0x5aee                                   |             goto label_21;
                                                                 |         }
    0x00005ab0 ldr r2, [sp, 4]                                   |         r2 = var_4h;
    0x00005ab2 mov.w r3, -1                                      |         r3 = -1;
    0x00005ab6 str r3, [r2]                                      |         *(r2) = r3;
    0x00005ab8 b 0x59f0                                          |         goto label_3;
                                                                 | label_15:
    0x00005aba movs r3, 0                                        |         r3 = 0;
    0x00005abc str.w r3, [r8]                                    |         __asm ("str.w r3, [r8]");
    0x00005ac0 b 0x59f0                                          |         goto label_3;
                                                                 |     }
    0x00005ac2 ldr r1, [pc, 0x1c8]                               |     
    0x00005ac4 mov r0, r7                                        |     r0 = r7;
    0x00005ac6 add r1, pc                                        |     r1 = 0xb758;
    0x00005ac8 blx 0x2f70                                        |     r0 = vdprintf_chk ();
    0x00005acc mov r7, r0                                        |     r7 = r0;
    0x00005ace cmp r0, 0                                         |     
                                                                 |     if (r0 != 0) {
    0x00005ad0 bne.w 0x5be2                                      |         goto label_22;
                                                                 |     }
    0x00005ad4 ldr.w sl, [sp, 0x18]                              |     sl = var_18h;
    0x00005ad8 ldr r1, [pc, 0x1b4]                               |     
    0x00005ada mov r0, sl                                        |     r0 = sl;
    0x00005adc add r1, pc                                        |     r1 = 0xb770;
    0x00005ade blx 0x2f70                                        |     r0 = vdprintf_chk ();
                                                                 |     if (r0 == 0) {
    0x00005ae2 cbnz r0, 0x5b00                                   |         
    0x00005ae4 ldr r2, [sp, 8]                                   |         r2 = var_8h;
    0x00005ae6 mov.w r3, -1                                      |         r3 = -1;
    0x00005aea str r3, [r2]                                      |         *(r2) = r3;
    0x00005aec b 0x59f0                                          |         goto label_3;
                                                                 | label_21:
    0x00005aee ldr r1, [pc, 0x1a4]                               |         
    0x00005af0 mov r0, r7                                        |         r0 = r7;
    0x00005af2 add r1, pc                                        |         r1 = 0xb78c;
    0x00005af4 blx 0x2f70                                        |         r0 = vdprintf_chk ();
                                                                 |         if (r0 != 0) {
    0x00005af8 cbnz r0, 0x5b28                                   |             goto label_23;
                                                                 |         }
    0x00005afa ldr r3, [sp, 4]                                   |         r3 = var_4h;
    0x00005afc str r0, [r3]                                      |         *(r3) = r0;
    0x00005afe b 0x59f0                                          |         goto label_3;
                                                                 |     }
    0x00005b00 ldr r1, [pc, 0x194]                               |     
    0x00005b02 mov r0, sl                                        |     r0 = sl;
    0x00005b04 add r1, pc                                        |     r1 = 0xb7a0;
    0x00005b06 blx 0x2f70                                        |     r0 = vdprintf_chk ();
    0x00005b0a cbnz r0, 0x5b3c                                   |     
                                                                 |     while (r3 <= 0x5a0) {
    0x00005b0c ldr r3, [sp, 8]                                   |         r3 = var_8h;
    0x00005b0e str r0, [r3]                                      |         *(r3) = r0;
    0x00005b10 b 0x59f0                                          |         goto label_3;
                                                                 | label_16:
    0x00005b12 ldr r1, [pc, 0x188]                               |         
    0x00005b14 mov r0, r7                                        |         r0 = r7;
    0x00005b16 add r1, pc                                        |         r1 = 0xb7b8;
    0x00005b18 blx 0x2f70                                        |         r0 = vdprintf_chk ();
    0x00005b1c cmp r0, 0                                         |         
                                                                 |         if (r0 != 0) {
    0x00005b1e bne 0x5bf6                                        |             goto label_24;
                                                                 |         }
    0x00005b20 movs r3, 1                                        |         r3 = 1;
    0x00005b22 str.w r3, [r8]                                    |         __asm ("str.w r3, [r8]");
    0x00005b26 b 0x59f0                                          |         goto label_3;
                                                                 | label_23:
    0x00005b28 ldr r1, [pc, 0x174]                               |         
    0x00005b2a mov r0, r7                                        |         r0 = r7;
    0x00005b2c add r1, pc                                        |         r1 = 0xb7d0;
    0x00005b2e blx 0x2f70                                        |         r0 = vdprintf_chk ();
                                                                 |         if (r0 != 0) {
    0x00005b32 cbnz r0, 0x5b62                                   |             goto label_25;
                                                                 |         }
    0x00005b34 ldr r2, [sp, 4]                                   |         r2 = var_4h;
    0x00005b36 movs r3, 1                                        |         r3 = 1;
    0x00005b38 str r3, [r2]                                      |         *(r2) = r3;
    0x00005b3a b 0x59f0                                          |         goto label_3;
    0x00005b3c mov r1, r7                                        |         r1 = r7;
    0x00005b3e mov r0, sl                                        |         r0 = sl;
    0x00005b40 movs r2, 0xa                                      |         r2 = 0xa;
    0x00005b42 blx 0x2b38                                        |         r0 = sd_bus_message_is_empty ();
    0x00005b46 subs r3, r0, 1                                    |         r3 = r0 - 1;
    0x00005b48 cmp.w r3, 0x5a0                                   |         
    0x00005b4c blo 0x5b0c                                        |         
                                                                 |     }
    0x00005b4e ldr r2, [pc, 0x154]                               |     
    0x00005b50 mvn r4, 0x15                                      |     r4 = ~0x15;
    0x00005b54 ldr r1, [pc, 0x150]                               |     
    0x00005b56 ldr r0, [sp, 0xc]                                 |     r0 = s1;
    0x00005b58 add r2, pc                                        |     r2 = 0xb802;
    0x00005b5a add r1, pc                                        |     r1 = 0xb806;
    0x00005b5c blx 0x2af0                                        |     memcpy (r0, r1, r2);
    0x00005b60 b 0x5b8a                                          |     goto label_5;
                                                                 | label_25:
    0x00005b62 ldr r1, [pc, 0x148]                               |     
    0x00005b64 mov r0, r7                                        |     r0 = r7;
    0x00005b66 add r1, pc                                        |     r1 = 0xb818;
    0x00005b68 blx 0x2f70                                        |     r0 = vdprintf_chk ();
    0x00005b6c cmp r0, 0                                         |     
                                                                 |     if (r0 != 0) {
    0x00005b6e bne 0x5c0a                                        |         goto label_26;
                                                                 |     }
    0x00005b70 ldr r2, [sp, 4]                                   |     r2 = var_4h;
    0x00005b72 movs r3, 2                                        |     r3 = 2;
    0x00005b74 str r3, [r2]                                      |     *(r2) = r3;
    0x00005b76 b 0x59f0                                          |     goto label_3;
                                                                 | label_13:
    0x00005b78 ldr r2, [pc, 0x134]                               |     
    0x00005b7a mvn r4, 4                                         |     r4 = ~4;
    0x00005b7e ldr r1, [pc, 0x134]                               |     
    0x00005b80 ldr r0, [sp, 0xc]                                 |     r0 = s1;
    0x00005b82 add r2, pc                                        |     r2 = 0xb836;
    0x00005b84 add r1, pc                                        |     r1 = 0xb83e;
    0x00005b86 blx 0x2af0                                        |     memcpy (r0, r1, r2);
                                                                 |     do {
                                                                 | label_5:
    0x00005b8a ldr r2, [pc, 0x12c]                               |         
    0x00005b8c ldr r3, [pc, 0xc0]                                |         r3 = *(0x5c50);
    0x00005b8e add r2, pc                                        |         r2 = 0xb84c;
    0x00005b90 ldr r3, [r2, r3]                                  |         r3 = *(0xb84c);
    0x00005b92 ldr r2, [r3]                                      |         r2 = *(0xb84c);
    0x00005b94 ldr r3, [sp, 0x1c]                                |         r3 = var_1ch;
    0x00005b96 eors r2, r3                                       |         r2 ^= r3;
    0x00005b98 mov.w r3, 0                                       |         r3 = 0;
                                                                 |         if (r2 != r3) {
    0x00005b9c bne 0x5c46                                        |             goto label_27;
                                                                 |         }
    0x00005b9e mov r0, r4                                        |         r0 = r4;
    0x00005ba0 add sp, 0x24                                      |         
    0x00005ba2 pop.w {r4, r5, r6, r7, r8, sb, sl, fp, pc}        |         
                                                                 | label_20:
    0x00005ba6 ldr r2, [pc, 0x114]                               |         
    0x00005ba8 mvn r4, 4                                         |         r4 = ~4;
    0x00005bac ldr r1, [pc, 0x110]                               |         
    0x00005bae ldr r0, [sp, 0xc]                                 |         r0 = s1;
    0x00005bb0 add r2, pc                                        |         r2 = 0xb872;
    0x00005bb2 add r1, pc                                        |         r1 = 0xb876;
    0x00005bb4 blx 0x2af0                                        |         memcpy (r0, r1, r2);
    0x00005bb8 b 0x5a92                                          |         goto label_4;
                                                                 | label_19:
    0x00005bba ldr r2, [pc, 0x108]                               |         
    0x00005bbc mvn r4, 4                                         |         r4 = ~4;
    0x00005bc0 ldr r1, [pc, 0x104]                               |         
    0x00005bc2 ldr r0, [sp, 0xc]                                 |         r0 = s1;
    0x00005bc4 add r2, pc                                        |         r2 = 0xb88e;
    0x00005bc6 add r1, pc                                        |         r1 = 0xb892;
    0x00005bc8 blx 0x2af0                                        |         memcpy (r0, r1, r2);
    0x00005bcc b 0x5a92                                          |         goto label_4;
                                                                 | label_18:
    0x00005bce ldr r3, [pc, 0xfc]                                |         r3 = *(0x5cce);
    0x00005bd0 mov r0, r4                                        |         r0 = r4;
    0x00005bd2 ldr r1, [pc, 0xfc]                                |         
    0x00005bd4 ldr.w r2, [fp, r3]                                |         r2 = *((fp + r3));
    0x00005bd8 add r1, pc                                        |         r1 = 0xb8ae;
    0x00005bda blx 0x2a74                                        |         r0 = fcn_00002a74 ();
    0x00005bde mov r4, r0                                        |         r4 = r0;
    0x00005be0 b 0x5a92                                          |         goto label_4;
                                                                 | label_22:
    0x00005be2 ldr r2, [pc, 0xf0]                                |         
    0x00005be4 mvn r4, 0x15                                      |         r4 = ~0x15;
    0x00005be8 ldr r1, [pc, 0xec]                                |         
    0x00005bea ldr r0, [sp, 0xc]                                 |         r0 = s1;
    0x00005bec add r2, pc                                        |         r2 = 0xb8c6;
    0x00005bee add r1, pc                                        |         r1 = 0xb8ca;
    0x00005bf0 blx 0x2af0                                        |         memcpy (r0, r1, r2);
    0x00005bf4 b 0x5b8a                                          |         
                                                                 |     } while (1);
                                                                 | label_24:
    0x00005bf6 ldr r2, [pc, 0xe4]                                |     
    0x00005bf8 mvn r4, 0x15                                      |     r4 = ~0x15;
    0x00005bfc ldr r1, [pc, 0xe0]                                |     
    0x00005bfe ldr r0, [sp, 0xc]                                 |     r0 = s1;
    0x00005c00 add r2, pc                                        |     r2 = 0xb8e2;
    0x00005c02 add r1, pc                                        |     r1 = 0xb8e6;
    0x00005c04 blx 0x2af0                                        |     memcpy (r0, r1, r2);
    0x00005c08 b 0x5b8a                                          |     goto label_5;
                                                                 | label_26:
    0x00005c0a ldr r2, [pc, 0xd8]                                |     
    0x00005c0c mvn r4, 0x15                                      |     r4 = ~0x15;
    0x00005c10 ldr r1, [pc, 0xd4]                                |     
    0x00005c12 ldr r0, [sp, 0xc]                                 |     r0 = s1;
    0x00005c14 add r2, pc                                        |     r2 = 0xb8fe;
    0x00005c16 add r1, pc                                        |     r1 = 0xb902;
    0x00005c18 blx 0x2af0                                        |     memcpy (r0, r1, r2);
    0x00005c1c b 0x5b8a                                          |     goto label_5;
                                                                 | label_17:
    0x00005c1e ldr r2, [pc, 0xcc]                                |     
    0x00005c20 mvn r4, 0xf                                       |     r4 = ~0xf;
    0x00005c24 ldr r1, [pc, 0xc8]                                |     
    0x00005c26 ldr r0, [sp, 0xc]                                 |     r0 = s1;
    0x00005c28 add r2, pc                                        |     r2 = 0xb91a;
    0x00005c2a add r1, pc                                        |     r1 = 0xb91e;
    0x00005c2c blx 0x2af0                                        |     memcpy (r0, r1, r2);
    0x00005c30 b 0x5b8a                                          |     goto label_5;
                                                                 | label_11:
    0x00005c32 ldr r2, [pc, 0xc0]                                |     
    0x00005c34 mvn r4, 4                                         |     r4 = ~4;
    0x00005c38 ldr r1, [pc, 0xbc]                                |     
    0x00005c3a ldr r0, [sp, 0xc]                                 |     r0 = s1;
    0x00005c3c add r2, pc                                        |     r2 = 0xb936;
    0x00005c3e add r1, pc                                        |     r1 = 0xb93a;
    0x00005c40 blx 0x2af0                                        |     memcpy (r0, r1, r2);
    0x00005c44 b 0x5b8a                                          |     goto label_5;
                                                                 | label_27:
    0x00005c46 blx 0x2cdc                                        |     fprintf_chk ()
    0x00005c4a nop                                               |     
    0x00005c4c str r2, [sp, 0x298]                               |     *(arg_298h) = r2;
    0x00005c4e movs r2, r0                                       |     r2 = r0;
    0x00005c50 lsls r4, r1, 0xd                                  |     r4 = r1 << 0xd;
    0x00005c52 movs r0, r0                                       |     
    0x00005c54 str r2, [sp, 0x268]                               |     *(arg_268h) = r2;
    0x00005c56 movs r2, r0                                       |     r2 = r0;
    0x00005c58 lsls r4, r1, 0xc                                  |     r4 = r1 << 0xc;
    0x00005c5a movs r0, r0                                       |     
    0x00005c5c lsls r0, r1, 0xc                                  |     r0 = r1 << 0xc;
    0x00005c5e movs r0, r0                                       |     
    0x00005c60 lsls r0, r1, 0xe                                  |     r0 = r1 << 0xe;
    0x00005c62 movs r0, r0                                       |     
    0x00005c64 asrs r2, r7, 3                                    |     r2 = r7 >> 3;
    0x00005c66 movs r1, r0                                       |     r1 = r0;
    0x00005c68 asrs r6, r4, 3                                    |     r6 = r4 >> 3;
    0x00005c6a movs r1, r0                                       |     r1 = r0;
    0x00005c6c lsrs r0, r6, 0xc                                  |     r0 = r6 >> 0xc;
    0x00005c6e movs r1, r0                                       |     r1 = r0;
    0x00005c70 lsrs r2, r6, 0xe                                  |     r2 = r6 >> 0xe;
    0x00005c72 movs r1, r0                                       |     r1 = r0;
    0x00005c74 lsrs r0, r2, 0xc                                  |     r0 = r2 >> 0xc;
    0x00005c76 movs r1, r0                                       |     r1 = r0;
    0x00005c78 lsrs r2, r1, 0xc                                  |     r2 = r1 >> 0xc;
    0x00005c7a movs r1, r0                                       |     r1 = r0;
    0x00005c7c lsrs r4, r0, 0xc                                  |     r4 = r0 >> 0xc;
    0x00005c7e movs r1, r0                                       |     r1 = r0;
    0x00005c80 lsrs r6, r0, 2                                    |     r6 = r0 >> 2;
    0x00005c82 movs r1, r0                                       |     r1 = r0;
    0x00005c84 lsrs r0, r0, 3                                    |     r0 >>= 3;
    0x00005c86 movs r1, r0                                       |     r1 = r0;
    0x00005c88 lsrs r0, r1, 0xa                                  |     r0 = r1 >> 0xa;
    0x00005c8a movs r1, r0                                       |     r1 = r0;
    0x00005c8c lsrs r6, r3, 0xc                                  |     r6 = r3 >> 0xc;
    0x00005c8e movs r1, r0                                       |     r1 = r0;
    0x00005c90 lsrs r4, r2, 9                                    |     r4 = r2 >> 9;
    0x00005c92 movs r1, r0                                       |     r1 = r0;
    0x00005c94 lsrs r2, r7, 0xa                                  |     r2 = r7 >> 0xa;
    0x00005c96 movs r1, r0                                       |     r1 = r0;
    0x00005c98 lsrs r0, r5, 0xa                                  |     r0 = r5 >> 0xa;
    0x00005c9a movs r1, r0                                       |     r1 = r0;
    0x00005c9c lsrs r2, r6, 8                                    |     r2 = r6 >> 8;
    0x00005c9e movs r1, r0                                       |     r1 = r0;
    0x00005ca0 lsrs r0, r1, 0xa                                  |     r0 = r1 >> 0xa;
    0x00005ca2 movs r1, r0                                       |     r1 = r0;
    0x00005ca4 lsrs r4, r3, 0xa                                  |     r4 = r3 >> 0xa;
    0x00005ca6 movs r1, r0                                       |     r1 = r0;
    0x00005ca8 lsrs r6, r3, 8                                    |     r6 = r3 >> 8;
    0x00005caa movs r1, r0                                       |     r1 = r0;
    0x00005cac lsrs r6, r2, 9                                    |     r6 = r2 >> 9;
    0x00005cae movs r1, r0                                       |     r1 = r0;
    0x00005cb0 lsls r6, r6, 0x17                                 |     r6 <<= 0x17;
    0x00005cb2 movs r1, r0                                       |     r1 = r0;
    0x00005cb4 lsls r4, r4, 0x18                                 |     r4 <<= 0x18;
    0x00005cb6 movs r1, r0                                       |     r1 = r0;
    0x00005cb8 str r0, [sp, 0x2b8]                               |     *(arg_2b8h) = r0;
    0x00005cba movs r2, r0                                       |     r2 = r0;
    0x00005cbc lsls r0, r4, 0x1c                                 |     r0 = r4 << 0x1c;
    0x00005cbe movs r1, r0                                       |     r1 = r0;
    0x00005cc0 lsls r6, r6, 0x17                                 |     r6 <<= 0x17;
    0x00005cc2 movs r1, r0                                       |     r1 = r0;
    0x00005cc4 asrs r4, r4, 0x20                                 |     r4 >>= 0x20;
    0x00005cc6 movs r1, r0                                       |     r1 = r0;
    0x00005cc8 asrs r6, r7, 0x20                                 |     r6 = r7 >> 0x20;
    0x00005cca movs r1, r0                                       |     r1 = r0;
    0x00005ccc lsls r0, r7, 0xe                                  |     r0 = r7 << 0xe;
    0x00005cce movs r0, r0                                       |     
    0x00005cd0 lsrs r0, r3, 0xa                                  |     r0 = r3 >> 0xa;
    0x00005cd2 movs r1, r0                                       |     r1 = r0;
    0x00005cd4 lsrs r0, r2, 9                                    |     r0 = r2 >> 9;
    0x00005cd6 movs r1, r0                                       |     r1 = r0;
    0x00005cd8 lsrs r2, r1, 6                                    |     r2 = r1 >> 6;
    0x00005cda movs r1, r0                                       |     r1 = r0;
    0x00005cdc lsrs r0, r2, 5                                    |     r0 = r2 >> 5;
    0x00005cde movs r1, r0                                       |     r1 = r0;
    0x00005ce0 lsrs r6, r6, 5                                    |     r6 >>= 5;
    0x00005ce2 movs r1, r0                                       |     r1 = r0;
    0x00005ce4 lsrs r4, r6, 0x1e                                 |     r4 = r6 >> 0x1e;
    0x00005ce6 movs r1, r0                                       |     r1 = r0;
    0x00005ce8 lsrs r2, r4, 5                                    |     r2 = r4 >> 5;
    0x00005cea movs r1, r0                                       |     r1 = r0;
    0x00005cec lsls r0, r5, 0x16                                 |     r0 = r5 << 0x16;
    0x00005cee movs r1, r0                                       |     r1 = r0;
    0x00005cf0 lsls r6, r2, 0x17                                 |     r6 = r2 << 0x17;
    0x00005cf2 movs r1, r0                                       |     r1 = r0;
    0x00005cf4 lsls r4, r7, 0x14                                 |     r4 = r7 << 0x14;
    0x00005cf6 movs r1, r0                                       |     r1 = r0;
    0x00005cf8 lsls r2, r5, 0x15                                 |     r2 = r5 << 0x15;
    0x00005cfa movs r1, r0                                       |     r1 = r0;
    0x00005cfc push {r3, r4, r5, lr}                             |     
    0x00005cfe mov r4, r0                                        |     r4 = r0;
    0x00005d00 movs r0, 0                                        |     r0 = 0;
    0x00005d02 mov r5, r2                                        |     r5 = r2;
    0x00005d04 bl 0x10130                                        |     r0 = fcn_00010130 (r0);
                                                                 |     if (r0 != 0) {
    0x00005d08 cbnz r0, 0x5d2a                                   |         goto label_28;
                                                                 |     }
    0x00005d0a ldr r2, [pc, 0x34]                                |     
    0x00005d0c mov r1, r0                                        |     r1 = r0;
    0x00005d0e movs r0, 1                                        |     r0 = 1;
    0x00005d10 add r2, pc                                        |     r2 = 0xba56;
    0x00005d12 bl 0xced8                                         |     fcn_0000ced8 (r0, r1, r2);
    0x00005d16 ldr r1, [pc, 0x2c]                                |     
    0x00005d18 mov r0, r4                                        |     r0 = r4;
    0x00005d1a add r1, pc                                        |     r1 = 0xba64;
    0x00005d1c blx 0x2a74                                        |     r0 = fcn_00002a74 ();
    0x00005d20 mov r4, r0                                        |     r4 = r0;
    0x00005d22 bl 0x1029c                                        |     fcn_0001029c ();
                                                                 |     do {
    0x00005d26 mov r0, r4                                        |         r0 = r4;
    0x00005d28 pop {r3, r4, r5, pc}                              |         
                                                                 | label_28:
    0x00005d2a ldr r2, [pc, 0x1c]                                |         
    0x00005d2c mov r0, r5                                        |         r0 = r5;
    0x00005d2e ldr r1, [pc, 0x1c]                                |         
    0x00005d30 mvn r4, 0xf                                       |         r4 = ~0xf;
    0x00005d34 add r2, pc                                        |         r2 = 0xba82;
    0x00005d36 add r1, pc                                        |         r1 = 0xba88;
    0x00005d38 blx 0x2af0                                        |         memcpy (r0, r1, r2);
    0x00005d3c b 0x5d26                                          |         
                                                                 |     } while (1);
                                                                 | }
    ; assembly                                                   | /* r2dec pseudo code output */
                                                                 | /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/sbin/fwmgr @ 0x61fc */
                                                                 | #include <stdint.h>
                                                                 |  
                                                                 | #define BIT_MASK(t,v) ((t)(-((v)!= 0)))&(((t)-1)>>((sizeof(t)*CHAR_BIT)-(v)))
                                                                 |  
    ; (fcn) fcn.000061fc ()                                      | void fcn_000061fc (int16_t arg1, int16_t arg2, int16_t arg3) {
                                                                 |     int16_t var_5ch;
                                                                 |     int16_t var_7ch;
                                                                 |     int16_t var_0h;
                                                                 |     int16_t var_4h;
                                                                 |     int16_t var_8h;
                                                                 |     int32_t var_8h_2;
                                                                 |     int16_t var_10h;
                                                                 |     int16_t var_14h;
                                                                 |     int16_t var_18h;
                                                                 |     int16_t var_74h;
                                                                 |     int16_t var_b4h;
                                                                 |     int16_t var_134h;
                                                                 |     r0 = arg1;
                                                                 |     r1 = arg2;
                                                                 |     r2 = arg3;
    0x000061fc bic r3, r1, 0xff0                                 |     r3 = BIT_MASK (r1, 0xff0);
    0x00006200 push.w {r4, r5, r6, r7, r8, sb, sl, fp, lr}       |     
    0x00006204 bic r3, r3, 0xf                                   |     r3 = BIT_MASK (r3, 0xf);
    0x00006208 mov r6, r0                                        |     r6 = r0;
    0x0000620a mov r8, r1                                        |     r8 = r1;
    0x0000620c mov r4, r2                                        |     r4 = r2;
    0x0000620e uxtb r1, r0                                       |     r1 = (int8_t) r0;
    0x00006210 ldr r2, [pc, 0x368]                               |     
    0x00006212 ubfx r0, r0, 8, 0xc                               |     r0 = (r0 >> 8) & ((1 << 0xc) - 1);
    0x00006216 lsrs r5, r6, 0xc                                  |     r5 = r6 >> 0xc;
    0x00006218 orr.w r7, r3, r0                                  |     r7 = r3 | r0;
    0x0000621c ldr r3, [pc, 0x360]                               |     r3 = *(0x6580);
    0x0000621e sub sp, 0x13c                                     |     
    0x00006220 add r2, pc                                        |     r2 = 0xc7a0;
    0x00006222 str r7, [sp, 4]                                   |     var_4h = r7;
    0x00006224 orr.w r5, r5, r8, lsl 20                          |     r5 |= (r8 << 20);
    0x00006228 ldr r3, [r2, r3]                                  |     
    0x0000622a add.w sb, sp, 0x74                                |     sb += var_74h;
    0x0000622e bic r5, r5, 0xff                                  |     r5 = BIT_MASK (r5, 0xff);
    0x00006232 mov r0, sb                                        |     r0 = sb;
    0x00006234 orrs r5, r1                                       |     r5 |= r1;
    0x00006236 movs r2, 1                                        |     r2 = 1;
    0x00006238 ldr r3, [r3]                                      |     r3 = *(0xc7a0);
    0x0000623a str r3, [sp, 0x134]                               |     var_134h = r3;
    0x0000623c mov.w r3, 0                                       |     r3 = 0;
    0x00006240 ldr r3, [pc, 0x340]                               |     
    0x00006242 str r5, [sp, 8]                                   |     var_8h = r5;
    0x00006244 add r3, pc                                        |     r3 = 0xc7cc;
    0x00006246 str r3, [sp]                                      |     *(sp) = r3;
    0x00006248 movs r3, 0x40                                     |     r3 = 0x40;
    0x0000624a mov r1, r3                                        |     r1 = r3;
    0x0000624c blx 0x2b98                                        |     shutdown ();
    0x00006250 add r1, sp, 0x18                                  |     r1 += var_18h;
    0x00006252 mov r0, sb                                        |     r0 = sb;
    0x00006254 blx 0x2f28                                        |     r0 = add_key ();
    0x00006258 cmp r0, 0                                         |     
                                                                 |     if (r0 >= 0) {
    0x0000625a bge 0x6298                                        |         goto label_6;
                                                                 |     }
    0x0000625c blx 0x2f88                                        |     r0 = cxa_finalize ();
    0x00006260 ldr r3, [r0]                                      |     r3 = *(r0);
    0x00006262 mov sl, r0                                        |     sl = r0;
    0x00006264 cmp r3, 2                                         |     
                                                                 |     if (r3 == 2) {
    0x00006266 beq.w 0x641a                                      |         goto label_7;
                                                                 |     }
    0x00006268 strh r0, [r3, 6]                                  |     *((r3 + 6)) = r0;
    0x0000626a ldr r1, [pc, 0x31c]                               |     
    0x0000626c mov r2, sb                                        |     r2 = sb;
    0x0000626e movs r0, 2                                        |     r0 = 2;
    0x00006270 add r1, pc                                        |     r1 = 0xc7fe;
    0x00006272 bl 0xfcdc                                         |     fcn_0000fcdc (r0);
    0x00006276 ldr.w r5, [sl]                                    |     r5 = *(sl);
                                                                 |     do {
                                                                 | label_0:
    0x0000627a ldr r2, [pc, 0x310]                               |         
    0x0000627c ldr r3, [pc, 0x300]                               |         r3 = *(0x6580);
    0x0000627e add r2, pc                                        |         r2 = 0xc810;
    0x00006280 ldr r3, [r2, r3]                                  |         r3 = *(0xc810);
    0x00006282 ldr r2, [r3]                                      |         r2 = *(0xc810);
    0x00006284 ldr r3, [sp, 0x134]                               |         r3 = var_134h;
    0x00006286 eors r2, r3                                       |         r2 ^= r3;
    0x00006288 mov.w r3, 0                                       |         r3 = 0;
                                                                 |         if (r2 != r3) {
    0x0000628c bne.w 0x6576                                      |             goto label_8;
                                                                 |         }
    0x00006290 mov r0, r5                                        |         r0 = r5;
    0x00006292 add sp, 0x13c                                     |         
    0x00006294 pop.w {r4, r5, r6, r7, r8, sb, sl, fp, pc}        |         
                                                                 | label_6:
    0x00006298 add.w r8, sp, 0xb4                                |         r8 += var_b4h;
    0x0000629c movs r3, 0                                        |         r3 = 0;
    0x0000629e movs r2, 0x80                                     |         r2 = 0x80;
    0x000062a0 mov r0, sb                                        |         r0 = sb;
    0x000062a2 mov r1, r8                                        |         r1 = r8;
    0x000062a4 bl 0x103f4                                        |         r0 = fcn_000103f4 (r0, r1, r2, r3);
    0x000062a8 mov r6, r0                                        |         r6 = r0;
    0x000062aa cmp r0, 0                                         |         
                                                                 |         if (r0 != 0) {
    0x000062ac bne.w 0x6430                                      |             goto label_9;
                                                                 |         }
    0x000062b0 ldr r1, [pc, 0x2dc]                               |         
    0x000062b2 mov r2, r8                                        |         r2 = r8;
    0x000062b4 ldr r5, [pc, 0x2dc]                               |         
    0x000062b6 movs r0, 7                                        |         r0 = 7;
    0x000062b8 add r1, pc                                        |         r1 = 0xc84c;
    0x000062ba add r5, pc                                        |         r5 = 0xc852;
    0x000062bc bl 0xfcdc                                         |         fcn_0000fcdc (r0);
    0x000062c0 movs r1, 2                                        |         r1 = 2;
    0x000062c2 mov r0, r5                                        |         r0 = r5;
    0x000062c4 blx 0x2730                                        |         r0 = open (r0, r1, r2);
    0x000062c8 adds r1, r0, 1                                    |         r1 = r0 + 1;
    0x000062ca mov r7, r0                                        |         r7 = r0;
                                                                 |         if (r1 == r0) {
    0x000062cc beq.w 0x6442                                      |             goto label_10;
                                                                 |         }
    0x000062d0 movs r1, 1                                        |         r1 = 1;
    0x000062d2 mov.w r0, 0x4000                                  |         r0 = 0x4000;
    0x000062d6 bl 0x107e4                                        |         fcn_000107e4 ();
    0x000062da mov.w sl, 4                                       |         sl = 4;
    0x000062de mov.w r3, 0x138                                   |         r3 = 0x138;
    0x000062e2 mov.w fp, 0x2b                                    |         
    0x000062e6 mov.w sb, 0x4000                                  |         sb = 0x4000;
    0x000062ea mov.w r1, 0xfd00                                  |         r1 = 0xfd00;
    0x000062ee mov r2, r0                                        |         r2 = r0;
    0x000062f0 str r6, [r0, 8]                                   |         *((r0 + 8)) = r6;
    0x000062f2 mov r5, r0                                        |         r5 = r0;
    0x000062f4 strd sl, fp, [r0]                                 |         __asm ("strd sl, fp, [r0]");
    0x000062f8 movt r1, 0xc138                                   |         r1 = (r1 & 0xFFFF) | 0xc1380000;
    0x000062fc strd sb, r3, [r0, 0xc]                            |         __asm ("strd sb, r3, [r0, 0xc]");
    0x00006300 mov r0, r7                                        |         r0 = r7;
    0x00006302 blx 0x2a8c                                        |         fcn_00002a8c ();
    0x00006306 adds r0, 1                                        |         r0++;
                                                                 |         if (r0 == 1) {
    0x00006308 beq.w 0x6456                                      |             goto label_11;
                                                                 |         }
    0x0000630c mov r0, r5                                        |         r0 = r5;
    0x0000630e blx 0x29cc                                        |         fcn_000029cc ();
    0x00006312 movs r1, 1                                        |         r1 = 1;
    0x00006314 mov r0, sb                                        |         r0 = sb;
    0x00006316 bl 0x107e4                                        |         fcn_000107e4 ();
    0x0000631a mov.w r3, 0x138                                   |         r3 = 0x138;
    0x0000631e mov r5, r0                                        |         r5 = r0;
    0x00006320 str r3, [r0, 0x10]                                |         *((r0 + 0x10)) = r3;
    0x00006322 movs r3, 0x10                                     |         r3 = 0x10;
    0x00006324 str r3, [r0, 0x1c]                                |         *((r0 + 0x1c)) = r3;
    0x00006326 movs r2, 0x80                                     |         r2 = 0x80;
    0x00006328 mov r1, r8                                        |         r1 = r8;
    0x0000632a strd sl, fp, [r0]                                 |         __asm ("strd sl, fp, [r0]");
    0x0000632e strd r6, sb, [r0, 8]                              |         __asm ("strd r6, sb, [r0, 8]");
    0x00006332 adds r0, 0x30                                     |         r0 += 0x30;
    0x00006334 blx 0x2884                                        |         fcn_00002884 ();
    0x00006338 movw r1, 0xfd0c                                   |         
    0x0000633c mov r2, r5                                        |         r2 = r5;
    0x0000633e movt r1, 0xc138                                   |         r1 = 0xc138fd0c;
    0x00006342 mov r0, r7                                        |         r0 = r7;
    0x00006344 blx 0x2a8c                                        |         fcn_00002a8c ();
    0x00006348 adds r0, 1                                        |         r0++;
                                                                 |         if (r0 == 1) {
    0x0000634a beq.w 0x6534                                      |             goto label_12;
                                                                 |         }
    0x0000634e ldr r3, [r5, 0x1c]                                |         r3 = *((r5 + 0x1c));
    0x00006350 lsls r3, r3, 0x17                                 |         r3 <<= 0x17;
                                                                 |         if (r3 < r3) {
    0x00006352 bmi.w 0x64ca                                      |             goto label_13;
                                                                 |         }
    0x00006356 ldr.w r3, [r5, 0x14c]                             |         r3 = *((r5 + 0x14c));
    0x0000635a add r3, r5                                        |         r3 += r5;
    0x0000635c ldrb.w r3, [r3, 0x138]                            |         r3 = *((r3 + 0x138));
    0x00006360 cmp r3, 0                                         |         
                                                                 |         if (r3 != 0) {
    0x00006362 bne.w 0x64a0                                      |             goto label_14;
                                                                 |         }
    0x00006366 add.w r0, r5, 0x150                               |         r0 = r5 + 0x150;
    0x0000636a bl 0x107f4                                        |         r0 = fcn_000107f4 ();
    0x0000636e mov r6, r0                                        |         r6 = r0;
    0x00006370 add.w r0, r5, 0x160                               |         r0 = r5 + 0x160;
    0x00006374 bl 0x107f4                                        |         r0 = fcn_000107f4 ();
    0x00006378 mov sb, r0                                        |         sb = r0;
    0x0000637a mov r0, r5                                        |         r0 = r5;
    0x0000637c blx 0x29cc                                        |         fcn_000029cc ();
    0x00006380 mov r0, r7                                        |         r0 = r7;
    0x00006382 blx 0x2bf8                                        |         EVP_PKEY_verify_init ();
    0x00006386 ldr r1, [pc, 0x210]                               |         
    0x00006388 mov r3, r6                                        |         r3 = r6;
    0x0000638a mov r2, r8                                        |         r2 = r8;
    0x0000638c movs r0, 7                                        |         r0 = 7;
    0x0000638e str.w sb, [sp]                                    |         __asm ("str.w sb, [sp]");
    0x00006392 add r1, pc                                        |         r1 = 0xc930;
    0x00006394 bl 0xfcdc                                         |         fcn_0000fcdc (r0);
    0x00006398 ldr r1, [pc, 0x200]                               |         
    0x0000639a mov r0, r6                                        |         r0 = r6;
    0x0000639c add r1, pc                                        |         r1 = 0xc93c;
    0x0000639e blx 0x2f70                                        |         r0 = vdprintf_chk ();
    0x000063a2 mov r5, r0                                        |         r5 = r0;
    0x000063a4 cmp r0, 0                                         |         
                                                                 |         if (r0 == 0) {
    0x000063a6 beq.w 0x64d8                                      |             goto label_15;
                                                                 |         }
    0x000063aa ldr r1, [pc, 0x1f4]                               |         
    0x000063ac mov r0, r6                                        |         r0 = r6;
    0x000063ae add r1, pc                                        |         r1 = 0xc954;
    0x000063b0 blx 0x2f70                                        |         r0 = vdprintf_chk ();
    0x000063b4 mov r5, r0                                        |         r5 = r0;
    0x000063b6 cmp r0, 0                                         |         
                                                                 |         if (r0 != 0) {
    0x000063b8 bne 0x647c                                        |             goto label_16;
                                                                 |         }
    0x000063ba cmp.w sb, 0                                       |         
                                                                 |         if (sb == 0) {
    0x000063be beq.w 0x64d0                                      |             goto label_17;
                                                                 |         }
    0x000063c2 ldr r1, [pc, 0x1e0]                               |         
    0x000063c4 add.w r8, sp, 0x14                                |         r8 += var_14h;
    0x000063c6 lsrs r4, r2, 0x20                                 |         r4 = r2 >> 0x20;
    0x000063c8 add r7, sp, 0x10                                  |         r7 += var_10h;
    0x000063ca mov r3, r8                                        |         r3 = r8;
    0x000063cc mov r2, r7                                        |         r2 = r7;
    0x000063ce mov r0, sb                                        |         r0 = sb;
    0x000063d0 add r1, pc                                        |         r1 = 0xc97a;
    0x000063d2 blx 0x2848                                        |         r0 = fcn_00002848 ();
    0x000063d6 cmp r0, 2                                         |         
                                                                 |         if (r0 != 2) {
    0x000063d8 bne 0x64d0                                        |             goto label_17;
                                                                 |         }
    0x000063da ldr r1, [pc, 0x1cc]                               |         
    0x000063dc movs r0, 7                                        |         r0 = 7;
    0x000063de ldrd r2, r3, [sp, 0x10]                           |         __asm ("ldrd r2, r3, [var_14h]");
    0x000063e2 add r1, pc                                        |         r1 = 0xc990;
    0x000063e4 bl 0xfcdc                                         |         fcn_0000fcdc (r0);
    0x000063e8 ldrd r3, r2, [sp, 0x10]                           |         __asm ("ldrd r3, r2, [var_14h]");
    0x000063ec mov.w r1, 0xff00                                  |         
    0x000063f0 movt r1, 0xf                                      |         r1 = 0xfff00;
    0x000063f4 and.w r1, r1, r3, lsl 8                           |         r1 &= (r3 << 8);
    0x000063f8 bic r3, r3, 0xff0                                 |         r3 = BIT_MASK (r3, 0xff0);
    0x000063fc bic r3, r3, 0xf                                   |         r3 = BIT_MASK (r3, 0xf);
    0x00006400 orr.w r3, r3, r2, lsr 20                          |         r3 |= (r2 >> 20);
    0x00006404 str r3, [r4, 4]                                   |         *((r4 + 4)) = r3;
    0x00006406 movs r3, 0                                        |         
    0x00006408 movt r3, 0xfff0                                   |         r3 = 0x-100000;
    0x0000640c and.w r3, r3, r2, lsl 12                          |         r3 &= (r2 << 12);
    0x00006410 uxtb r2, r2                                       |         r2 = (int8_t) r2;
    0x00006412 orrs r2, r1                                       |         r2 |= r1;
    0x00006414 orrs r3, r2                                       |         r3 |= r2;
    0x00006416 str r3, [r4]                                      |         *(r4) = r3;
    0x00006418 b 0x6492                                          |         goto label_3;
                                                                 | label_7:
    0x0000641a ldr r1, [pc, 0x190]                               |         
    0x0000641c mov r3, r5                                        |         r3 = r5;
    0x0000641e mov r2, r7                                        |         r2 = r7;
    0x00006420 movs r0, 7                                        |         r0 = 7;
    0x00006422 movs r5, 0                                        |         r5 = 0;
    0x00006424 add r1, pc                                        |         r1 = 0xc9d6;
    0x00006426 bl 0xfcdc                                         |         fcn_0000fcdc (r0);
    0x0000642a strd r6, r8, [r4]                                 |         __asm ("strd r6, r8, [r4]");
    0x0000642e b 0x627a                                          |         
                                                                 |     } while (1);
                                                                 | label_9:
    0x00006430 ldr r1, [pc, 0x17c]                               |     
    0x00006432 movs r0, 3                                        |     r0 = 3;
    0x00006434 add r1, pc                                        |     r1 = 0xc9e8;
    0x00006436 bl 0xfcdc                                         |     r0 = fcn_0000fcdc (r0);
    0x0000643a blx 0x2f88                                        |     cxa_finalize ();
    0x0000643c stc p8, c6, [r6, 0x14]!                           |     __asm ("stc p8, c6, [r6, 0x14]!");
    0x00006440 b 0x627a                                          |     goto label_0;
                                                                 | label_10:
    0x00006442 ldr r1, [pc, 0x170]                               |     
    0x00006444 mov r2, r5                                        |     r2 = r5;
    0x00006446 movs r0, 3                                        |     r0 = 3;
    0x00006448 add r1, pc                                        |     r1 = 0xca02;
    0x0000644a bl 0xfcdc                                         |     r0 = fcn_0000fcdc (r0);
    0x0000644e blx 0x2f88                                        |     r0 = cxa_finalize ();
    0x00006452 ldr r5, [r0]                                      |     r5 = *(r0);
    0x00006454 b 0x627a                                          |     goto label_0;
                                                                 | label_11:
    0x00006456 blx 0x2f88                                        |     r0 = cxa_finalize ();
    0x0000645a ldr r3, [r0]                                      |     r3 = *(r0);
    0x0000645c mov r4, r0                                        |     r4 = r0;
    0x0000645e cmp r3, 0x16                                      |     
                                                                 |     if (r3 == 0x16) {
    0x00006460 beq 0x654c                                        |         goto label_18;
                                                                 |     }
    0x00006462 ldr r1, [pc, 0x154]                               |     
    0x00006464 movs r0, 3                                        |     r0 = 3;
    0x00006466 add r1, pc                                        |     r1 = 0xca24;
    0x00006468 bl 0xfcdc                                         |     fcn_0000fcdc (r0);
    0x0000646a ldc2 p6, c4, [r8], -0xa0                          |     __asm ("ldc2 p6, c4, [r8], -0xa0");
    0x0000646c mov r0, r5                                        |     r0 = r5;
    0x0000646e blx 0x29cc                                        |     fcn_000029cc ();
                                                                 | label_5:
    0x00006472 mov r0, r7                                        |     r0 = r7;
    0x00006474 bl 0x10978                                        |     fcn_00010978 (r0);
    0x00006478 ldr r5, [r4]                                      |     r5 = *(r4);
    0x0000647a b 0x627a                                          |     goto label_0;
                                                                 | label_16:
    0x0000647c ldr r1, [pc, 0x13c]                               |     
    0x0000647e mov r2, r6                                        |     r2 = r6;
    0x00006480 add r1, pc                                        |     r1 = 0xca40;
                                                                 | label_2:
    0x00006482 movs r0, 3                                        |     r0 = 3;
    0x00006484 bl 0xfcdc                                         |     r0 = fcn_0000fcdc (r0);
    0x00006488 blx 0x2f88                                        |     cxa_finalize ();
    0x0000648c movs r3, 0x16                                     |     r3 = 0x16;
    0x0000648e mov r5, r3                                        |     r5 = r3;
    0x00006490 str r3, [r0]                                      |     *(r0) = r3;
                                                                 |     do {
                                                                 | label_3:
    0x00006492 mov r0, sb                                        |         r0 = sb;
    0x00006494 blx 0x29cc                                        |         fcn_000029cc ();
    0x00006498 mov r0, r6                                        |         r0 = r6;
    0x0000649a blx 0x29cc                                        |         fcn_000029cc ();
    0x0000649e b 0x627a                                          |         goto label_0;
                                                                 | label_14:
    0x000064a0 ldr r1, [pc, 0x11c]                               |         
    0x000064a2 add r1, pc                                        |         r1 = 0xca66;
                                                                 | label_1:
    0x000064a4 movs r0, 3                                        |         r0 = 3;
    0x000064a6 bl 0xfcdc                                         |         r0 = fcn_0000fcdc (r0);
    0x000064aa blx 0x2f88                                        |         cxa_finalize ();
    0x000064ae movs r3, 0x16                                     |         r3 = 0x16;
    0x000064b0 mov r4, r0                                        |         r4 = r0;
    0x000064b2 str r3, [r4]                                      |         *(r4) = r3;
    0x000064b4 mov r0, r5                                        |         r0 = r5;
    0x000064b6 blx 0x29cc                                        |         fcn_000029cc ();
                                                                 | label_4:
    0x000064ba mov r0, r7                                        |         r0 = r7;
    0x000064bc mov.w sb, 0                                       |         sb = 0;
    0x000064c0 bl 0x10978                                        |         fcn_00010978 (r0);
    0x000064c4 mov r6, sb                                        |         r6 = sb;
    0x000064c6 ldr r5, [r4]                                      |         r5 = *(r4);
    0x000064c8 b 0x6492                                          |         
                                                                 |     } while (1);
                                                                 | label_13:
    0x000064ca ldr r1, [pc, 0xf8]                                |     
    0x000064cc add r1, pc                                        |     r1 = 0xca96;
    0x000064ce b 0x64a4                                          |     goto label_1;
                                                                 | label_17:
    0x000064d0 ldr r1, [pc, 0xf4]                                |     
    0x000064d2 mov r2, sb                                        |     r2 = sb;
    0x000064d4 add r1, pc                                        |     r1 = 0xcaa0;
    0x000064d6 b 0x6482                                          |     goto label_2;
                                                                 | label_15:
    0x000064d8 ldr r1, [pc, 0xf0]                                |     
    0x000064da add.w r8, sp, 0x14                                |     r8 += var_14h;
    0x000064de add r7, sp, 0x10                                  |     r7 += var_10h;
    0x000064e0 mov r3, r8                                        |     r3 = r8;
    0x000064e2 mov r2, r7                                        |     r2 = r7;
    0x000064e4 mov r0, sb                                        |     r0 = sb;
    0x000064e6 add r1, pc                                        |     r1 = 0xcab6;
    0x000064e8 blx 0x2848                                        |     r0 = fcn_00002848 ();
    0x000064ec cmp r0, 2                                         |     
                                                                 |     if (r0 == 2) {
    0x000064ee bne 0x656e                                        |         
    0x000064f0 ldr r1, [pc, 0xdc]                                |         
    0x000064f2 movs r0, 7                                        |         r0 = 7;
    0x000064f4 ldr.w r3, [r8]                                    |         r3 = *(r8);
    0x000064f8 ldr r2, [r7]                                      |         r2 = *(r7);
    0x000064fa add r1, pc                                        |         r1 = 0xcace;
    0x000064fc bl 0xfcdc                                         |         fcn_0000fcdc (r0);
    0x00006500 ldr r3, [r7]                                      |         r3 = *(r7);
    0x00006502 mov.w r1, 0xff00                                  |         r1 = 0xff00;
    0x00006506 ldr.w r2, [r8]                                    |         r2 = *(r8);
    0x0000650a movt r1, 0xf                                      |         r1 = (r1 & 0xFFFF) | 0xf0000;
    0x0000650e and.w r0, r1, r3, lsl 8                           |         r0 = r1 & (r3 << 8);
    0x00006512 bic r3, r3, 0xff0                                 |         r3 = BIT_MASK (r3, 0xff0);
    0x00006516 bic r3, r3, 0xf                                   |         r3 = BIT_MASK (r3, 0xf);
    0x0000651a orr.w r3, r3, r2, lsr 20                          |         r3 |= (r2 >> 20);
    0x0000651e str r3, [r4, 4]                                   |         *((r4 + 4)) = r3;
    0x00006520 movs r3, 0                                        |         
    0x00006522 movt r3, 0xfff0                                   |         r3 = 0x-100000;
    0x00006526 and.w r1, r3, r2, lsl 12                          |         r1 = r3 & (r2 << 12);
    0x0000652a uxtb r3, r2                                       |         r3 = (int8_t) r2;
    0x0000652c orrs r3, r0                                       |         r3 |= r0;
    0x0000652e orrs r3, r1                                       |         r3 |= r1;
    0x00006530 str r3, [r4]                                      |         *(r4) = r3;
    0x00006532 b 0x6492                                          |         goto label_3;
                                                                 | label_12:
    0x00006534 ldr r1, [pc, 0x9c]                                |         
    0x00006536 movs r0, 3                                        |         r0 = 3;
    0x00006538 add r1, pc                                        |         r1 = 0xcb10;
    0x0000653a bl 0xfcdc                                         |         fcn_0000fcdc (r0);
    0x0000653e mov r0, r5                                        |         r0 = r5;
    0x00006540 blx 0x29cc                                        |         fcn_000029cc ();
    0x00006544 blx 0x2f88                                        |         r0 = cxa_finalize ();
    0x00006548 mov r4, r0                                        |         r4 = r0;
    0x0000654a b 0x64ba                                          |         goto label_4;
                                                                 | label_18:
    0x0000654c ldrd r2, r3, [r5]                                 |         __asm ("ldrd r2, r3, [r5]");
    0x00006550 movs r0, 3                                        |         r0 = 3;
    0x00006552 strd fp, r6, [sp, 8]                              |         __asm ("strd fp, r6, [var_8h]");
    0x00006556 str.w sl, [sp, 4]                                 |         __asm ("str.w sl, [var_4h]");
    0x0000655a ldr r1, [r5, 8]                                   |         r1 = *((r5 + 8));
    0x0000655c str r1, [sp]                                      |         *(sp) = r1;
    0x0000655e ldr r1, [pc, 0x78]                                |         
    0x00006560 add r1, pc                                        |         r1 = 0xcb3e;
    0x00006562 bl 0xfcdc                                         |         fcn_0000fcdc (r0);
    0x00006564 invalid                                           |         
    0x00006566 mov r0, r5                                        |         r0 = r5;
    0x00006568 blx 0x29cc                                        |         fcn_000029cc ();
    0x0000656c b 0x6472                                          |         goto label_5;
                                                                 |     }
    0x0000656e ldr r1, [pc, 0x6c]                                |     
    0x00006570 mov r2, sb                                        |     r2 = sb;
    0x00006572 add r1, pc                                        |     r1 = 0xcb54;
    0x00006574 b 0x6482                                          |     goto label_2;
                                                                 | label_8:
    0x00006576 blx 0x2cdc                                        |     fprintf_chk ()
    0x0000657a nop                                               |     
    0x0000657c ldrh r4, [r3, 0x10]                               |     r4 = *((r3 + 0x10));
    0x0000657e movs r2, r0                                       |     r2 = r0;
    0x00006580 lsls r4, r1, 0xd                                  |     r4 = r1 << 0xd;
    0x00006582 movs r0, r0                                       |     
    0x00006584 lsrs r0, r5, 0x15                                 |     r0 = r5 >> 0x15;
    0x00006586 movs r1, r0                                       |     r1 = r0;
    0x00006588 lsrs r4, r7, 0x15                                 |     r4 = r7 >> 0x15;
    0x0000658a movs r1, r0                                       |     r1 = r0;
    0x0000658c ldrh r6, [r7, 0xc]                                |     r6 = *((r7 + 0xc));
    0x0000658e movs r2, r0                                       |     r2 = r0;
    0x00006590 lsrs r4, r6, 0x15                                 |     r4 = r6 >> 0x15;
    0x00006592 movs r1, r0                                       |     r1 = r0;
    0x00006594 lsrs r6, r6, 0x1d                                 |     r6 >>= 0x1d;
    0x00006596 movs r1, r0                                       |     r1 = r0;
    0x00006598 lsrs r2, r2, 0x17                                 |     r2 >>= 0x17;
    0x0000659a movs r1, r0                                       |     r1 = r0;
    0x0000659c lsrs r0, r5, 0x17                                 |     r0 = r5 >> 0x17;
    0x0000659e movs r1, r0                                       |     r1 = r0;
    0x000065a0 lsrs r2, r5, 0x18                                 |     r2 = r5 >> 0x18;
    0x000065a2 movs r1, r0                                       |     r1 = r0;
    0x000065a4 lsrs r0, r2, 0x18                                 |     r0 = r2 >> 0x18;
    0x000065a6 movs r1, r0                                       |     r1 = r0;
    0x000065a8 lsrs r2, r1, 0x18                                 |     r2 = r1 >> 0x18;
    0x000065aa movs r1, r0                                       |     r1 = r0;
    0x000065ac lsrs r0, r5, 0xe                                  |     r0 = r5 >> 0xe;
    0x000065ae movs r1, r0                                       |     r1 = r0;
    0x000065b0 lsrs r0, r2, 0xf                                  |     r0 = r2 >> 0xf;
    0x000065b2 movs r1, r0                                       |     r1 = r0;
    0x000065b4 lsrs r4, r7, 0xf                                  |     r4 = r7 >> 0xf;
    0x000065b6 movs r1, r0                                       |     r1 = r0;
    0x000065b8 lsrs r2, r1, 0x11                                 |     r2 = r1 >> 0x11;
    0x000065ba movs r1, r0                                       |     r1 = r0;
    0x000065bc lsrs r0, r2, 0x16                                 |     r0 = r2 >> 0x16;
    0x000065be movs r1, r0                                       |     r1 = r0;
    0x000065c0 lsrs r2, r0, 0x12                                 |     r2 = r0 >> 0x12;
    0x000065c2 movs r1, r0                                       |     r1 = r0;
    0x000065c4 lsrs r4, r7, 0x10                                 |     r4 = r7 >> 0x10;
    0x000065c6 movs r1, r0                                       |     r1 = r0;
    0x000065c8 lsrs r0, r7, 0x12                                 |     r0 = r7 >> 0x12;
    0x000065ca movs r1, r0                                       |     r1 = r0;
    0x000065cc lsrs r6, r7, 0x13                                 |     r6 = r7 >> 0x13;
    0x000065ce movs r1, r0                                       |     r1 = r0;
    0x000065d0 lsrs r2, r7, 0x12                                 |     r2 = r7 >> 0x12;
    0x000065d2 movs r1, r0                                       |     r1 = r0;
    0x000065d4 lsrs r0, r4, 0xe                                  |     r0 = r4 >> 0xe;
    0x000065d6 movs r1, r0                                       |     r1 = r0;
    0x000065d8 lsrs r4, r7, 0xb                                  |     r4 = r7 >> 0xb;
    0x000065da movs r1, r0                                       |     r1 = r0;
    0x000065dc lsrs r2, r3, 0x10                                 |     r2 = r3 >> 0x10;
    0x000065de movs r1, r0                                       |     r1 = r0;
                                                                 | }
    ; assembly                                           | /* r2dec pseudo code output */
                                                         | /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/sbin/fwmgr @ 0x65e0 */
                                                         | #include <stdint.h>
                                                         |  
    ; (fcn) fcn.000065e0 ()                              | void fcn_000065e0 (char * arg1) {
                                                         |     int16_t var_0h;
                                                         |     int16_t var_4h;
                                                         |     char * dest;
                                                         |     int16_t var_4ch;
                                                         |     int16_t var_54h;
                                                         |     char * oflag;
                                                         |     int16_t var_7ch;
                                                         |     int16_t var_32h;
                                                         |     r0 = arg1;
                                                         |     if (? >= ?) {
    0x000065e0 ldrbmi lr, [r0, sp, lsr 18]!              |         
                                                         |     }
    0x000065e4 sub sp, 0x80                              |     
    0x000065e6 ldr r4, [pc, 0x190]                       |     
    0x000065e8 add r5, sp, 0x5c                          |     r5 += oflag;
    0x000065ea mov r6, r0                                |     r6 = r0;
    0x000065ec mov r0, r5                                |     r0 = r5;
    0x000065ee ldr r1, [pc, 0x18c]                       |     r1 = *(0x677e);
    0x000065f0 add r4, pc                                |     r4 = 0xcd6e;
    0x000065f2 ldr r3, [pc, 0x18c]                       |     
    0x000065f4 ldr r2, [pc, 0x18c]                       |     r2 = *(0x6784);
    0x000065f6 ldr r1, [r4, r1]                          |     
    0x000065f8 add r3, pc                                |     r3 = 0xcd7e;
    0x000065fa ldr r1, [r1]                              |     r1 = *(0xcd6e);
    0x000065fc str r1, [sp, 0x7c]                        |     var_7ch = r1;
    0x000065fe mov.w r1, 0                               |     r1 = 0;
    0x00006602 movw r1, 0x105                            |     r1 = 0x105;
    0x00006606 ldr r7, [r3, r2]                          |     r7 = *(0xcd7e);
    0x00006608 ldr r3, [r7]                              |     
    0x0000660a ldr r3, [r3, 0x30]                        |     r3 = *(0xcdae);
    0x0000660c blx r3                                    |     r0 = uint32_t (*r3)(uint32_t, uint32_t, uint32_t, uint32_t) (r0, r1, r2, r3);
    0x0000660e cbz r0, 0x6634                            |     
                                                         |     while (r5 < oflag) {
                                                         | label_1:
    0x00006610 blx 0x2f88                                |         r0 = cxa_finalize ();
    0x00006614 ldr r4, [r0]                              |         r4 = *(r0);
                                                         | label_0:
    0x00006616 ldr r2, [pc, 0x170]                       |         
    0x00006618 ldr r3, [pc, 0x160]                       |         r3 = *(0x677c);
    0x0000661a add r2, pc                                |         r2 = 0xcda8;
    0x0000661c ldr r3, [r2, r3]                          |         r3 = *(0xcda8);
    0x0000661e ldr r2, [r3]                              |         r2 = *(0xcda8);
    0x00006620 ldr r3, [sp, 0x7c]                        |         r3 = var_7ch;
    0x00006622 eors r2, r3                               |         r2 ^= r3;
    0x00006624 mov.w r3, 0                               |         r3 = 0;
                                                         |         if (r2 != r3) {
    0x00006628 bne.w 0x6772                              |             goto label_2;
                                                         |         }
    0x0000662c mov r0, r4                                |         r0 = r4;
    0x0000662e add sp, 0x80                              |         
    0x00006630 pop.w {r4, r5, r6, r7, r8, sb, sl, pc}    |         
    0x00006634 mov r1, r0                                |         r1 = r0;
    0x00006636 mov r4, r0                                |         r4 = r0;
    0x00006638 mov r0, r5                                |         r0 = r5;
    0x0000663a blx 0x2730                                |         open (r0, r1, r2);
    0x0000663e subs r5, r0, 0                            |         r5 -= oflag;
    0x00006640 blt 0x6610                                |         
                                                         |     }
    0x00006642 mov sb, sp                                |     sb = sp;
    0x00006644 movs r2, 0x58                             |     r2 = 0x58;
    0x00006646 mov r1, sb                                |     r1 = sb;
    0x00006648 blx 0x29d8                                |     r0 = fcn_000029d8 ();
    0x0000664c mov r8, r0                                |     r8 = r0;
    0x0000664e mov r0, r5                                |     r0 = r5;
    0x00006650 blx 0x2bf8                                |     EVP_PKEY_verify_init ();
    0x00006654 cmp.w r8, 0x58                            |     
                                                         |     if (r8 != 0x58) {
    0x00006658 beq 0x6666                                |         
    0x0000665a blx 0x2f88                                |         cxa_finalize ();
    0x0000665e movs r3, 0x3d                             |         r3 = 0x3d;
    0x00006660 mov r4, r3                                |         r4 = r3;
    0x00006662 str r3, [r0]                              |         *(r0) = r3;
    0x00006664 b 0x6616                                  |         goto label_0;
                                                         |     }
    0x00006666 movs r2, 0x54                             |     r2 = 0x54;
    0x00006668 mov r1, sb                                |     r1 = sb;
    0x0000666a mov r0, r4                                |     r0 = r4;
    0x0000666c blx 0x29fc                                |     fcn_000029fc ();
    0x00006670 ldr r3, [sp, 0x54]                        |     r3 = var_54h;
    0x00006672 cmp r0, r3                                |     
                                                         |     if (r0 == r3) {
    0x00006674 bne 0x6684                                |         
    0x00006676 ldr r3, [sp, 4]                           |         r3 = var_4h;
    0x00006678 add.w r8, sp, 0xc                         |         r8 += dest;
    0x0000667c add.w sl, sp, 0x4c                        |         sl += var_4ch;
    0x00006680 cmp r3, 0                                 |         
                                                         |         if (r3 == 0) {
    0x00006682 beq 0x6724                                |             goto label_3;
                                                         |         }
                                                         |     }
    0x00006684 ldr r1, [pc, 0x104]                       |     
    0x00006686 movs r0, 5                                |     r0 = 5;
    0x00006688 add r1, pc                                |     r1 = 0xce18;
    0x0000668a bl 0xfcdc                                 |     r0 = fcn_0000fcdc (r0);
    0x0000668e bl 0x105d0                                |     fcn_000105d0 ();
    0x00006692 ldr r1, [pc, 0xfc]                        |     
    0x00006694 add r1, pc                                |     r1 = 0xce2a;
    0x00006696 blx 0x2f70                                |     r0 = vdprintf_chk ();
                                                         |     if (r0 != 0) {
    0x0000669a cbz r0, 0x66aa                            |         
    0x0000669c bl 0x105d0                                |         fcn_000105d0 ();
    0x000066a0 ldr r1, [pc, 0xf0]                        |         
    0x000066a2 add r1, pc                                |         r1 = 0xce3a;
    0x000066a4 blx 0x2f70                                |         r0 = vdprintf_chk ();
                                                         |         if (r0 != 0) {
    0x000066a8 cbnz r0, 0x66be                           |             goto label_4;
                                                         |         }
                                                         |     }
    0x000066aa ldr r0, [pc, 0xec]                        |     
    0x000066ac add r0, pc                                |     r0 = 0xce4a;
    0x000066ae blx 0x28d8                                |     r0 = fcn_000028d8 ();
    0x000066b2 ubfx r3, r0, 8, 8                         |     r3 = (r0 >> 8) & ((1 << 8) - 1);
    0x000066b6 and r0, r0, 0x7f                          |     r0 &= 0x7f;
    0x000066ba orrs r3, r0                               |     r3 |= r0;
                                                         |     if (r3 != r0) {
    0x000066bc bne 0x675c                                |         goto label_5;
                                                         |     }
                                                         | label_4:
    0x000066be movs r2, 0x58                             |     r2 = 0x58;
    0x000066c0 movs r1, 0                                |     r1 = 0;
    0x000066c2 mov r0, sb                                |     r0 = sb;
    0x000066c4 add.w r8, sp, 0xc                         |     r8 += dest;
    0x000066c8 blx 0x2938                                |     fcn_00002938 ();
    0x000066cc movs r2, 0                                |     r2 = 0;
    0x000066ce movs r1, 0x40                             |     r1 = 0x40;
    0x000066d0 mov r0, r8                                |     r0 = r8;
    0x000066d2 blx 0x2abc                                |     r0 = fcn_00002abc ();
    0x000066d6 cmp r0, 0x40                              |     
    0x000066d8 beq 0x66e6                                |     
                                                         |     while (r0 != 8) {
    0x000066da blx 0x2f88                                |         cxa_finalize ();
    0x000066de movs r3, 0xb                              |         r3 = 0xb;
    0x000066e0 mov r4, r3                                |         r4 = r3;
    0x000066e2 str r3, [r0]                              |         *(r0) = r3;
    0x000066e4 b 0x6616                                  |         goto label_0;
    0x000066e6 add.w sl, sp, 0x4c                        |         sl += var_4ch;
    0x000066ea movs r2, 0                                |         r2 = 0;
    0x000066ec movs r1, 8                                |         r1 = 8;
    0x000066ee mov r0, sl                                |         r0 = sl;
    0x000066f0 blx 0x2abc                                |         r0 = fcn_00002abc ();
    0x000066f4 cmp r0, 8                                 |         
    0x000066f6 bne 0x66da                                |         
                                                         |     }
    0x000066f8 movw r3, 0x7060                           |     
    0x000066fc movs r0, 0                                |     r0 = 0;
    0x000066fe movt r3, 0xf66b                           |     
    0x00006702 movs r2, 0x54                             |     r2 = 0x54;
    0x00006704 mov r1, sb                                |     r1 = sb;
    0x00006706 str r3, [sp]                              |     *(sp) = r3;
    0x00006708 str r0, [sp, 4]                           |     var_4h = r0;
    0x0000670a blx 0x29fc                                |     fcn_000029fc ();
    0x0000670e ldr r3, [r7]                              |     r3 = *(r7);
    0x00006710 mov r1, sb                                |     r1 = sb;
    0x00006712 str r0, [sp, 0x54]                        |     var_54h = r0;
    0x00006714 movs r2, 0x58                             |     r2 = 0x58;
    0x00006716 movw r0, 0x105                            |     r0 = 0x105;
    0x0000671a ldr r3, [r3, 0x34]                        |     r3 = *(0xf66b7094);
    0x0000671c blx r3                                    |     r0 = uint32_t (*r3)(uint32_t, uint32_t, uint32_t, uint32_t) (r0, r1, r2, r3);
    0x0000671e cmp r0, 0                                 |     
                                                         |     if (r0 != 0) {
    0x00006720 bne.w 0x6610                              |         goto label_1;
                                                         |     }
                                                         | label_3:
    0x00006724 ldr r3, [pc, 0x74]                        |     
    0x00006726 ldm.w sl, {r0, r1}                        |     r0 = *(sl);
                                                         |     r1 = *((sl + 4));
    0x00006728 movs r3, r0                               |     r3 = r0;
    0x0000672a add r3, pc                                |     r3 = 0xceca;
    0x0000672c stm.w r3, {r0, r1}                        |     *(r3) = r0;
                                                         |     *((r3 + 4)) = r1;
                                                         |     if (r6 == 0) {
    0x00006730 cbz r6, 0x6750                            |         goto label_6;
                                                         |     }
    0x00006732 mov r7, r8                                |     r7 = r8;
                                                         |     do {
    0x00006734 mov r5, r7                                |         r5 = r7;
    0x00006736 adds r6, 0x10                             |         r6 += 0x10;
    0x00006738 ldm r5!, {r0, r1, r2, r3}                 |         r0 = *(r5!);
                                                         |         r1 = *((r5! + 4));
                                                         |         r2 = *((r5! + 8));
                                                         |         r3 = *((r5! + 12));
    0x0000673a adds r7, 0x10                             |         r7 += 0x10;
    0x0000673c cmp r5, sl                                |         
    0x0000673e str r0, [r6, -0x10]                       |         *((r6 - 0x10)) = r0;
    0x00006742 str r1, [r6, -0xc]                        |         *((r6 - 0xc)) = r1;
    0x00006746 str r2, [r6, -0x8]                        |         *((r6 - 0x8)) = r2;
    0x0000674a str r3, [r6, -0x4]                        |         *((r6 - 0x4)) = r3;
    0x0000674e bne 0x6734                                |         
                                                         |     } while (r5 != sl);
                                                         | label_6:
    0x00006750 movs r2, 0x4c                             |     r2 = 0x4c;
    0x00006752 movs r1, 0x40                             |     r1 = 0x40;
    0x00006754 mov r0, r8                                |     r0 = r8;
    0x00006756 blx 0x2b2c                                |     strcpy (r0, r1);
    0x0000675a b 0x6616                                  |     goto label_0;
                                                         | label_5:
    0x0000675c ldr r1, [pc, 0x40]                        |     
    0x0000675e movs r0, 4                                |     r0 = 4;
    0x00006760 add r1, pc                                |     r1 = 0xcf04;
    0x00006762 bl 0xfcdc                                 |     r0 = fcn_0000fcdc (r0);
    0x00006766 blx 0x2f88                                |     cxa_finalize ();
    0x0000676a movs r3, 0x13                             |     r3 = 0x13;
    0x0000676c mov r4, r3                                |     r4 = r3;
    0x0000676e str r3, [r0]                              |     *(r0) = r3;
    0x00006770 b 0x6616                                  |     goto label_0;
                                                         | label_2:
    0x00006772 blx 0x2cdc                                |     fprintf_chk ()
    0x00006776 nop                                       |     
    0x00006778 strh r4, [r1, 0x32]                       |     var_32h = r4;
    0x0000677a movs r2, r0                               |     r2 = r0;
    0x0000677c lsls r4, r1, 0xd                          |     r4 = r1 << 0xd;
    0x0000677e movs r0, r0                               |     
    0x00006780 strh r4, [r0, 0x32]                       |     var_32h = r4;
    0x00006782 movs r2, r0                               |     r2 = r0;
    0x00006784 lsls r4, r6, 0xd                          |     r4 = r6 << 0xd;
    0x00006786 movs r0, r0                               |     
    0x00006788 strh r2, [r4, 0x30]                       |     *((r4 + 0x30)) = r2;
    0x0000678a movs r2, r0                               |     r2 = r0;
    0x0000678c lsrs r4, r7, 0xe                          |     r4 = r7 >> 0xe;
    0x0000678e movs r1, r0                               |     r1 = r0;
    0x00006790 ssat16 r0, 1, r8                          |     __asm ("ssat16 r0, 1, r8");
    0x00006794 ssat16 r0, 1, r6                          |     __asm ("ssat16 r0, 1, r6");
    0x00006798 lsrs r4, r6, 0xe                          |     r4 = r6 >> 0xe;
    0x0000679a movs r1, r0                               |     r1 = r0;
    0x0000679c ldrh r6, [r4, 0x14]                       |     r6 = *((r4 + 0x14));
    0x0000679e movs r2, r0                               |     r2 = r0;
    0x000067a0 lsrs r4, r3, 0xc                          |     r4 = r3 >> 0xc;
    0x000067a2 movs r1, r0                               |     r1 = r0;
    0x000067a4 bx lr                                     |     return;
                                                         | }
    ; assembly                                               | /* r2dec pseudo code output */
                                                             | /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/sbin/fwmgr @ 0x67a8 */
                                                             | #include <stdint.h>
                                                             |  
    ; (fcn) fcn.000067a8 ()                                  | void fcn_000067a8 (uint32_t arg1, int16_t arg2) {
                                                             |     int16_t var_0h;
                                                             |     char * str;
                                                             |     int16_t var_4ch;
                                                             |     int16_t var_0h_2;
                                                             |     int16_t var_ch_2;
                                                             |     int16_t var_10h;
                                                             |     int16_t var_14h;
                                                             |     int16_t var_1ch;
                                                             |     char * dest;
                                                             |     int16_t var_60h;
                                                             |     char * path;
                                                             |     char * s2;
                                                             |     int16_t var_e4h;
                                                             |     r0 = arg1;
                                                             |     r1 = arg2;
    0x000067a8 svcmi 0xf0e92d                                |     __asm ("svcmi 0xf0e92d");
    0x000067ac sub sp, 0xec                                  |     
    0x000067ae ldr.w r4, [pc, 0x530]                         |     r4 = *(0x00006ce0);
    0x000067b2 ldr.w r2, [pc, 0x530]                         |     
    0x000067b6 add r4, pc                                    |     r4 += pc;
    0x000067b8 ldr.w r6, [pc, 0x52c]                         |     r6 = *(0x00006ce8);
    0x000067bc ldr.w r3, [pc, 0x52c]                         |     r3 = *(0x6cec);
    0x000067c0 ldr r2, [r4, r2]                              |     r2 = *((r4 + r2));
    0x000067c2 add r6, pc                                    |     r6 += pc;
    0x000067c4 ldr r2, [r2]                                  |     r2 = *(0x6ce6);
    0x000067c6 str r2, [sp, 0xe4]                            |     var_e4h = r2;
    0x000067c8 mov.w r2, 0                                   |     r2 = 0;
    0x000067cc ldr r3, [r6, r3]                              |     r3 = *((r6 + r3));
    0x000067ce ldrb r3, [r3]                                 |     r3 = *(r3);
                                                             |     if (r3 == 0) {
    0x000067d0 cbz r3, 0x6804                                |         goto label_13;
                                                             |     }
    0x000067d2 ldr.w r7, [pc, 0x51c]                         |     r7 = *(0x00006cf0);
    0x000067d6 add r7, pc                                    |     r7 += pc;
    0x000067d8 ldrb r3, [r7, 8]                              |     r3 = *((r7 + 8));
    0x000067da cmp r3, 0                                     |     
                                                             |     if (r3 == 0) {
    0x000067dc beq.w 0x6986                                  |         goto label_14;
                                                             |     }
                                                             |     do {
                                                             | label_0:
    0x000067e0 movs r4, 0                                    |         r4 = 0;
                                                             | label_1:
    0x000067e2 ldr.w r2, [pc, 0x510]                         |         r2 = *(0x00006cf4);
    0x000067e6 ldr.w r3, [pc, 0x4fc]                         |         r3 = *(0x6ce6);
    0x000067ea add r2, pc                                    |         r2 += pc;
    0x000067ec ldr r3, [r2, r3]                              |         r3 = *((r2 + r3));
    0x000067ee ldr r2, [r3]                                  |         r2 = *(0x6ce6);
    0x000067f0 ldr r3, [sp, 0xe4]                            |         r3 = var_e4h;
    0x000067f2 eors r2, r3                                   |         r2 ^= r3;
    0x000067f4 mov.w r3, 0                                   |         r3 = 0;
                                                             |         if (r2 != r3) {
    0x000067f8 bne.w 0x6cdc                                  |             goto label_15;
                                                             |         }
    0x000067fc mov r0, r4                                    |         r0 = r4;
    0x000067fe add sp, 0xec                                  |         
    0x00006800 pop.w {r4, r5, r6, r7, r8, sb, sl, fp, pc}    |         
                                                             | label_13:
    0x00006804 ldr.w r3, [pc, 0x4f0]                         |         r3 = *(0x00006cf8);
    0x00006808 mov r4, r0                                    |         r4 = r0;
    0x0000680a add r3, pc                                    |         r3 += pc;
    0x0000680c ldr r2, [r3]                                  |         r2 = *(r3);
    0x0000680e cmp r2, r0                                    |         
    0x00006810 beq 0x67e0                                    |         
                                                             |     } while (r2 == r0);
    0x00006812 ldr.w r2, [r3, 0xc4]                          |     r2 = *((r3 + 0xc4));
    0x00006816 cmp r2, r0                                    |     
                                                             |     if (r2 == r0) {
    0x00006818 beq 0x67e0                                    |         goto label_0;
                                                             |     }
    0x0000681a sub.w r7, r1, 1                               |     r7 = r1 - 1;
    0x0000681e mov r5, r1                                    |     r5 = r1;
    0x00006820 clz r7, r7                                    |     r7 &= r7;
    0x00006824 lsrs r7, r7, 5                                |     r7 >>= 5;
    0x00006826 lsls r1, r7, 2                                |     r1 = r7 << 2;
    0x00006828 add.w sb, r3, r1                              |     sb = r3 + r1;
    0x0000682c ldr.w r8, [sb, 0x188]                         |     r8 = *((sb + 0x188));
    0x0000682e strh r0, [r1, 0xc]                            |     *((r1 + 0xc)) = r0;
    0x00006830 cmp.w r8, 0                                   |     
                                                             |     if (r8 < 0) {
    0x00006834 blt.w 0x6a90                                  |         goto label_16;
                                                             |     }
    0x00006838 cmp.w r8, 0                                   |     
                                                             |     if (r8 == 0) {
    0x0000683c beq 0x67e0                                    |         goto label_0;
                                                             |     }
                                                             | label_2:
    0x0000683e blx 0x2f88                                    |     cxa_finalize ();
    0x00006842 cmp.w r8, 1                                   |     
    0x00006846 mov sl, r0                                    |     sl = r0;
                                                             |     if (r8 > 1) {
    0x00006848 bgt.w 0x6be4                                  |         goto label_17;
                                                             |     }
    0x0000684a strh r4, [r1, 0xe]                            |     *((r1 + 0xe)) = r4;
    0x0000684c ldr.w r3, [pc, 0x4ac]                         |     r3 = *(0x00006cfc);
    0x00006850 add r3, pc                                    |     r3 += pc;
    0x00006852 ldr r2, [r3]                                  |     r2 = *(r3);
    0x00006854 adds r2, 1                                    |     r2++;
                                                             |     if (r2 == 1) {
    0x00006856 beq.w 0x6ac8                                  |         goto label_18;
                                                             |     }
    0x0000685a ldr.w r3, [r3, 0xc4]                          |     r3 = *((r3 + 0xc4));
    0x0000685e adds r3, 1                                    |     r3++;
    0x00006860 it eq                                         |     
                                                             |     if (r3 != 1) {
    0x00006862 moveq fp, 1                                   |         
                                                             |     }
                                                             |     if (r3 != 1) {
    0x00006866 bne.w 0x6c3e                                  |         goto label_19;
                                                             |     }
                                                             | label_4:
    0x0000686a cmp r5, 4                                     |     
                                                             |     if (r5 == 4) {
    0x0000686c beq.w 0x6bfa                                  |         goto label_20;
                                                             |     }
    0x00006870 cmp r5, 1                                     |     
                                                             |     if (r5 < 1) {
    0x00006872 bls.w 0x6b18                                  |         goto label_21;
                                                             |     }
    0x00006874 strh r1, [r2, 0xa]                            |     *((r2 + 0xa)) = r1;
    0x00006876 movs r3, 0xc4                                 |     r3 = 0xc4;
    0x00006878 ldr.w ip, [pc, 0x484]                         |     ip = *(0x00006d00);
    0x0000687c mul r7, r3, fp                                |     r7 = r3 * fp;
    0x00006880 ldr.w sb, [pc, 0x480]                         |     sb = *(0x00006d04);
    0x00006884 add ip, pc                                    |     
    0x00006886 add sb, pc                                    |     sb += pc;
    0x00006888 add.w ip, ip, 0x4c                            |     
    0x0000688a lsrs r4, r1, 0x11                             |     r4 = r1 >> 0x11;
    0x0000688c add.w r3, sb, r7                              |     r3 = sb + r7;
    0x00006890 add.w r2, r7, 0x44                            |     r2 = r7 + 0x44;
    0x00006894 add.w lr, r3, 4                               |     lr = r3 + 4;
    0x00006898 str r3, [sp, 0x10]                            |     var_10h = r3;
    0x0000689a str r2, [sp, 0xc]                             |     var_ch_2 = r2;
    0x0000689c add.w r8, r7, 4                               |     r8 = r7 + 4;
    0x000068a0 ldm.w ip!, {r0, r1, r2, r3}                   |     r0 = *(ip!);
                                                             |     r1 = *((ip! + 4));
                                                             |     r2 = *((ip! + 8));
                                                             |     r3 = *((ip! + 12));
    0x000068a4 add r8, sb                                    |     r8 += sb;
    0x000068a6 stm.w lr!, {r0, r1, r2, r3}                   |     *(lr!) = r0;
                                                             |     *((lr! + 4)) = r1;
                                                             |     *((lr! + 8)) = r2;
                                                             |     *((lr! + 12)) = r3;
    0x000068aa ldm.w ip!, {r0, r1, r2, r3}                   |     r0 = *(ip!);
                                                             |     r1 = *((ip! + 4));
                                                             |     r2 = *((ip! + 8));
                                                             |     r3 = *((ip! + 12));
    0x000068ae stm.w lr!, {r0, r1, r2, r3}                   |     *(lr!) = r0;
                                                             |     *((lr! + 4)) = r1;
                                                             |     *((lr! + 8)) = r2;
                                                             |     *((lr! + 12)) = r3;
    0x000068b2 ldm.w ip!, {r0, r1, r2, r3}                   |     r0 = *(ip!);
                                                             |     r1 = *((ip! + 4));
                                                             |     r2 = *((ip! + 8));
                                                             |     r3 = *((ip! + 12));
    0x000068b6 stm.w lr!, {r0, r1, r2, r3}                   |     *(lr!) = r0;
                                                             |     *((lr! + 4)) = r1;
                                                             |     *((lr! + 8)) = r2;
                                                             |     *((lr! + 12)) = r3;
    0x000068ba ldm.w ip, {r0, r1, r2, r3}                    |     r0 = *(ip);
                                                             |     r1 = *((ip + 4));
                                                             |     r2 = *((ip + 8));
                                                             |     r3 = *((ip + 12));
    0x000068be stm.w lr, {r0, r1, r2, r3}                    |     *(lr) = r0;
                                                             |     *((lr + 4)) = r1;
                                                             |     *((lr + 8)) = r2;
                                                             |     *((lr + 12)) = r3;
    0x000068c2 movs r1, 0x40                                 |     r1 = 0x40;
    0x000068c4 ldr r2, [sp, 0xc]                             |     r2 = var_ch_2;
    0x000068c6 add.w r0, sb, r2                              |     r0 = sb + r2;
    0x000068ca movs r2, 0                                    |     r2 = 0;
    0x000068cc blx 0x2abc                                    |     r0 = fcn_00002abc ();
    0x000068d0 cmp r0, 0                                     |     
                                                             |     if (r0 < 0) {
    0x000068d2 blt.w 0x6aba                                  |         goto label_8;
                                                             |     }
    0x000068d6 cmp r5, 3                                     |     
                                                             |     if (r5 != 3) {
    0x000068d8 bne.w 0x6c26                                  |         goto label_22;
                                                             |     }
    0x000068dc movs r3, 0xc4                                 |     r3 = 0xc4;
    0x000068de rsb.w r0, fp, 1                               |     r0 = 1 - fp;
    0x000068e2 mla r0, r3, r0, sb                            |     __asm ("mla r0, r3, r0, sb");
    0x000068e6 add r5, sp, 0xa4                              |     r5 += s2;
    0x000068e8 mov r2, r5                                    |     r2 = r5;
    0x000068ea movs r1, 0xc0                                 |     r1 = 0xc0;
    0x000068ec adds r0, 4                                    |     r0 += 4;
    0x000068ee mov r7, r5                                    |     r7 = r5;
    0x000068f0 blx 0x27cc                                    |     SHA512 ();
    0x000068f4 ldr r3, [sp, 0x10]                            |     r3 = var_10h;
    0x000068f6 add.w fp, r3, 0x84                            |     
    0x000068fa ldm r7!, {r0, r1, r2, r3}                     |     r0 = *(r7!);
                                                             |     r1 = *((r7! + 4));
                                                             |     r2 = *((r7! + 8));
                                                             |     r3 = *((r7! + 12));
    0x000068fc stm.w fp!, {r0, r1, r2, r3}                   |     *(fp!) = r0;
                                                             |     *((fp! + 4)) = r1;
                                                             |     *((fp! + 8)) = r2;
                                                             |     *((fp! + 12)) = r3;
    0x00006900 ldm r7!, {r0, r1, r2, r3}                     |     r0 = *(r7!);
                                                             |     r1 = *((r7! + 4));
                                                             |     r2 = *((r7! + 8));
                                                             |     r3 = *((r7! + 12));
    0x00006902 stm.w fp!, {r0, r1, r2, r3}                   |     *(fp!) = r0;
                                                             |     *((fp! + 4)) = r1;
                                                             |     *((fp! + 8)) = r2;
                                                             |     *((fp! + 12)) = r3;
    0x00006906 ldm r7!, {r0, r1, r2, r3}                     |     r0 = *(r7!);
                                                             |     r1 = *((r7! + 4));
                                                             |     r2 = *((r7! + 8));
                                                             |     r3 = *((r7! + 12));
    0x00006908 stm.w fp!, {r0, r1, r2, r3}                   |     *(fp!) = r0;
                                                             |     *((fp! + 4)) = r1;
                                                             |     *((fp! + 8)) = r2;
                                                             |     *((fp! + 12)) = r3;
    0x0000690c ldm.w r7, {r0, r1, r2, r3}                    |     r0 = *(r7);
                                                             |     r1 = *((r7 + 4));
                                                             |     r2 = *((r7 + 8));
                                                             |     r3 = *((r7 + 12));
    0x00006910 stm.w fp, {r0, r1, r2, r3}                    |     *(fp) = r0;
                                                             |     *((fp + 4)) = r1;
                                                             |     *((fp + 8)) = r2;
                                                             |     *((fp + 12)) = r3;
                                                             | label_9:
    0x00006914 ldr r3, [pc, 0x3f0]                           |     
    0x00006916 movs r1, 1                                    |     r1 = 1;
    0x00006918 movs r2, 0x40                                 |     r2 = 0x40;
    0x0000691a mov r0, r5                                    |     r0 = r5;
    0x0000691c str r4, [sp]                                  |     *(sp) = r4;
    0x0000691e add r3, pc                                    |     r3 = 0xd62a;
    0x00006920 blx 0x2e80                                    |     strncmp (r0, r1, r2);
    0x00006924 ldr r0, [pc, 0x3e4]                           |     
    0x00006926 movw r1, 0x1ed                                |     r1 = 0x1ed;
    0x0000692a add r0, pc                                    |     r0 = 0xd63a;
    0x0000692c bl 0x10804                                    |     r0 = fcn_00010804 (r0, r1);
    0x00006930 cmp r0, 0                                     |     
                                                             |     if (r0 != 0) {
    0x00006932 bne.w 0x6aba                                  |         goto label_8;
                                                             |     }
    0x00006936 mov r3, r0                                    |     r3 = r0;
    0x00006938 movs r2, 0xc0                                 |     r2 = 0xc0;
    0x0000693a mov r1, r8                                    |     r1 = r8;
    0x0000693c mov r0, r5                                    |     r0 = r5;
    0x0000693e bl 0x10488                                    |     r0 = fcn_00010488 (r0, r1, r2, r3);
    0x00006942 cmp r0, 0                                     |     
                                                             |     if (r0 != 0) {
    0x00006944 bne.w 0x6aba                                  |         goto label_8;
                                                             |     }
    0x00006948 ldr r0, [pc, 0x3c4]                           |     
    0x0000694a add r0, pc                                    |     r0 = 0xd65e;
    0x0000694c bl 0x102dc                                    |     r0 = fcn_000102dc (r0);
    0x00006950 cmp r0, 0                                     |     
                                                             |     if (r0 != 0) {
    0x00006952 bne.w 0x6aba                                  |         goto label_8;
                                                             |     }
                                                             | label_3:
    0x00006956 movs r1, 0xc0                                 |     r1 = 0xc0;
    0x00006958 mov r2, r5                                    |     r2 = r5;
    0x0000695a mov r0, r8                                    |     r0 = r8;
    0x0000695c blx 0x27cc                                    |     SHA512 ();
    0x00006960 ldr r3, [pc, 0x3b0]                           |     r3 = *(0x6d14);
    0x00006962 ldr r1, [pc, 0x3b4]                           |     
    0x00006964 ldr r0, [r6, r3]                              |     r0 = *((r6 + r3));
    0x00006966 add r1, pc                                    |     r1 = 0xd684;
    0x00006968 blx 0x2f70                                    |     r0 = vdprintf_chk ();
    0x0000696c cmp r0, 0                                     |     
                                                             |     if (r0 != 0) {
    0x0000696e bne.w 0x6afc                                  |         goto label_23;
                                                             |     }
    0x00006972 ldr r1, [pc, 0x3a8]                           |     
    0x00006974 add r1, pc                                    |     r1 = 0xd696;
                                                             | label_6:
    0x00006976 movs r0, 2                                    |     r0 = 2;
    0x00006978 bl 0xfcdc                                     |     fcn_0000fcdc (r0);
    0x0000697c movs r3, 0x16                                 |     r3 = 0x16;
    0x0000697e mov r4, r3                                    |     r4 = r3;
    0x00006980 str.w r3, [sl]                                |     __asm ("str.w r3, [sl]");
    0x00006984 b 0x67e2                                      |     goto label_1;
                                                             | label_14:
    0x00006986 add r5, sp, 0xa4                              |     r5 += s2;
    0x00006988 mov r0, r5                                    |     r0 = r5;
    0x0000698a bl 0x65e0                                     |     r0 = fcn_000065e0 (r0);
    0x0000698e cmp r0, 0                                     |     
                                                             |     if (r0 != 0) {
    0x00006990 bne.w 0x6bd2                                  |         goto label_24;
                                                             |     }
    0x00006994 ldr r3, [pc, 0x37c]                           |     r3 = *(0x6d14);
    0x00006996 ldr r1, [pc, 0x388]                           |     
    0x00006998 ldr r0, [r6, r3]                              |     r0 = *((r6 + r3));
    0x0000699a add r1, pc                                    |     r1 = 0xd6c0;
    0x0000699c blx 0x2f70                                    |     vdprintf_chk ();
    0x0000699e invalid                                       |     
                                                             |     if (r0 != 0) {
    0x000069a2 bne.w 0x6b02                                  |         goto label_25;
                                                             |     }
    0x000069a6 ldr r1, [pc, 0x37c]                           |     
    0x000069a8 movs r2, 0x40                                 |     r2 = 0x40;
    0x000069aa ldr r3, [pc, 0x37c]                           |     
    0x000069ac add.w r0, r7, 0xc                             |     r0 = r7 + 0xc;
    0x000069b0 ldr.w sb, [pc, 0x378]                         |     
    0x000069b4 subs r6, r7, 1                                |     r6 = r7 - 1;
    0x000069b6 add r1, pc                                    |     r1 = 0xd6e0;
    0x000069b8 add.w r4, r7, 0x14                            |     r4 = r7 + 0x14;
    0x000069bc str r1, [sp]                                  |     *(sp) = r1;
    0x000069be add r3, pc                                    |     r3 = 0xd6ec;
    0x000069c0 movs r1, 1                                    |     r1 = 1;
    0x000069c2 add sb, pc                                    |     sb = 0xd6f2;
    0x000069c4 add.w r8, r7, 7                               |     r8 = r7 + 7;
    0x000069c8 blx 0x2e80                                    |     strncmp (r0, r1, r2);
                                                             |     do {
    0x000069cc ldrb r2, [r6, 1]!                             |         r2 = *((r6 += 1));
    0x000069d0 mov r0, r4                                    |         r0 = r4;
    0x000069d2 mov r3, sb                                    |         r3 = sb;
    0x000069d4 movs r1, 1                                    |         r1 = 1;
    0x000069d6 adds r4, 2                                    |         r4 += 2;
    0x000069d8 str r2, [sp]                                  |         *(sp) = r2;
    0x000069da mov.w r2, -1                                  |         r2 = -1;
    0x000069de blx 0x2e80                                    |         strncmp (r0, r1, r2);
    0x000069e2 cmp r8, r6                                    |         
    0x000069e4 bne 0x69cc                                    |         
                                                             |     } while (r8 != r6);
    0x000069e6 mov r6, r5                                    |     r6 = r5;
    0x000069e8 add r7, sp, 0x20                              |     r7 += dest;
    0x000069ea ldm r6!, {r0, r1, r2, r3}                     |     r0 = *(r6!);
                                                             |     r1 = *((r6! + 4));
                                                             |     r2 = *((r6! + 8));
                                                             |     r3 = *((r6! + 12));
    0x000069ec mov.w r8, 0x40                                |     r8 = 0x40;
    0x000069f0 mov r4, r7                                    |     r4 = r7;
    0x000069f2 mov.w ip, 0                                   |     
    0x000069f6 str.w r8, [sp, 0x60]                          |     __asm ("str.w r8, [var_60h]");
    0x000069fa str.w ip, [sp, 0x1c]                          |     __asm ("str.w ip, [var_1ch]");
    0x000069fe stm r4!, {r0, r1, r2, r3}                     |     *(r4!) = r0;
                                                             |     *((r4! + 4)) = r1;
                                                             |     *((r4! + 8)) = r2;
                                                             |     *((r4! + 12)) = r3;
    0x00006a00 ldm r6!, {r0, r1, r2, r3}                     |     r0 = *(r6!);
                                                             |     r1 = *((r6! + 4));
                                                             |     r2 = *((r6! + 8));
                                                             |     r3 = *((r6! + 12));
    0x00006a02 stm r4!, {r0, r1, r2, r3}                     |     *(r4!) = r0;
                                                             |     *((r4! + 4)) = r1;
                                                             |     *((r4! + 8)) = r2;
                                                             |     *((r4! + 12)) = r3;
    0x00006a04 ldm r6!, {r0, r1, r2, r3}                     |     r0 = *(r6!);
                                                             |     r1 = *((r6! + 4));
                                                             |     r2 = *((r6! + 8));
                                                             |     r3 = *((r6! + 12));
    0x00006a06 stm r4!, {r0, r1, r2, r3}                     |     *(r4!) = r0;
                                                             |     *((r4! + 4)) = r1;
                                                             |     *((r4! + 8)) = r2;
                                                             |     *((r4! + 12)) = r3;
    0x00006a08 ldm.w r6, {r0, r1, r2, r3}                    |     r0 = *(r6);
                                                             |     r1 = *((r6 + 4));
                                                             |     r2 = *((r6 + 8));
                                                             |     r3 = *((r6 + 12));
    0x00006a0c stm.w r4, {r0, r1, r2, r3}                    |     *(r4) = r0;
                                                             |     *((r4 + 4)) = r1;
                                                             |     *((r4 + 8)) = r2;
                                                             |     *((r4 + 12)) = r3;
    0x00006a10 mov r1, ip                                    |     r1 = ip;
    0x00006a12 mvn r0, 2                                     |     r0 = ~2;
    0x00006a16 blx 0x2980                                    |     r0 = fcn_00002980 ();
    0x00006a1a adds r2, r0, 1                                |     r2 = r0 + 1;
                                                             |     if (r2 == r0) {
    0x00006a1c beq.w 0x6c52                                  |         goto label_26;
                                                             |     }
    0x00006a20 ldr r4, [pc, 0x30c]                           |     
    0x00006a22 movs r3, 0x48                                 |     r3 = 0x48;
    0x00006a24 ldr.w sb, [pc, 0x30c]                         |     
    0x00006a28 add r2, sp, 0x1c                              |     r2 += var_1ch;
    0x00006a2a str r0, [sp]                                  |     *(sp) = r0;
    0x00006a2c add r4, pc                                    |     r4 = 0xd760;
    0x00006a2e add sb, pc                                    |     sb = 0xd766;
    0x00006a30 adds r4, 0xc                                  |     r4 += 0xc;
    0x00006a32 mov r1, r4                                    |     r1 = r4;
    0x00006a34 mov r0, sb                                    |     r0 = sb;
    0x00006a36 blx 0x2f4c                                    |     r0 = strcmp (r0, r1);
    0x00006a3a adds r3, r0, 1                                |     r3 = r0 + 1;
    0x00006a3c mov r6, r0                                    |     r6 = r0;
                                                             |     if (r3 == r0) {
    0x00006a3e beq.w 0x6c64                                  |         goto label_27;
                                                             |     }
    0x00006a42 mvn r1, 3                                     |     r1 = ~3;
    0x00006a46 blx 0x2cd0                                    |     r0 = bootblock_get ();
    0x00006a4a cmp r0, 0                                     |     
                                                             |     if (r0 != 0) {
    0x00006a4c bne 0x6ace                                    |         goto label_28;
                                                             |     }
    0x00006a4e movs r1, 0                                    |     r1 = 0;
    0x00006a50 mov r0, r6                                    |     r0 = r6;
    0x00006a52 movt r1, 0xc19                                |     r1 = (r1 & 0xFFFF) | 0xc190000;
    0x00006a56 blx 0x2e10                                    |     r0 = fcn_00002e10 ();
    0x00006a5a cmp r0, 0                                     |     
                                                             |     if (r0 < 0) {
    0x00006a5c blt.w 0x6cae                                  |         goto label_29;
                                                             |     }
    0x00006a60 ldr r1, [pc, 0x2d4]                           |     
    0x00006a62 mov r3, r6                                    |     r3 = r6;
    0x00006a64 mov r2, sb                                    |     r2 = sb;
    0x00006a66 movs r0, 6                                    |     r0 = 6;
    0x00006a68 str r4, [sp]                                  |     *(sp) = r4;
    0x00006a6a add r1, pc                                    |     r1 = 0xd7a6;
    0x00006a6c bl 0xfcdc                                     |     fcn_0000fcdc (r0);
    0x00006a70 mov r1, r8                                    |     r1 = r8;
    0x00006a72 mov r0, r7                                    |     r0 = r7;
    0x00006a74 movs r2, 0x44                                 |     r2 = 0x44;
    0x00006a76 blx 0x2b2c                                    |     strcpy (r0, r1);
    0x00006a7a mov r2, r8                                    |     r2 = r8;
    0x00006a7c mov r1, r8                                    |     r1 = r8;
    0x00006a7e mov r0, r5                                    |     r0 = r5;
    0x00006a80 blx 0x2b2c                                    |     strcpy (r0, r1);
                                                             | label_5:
    0x00006a84 ldr r3, [pc, 0x2b4]                           |     
    0x00006a86 movs r2, 1                                    |     r2 = 1;
    0x00006a88 movs r4, 0                                    |     r4 = 0;
    0x00006a8a add r3, pc                                    |     r3 = 0xd7ca;
    0x00006a8c strb r2, [r3, 8]                              |     *((r3 + 8)) = r2;
    0x00006a8e b 0x67e2                                      |     goto label_1;
                                                             | label_16:
    0x00006a90 ldr r0, [pc, 0x2ac]                           |     
    0x00006a92 add.w r3, r3, 0x188                           |     r3 += 0x188;
    0x00006a96 add r1, r3                                    |     r1 += r3;
    0x00006a98 mov r2, r7                                    |     r2 = r7;
    0x00006a9a add r0, pc                                    |     r0 = 0xd7de;
    0x00006a9c adds r0, 0x4c                                 |     r0 += 0x4c;
    0x00006a9e add.w r0, r0, r7, lsl 6                       |     r0 += (r7 << 6);
    0x00006aa2 bl 0x6e58                                     |     r0 = fcn_00006e58 (r0, r1, r2);
    0x00006aa6 cmp r0, 0                                     |     
                                                             |     if (r0 != 0) {
    0x00006aa8 bne.w 0x6c1e                                  |         goto label_30;
                                                             |     }
    0x00006aac ldr.w r8, [sb, 0x188]                         |     r8 = *((sb + 0x188));
    0x00006ab0 cmp.w r8, 0                                   |     
                                                             |     if (r8 != 0) {
    0x00006ab4 bne.w 0x683e                                  |         goto label_2;
                                                             |     }
    0x00006ab8 b 0x67e0                                      |     goto label_0;
                                                             | label_8:
    0x00006aba ldr.w r4, [sl]                                |     r4 = *(sl);
    0x00006abe cmp r4, 0                                     |     
                                                             |     if (r4 != 0) {
    0x00006ac0 bne.w 0x67e2                                  |         goto label_1;
                                                             |     }
                                                             | label_7:
    0x00006ac4 add r5, sp, 0xa4                              |     r5 += s2;
    0x00006ac6 b 0x6956                                      |     goto label_3;
                                                             | label_18:
    0x00006ac8 mov.w fp, 0                                   |     
    0x00006acc b 0x686a                                      |     goto label_4;
                                                             | label_28:
    0x00006ace ldr r1, [pc, 0x274]                           |     
    0x00006ad0 add r1, pc                                    |     r1 = 0xd81a;
                                                             | label_11:
    0x00006ad2 mov r2, r6                                    |     r2 = r6;
    0x00006ad4 movs r0, 3                                    |     r0 = 3;
    0x00006ad6 bl 0xfcdc                                     |     r0 = fcn_0000fcdc (r0);
    0x00006ada blx 0x2f88                                    |     r0 = cxa_finalize ();
    0x00006ade ldr r4, [r0]                                  |     r4 = *(r0);
                                                             | label_10:
    0x00006ae0 movs r2, 0x44                                 |     r2 = 0x44;
    0x00006ae2 movs r1, 0x40                                 |     r1 = 0x40;
    0x00006ae4 mov r0, r7                                    |     r0 = r7;
    0x00006ae6 blx 0x2b2c                                    |     strcpy (r0, r1);
    0x00006aea movs r2, 0x40                                 |     r2 = 0x40;
    0x00006aec mov r0, r5                                    |     r0 = r5;
    0x00006aee mov r1, r2                                    |     r1 = r2;
    0x00006af0 blx 0x2b2c                                    |     strcpy (r0, r1);
    0x00006af4 cmp r4, 0                                     |     
                                                             |     if (r4 != 0) {
    0x00006af6 bne.w 0x67e2                                  |         goto label_1;
                                                             |     }
    0x00006afa b 0x6a84                                      |     goto label_5;
                                                             | label_23:
    0x00006afc ldr r1, [pc, 0x248]                           |     
    0x00006afe add r1, pc                                    |     r1 = 0xd84a;
    0x00006b00 b 0x6976                                      |     goto label_6;
                                                             | label_25:
    0x00006b02 ldr r1, [pc, 0x248]                           |     
    0x00006b04 movs r0, 2                                    |     r0 = 2;
    0x00006b06 add r1, pc                                    |     r1 = 0xd858;
    0x00006b08 bl 0xfcdc                                     |     r0 = fcn_0000fcdc (r0);
    0x00006b0c blx 0x2f88                                    |     cxa_finalize ();
    0x00006b10 movs r3, 0x16                                 |     r3 = 0x16;
    0x00006b12 mov r4, r3                                    |     r4 = r3;
    0x00006b14 str r3, [r0]                                  |     *(r0) = r3;
    0x00006b16 b 0x67e2                                      |     goto label_1;
                                                             | label_21:
    0x00006b18 ldr r3, [pc, 0x234]                           |     
    0x00006b1a add.w sb, sp, 0x64                            |     sb += path;
    0x00006b1e movs r2, 0x40                                 |     r2 = 0x40;
    0x00006b20 movs r1, 1                                    |     r1 = 1;
    0x00006b22 mov r0, sb                                    |     r0 = sb;
    0x00006b24 str r4, [sp]                                  |     *(sp) = r4;
    0x00006b26 add r3, pc                                    |     r3 = 0xd87a;
    0x00006b28 blx 0x2e80                                    |     strncmp (r0, r1, r2);
    0x00006b2c movs r1, 0                                    |     r1 = 0;
    0x00006b2e mov r0, sb                                    |     r0 = sb;
    0x00006b30 blx 0x2730                                    |     open (r0, r1, r2);
    0x00006b34 subs r3, r0, 0                                |     r3 -= path;
                                                             |     if (r3 < path) {
    0x00006b36 blt.w 0x6cb4                                  |         goto label_31;
                                                             |     }
    0x00006b3a str r3, [sp, 0x10]                            |     var_10h = r3;
    0x00006b3c movs r1, 0xc4                                 |     r1 = 0xc4;
    0x00006b3e ldr r3, [pc, 0x214]                           |     
    0x00006b40 movs r2, 0xc0                                 |     r2 = 0xc0;
    0x00006b42 add r3, pc                                    |     r3 = 0xd89c;
    0x00006b44 mla r8, r1, fp, r3                            |     __asm ("mla r8, r1, fp, r3");
    0x00006b48 str r3, [sp, 0x14]                            |     var_14h = r3;
    0x00006b4a add.w r8, r8, 4                               |     r8 += 4;
    0x00006b4e mov r1, r8                                    |     r1 = r8;
    0x00006b50 invalid                                       |     
    0x00006b54 ldr r3, [sp, 0x10]                            |     r3 = var_10h;
    0x00006b56 str r0, [sp, 0xc]                             |     var_ch_2 = r0;
    0x00006b58 mov r0, r3                                    |     r0 = r3;
    0x00006b5a and fp, sb, 0xa000000                         |     
    0x00006b5e ldr r2, [sp, 0xc]                             |     r2 = var_ch_2;
    0x00006b60 cmp r2, 0xbf                                  |     
                                                             |     if (r2 <= 0xbf) {
    0x00006b62 ble.w 0x6c76                                  |         goto label_32;
                                                             |     }
    0x00006b64 strh r0, [r1, 4]                              |     *((r1 + 4)) = r0;
    0x00006b66 ldr r1, [pc, 0x1f0]                           |     
    0x00006b68 movs r2, 0x40                                 |     r2 = 0x40;
    0x00006b6a mov r0, r8                                    |     r0 = r8;
    0x00006b6c add r1, pc                                    |     r1 = 0xd8ca;
    0x00006b6e adds r1, 0x4c                                 |     r1 += 0x4c;
    0x00006b70 add.w r1, r1, r7, lsl 6                       |     r1 += (r7 << 6);
    0x00006b74 blx 0x27e4                                    |     r0 = memcmp (r0, r1, r2);
    0x00006b78 cmp r0, 0                                     |     
                                                             |     if (r0 != 0) {
    0x00006b7a bne.w 0x6cc6                                  |         goto label_33;
                                                             |     }
    0x00006b7e cmp r5, 1                                     |     
                                                             |     if (r5 != 1) {
    0x00006b80 bne 0x6ac4                                    |         goto label_7;
                                                             |     }
    0x00006b82 movs r3, 0xc4                                 |     r3 = 0xc4;
    0x00006b84 rsb.w r7, fp, 1                               |     r7 = 1 - fp;
    0x00006b88 mul r7, r3, r7                                |     r7 = r3 * r7;
    0x00006b8c ldr r3, [sp, 0x14]                            |     r3 = var_14h;
    0x00006b8e add r5, sp, 0xa4                              |     r5 += s2;
    0x00006b90 ldr r3, [r3, r7]                              |     r3 = *((r3 + r7));
    0x00006b92 adds r3, 1                                    |     r3++;
                                                             |     if (r3 == 1) {
    0x00006b94 beq.w 0x6956                                  |         goto label_3;
                                                             |     }
    0x00006b98 movs r1, 0xc0                                 |     r1 = 0xc0;
    0x00006b9a mov r2, r5                                    |     r2 = r5;
    0x00006b9c mov r0, r8                                    |     r0 = r8;
    0x00006b9e blx 0x27cc                                    |     SHA512 ();
    0x00006ba2 ldr r3, [sp, 0x14]                            |     r3 = var_14h;
    0x00006ba4 add.w r0, r7, 0x84                            |     r0 = r7 + 0x84;
    0x00006ba8 movs r2, 0x40                                 |     r2 = 0x40;
    0x00006baa mov r1, r5                                    |     r1 = r5;
    0x00006bac add r0, r3                                    |     r0 += r3;
    0x00006bae blx 0x27e4                                    |     r0 = memcmp (r0, r1, r2);
    0x00006bb2 cmp r0, 0                                     |     
                                                             |     if (r0 == 0) {
    0x00006bb4 beq.w 0x6956                                  |         goto label_3;
                                                             |     }
    0x00006bb8 ldr r3, [sp, 0x14]                            |     r3 = var_14h;
    0x00006bba mov r2, r4                                    |     r2 = r4;
    0x00006bbc ldr r1, [pc, 0x19c]                           |     
    0x00006bbe movs r0, 3                                    |     r0 = 3;
    0x00006bc0 ldr r3, [r3, r7]                              |     r3 = *((r3 + r7));
    0x00006bc2 add r1, pc                                    |     r1 = 0xd922;
    0x00006bc4 bl 0xfcdc                                     |     fcn_0000fcdc (r0);
    0x00006bc8 movs r3, 0xd                                  |     r3 = 0xd;
    0x00006bca mov r4, r3                                    |     r4 = r3;
    0x00006bcc str.w r3, [sl]                                |     __asm ("str.w r3, [sl]");
    0x00006bd0 b 0x67e2                                      |     goto label_1;
                                                             | label_24:
    0x00006bd2 ldr r1, [pc, 0x18c]                           |     
    0x00006bd4 movs r0, 2                                    |     r0 = 2;
    0x00006bd6 add r1, pc                                    |     r1 = 0xd93c;
    0x00006bd8 bl 0xfcdc                                     |     r0 = fcn_0000fcdc (r0);
    0x00006bdc blx 0x2f88                                    |     r0 = cxa_finalize ();
    0x00006be0 ldr r4, [r0]                                  |     r4 = *(r0);
    0x00006be2 b 0x67e2                                      |     goto label_1;
                                                             | label_17:
    0x00006be4 ldr r1, [pc, 0x17c]                           |     
    0x00006be6 mov r2, r8                                    |     r2 = r8;
    0x00006be8 movs r0, 2                                    |     r0 = 2;
    0x00006bea add r1, pc                                    |     r1 = 0xd952;
    0x00006bec bl 0xfcdc                                     |     fcn_0000fcdc (r0);
    0x00006bf0 movs r3, 0x47                                 |     r3 = 0x47;
    0x00006bf2 mov r4, r3                                    |     r4 = r3;
    0x00006bf4 str.w r3, [sl]                                |     __asm ("str.w r3, [sl]");
    0x00006bf8 b 0x67e2                                      |     goto label_1;
                                                             | label_20:
    0x00006bfa ldr r1, [pc, 0x16c]                           |     
    0x00006bfc movs r3, 0xc4                                 |     r3 = 0xc4;
    0x00006bfe rsb.w r2, fp, 1                               |     r2 = 1 - fp;
    0x00006c02 add r5, sp, 0xa4                              |     r5 += s2;
    0x00006c04 add r1, pc                                    |     r1 = 0xd972;
    0x00006c06 mla r8, r3, fp, r1                            |     __asm ("mla r8, r3, fp, r1");
    0x00006c0a mla r1, r3, r2, r1                            |     __asm ("mla r1, r3, r2, r1");
    0x00006c0e add.w r8, r8, 4                               |     r8 += 4;
    0x00006c12 movs r2, 0xc0                                 |     r2 = 0xc0;
    0x00006c14 mov r0, r8                                    |     r0 = r8;
    0x00006c16 adds r1, 4                                    |     r1 += 4;
    0x00006c18 blx 0x2b08                                    |     EVP_MD_CTX_new ();
    0x00006c1c b 0x6956                                      |     goto label_3;
                                                             | label_30:
    0x00006c1e blx 0x2f88                                    |     r0 = cxa_finalize ();
    0x00006c22 ldr r4, [r0]                                  |     r4 = *(r0);
    0x00006c24 b 0x67e2                                      |     goto label_1;
                                                             | label_22:
    0x00006c26 add.w r0, r7, 0x84                            |     r0 = r7 + 0x84;
    0x00006c2a movs r2, 0                                    |     r2 = 0;
    0x00006c2c add r0, sb                                    |     r0 += sb;
    0x00006c2e movs r1, 0x40                                 |     r1 = 0x40;
    0x00006c30 blx 0x2abc                                    |     r0 = fcn_00002abc ();
    0x00006c34 cmp r0, 0                                     |     
                                                             |     if (r0 < 0) {
    0x00006c36 blt.w 0x6aba                                  |         goto label_8;
                                                             |     }
    0x00006c3a add r5, sp, 0xa4                              |     r5 += s2;
    0x00006c3c b 0x6914                                      |     goto label_9;
                                                             | label_19:
    0x00006c3e ldr r1, [pc, 0x12c]                           |     
    0x00006c40 movs r0, 2                                    |     r0 = 2;
    0x00006c42 add r1, pc                                    |     r1 = 0xd9b4;
    0x00006c44 bl 0xfcdc                                     |     fcn_0000fcdc (r0);
    0x00006c48 movs r3, 0xe                                  |     r3 = 0xe;
    0x00006c4a mov r4, r3                                    |     r4 = r3;
    0x00006c4c str.w r3, [sl]                                |     __asm ("str.w r3, [sl]");
    0x00006c50 b 0x67e2                                      |     goto label_1;
                                                             | label_26:
    0x00006c52 ldr r1, [pc, 0x11c]                           |     
    0x00006c54 movs r0, 3                                    |     r0 = 3;
    0x00006c56 add r1, pc                                    |     r1 = 0xd9cc;
    0x00006c58 bl 0xfcdc                                     |     r0 = fcn_0000fcdc (r0);
    0x00006c5c blx 0x2f88                                    |     r0 = cxa_finalize ();
    0x00006c60 ldr r4, [r0]                                  |     r4 = *(r0);
    0x00006c62 b 0x6ae0                                      |     goto label_10;
                                                             | label_27:
    0x00006c64 ldr r1, [pc, 0x10c]                           |     
    0x00006c66 movs r0, 3                                    |     r0 = 3;
    0x00006c68 add r1, pc                                    |     r1 = 0xd9e0;
    0x00006c6a bl 0xfcdc                                     |     fcn_0000fcdc (r0);
    0x00006c6c invalid                                       |     
    0x00006c70 invalid                                       |     
    0x00006c74 b 0x6ae0                                      |     goto label_10;
                                                             | label_32:
    0x00006c76 ldr r1, [pc, 0x100]                           |     
    0x00006c78 cmp r2, 0                                     |     
    0x00006c7a it ge                                         |     
                                                             |     if (r2 < 0) {
    0x00006c7c movge r3, 0x47                                |         r3 = 0x47;
                                                             |     }
    0x00006c7e mov r2, sb                                    |     r2 = sb;
    0x00006c80 mov.w r0, 2                                   |     r0 = 2;
    0x00006c84 it ge                                         |     
                                                             |     if (r2 < 0) {
    0x00006c86 strge r3, [sl]                                |         *(sl) = r3;
                                                             |     }
    0x00006c8a add r1, pc                                    |     r1 = 0xda08;
    0x00006c8c bl 0xfcdc                                     |     fcn_0000fcdc (r0);
    0x00006c90 ldr.w r4, [sl]                                |     r4 = *(sl);
                                                             | label_12:
    0x00006c94 cmp r4, 0                                     |     
                                                             |     if (r4 != 0) {
    0x00006c96 bne.w 0x67e2                                  |         goto label_1;
                                                             |     }
    0x00006c9a ldr.w r8, [pc, 0xe0]                          |     r8 = *(0x00006d7c);
    0x00006c9e movs r3, 0xc4                                 |     r3 = 0xc4;
    0x00006ca0 add r5, sp, 0xa4                              |     r5 += s2;
    0x00006ca2 add r8, pc                                    |     r8 += pc;
    0x00006ca4 mla r8, r3, fp, r8                            |     __asm ("mla r8, r3, fp, r8");
    0x00006ca8 add.w r8, r8, 4                               |     r8 += 4;
    0x00006cac b 0x6956                                      |     goto label_3;
                                                             | label_29:
    0x00006cae ldr r1, [pc, 0xd0]                            |     
    0x00006cb0 add r1, pc                                    |     r1 = 0xda36;
    0x00006cb2 b 0x6ad2                                      |     goto label_11;
                                                             | label_31:
    0x00006cb4 ldr r1, [pc, 0xcc]                            |     
    0x00006cb6 mov r2, sb                                    |     r2 = sb;
    0x00006cb8 movs r0, 2                                    |     r0 = 2;
    0x00006cba add r1, pc                                    |     r1 = 0xda42;
    0x00006cbc bl 0xfcdc                                     |     fcn_0000fcdc (r0);
    0x00006cc0 ldr.w r4, [sl]                                |     r4 = *(sl);
    0x00006cc4 b 0x6c94                                      |     goto label_12;
                                                             | label_33:
    0x00006cc6 ldr r1, [pc, 0xc0]                            |     
    0x00006cc8 mov r2, r4                                    |     r2 = r4;
    0x00006cca movs r0, 3                                    |     r0 = 3;
    0x00006ccc add r1, pc                                    |     r1 = 0xda5a;
    0x00006cce bl 0xfcdc                                     |     fcn_0000fcdc (r0);
    0x00006cd2 movs r3, 0xd                                  |     r3 = 0xd;
    0x00006cd4 mov r4, r3                                    |     r4 = r3;
    0x00006cd6 str.w r3, [sl]                                |     __asm ("str.w r3, [sl]");
    0x00006cda b 0x67e2                                      |     goto label_1;
                                                             | label_15:
    0x00006cdc blx 0x2cdc                                    |     fprintf_chk ()
    0x00006ce0 strh r6, [r0, 0x24]                           |     *((r0 + 0x24)) = r6;
    0x00006ce2 movs r2, r0                                   |     r2 = r0;
    0x00006ce4 lsls r4, r1, 0xd                              |     r4 = r1 << 0xd;
    0x00006ce6 movs r0, r0                                   |     
    0x00006ce8 strh r2, [r7, 0x22]                           |     *((r7 + 0x22)) = r2;
    0x00006cea movs r2, r0                                   |     r2 = r0;
    0x00006cec lsls r4, r4, 0xe                              |     r4 <<= 0xe;
    0x00006cee movs r0, r0                                   |     
    0x00006cf0 ldrh r2, [r7, 0xe]                            |     r2 = *((r7 + 0xe));
    0x00006cf2 movs r2, r0                                   |     r2 = r0;
    0x00006cf4 strh r2, [r2, 0x22]                           |     *((r2 + 0x22)) = r2;
    0x00006cf6 movs r2, r0                                   |     r2 = r0;
    0x00006cf8 strh r6, [r7, 0x3e]                           |     *((r7 + 0x3e)) = r6;
    0x00006cfa movs r2, r0                                   |     r2 = r0;
    0x00006cfc strh r0, [r7, 0x3c]                           |     *((r7 + 0x3c)) = r0;
    0x00006cfe movs r2, r0                                   |     r2 = r0;
    0x00006d00 ldrh r4, [r1, 0xa]                            |     r4 = *((r1 + 0xa));
    0x00006d02 movs r2, r0                                   |     r2 = r0;
    0x00006d04 strh r2, [r0, 0x3c]                           |     *((r0 + 0x3c)) = r2;
    0x00006d06 movs r2, r0                                   |     r2 = r0;
    0x00006d08 lsrs r2, r4, 0xc                              |     r2 = r4 >> 0xc;
    0x00006d0a movs r1, r0                                   |     r1 = r0;
    0x00006d0c lsrs r2, r1, 0x10                             |     r2 = r1 >> 0x10;
    0x00006d0e movs r1, r0                                   |     r1 = r0;
    0x00006d10 lsrs r2, r1, 0x10                             |     r2 = r1 >> 0x10;
    0x00006d12 movs r1, r0                                   |     r1 = r0;
    0x00006d14 lsls r0, r2, 0xd                              |     r0 = r2 << 0xd;
    0x00006d16 movs r0, r0                                   |     
    0x00006d18 lsrs r6, r4, 5                                |     r6 = r4 >> 5;
    0x00006d1a movs r1, r0                                   |     r1 = r0;
    0x00006d1c lsrs r0, r6, 0xf                              |     r0 = r6 >> 0xf;
    0x00006d1e movs r1, r0                                   |     r1 = r0;
    0x00006d20 lsrs r2, r6, 4                                |     r2 = r6 >> 4;
    0x00006d22 movs r1, r0                                   |     r1 = r0;
    0x00006d24 lsrs r2, r4, 4                                |     r2 = r4 >> 4;
    0x00006d26 movs r1, r0                                   |     r1 = r0;
    0x00006d28 lsrs r6, r2, 4                                |     r6 = r2 >> 4;
    0x00006d2a movs r1, r0                                   |     r1 = r0;
    0x00006d2c lsrs r6, r3, 4                                |     r6 = r3 >> 4;
    0x00006d2e movs r1, r0                                   |     r1 = r0;
    0x00006d30 strh r4, [r4, 0x3c]                           |     *((r4 + 0x3c)) = r4;
    0x00006d32 movs r2, r0                                   |     r2 = r0;
    0x00006d34 lsrs r6, r3, 3                                |     r6 = r3 >> 3;
    0x00006d36 movs r1, r0                                   |     r1 = r0;
    0x00006d38 lsrs r6, r5, 4                                |     r6 = r5 >> 4;
    0x00006d3a movs r1, r0                                   |     r1 = r0;
    0x00006d3c strh r6, [r0, 0x3a]                           |     *((r0 + 0x3a)) = r6;
    0x00006d3e movs r2, r0                                   |     r2 = r0;
    0x00006d40 strh r6, [r6, 0x38]                           |     *((r6 + 0x38)) = r6;
    0x00006d42 movs r2, r0                                   |     r2 = r0;
    0x00006d44 lsrs r0, r5, 1                                |     r0 = r5 >> 1;
    0x00006d46 movs r1, r0                                   |     r1 = r0;
    0x00006d48 lsrs r2, r7, 2                                |     r2 = r7 >> 2;
    0x00006d4a movs r1, r0                                   |     r1 = r0;
    0x00006d4c lsrs r2, r6, 2                                |     r2 = r6 >> 2;
    0x00006d4e movs r1, r0                                   |     r1 = r0;
    0x00006d50 lsrs r2, r3, 4                                |     r2 = r3 >> 4;
    0x00006d52 movs r1, r0                                   |     r1 = r0;
    0x00006d54 strh r6, [r0, 0x26]                           |     *((r0 + 0x26)) = r6;
    0x00006d56 movs r2, r0                                   |     r2 = r0;
    0x00006d58 strh r4, [r4, 0x32]                           |     *((r4 + 0x32)) = r4;
    0x00006d5a movs r2, r0                                   |     r2 = r0;
    0x00006d5c lsrs r6, r3, 4                                |     r6 = r3 >> 4;
    0x00006d5e movs r1, r0                                   |     r1 = r0;
    0x00006d60 lsls r2, r1, 0x1b                             |     r2 = r1 << 0x1b;
    0x00006d62 movs r1, r0                                   |     r1 = r0;
    0x00006d64 lsrs r2, r1, 0x20                             |     r2 = r1 >> 0x20;
    0x00006d66 movs r1, r0                                   |     r1 = r0;
    0x00006d68 strh r4, [r0, 0x20]                           |     *((r0 + 0x20)) = r4;
    0x00006d6a movs r2, r0                                   |     r2 = r0;
    0x00006d6c lsls r6, r2, 0x1f                             |     r6 = r2 << 0x1f;
    0x00006d6e movs r1, r0                                   |     r1 = r0;
    0x00006d70 lsls r2, r2, 0x1a                             |     r2 <<= 0x1a;
    0x00006d72 movs r1, r0                                   |     r1 = r0;
    0x00006d74 lsls r4, r5, 0x1a                             |     r4 = r5 << 0x1a;
    0x00006d76 movs r1, r0                                   |     r1 = r0;
    0x00006d78 lsls r6, r6, 0x1f                             |     r6 <<= 0x1f;
    0x00006d7a movs r1, r0                                   |     r1 = r0;
    0x00006d7c strh r6, [r4, 0x1a]                           |     *((r4 + 0x1a)) = r6;
    0x00006d7e movs r2, r0                                   |     r2 = r0;
    0x00006d80 lsls r0, r7, 0x1a                             |     r0 = r7 << 0x1a;
    0x00006d82 movs r1, r0                                   |     r1 = r0;
    0x00006d84 lsls r6, r5, 0x1e                             |     r6 = r5 << 0x1e;
    0x00006d86 movs r1, r0                                   |     r1 = r0;
    0x00006d88 lsls r4, r2, 0x1f                             |     r4 = r2 << 0x1f;
    0x00006d8a movs r1, r0                                   |     r1 = r0;
    0x00006d8c push {r4, lr}                                 |     
    0x00006d8e sub sp, 0x50                                  |     
    0x00006d90 ldr r4, [pc, 0x70]                            |     
    0x00006d92 ldr r1, [pc, 0x74]                            |     r1 = *(0x6e0a);
    0x00006d94 add r4, pc                                    |     r4 = 0xdb9c;
    0x00006d96 ldr r3, [pc, 0x74]                            |     
    0x00006d98 ldr r2, [pc, 0x74]                            |     r2 = *(0x6e10);
    0x00006d9a ldr r1, [r4, r1]                              |     
    0x00006d9c add r3, pc                                    |     
    0x00006d9e ldr r1, [r1]                                  |     r1 = *(0xdb9c);
    0x00006da0 str r1, [sp, 0x4c]                            |     var_4ch = r1;
    0x00006da2 mov.w r1, 0                                   |     r1 = 0;
    0x00006da6 ldr r3, [r3, r2]                              |     r3 = *(0xdbae);
    0x00006da8 ldrb r3, [r3]                                 |     r3 = *(r3);
                                                             |     if (r3 == 0) {
    0x00006daa cbnz r3, 0x6de8                               |         
    0x00006dac ldr r3, [pc, 0x64]                            |         
    0x00006dae add r4, sp, 0xc                               |         r4 += str;
    0x00006db0 movs r1, 1                                    |         r1 = 1;
    0x00006db2 add r3, pc                                    |         r3 = 0xdbca;
    0x00006db4 ldr r2, [r3]                                  |         r2 = *(0xdbca);
    0x00006db6 cmp r2, r0                                    |         
    0x00006db8 itt eq                                        |         
                                                             |         if (r2 != r0) {
    0x00006dba moveq r2, -1                                  |             r2 = -1;
                                                             |         }
                                                             |         if (r2 == r0) {
    0x00006dbe str r2, [r3]                                  |             *(r3) = r2;
                                                             |         }
    0x00006dc0 ldr r3, [pc, 0x54]                            |         
    0x00006dc2 add r3, pc                                    |         r3 = 0xdbde;
    0x00006dc4 ldr.w r2, [r3, 0xc4]                          |         r2 = *(0xdca2);
    0x00006dc8 cmp r2, r0                                    |         
    0x00006dca itt eq                                        |         
                                                             |         if (r2 != r0) {
    0x00006dcc moveq r2, -1                                  |             r2 = -1;
                                                             |         }
                                                             |         if (r2 == r0) {
    0x00006dd0 str.w r2, [r3, 0xc4]                          |             __asm ("str.w r2, [r3, 0xc4]");
                                                             |         }
    0x00006dd4 movs r2, 0x40                                 |         r2 = 0x40;
    0x00006dd6 ldr r3, [pc, 0x44]                            |         
    0x00006dd8 str r0, [sp]                                  |         *(sp) = r0;
    0x00006dda mov r0, r4                                    |         r0 = r4;
    0x00006ddc add r3, pc                                    |         r3 = 0xdbfe;
    0x00006dde blx 0x2e80                                    |         strncmp (r0, r1, r2);
    0x00006de2 mov r0, r4                                    |         r0 = r4;
    0x00006de4 blx 0x2acc                                    |         strtoul (r0, r1, r2);
                                                             |     }
    0x00006de8 ldr r2, [pc, 0x34]                            |     
    0x00006dea ldr r3, [pc, 0x1c]                            |     r3 = *(0x6e0a);
    0x00006dec add r2, pc                                    |     r2 = 0xdc10;
    0x00006dee ldr r3, [r2, r3]                              |     r3 = *(0xdc10);
    0x00006df0 ldr r2, [r3]                                  |     r2 = *(0xdc10);
    0x00006df2 ldr r3, [sp, 0x4c]                            |     r3 = var_4ch;
    0x00006df4 eors r2, r3                                   |     r2 ^= r3;
    0x00006df6 mov.w r3, 0                                   |     r3 = 0;
                                                             |     if (r2 == r3) {
    0x00006dfa bne 0x6e00                                    |         
    0x00006dfc add sp, 0x50                                  |         
    0x00006dfe pop {r4, pc}                                  |         
                                                             |     }
    0x00006e00 blx 0x2cdc                                    |     fprintf_chk ()
    0x00006e04 ldrb r0, [r5, 0x1a]                           |     r0 = *((r5 + 0x1a));
    0x00006e06 movs r2, r0                                   |     r2 = r0;
    0x00006e08 lsls r4, r1, 0xd                              |     r4 = r1 << 0xd;
    0x00006e0a movs r0, r0                                   |     
    0x00006e0c ldrb r0, [r4, 0x1a]                           |     r0 = *((r4 + 0x1a));
    0x00006e0e movs r2, r0                                   |     r2 = r0;
    0x00006e10 lsls r4, r4, 0xe                              |     r4 <<= 0xe;
    0x00006e12 movs r0, r0                                   |     
    0x00006e14 strh r6, [r2, 0x12]                           |     *((r2 + 0x12)) = r6;
    0x00006e16 movs r2, r0                                   |     r2 = r0;
    0x00006e18 strh r6, [r0, 0x12]                           |     *((r0 + 0x12)) = r6;
    0x00006e1a movs r2, r0                                   |     r2 = r0;
    0x00006e1c lsls r4, r4, 0x19                             |     r4 <<= 0x19;
    0x00006e1e movs r1, r0                                   |     r1 = r0;
    0x00006e20 ldrb r0, [r2, 0x19]                           |     r0 = *((r2 + 0x19));
    0x00006e22 movs r2, r0                                   |     r2 = r0;
                                                             | }
    ; assembly                                               | /* r2dec pseudo code output */
                                                             | /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/sbin/fwmgr @ 0x6e58 */
                                                             | #include <stdint.h>
                                                             |  
    ; (fcn) fcn.00006e58 ()                                  | void fcn_00006e58 (int16_t arg_10000h_2, int16_t arg1, int16_t arg2) {
                                                             |     int16_t var_0h_2;
                                                             |     int16_t var_4h_2;
                                                             |     char * oflag;
                                                             |     int32_t var_4h;
                                                             |     int8_t var_1h_2;
                                                             |     int8_t var_2h_2;
                                                             |     int16_t var_30h;
                                                             |     int8_t var_1h;
                                                             |     int32_t var_2h;
                                                             |     int32_t var_8h;
                                                             |     int32_t var_4h_3;
                                                             |     int16_t var_10h_2;
                                                             |     int32_t var_10h;
                                                             |     int32_t var_12h;
                                                             |     int16_t var_40h;
                                                             |     int16_t var_1020h;
                                                             |     int32_t var_0h;
                                                             |     r0 = arg1;
                                                             |     r1 = arg2;
    0x00006e58 svcmi 0xf0e92d                                |     __asm ("svcmi 0xf0e92d");
    0x00006e5c mov r6, r0                                    |     r6 = r0;
    0x00006e5e ldr r0, [pc, 0x22c]                           |     
    0x00006e60 mov r5, r1                                    |     r5 = r1;
    0x00006e62 sub.w sp, sp, 0x1020                          |     
    0x00006e66 ldr r1, [pc, 0x228]                           |     r1 = *(0x7092);
    0x00006e68 sub sp, 0x14                                  |     
    0x00006e6a add r0, pc                                    |     r0 = 0xdefc;
    0x00006e6c ldr r3, [pc, 0x224]                           |     
    0x00006e6e add.w r4, sp, 0x1020                          |     r4 += var_1020h;
    0x00006e70 strb r1, [r0, r2]                             |     *((r0 + r2)) = r1;
    0x00006e72 ldr r1, [r0, r1]                              |     
    0x00006e74 adds r4, 0xc                                  |     r4 += 0xc;
    0x00006e76 add r3, pc                                    |     r3 = 0xdf0e;
    0x00006e78 ldr r1, [r1]                                  |     r1 = *(0xdefc);
    0x00006e7a str r1, [r4]                                  |     *(r4) = r1;
    0x00006e7c mov.w r1, 0                                   |     r1 = 0;
                                                             |     if (r2 != 0) {
    0x00006e80 cbnz r2, 0x6ed2                               |         goto label_5;
                                                             |     }
    0x00006e82 ldr.w sb, [pc, 0x214]                         |     
    0x00006e86 mov.w r8, 0x21                                |     r8 = 0x21;
    0x00006e8a add sb, pc                                    |     sb = 0xdf28;
                                                             |     do {
    0x00006e8c ldr r2, [pc, 0x20c]                           |         r2 = *(0x709c);
    0x00006e8e mov r0, r8                                    |         r0 = r8;
    0x00006e90 ldr.w sl, [r3, r2]                            |         sl = *((r3 + r2));
    0x00006e94 ldr.w r3, [sl]                                |         r3 = *(sl);
    0x00006e98 ldr r3, [r3, 0x10]                            |         r3 = *((r3 + 0x10));
    0x00006e9a blx r3                                        |         r0 = uint32_t (*r3)(uint32_t, uint32_t, uint32_t) (r0, r2, r3);
    0x00006e9c ubfx r7, r0, 0, 0xc                           |         r7 = (r0 >> 0) & ((1 << 0xc) - 1);
    0x00006ea0 mov r4, r0                                    |         r4 = r0;
    0x00006ea2 cmp r7, 0x14                                  |         
                                                             |         if (r7 > 0x14) {
    0x00006ea4 bhi 0x6ede                                    |             goto label_6;
                                                             |         }
                                                             | label_0:
    0x00006ea6 movs r3, 0                                    |         r3 = 0;
    0x00006ea8 mov r0, r3                                    |         r0 = r3;
    0x00006eaa str r3, [r5]                                  |         *(r5) = r3;
                                                             | label_1:
    0x00006eac ldr r2, [pc, 0x1f0]                           |         
    0x00006eae add.w r1, sp, 0x1020                          |         r1 += var_1020h;
    0x00006eb2 ldr r3, [pc, 0x1dc]                           |         r3 = *(0x7092);
    0x00006eb4 adds r1, 0xc                                  |         r1 += 0xc;
    0x00006eb6 add r2, pc                                    |         r2 = 0xdf5a;
    0x00006eb8 ldr r3, [r2, r3]                              |         r3 = *(0xdf5a);
    0x00006eba ldr r2, [r3]                                  |         r2 = *(0xdf5a);
    0x00006ebc ldr r3, [r1]                                  |         r3 = *(r1);
    0x00006ebe eors r2, r3                                   |         r2 ^= r3;
    0x00006ec0 mov.w r3, 0                                   |         r3 = 0;
                                                             |         if (r2 != r3) {
    0x00006ec4 bne.w 0x7088                                  |             goto label_7;
                                                             |         }
    0x00006ec8 add.w sp, sp, 0x1020                          |         
    0x00006ecc add sp, 0x14                                  |         
    0x00006ece pop.w {r4, r5, r6, r7, r8, sb, sl, fp, pc}    |         
                                                             | label_5:
    0x00006ed2 ldr.w sb, [pc, 0x1d0]                         |         
    0x00006ed6 mov.w r8, 0x41                                |         r8 = 0x41;
    0x00006eda add sb, pc                                    |         sb = 0xdf84;
    0x00006edc b 0x6e8c                                      |         
                                                             |     } while (1);
                                                             | label_6:
    0x00006ede ldr.w r3, [sl]                                |     r3 = *(sl);
    0x00006ee2 add.w sl, sp, 0xc                             |     sl += oflag;
    0x00006ee6 mov r1, r8                                    |     r1 = r8;
    0x00006ee8 mov r0, sl                                    |     r0 = sl;
    0x00006eea ldr r3, [r3, 0x30]                            |     r3 = *((r3 + 0x30));
    0x00006eec blx r3                                        |     r0 = uint32_t (*r3)(uint32_t, uint32_t, uint32_t) (r0, r1, r3);
    0x00006eee mov r8, r0                                    |     r8 = r0;
    0x00006ef0 cmp r0, 0                                     |     
                                                             |     if (r0 != 0) {
    0x00006ef2 bne.w 0x7014                                  |         goto label_8;
                                                             |     }
    0x00006ef6 mov r1, r0                                    |     r1 = r0;
    0x00006ef8 mov r0, sl                                    |     r0 = sl;
    0x00006efa blx 0x2730                                    |     open (r0, r1, r2);
    0x00006efe subs.w fp, r0, 0                              |     
                                                             |     if (fp < oflag) {
    0x00006f02 blt.w 0x7034                                  |         goto label_9;
                                                             |     }
    0x00006f06 mov r2, r8                                    |     r2 = r8;
    0x00006f08 subs r1, r4, r7                               |     r1 = r4 - r7;
    0x00006f0a blx 0x2e04                                    |     r0 = fcn_00002e04 ();
    0x00006f0e cmp r0, 0                                     |     
                                                             |     if (r0 < 0) {
    0x00006f10 blt.w 0x7040                                  |         goto label_10;
                                                             |     }
    0x00006f14 add r4, sp, 0x30                              |     r4 += var_30h;
    0x00006f16 mov.w r3, 0x1000                              |     r3 = 0x1000;
    0x00006f1a mov r2, r7                                    |     r2 = r7;
    0x00006f1c subs r1, r4, 4                                |     r1 -= var_4h;
    0x00006f1e mov r0, fp                                    |     r0 = fp;
    0x00006f20 blx 0x2a80                                    |     r0 = fcn_00002a80 ();
    0x00006f24 mov r8, r0                                    |     r8 = r0;
    0x00006f26 mov r0, fp                                    |     r0 = fp;
    0x00006f28 bl 0x10978                                    |     fcn_00010978 (r0);
    0x00006f2c cmp.w r8, 0                                   |     
                                                             |     if (r8 < 0) {
    0x00006f30 blt.w 0x703a                                  |         goto label_11;
                                                             |     }
    0x00006f34 cmp r7, r8                                    |     
                                                             |     if (r7 > r8) {
    0x00006f36 bhi.w 0x705a                                  |         goto label_12;
                                                             |     }
                                                             | label_2:
    0x00006f3a ldr r2, [r4, -0x4]                            |     r2 = *((r4 - 0x4));
    0x00006f3e movw r3, 0x5a87                               |     
    0x00006f42 movt r3, 0x1b3a                               |     r3 = 0x1b3a5a87;
    0x00006f46 cmp r2, r3                                    |     
                                                             |     if (r2 != r3) {
    0x00006f48 bne 0x6ea6                                    |         goto label_0;
                                                             |     }
    0x00006f4a ldrh r3, [r4, 2]                              |     r3 = var_2h;
    0x00006f4c cmp r3, r7                                    |     
                                                             |     if (r3 == r7) {
    0x00006f4e beq 0x6ea6                                    |         goto label_0;
                                                             |     }
    0x00006f50 ldrb r2, [r4]                                 |     r2 = *(r4);
    0x00006f52 cmp r2, 1                                     |     
                                                             |     if (r2 != 1) {
    0x00006f54 bne 0x6ffa                                    |         goto label_13;
                                                             |     }
    0x00006f56 ldrb r2, [r4, 1]                              |     r2 = var_1h;
    0x00006f58 cmp r2, 0x17                                  |     
                                                             |     if (r2 < 0x17) {
    0x00006f5a bls 0x6ffa                                    |         goto label_13;
                                                             |     }
    0x00006f5c cmp r3, r2                                    |     
                                                             |     if (r3 <= r2) {
    0x00006f5e blo 0x6ffa                                    |         goto label_13;
                                                             |     }
    0x00006f60 adds r2, 0x3f                                 |     r2 += 0x3f;
    0x00006f62 cmp r3, r2                                    |     
                                                             |     if (r3 <= r2) {
    0x00006f64 ble 0x6ffa                                    |         goto label_13;
                                                             |     }
    0x00006f66 add.w r2, r3, 0x40                            |     r2 = r3 + 0x40;
    0x00006f6a cmp r2, r7                                    |     
                                                             |     if (r2 > r7) {
    0x00006f6c bhi 0x6ffa                                    |         goto label_13;
                                                             |     }
    0x00006f6e ldrh r2, [r4, 0x12]                           |     r2 = var_12h;
    0x00006f70 cmp r2, 3                                     |     
                                                             |     if (r2 < 3) {
    0x00006f72 bls 0x6ffa                                    |         goto label_13;
                                                             |     }
    0x00006f74 ldrh r2, [r4, 0x10]                           |     r2 = var_10h;
    0x00006f76 adds r2, 3                                    |     r2 += 3;
    0x00006f78 cmp r3, r2                                    |     
                                                             |     if (r3 <= r2) {
    0x00006f7a ble 0x6ffa                                    |         goto label_13;
                                                             |     }
    0x00006f7c subs r3, 0x40                                 |     r3 -= 0x40;
    0x00006f7e sub.w r8, r4, 4                               |     r8 -= var_4h;
    0x00006f82 add.w fp, r8, r3                              |     
    0x00006f86 mov r0, fp                                    |     r0 = fp;
    0x00006f88 bl 0xce0c                                     |     r0 = fcn_0000ce0c ();
    0x00006f8c cmp r0, 0                                     |     
                                                             |     if (r0 == 0) {
    0x00006f8e beq 0x6ffa                                    |         goto label_13;
                                                             |     }
    0x00006f90 ldrh r1, [r4, 2]                              |     r1 = var_2h;
    0x00006f92 mov r2, sl                                    |     r2 = sl;
    0x00006f94 mov r0, r8                                    |     r0 = r8;
    0x00006f96 blx 0x2944                                    |     fcn_00002944 ();
    0x00006f9a ldrh r3, [r4, 2]                              |     r3 = var_2h;
    0x00006f9c mov r2, fp                                    |     r2 = fp;
    0x00006f9e mov r0, sl                                    |     r0 = sl;
    0x00006fa0 movs r1, 0x20                                 |     r1 = 0x20;
    0x00006fa2 subs r7, r7, r3                               |     r7 -= r3;
    0x00006fa4 add r3, r8                                    |     r3 += r8;
    0x00006fa6 str r3, [sp]                                  |     *(sp) = r3;
    0x00006fa8 ldr r3, [pc, 0xfc]                            |     
    0x00006faa str r7, [sp, 4]                               |     var_4h_2 = r7;
    0x00006fac add r3, pc                                    |     r3 = 0xe058;
    0x00006fae bl 0xb92c                                     |     r0 = fcn_0000b92c (r0, r1, r2, r3, r4, r5);
    0x00006fb2 cmp r0, 0                                     |     
                                                             |     if (r0 != 0) {
    0x00006fb4 bne 0x7074                                    |         goto label_14;
                                                             |     }
    0x00006fb6 ldrh r7, [r4, 0x10]                           |     r7 = var_10h;
    0x00006fb8 add r7, r8                                    |     r7 += r8;
    0x00006fba ldrb r0, [r7, 2]                              |     r0 = var_2h_2;
    0x00006fbc bl 0x3c20                                     |     r0 = fcn_00003c20 (r0);
                                                             |     if (r0 != 0) {
    0x00006fc0 cbnz r0, 0x7028                               |         goto label_15;
                                                             |     }
    0x00006fc2 ldrh r3, [r4, 2]                              |     r3 = var_2h;
    0x00006fc4 add r8, r3                                    |     r8 += r3;
    0x00006fc6 add.w r2, r8, 0x40                            |     r2 += var_40h;
                                                             |     do {
    0x00006fca ldr.w r3, [r8]                                |         r3 = *(r8);
    0x00006fce add.w r8, r8, 0x10                            |         r8 += var_10h_2;
    0x00006fd2 adds r6, 0x10                                 |         r6 += 0x10;
    0x00006fd4 str r3, [r6, -0x10]                           |         *((r6 - 0x10)) = r3;
    0x00006fd8 ldr r3, [r8, -0xc]                            |         r3 = var_30h;
    0x00006fdc str r3, [r6, -0xc]                            |         *((r6 - 0xc)) = r3;
    0x00006fe0 ldr r3, [r8, -0x8]                            |         r3 = *((r8 - 0x8));
    0x00006fe4 str r3, [r6, -0x8]                            |         *((r6 - 0x8)) = r3;
    0x00006fe8 ldr r3, [r8, -0x4]                            |         r3 = *((r8 - 0x4));
    0x00006fec cmp r8, r2                                    |         
    0x00006fee str r3, [r6, -0x4]                            |         *((r6 - 0x4)) = r3;
    0x00006ff2 bne 0x6fca                                    |         
                                                             |     } while (r8 != r2);
    0x00006ff4 ldrb r3, [r7, 1]                              |     r3 = var_1h_2;
    0x00006ff6 str r3, [r5]                                  |     *(r5) = r3;
    0x00006ff8 b 0x6eac                                      |     goto label_1;
                                                             | label_13:
    0x00006ffa ldr r1, [pc, 0xb0]                            |     
    0x00006ffc mov r2, sb                                    |     r2 = sb;
    0x00006ffe movs r0, 3                                    |     r0 = 3;
    0x00007000 add r1, pc                                    |     r1 = 0xe0b2;
    0x00007002 bl 0xfcdc                                     |     r0 = fcn_0000fcdc (r0);
    0x00007006 blx 0x2f88                                    |     cxa_finalize ();
    0x0000700a movs r3, 0x47                                 |     r3 = 0x47;
    0x0000700c mov r2, r0                                    |     r2 = r0;
    0x0000700e str r3, [r2]                                  |     *(r2) = r3;
    0x00007010 mov r0, r3                                    |     r0 = r3;
    0x00007012 b 0x6eac                                      |     goto label_1;
                                                             | label_8:
    0x00007014 ldr r1, [pc, 0x98]                            |     
    0x00007016 add r1, pc                                    |     r1 = 0xe0ca;
                                                             |     do {
                                                             | label_3:
    0x00007018 mov r2, sb                                    |         r2 = sb;
    0x0000701a movs r0, 2                                    |         r0 = 2;
    0x0000701c bl 0xfcdc                                     |         r0 = fcn_0000fcdc (r0);
    0x00007020 blx 0x2f88                                    |         r0 = cxa_finalize ();
    0x00007024 ldr r3, [r0]                                  |         r3 = *(r0);
                                                             |         if (r3 != 0) {
                                                             | label_4:
    0x00007026 cbz r3, 0x7030                                |             
                                                             | label_15:
    0x00007028 blx 0x2f88                                    |             r0 = cxa_finalize ();
    0x0000702c ldr r0, [r0]                                  |             r0 = *(r0);
    0x0000702e b 0x6eac                                      |             goto label_1;
                                                             |         }
    0x00007030 add r4, sp, 0x30                              |         r4 += var_30h;
    0x00007032 b 0x6f3a                                      |         goto label_2;
                                                             | label_9:
    0x00007034 ldr r1, [pc, 0x7c]                            |         
    0x00007036 add r1, pc                                    |         r1 = 0xe0ee;
    0x00007038 b 0x7018                                      |         
                                                             |     } while (1);
                                                             | label_11:
    0x0000703a ldr r1, [pc, 0x7c]                            |     
    0x0000703c add r1, pc                                    |     r1 = 0xe0fa;
    0x0000703e b 0x7018                                      |     goto label_3;
                                                             | label_10:
    0x00007040 ldr r1, [pc, 0x78]                            |     
    0x00007042 mov r2, sb                                    |     r2 = sb;
    0x00007044 movs r0, 2                                    |     r0 = 2;
    0x00007046 add r1, pc                                    |     r1 = 0xe106;
    0x00007048 bl 0xfcdc                                     |     fcn_0000fcdc (r0);
    0x0000704c mov r0, fp                                    |     r0 = fp;
    0x0000704e bl 0x10978                                    |     r0 = fcn_00010978 (r0);
    0x00007052 blx 0x2f88                                    |     r0 = cxa_finalize ();
    0x00007056 ldr r3, [r0]                                  |     r3 = *(r0);
    0x00007058 b 0x7026                                      |     goto label_4;
                                                             | label_12:
    0x0000705a ldr r1, [pc, 0x64]                            |     
    0x0000705c mov r2, sb                                    |     r2 = sb;
    0x0000705e movs r0, 2                                    |     r0 = 2;
    0x00007060 add r1, pc                                    |     r1 = 0xe126;
    0x00007062 bl 0xfcdc                                     |     r0 = fcn_0000fcdc (r0);
    0x00007066 blx 0x2f88                                    |     cxa_finalize ();
    0x0000706a movs r3, 5                                    |     r3 = 5;
    0x0000706c mov r2, r0                                    |     r2 = r0;
    0x0000706e str r3, [r2]                                  |     *(r2) = r3;
    0x00007070 mov r0, r3                                    |     r0 = r3;
    0x00007072 b 0x6eac                                      |     goto label_1;
                                                             | label_14:
    0x00007074 ldr r1, [pc, 0x4c]                            |     
    0x00007076 mov r2, sb                                    |     r2 = sb;
    0x00007078 movs r0, 3                                    |     r0 = 3;
    0x0000707a add r1, pc                                    |     r1 = 0xe142;
    0x0000707c bl 0xfcdc                                     |     r0 = fcn_0000fcdc (r0);
    0x00007080 blx 0x2f88                                    |     r0 = cxa_finalize ();
    0x00007084 ldr r0, [r0]                                  |     r0 = *(r0);
    0x00007086 b 0x6eac                                      |     goto label_1;
                                                             | label_7:
    0x00007088 blx 0x2cdc                                    |     fprintf_chk ()
    0x0000708c ldrb r2, [r2, 0x17]                           |     r2 = *((r2 + 0x17));
    0x0000708e movs r2, r0                                   |     r2 = r0;
    0x00007090 lsls r4, r1, 0xd                              |     r4 = r1 << 0xd;
    0x00007092 movs r0, r0                                   |     
    0x00007094 ldrb r6, [r0, 0x17]                           |     r6 = *((r0 + 0x17));
    0x00007096 movs r2, r0                                   |     r2 = r0;
    0x00007098 lsls r2, r7, 0x1c                             |     r2 = r7 << 0x1c;
    0x0000709a movs r1, r0                                   |     r1 = r0;
    0x0000709c lsls r4, r6, 0xd                              |     r4 = r6 << 0xd;
    0x0000709e movs r0, r0                                   |     
    0x000070a0 ldrb r6, [r0, 0x16]                           |     r6 = *((r0 + 0x16));
    0x000070a2 movs r2, r0                                   |     r2 = r0;
    0x000070a4 asrs r6, r7, 0xb                              |     r6 = r7 >> 0xb;
    0x000070a6 movs r1, r0                                   |     r1 = r0;
    0x000070a8 lsls r4, r1, 0x1c                             |     r4 = r1 << 0x1c;
    0x000070aa movs r1, r0                                   |     r1 = r0;
    0x000070ac lsls r0, r3, 0x1a                             |     r0 = r3 << 0x1a;
    0x000070ae movs r1, r0                                   |     r1 = r0;
    0x000070b0 lsls r6, r6, 0x16                             |     r6 <<= 0x16;
    0x000070b2 movs r1, r0                                   |     r1 = r0;
    0x000070b4 lsls r2, r5, 0x16                             |     r2 = r5 << 0x16;
    0x000070b6 movs r1, r0                                   |     r1 = r0;
    0x000070b8 lsls r4, r7, 0x17                             |     r4 = r7 << 0x17;
    0x000070ba movs r1, r0                                   |     r1 = r0;
    0x000070bc lsls r6, r0, 0x17                             |     r6 = r0 << 0x17;
    0x000070be movs r1, r0                                   |     r1 = r0;
    0x000070c0 lsls r4, r0, 0x18                             |     r4 = r0 << 0x18;
    0x000070c2 movs r1, r0                                   |     r1 = r0;
    0x000070c4 lsls r6, r0, 0x19                             |     r6 = r0 << 0x19;
    0x000070c6 movs r1, r0                                   |     r1 = r0;
                                                             | }


r2dec has crashed (info: /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/sbin/fwmgr @ 0x70c8).
Please report the bug at https://github.com/radareorg/r2dec-js/issues
Use the option '--issue' or the command 'pddi' to generate 
the needed data for the issue.
    ; assembly                                               | /* r2dec pseudo code output */
                                                             | /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/sbin/fwmgr @ 0x7608 */
                                                             | #include <stdint.h>
                                                             |  
    ; (fcn) fcn.00007608 ()                                  | void fcn_00007608 () {
                                                             |     int16_t var_5ch;
                                                             |     void * s1;
                                                             |     int16_t var_9h;
                                                             |     int8_t var_18h;
                                                             |     int32_t var_5h;
                                                             |     int16_t var_3h;
                                                             |     void * ptr;
                                                             |     int8_t var_0h;
                                                             |     int16_t var_0h_2;
                                                             |     int16_t var_1h;
                                                             |     int8_t var_1h_2;
                                                             |     int8_t var_2h;
                                                             |     int16_t var_28h;
                                                             |     int8_t var_2h_2;
                                                             |     int16_t var_404h;
                                                             |     int16_t var_408h;
    0x00007608 invalid                                       |     
    0x0000760c asrs r5, r5, 7                                |     r5 >>= 7;
    0x0000760e ldr r3, [pc, 0x194]                           |     
    0x00007610 ldr r0, [pc, 0x194]                           |     
    0x00007612 add r2, pc                                    |     r2 += pc;
    0x00007614 push.w {r4, r5, r6, r7, r8, sb, sl, lr}       |     
    0x00007616 blx lr                                        |     lr (r2, r3);
    0x00007618 ldr r3, [r2, r3]                              |     r3 = *((r2 + r3));
    0x0000761a sub.w sp, sp, 0x408                           |     
    0x0000761e add r0, pc                                    |     r0 = 0xedca;
    0x00007620 ldr r4, [pc, 0x188]                           |     
    0x00007622 ldr r3, [r3]                                  |     r3 = *(0x77a6);
    0x00007624 str.w r3, [sp, 0x404]                         |     __asm ("str.w r3, [var_404h]");
    0x00007628 mov.w r3, 0                                   |     r3 = 0;
    0x0000762c blx 0x276c                                    |     r0 = mkdir ();
    0x00007630 cmp r0, 0                                     |     
    0x00007632 add r4, pc                                    |     r4 = 0xede2;
    0x00007634 blt 0x7662                                    |     
                                                             |     while (r3 == 0x11) {
    0x00007636 ldr r3, [pc, 0x178]                           |         
    0x00007638 ldr r3, [r4, r3]                              |         r3 = *((r4 + r3));
    0x0000763a ldr r3, [r3]                                  |         r3 = *(0x77b2);
    0x0000763c cmp r3, 1                                     |         
                                                             |         if (r3 < 1) {
    0x0000763e bls 0x767c                                    |             goto label_4;
                                                             |         }
                                                             | label_1:
    0x00007640 movs r0, 0                                    |         r0 = 0;
                                                             | label_0:
    0x00007642 ldr r2, [pc, 0x170]                           |         
    0x00007644 ldr r3, [pc, 0x15c]                           |         r3 = *(0x77a4);
    0x00007646 add r2, pc                                    |         r2 = 0xee00;
    0x00007648 ldr r3, [r2, r3]                              |         r3 = *(0xee00);
    0x0000764a ldr r2, [r3]                                  |         r2 = *(0xee00);
    0x0000764c ldr.w r3, [sp, 0x404]                         |         r3 = var_404h;
    0x00007650 eors r2, r3                                   |         r2 ^= r3;
    0x00007652 mov.w r3, 0                                   |         r3 = 0;
                                                             |         if (r2 != r3) {
    0x00007656 bne.w 0x779c                                  |             goto label_5;
                                                             |         }
    0x0000765a add.w sp, sp, 0x408                           |         
    0x0000765e pop.w {r4, r5, r6, r7, r8, sb, sl, pc}        |         
    0x00007662 blx 0x2f88                                    |         r0 = cxa_finalize ();
    0x00007666 ldr r3, [r0]                                  |         r3 = *(r0);
    0x00007668 mov r5, r0                                    |         r5 = r0;
    0x0000766a cmp r3, 0x11                                  |         
    0x0000766c beq 0x7636                                    |         
                                                             |     }
    0x0000766e ldr r1, [pc, 0x148]                           |     
    0x00007670 movs r0, 2                                    |     r0 = 2;
    0x00007672 add r1, pc                                    |     r1 = 0xee30;
    0x00007674 bl 0xfcdc                                     |     fcn_0000fcdc (r0);
    0x00007678 ldr r0, [r5]                                  |     r0 = *(r5);
    0x0000767a b 0x7642                                      |     goto label_0;
                                                             | label_4:
    0x0000767c ldr r3, [pc, 0x13c]                           |     r3 = *(0x77bc);
    0x0000767e add r5, sp, 4                                 |     r5 += s1;
    0x00007680 ldr r1, [pc, 0x13c]                           |     
    0x00007682 ldr r0, [r4, r3]                              |     r0 = *((r4 + r3));
    0x00007684 add r1, pc                                    |     r1 = 0xee48;
    0x00007686 blx 0x2f70                                    |     r0 = vdprintf_chk ();
    0x0000768a subs r3, r0, 0                                |     r3 = r0 - 0;
    0x0000768c mov r4, r0                                    |     r4 = r0;
    0x0000768e ldr r0, [pc, 0x134]                           |     
    0x00007690 it ne                                         |     
                                                             |     if (r3 == r0) {
    0x00007692 movne r3, 1                                   |         r3 = 1;
                                                             |     }
    0x00007694 mov.w r2, 0x400                               |     r2 = 0x400;
    0x00007698 mov r1, r5                                    |     r1 = r5;
    0x0000769a add r0, pc                                    |     r0 = 0xee64;
    0x0000769c bl 0x10338                                    |     r0 = fcn_00010338 (r0, r1, r2, r3);
    0x000076a0 cmp r0, 0                                     |     
                                                             |     if (r0 != 0) {
    0x000076a2 bne 0x775e                                    |         goto label_6;
                                                             |     }
    0x000076a4 ldr r1, [pc, 0x120]                           |     
    0x000076a6 movs r2, 0x1f                                 |     r2 = 0x1f;
    0x000076a8 mov r0, r5                                    |     r0 = r5;
    0x000076aa add r1, pc                                    |     r1 = 0xee76;
    0x000076ac blx 0x27e4                                    |     r0 = memcmp (r0, r1, r2);
    0x000076b0 cmp r0, 0                                     |     
                                                             |     if (r0 != 0) {
    0x000076b2 bne 0x7778                                    |         goto label_7;
                                                             |     }
    0x000076b4 ldr r1, [pc, 0x114]                           |     
    0x000076b6 add.w r5, sp, 0x22                            |     r5 += ptr;
    0x000076ba movs r2, 6                                    |     r2 = 6;
    0x000076bc mov r0, r5                                    |     r0 = r5;
    0x000076be add r1, pc                                    |     r1 = 0xee8e;
    0x000076c0 blx 0x2ea4                                    |     r0 = realloc (r0, r1);
    0x000076c4 cmp r0, 0                                     |     
                                                             |     if (r0 != 0) {
    0x000076c6 bne 0x7790                                    |         goto label_8;
                                                             |     }
    0x000076c8 add r0, sp, 0x28                              |     r0 += var_28h;
                                                             | label_3:
    0x000076ca ldr r1, [pc, 0x104]                           |     
    0x000076cc add r1, pc                                    |     r1 = 0xeea2;
    0x000076ce blx 0x2bd4                                    |     r0 = sd_bus_message_new_method_return ();
    0x000076d2 cmp r0, 0                                     |     
                                                             |     if (r0 == 0) {
    0x000076d4 beq 0x7772                                    |         goto label_9;
                                                             |     }
    0x000076d6 ldr r6, [pc, 0xfc]                            |     
    0x000076d8 adds r0, 1                                    |     r0++;
    0x000076da movs r5, 0                                    |     r5 = 0;
    0x000076dc add r6, pc                                    |     r6 = 0xeeb6;
    0x000076de mov r3, r6                                    |     r3 = r6;
    0x000076e0 ldrh r8, [r3, 0x20]!                          |     r8 = *((r3 += 0x20));
    0x000076e4 ldrb r7, [r3, 2]                              |     r7 = *((r3 + 2));
                                                             | label_2:
    0x000076e6 movs r1, 0x3a                                 |     r1 = 0x3a;
    0x000076e8 strh r8, [r0, -0x3]                           |     *((r0 - 0x3)) = r8;
    0x000076ec strb r7, [r0, -0x1]                           |     *((r0 - 0x1)) = r7;
    0x000076f0 subs r4, r0, 3                                |     r4 -= var_3h;
    0x000076f2 blx 0x28e4                                    |     r0 = fcn_000028e4 ();
    0x000076f6 cmp r0, 0                                     |     
                                                             |     if (r0 == 0) {
    0x000076f8 beq 0x7778                                    |         goto label_7;
                                                             |     }
    0x000076fa movs r1, 0x22                                 |     r1 = 0x22;
    0x000076fc strb r5, [r0], 1                              |     *(r0) = r5;
                                                             |     r0++;
    0x00007700 blx 0x28e4                                    |     r0 = fcn_000028e4 ();
    0x00007704 mov r3, r0                                    |     r3 = r0;
                                                             |     if (r0 == 0) {
    0x00007706 cbz r0, 0x7778                                |         goto label_7;
                                                             |     }
    0x00007708 add.w r2, r6, 0x24                            |     r2 = r6 + 0x24;
    0x0000770c sub.w sl, r0, 9                               |     sl -= var_9h;
    0x00007710 ldm r2!, {r0, r1}                             |     r0 = *(r2!);
                                                             |     r1 = *((r2! + 4));
    0x00007712 ldrh r2, [r2]                                 |     r2 = *(r2);
    0x00007714 str r0, [r3, -0x9]                            |     *((r3 - 0x9)) = r0;
    0x00007716 lsrs r1, r1, 0x10                             |     r1 >>= 0x10;
    0x00007718 adds r0, r3, 1                                |     r0 += var_1h;
    0x0000771a str r1, [r3, -0x5]                            |     *((r3 - 0x5)) = r1;
    0x0000771e movs r1, 0x22                                 |     r1 = 0x22;
    0x00007720 strh r2, [r3, -0x1]                           |     *((r3 - 0x1)) = r2;
    0x00007724 blx 0x28e4                                    |     r0 = fcn_000028e4 ();
    0x00007728 mov sb, r0                                    |     sb = r0;
                                                             |     if (r0 == 0) {
    0x0000772a cbz r0, 0x7778                                |         goto label_7;
                                                             |     }
    0x0000772c ldrb r3, [r0, 1]                              |     r3 = var_1h_2;
    0x0000772e cmp r3, 0xa                                   |     
                                                             |     if (r3 != 0xa) {
    0x00007730 bne 0x7778                                    |         goto label_7;
                                                             |     }
    0x00007732 mov r1, sl                                    |     r1 = sl;
    0x00007734 mov r0, r4                                    |     r0 = r4;
    0x00007736 strb.w r5, [sb]                               |     *(sb) = r5;
    0x0000773a bl 0x109a4                                    |     r0 = fcn_000109a4 (r0);
                                                             |     if (r0 != 0) {
    0x0000773e cbnz r0, 0x7794                               |         goto label_10;
                                                             |     }
    0x00007740 ldrb.w r3, [sb, 2]                            |     r3 = var_2h;
    0x00007744 add.w r0, sb, 2                               |     r0 += var_2h;
    0x00007748 cmp r3, 0x6d                                  |     
                                                             |     if (r3 != 0x6d) {
    0x0000774a bne.w 0x7640                                  |         goto label_1;
                                                             |     }
    0x0000774e ldrb r3, [r0, 1]                              |     r3 = var_28h;
    0x00007750 cmp r3, 0x74                                  |     
                                                             |     if (r3 != 0x74) {
    0x00007752 bne.w 0x7640                                  |         goto label_1;
                                                             |     }
    0x00007756 ldrb r3, [r0, 2]                              |     r3 = var_2h_2;
    0x00007758 cmp r3, 0x64                                  |     
                                                             |     if (r3 == 0x64) {
    0x0000775a beq 0x76e6                                    |         goto label_2;
                                                             |     }
    0x0000775c b 0x7640                                      |     goto label_1;
                                                             | label_6:
    0x0000775e blx 0x2f88                                    |     r0 = cxa_finalize ();
    0x00007762 ldr r0, [r0]                                  |     r0 = *(r0);
    0x00007764 cmp r4, 0                                     |     
                                                             |     if (r4 == 0) {
    0x00007766 beq.w 0x7642                                  |         goto label_0;
                                                             |     }
    0x0000776a cmp r0, 2                                     |     
                                                             |     if (r0 != 2) {
    0x0000776c bne.w 0x7642                                  |         goto label_0;
                                                             |     }
    0x00007770 b 0x7640                                      |     goto label_1;
                                                             | label_9:
    0x00007772 cmp r4, 0                                     |     
                                                             |     if (r4 != 0) {
    0x00007774 bne.w 0x7640                                  |         goto label_1;
                                                             |     }
                                                             | label_7:
    0x00007778 ldr r1, [pc, 0x5c]                            |     
    0x0000777a movs r0, 2                                    |     r0 = 2;
    0x0000777c add r1, pc                                    |     r1 = 0xef58;
    0x0000777e bl 0xfcdc                                     |     r0 = fcn_0000fcdc (r0);
    0x00007782 blx 0x2f88                                    |     cxa_finalize ();
    0x00007786 movs r3, 0x16                                 |     r3 = 0x16;
    0x00007788 mov r2, r0                                    |     r2 = r0;
    0x0000778a str r3, [r2]                                  |     *(r2) = r3;
    0x0000778c mov r0, r3                                    |     r0 = r3;
    0x0000778e b 0x7642                                      |     goto label_0;
                                                             | label_8:
    0x00007790 mov r0, r5                                    |     r0 = r5;
    0x00007792 b 0x76ca                                      |     goto label_3;
                                                             | label_10:
    0x00007794 blx 0x2f88                                    |     r0 = cxa_finalize ();
    0x00007798 ldr r0, [r0]                                  |     r0 = *(r0);
    0x0000779a b 0x7642                                      |     goto label_0;
                                                             | label_5:
    0x0000779c blx 0x2cdc                                    |     fprintf_chk ()
    0x000077a0 strb r2, [r5, 0x18]                           |     var_18h = r2;
    0x000077a2 movs r2, r0                                   |     r2 = r0;
    0x000077a4 lsls r4, r1, 0xd                              |     r4 = r1 << 0xd;
    0x000077a6 movs r0, r0                                   |     
    0x000077a8 lsls r2, r5, 0xa                              |     r2 = r5 << 0xa;
    0x000077aa movs r1, r0                                   |     r1 = r0;
    0x000077ac strb r2, [r1, 0x18]                           |     *((r1 + 0x18)) = r2;
    0x000077ae movs r2, r0                                   |     r2 = r0;
    0x000077b0 lsls r4, r6, 0xb                              |     r4 = r6 << 0xb;
    0x000077b2 movs r0, r0                                   |     
    0x000077b4 strb r6, [r6, 0x17]                           |     *((r6 + 0x17)) = r6;
    0x000077b6 movs r2, r0                                   |     r2 = r0;
    0x000077b8 lsls r2, r4, 9                                |     r2 = r4 << 9;
    0x000077ba movs r1, r0                                   |     r1 = r0;
    0x000077bc lsls r0, r2, 0xd                              |     r0 = r2 << 0xd;
    0x000077be movs r0, r0                                   |     
    0x000077c0 mcrr2 p0, 0, r0, r8, c0                       |     __asm ("mcrr2 p0, 0, r0, r8, c0");
    0x000077c4 lsls r2, r3, 9                                |     r2 = r3 << 9;
    0x000077c6 movs r1, r0                                   |     r1 = r0;
    0x000077c8 lsls r2, r3, 0xf                              |     r2 = r3 << 0xf;
    0x000077ca movs r1, r0                                   |     r1 = r0;
    0x000077cc lsls r2, r0, 9                                |     r2 = r0 << 9;
    0x000077ce movs r1, r0                                   |     r1 = r0;
    0x000077d0 lsls r4, r7, 8                                |     r4 = r7 << 8;
    0x000077d2 movs r1, r0                                   |     r1 = r0;
    0x000077d4 lsls r0, r5, 0xe                              |     r0 = r5 << 0xe;
    0x000077d6 movs r1, r0                                   |     r1 = r0;
    0x000077d8 lsls r4, r2, 6                                |     r4 = r2 << 6;
    0x000077da movs r1, r0                                   |     r1 = r0;
                                                             | }
    ; assembly                                           | /* r2dec pseudo code output */
                                                         | /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/sbin/fwmgr @ 0x7ac8 */
                                                         | #include <stdint.h>
                                                         |  
    ; (fcn) fcn.00007ac8 ()                              | void fcn_00007ac8 () {
                                                         |     int16_t var_4h;
                                                         |     int32_t var_4h_2;
                                                         |     int8_t var_5h;
                                                         |     int16_t var_ch;
    0x00007ac8 cmnvc sl, 0x4f000000                      |     __asm ("cmnvc sl, 0x4f000000");
    0x00007acc ldr r2, [pc, 0x70]                        |     
    0x00007ace push.w {r4, r5, r6, r7, r8, lr}           |     
    0x00007ad2 mul r5, r3, r0                            |     r5 = r3 * r0;
    0x00007ad6 ldr r3, [pc, 0x6c]                        |     r3 = *(0x7b46);
    0x00007ad8 sub sp, 0x10                              |     
    0x00007ada add r2, pc                                |     r2 = 0xf61e;
    0x00007adc ldr r6, [pc, 0x68]                        |     
    0x00007ade add.w r8, sp, 4                           |     r8 += var_4h;
    0x00007ae2 ldr r3, [r2, r3]                          |     
    0x00007ae4 movs r7, 1                                |     r7 = 1;
    0x00007ae6 add r6, pc                                |     r6 = 0xf632;
    0x00007ae8 ldr r3, [r3]                              |     r3 = *(0xf61e);
    0x00007aea str r3, [sp, 0xc]                         |     var_ch = r3;
    0x00007aec mov.w r3, 0                               |     r3 = 0;
    0x00007af0 b 0x7afe                                  |     
                                                         |     while (r4 <= var_4h) {
    0x00007af2 blx 0x2f88                                |         cxa_finalize ();
                                                         |         if (r4 == 0) {
    0x00007af6 cbz r4, 0x7b30                            |             goto label_0;
                                                         |         }
    0x00007af8 ldr r3, [r0]                              |         r3 = *(r0);
    0x00007afa cmp r3, 4                                 |         
                                                         |         if (r3 != 4) {
    0x00007afc bne 0x7b14                                |             goto label_1;
                                                         |         }
    0x00007afe ldr r3, [r6]                              |         r3 = *(r6);
    0x00007b00 mov r2, r5                                |         r2 = r5;
    0x00007b02 movs r1, 1                                |         r1 = 1;
    0x00007b04 mov r0, r8                                |         r0 = r8;
    0x00007b06 strd r3, r7, [sp, 4]                      |         __asm ("strd r3, r7, [var_4h]");
    0x00007b0a blx 0x2d00                                |         PEM_read_PUBKEY ();
    0x00007b0e subs r4, r0, 0                            |         r4 -= var_4h;
    0x00007b10 ble 0x7af2                                |         
                                                         |     }
    0x00007b12 movs r3, 0                                |     r3 = 0;
                                                         |     do {
                                                         | label_1:
    0x00007b14 ldr r1, [pc, 0x34]                        |         
    0x00007b16 ldr r2, [pc, 0x2c]                        |         r2 = *(0x7b46);
    0x00007b18 add r1, pc                                |         r1 = 0xf668;
    0x00007b1a ldr r2, [r1, r2]                          |         r2 = *(0xf668);
    0x00007b1c ldr r1, [r2]                              |         r1 = *(0xf668);
    0x00007b1e ldr r2, [sp, 0xc]                         |         r2 = var_ch;
    0x00007b20 eors r1, r2                               |         r1 ^= r2;
    0x00007b22 mov.w r2, 0                               |         r2 = 0;
                                                         |         if (r1 != r2) {
    0x00007b26 bne 0x7b3a                                |             goto label_2;
                                                         |         }
    0x00007b28 mov r0, r3                                |         r0 = r3;
    0x00007b2a add sp, 0x10                              |         
    0x00007b2c pop.w {r4, r5, r6, r7, r8, pc}            |         
                                                         | label_0:
    0x00007b30 movs r2, 0x6e                             |         r2 = 0x6e;
    0x00007b32 strb r7, [r6, 4]                          |         *((r6 + 4)) = r7;
    0x00007b34 mov r3, r2                                |         r3 = r2;
    0x00007b36 str r2, [r0]                              |         *(r0) = r2;
    0x00007b38 b 0x7b14                                  |         
                                                         |     } while (1);
                                                         | label_2:
    0x00007b3a blx 0x2cdc                                |     fprintf_chk ()
    0x00007b3e nop                                       |     
    0x00007b40 strb r2, [r4, 5]                          |     var_5h = r2;
    0x00007b42 movs r2, r0                               |     r2 = r0;
    0x00007b44 lsls r4, r1, 0xd                          |     r4 = r1 << 0xd;
    0x00007b46 movs r0, r0                               |     
    0x00007b48 strb r6, [r6, 0x1e]                       |     *((r6 + 0x1e)) = r6;
    0x00007b4a movs r2, r0                               |     r2 = r0;
    0x00007b4c strb r4, [r4, 4]                          |     *((r4 + 4)) = r4;
    0x00007b4e movs r2, r0                               |     r2 = r0;
                                                         | }
    ; assembly                                               | /* r2dec pseudo code output */
                                                             | /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/sbin/fwmgr @ 0x7cd8 */
                                                             | #include <stdint.h>
                                                             |  
    ; (fcn) fcn.00007cd8 ()                                  | void fcn_00007cd8 (int16_t arg1, int16_t arg2, int16_t arg3) {
                                                             |     int16_t var_4h;
                                                             |     int16_t var_8h;
                                                             |     int16_t var_ch;
                                                             |     int16_t var_10h;
                                                             |     int16_t var_14h;
                                                             |     r0 = arg1;
                                                             |     r1 = arg2;
                                                             |     r2 = arg3;
    0x00007cd8 svcmi 0xf0e92d                                |     __asm ("svcmi 0xf0e92d");
    0x00007cdc mov r6, r2                                    |     r6 = r2;
    0x00007cde ldr r2, [pc, 0x2c4]                           |     
    0x00007ce0 sub sp, 0x1c                                  |     
    0x00007ce2 mov r5, r0                                    |     r5 = r0;
    0x00007ce4 mov r4, r1                                    |     r4 = r1;
    0x00007ce6 ldr r3, [pc, 0x2c0]                           |     r3 = *(0x7faa);
    0x00007ce8 add r2, pc                                    |     r2 = 0xfc92;
    0x00007cea ldr r7, [pc, 0x2c0]                           |     
    0x00007cec ldr r3, [r2, r3]                              |     
    0x00007cee add r7, pc                                    |     r7 = 0xfca0;
    0x00007cf0 ldr r3, [r3]                                  |     r3 = *(0xfc92);
    0x00007cf2 str r3, [sp, 0x14]                            |     var_14h = r3;
    0x00007cf4 mov.w r3, 0                                   |     r3 = 0;
                                                             |     if (r6 != 0) {
    0x00007cf8 cbz r6, 0x7cfe                                |         
    0x00007cfa movs r3, 0                                    |         r3 = 0;
    0x00007cfc str r3, [r6]                                  |         *(r6) = r3;
                                                             |     }
    0x00007cfe ldr.w sl, [pc, 0x2b0]                         |     sl = *(0x00007fb0);
    0x00007d02 add sl, pc                                    |     sl += pc;
    0x00007d04 ldr.w sb, [sl, 8]                             |     sb = *((sl + 8));
    0x00007d08 cmp.w sb, 0                                   |     
                                                             |     if (sb != 0) {
    0x00007d0c beq 0x7d94                                    |         
    0x00007d0e ldr.w r8, [sl, 0xc]                           |         r8 = *((sl + 0xc));
    0x00007d12 cmp r8, r4                                    |         
                                                             |         if (r8 >= r4) {
    0x00007d14 bls 0x7d6e                                    |             
    0x00007d16 mov r0, r5                                    |             r0 = r5;
    0x00007d18 mov r2, r4                                    |             r2 = r4;
    0x00007d1a mov r1, sb                                    |             r1 = sb;
    0x00007d1c sub.w r5, r8, r4                              |             r5 = r8 - r4;
    0x00007d20 blx 0x2b08                                    |             EVP_MD_CTX_new ();
    0x00007d24 mov r0, r5                                    |             r0 = r5;
    0x00007d26 blx 0x2cc4                                    |             r0 = stack_chk_fail ();
    0x00007d2a mov r7, r0                                    |             r7 = r0;
    0x00007d2c cmp r0, 0                                     |             
                                                             |             if (r0 == 0) {
    0x00007d2e beq.w 0x7f8a                                  |                 goto label_5;
                                                             |             }
    0x00007d32 mov r2, r5                                    |             r2 = r5;
    0x00007d34 add.w r1, sb, r4                              |             r1 = sb + r4;
    0x00007d38 blx 0x2b08                                    |             EVP_MD_CTX_new ();
    0x00007d3c mov r0, sb                                    |             r0 = sb;
    0x00007d3e blx 0x29cc                                    |             fcn_000029cc ();
    0x00007d42 strd r7, r5, [sl, 8]                          |             __asm ("strd r7, r5, [sl, 8]");
    0x00007d46 cmp r6, 0                                     |             
                                                             |             if (r6 == 0) {
    0x00007d48 beq.w 0x7e9e                                  |                 goto label_6;
                                                             |             }
    0x00007d4c movs r2, 0                                    |             r2 = 0;
    0x00007d4e str r4, [r6]                                  |             *(r6) = r4;
                                                             | label_0:
    0x00007d50 ldr r1, [pc, 0x260]                           |             
    0x00007d52 ldr r3, [pc, 0x254]                           |             r3 = *(0x7faa);
    0x00007d54 add r1, pc                                    |             r1 = 0xfd0c;
    0x00007d56 ldr r3, [r1, r3]                              |             r3 = *(0xfd0c);
    0x00007d58 ldr r1, [r3]                                  |             r1 = *(0xfd0c);
    0x00007d5a ldr r3, [sp, 0x14]                            |             r3 = var_14h;
    0x00007d5c eors r1, r3                                   |             r1 ^= r3;
    0x00007d5e mov.w r3, 0                                   |             r3 = 0;
                                                             |             if (r1 != r3) {
    0x00007d62 bne.w 0x7f86                                  |                 goto label_7;
                                                             |             }
    0x00007d66 mov r0, r2                                    |             r0 = r2;
    0x00007d68 add sp, 0x1c                                  |             
    0x00007d6a pop.w {r4, r5, r6, r7, r8, sb, sl, fp, pc}    |             
                                                             |         }
    0x00007d6e mov r0, r5                                    |         r0 = r5;
    0x00007d70 mov r2, r8                                    |         r2 = r8;
    0x00007d72 mov r1, sb                                    |         r1 = sb;
    0x00007d74 sub.w r4, r4, r8                              |         r4 -= r8;
    0x00007d78 add r5, r8                                    |         r5 += r8;
    0x00007d7a blx 0x2b08                                    |         EVP_MD_CTX_new ();
                                                             |         if (r6 != 0) {
    0x00007d7e cbz r6, 0x7d84                                |             
    0x00007d80 str.w r8, [r6]                                |             __asm ("str.w r8, [r6]");
                                                             |         }
    0x00007d84 mov r0, sb                                    |         r0 = sb;
    0x00007d86 blx 0x29cc                                    |         fcn_000029cc ();
    0x00007d8a ldr r3, [pc, 0x22c]                           |         
    0x00007d8c movs r2, 0                                    |         r2 = 0;
    0x00007d8e add r3, pc                                    |         r3 = 0xfd4c;
    0x00007d90 strd r2, r2, [r3, 8]                          |         __asm ("strd r2, r2, [r3, 8]");
                                                             |     }
    0x00007d94 ldr.w sl, [pc, 0x224]                         |     sl = *(0x00007fbc);
    0x00007d98 add sl, pc                                    |     sl += pc;
    0x00007d9a ldr.w r2, [sl, 0x10]                          |     r2 = *((sl + 0x10));
    0x00007d9e cmp r2, 2                                     |     
                                                             |     if (r2 == 2) {
    0x00007da0 beq 0x7de4                                    |         goto label_8;
                                                             |     }
    0x00007da2 mov.w r8, 0                                   |     r8 = 0;
    0x00007da6 add.w sl, sp, 0x10                            |     sl += var_10h;
    0x00007daa mov sb, r8                                    |     sb = r8;
                                                             |     if (r4 != 0) {
    0x00007dac cbnz r4, 0x7dc6                               |         goto label_9;
                                                             |     }
    0x00007dae b 0x7f2a                                      |     goto label_10;
                                                             |     do {
    0x00007db0 ldr r3, [sp, 0x10]                            |         r3 = var_10h;
    0x00007db2 cmp r3, 0                                     |         
                                                             |         if (r3 == 0) {
    0x00007db4 beq 0x7e6e                                    |             goto label_11;
                                                             |         }
    0x00007db6 add r8, r3                                    |         r8 += r3;
                                                             |         if (r6 != 0) {
    0x00007db8 cbz r6, 0x7dc0                                |             
    0x00007dba ldr r1, [r6]                                  |             r1 = *(r6);
    0x00007dbc add r1, r3                                    |             r1 += r3;
    0x00007dbe str r1, [r6]                                  |             *(r6) = r1;
                                                             |         }
    0x00007dc0 cmp r4, r8                                    |         
                                                             |         if (r4 < r8) {
    0x00007dc2 bls.w 0x7f18                                  |             goto label_12;
                                                             |         }
                                                             | label_9:
    0x00007dc6 mov r2, sl                                    |         r2 = sl;
    0x00007dc8 sub.w r1, r4, r8                              |         r1 = r4 - r8;
    0x00007dcc add.w r0, r5, r8                              |         r0 = r5 + r8;
    0x00007dd0 str.w sb, [sp, 0x10]                          |         __asm ("str.w sb, [var_10h]");
    0x00007dd4 bl 0x7b50                                     |         r0 = fcn_00007b50 (r0, r1, r2);
    0x00007dd8 cmp r0, 0                                     |         
    0x00007dda beq 0x7db0                                    |         
                                                             |     } while (r0 == 0);
    0x00007ddc blx 0x2f88                                    |     r0 = cxa_finalize ();
    0x00007de0 ldr r2, [r0]                                  |     r2 = *(r0);
    0x00007de2 b 0x7d50                                      |     goto label_0;
                                                             | label_8:
    0x00007de4 strd r5, r4, [sl, 0x20]                       |     __asm ("strd r5, r4, [sl, 0x20]");
    0x00007de8 cmp r4, 0                                     |     
                                                             |     if (r4 == 0) {
    0x00007dea beq.w 0x7f2a                                  |         goto label_10;
                                                             |     }
    0x00007dee ldr.w sb, [pc, 0x1d0]                         |     sb = *(0x00007fc0);
    0x00007df2 mov r8, r4                                    |     r8 = r4;
    0x00007df4 ldr r2, [pc, 0x1cc]                           |     
    0x00007df6 ldr r3, [pc, 0x1d0]                           |     
    0x00007df8 add sb, pc                                    |     sb += pc;
    0x00007dfa add r2, pc                                    |     r2 = 0xfdc2;
    0x00007dfc add.w fp, sb, 0x14                            |     
    0x00007e00 add r3, pc                                    |     r3 = 0xfdce;
    0x00007e02 str r2, [sp, 8]                               |     var_8h = r2;
    0x00007e04 mov r2, r4                                    |     r2 = r4;
    0x00007e06 str r3, [sp, 4]                               |     var_4h = r3;
    0x00007e08 adds r3, 0x14                                 |     r3 += 0x14;
    0x00007e0a str r3, [sp, 0xc]                             |     var_ch = r3;
                                                             | label_1:
    0x00007e0c ldr.w r0, [sl, 0x4c]                          |     r0 = *((sl + 0x4c));
    0x00007e10 cmp r0, 0                                     |     
                                                             |     if (r0 == 0) {
    0x00007e12 beq.w 0x7f52                                  |         goto label_13;
                                                             |     }
    0x00007e16 ldr.w r3, [sl, 0x18]                          |     r3 = *((sl + 0x18));
                                                             |     if (r3 == 0) {
    0x00007e1a cbnz r3, 0x7e42                               |         
    0x00007e1c add r2, sp, 0x10                              |         r2 += var_10h;
    0x00007e1e mov.w r1, 0x20000                             |         r1 = 0x20000;
    0x00007e22 str r3, [sp, 0x10]                            |         var_10h = r3;
    0x00007e24 bl 0x7b50                                     |         r0 = fcn_00007b50 (r0, r1, r2);
    0x00007e28 cmp r0, 0                                     |         
                                                             |         if (r0 != 0) {
    0x00007e2a bne.w 0x7f74                                  |             goto label_14;
                                                             |         }
    0x00007e2e ldr r3, [sp, 0x10]                            |         r3 = var_10h;
    0x00007e30 cmp r3, 0                                     |         
                                                             |         if (r3 == 0) {
    0x00007e32 beq.w 0x7f64                                  |             goto label_15;
                                                             |         }
    0x00007e36 str.w r3, [sl, 0x18]                          |         __asm ("str.w r3, [sl, 0x18]");
    0x00007e3a ldr.w r3, [sl, 0x4c]                          |         r3 = *((sl + 0x4c));
    0x00007e3e str.w r3, [sl, 0x14]                          |         __asm ("str.w r3, [sl, 0x14]");
                                                             |     }
    0x00007e42 movs r1, 0                                    |     r1 = 0;
    0x00007e44 mov r0, fp                                    |     r0 = fp;
    0x00007e46 blx 0x29bc                                    |     fcn_000029bc ();
                                                             |     if (r6 != 0) {
    0x00007e4a cbz r6, 0x7e5c                                |         
    0x00007e4c ldr r3, [r6]                                  |         r3 = *(r6);
    0x00007e4e ldr.w r2, [sb, 0x24]                          |         r2 = *((sb + 0x24));
    0x00007e52 subs r3, r3, r2                               |         r3 -= r2;
    0x00007e54 add r3, r8                                    |         r3 += r8;
    0x00007e56 str r3, [r6]                                  |         *(r6) = r3;
    0x00007e58 ldr.w r8, [sb, 0x24]                          |         r8 = *((sb + 0x24));
                                                             |     }
    0x00007e5c adds r3, r0, 4                                |     r3 = r0 + 4;
    0x00007e5e cmp r3, 6                                     |     
                                                             |     if (r3 > 6) {
    0x00007e60 bhi 0x7f00                                    |         goto label_16;
                                                             |     }
                                                             |     /* switch table (7 cases) at 0x7e66 */
    0x00007e62 tbb [pc, r3]                                  |     __asm ("tbb [0x00007e68]");
                                                             | label_11:
    0x00007e6e cmp r6, 0                                     |     
                                                             |     if (r6 == 0) {
    0x00007e70 beq 0x7f3c                                    |         goto label_17;
                                                             |     }
                                                             | label_3:
    0x00007e72 ldr r3, [pc, 0x158]                           |     r3 = *(0x7fce);
    0x00007e74 mov r2, r8                                    |     r2 = r8;
    0x00007e76 mov r1, r5                                    |     r1 = r5;
    0x00007e78 ldr r0, [r7, r3]                              |     r0 = *((r7 + r3));
    0x00007e7a blx 0x2e1c                                    |     fcn_00002e1c ();
    0x00007e7e add.w r3, r8, -1                              |     r3 = r8 + -1;
    0x00007e82 cmp.w r8, 0                                   |     
                                                             |     if (r8 == 0) {
    0x00007e86 beq 0x7e9e                                    |         goto label_6;
                                                             |     }
                                                             | label_2:
    0x00007e88 ldr r2, [pc, 0x144]                           |     r2 = *(0x7fd0);
    0x00007e8a adds r3, 1                                    |     r3++;
    0x00007e8c add r3, r5                                    |     r3 += r5;
    0x00007e8e ldr r0, [r7, r2]                              |     r0 = *((r7 + r2));
    0x00007e90 ldr r2, [r0]                                  |     r2 = *(r0);
                                                             |     do {
    0x00007e92 ldrb r1, [r5], 1                              |         r1 = *(r5);
                                                             |         r5++;
    0x00007e96 cmp r3, r5                                    |         
    0x00007e98 add r2, r1                                    |         r2 += r1;
    0x00007e9a str r2, [r0]                                  |         *(r0) = r2;
    0x00007e9c bne 0x7e92                                    |         
                                                             |     } while (r3 != r5);
                                                             | label_6:
    0x00007e9e movs r2, 0                                    |     r2 = 0;
    0x00007ea0 b 0x7d50                                      |     goto label_0;
    0x00007ea2 ldr r1, [pc, 0x130]                           |     
    0x00007ea4 movs r0, 3                                    |     r0 = 3;
    0x00007ea6 add r1, pc                                    |     r1 = 0xfe80;
    0x00007ea8 bl 0xfcdc                                     |     r0 = fcn_0000fcdc (r0);
    0x00007eac blx 0x2f88                                    |     cxa_finalize ();
    0x00007eb0 movs r3, 0x47                                 |     r3 = 0x47;
    0x00007eb2 mov r2, r3                                    |     r2 = r3;
    0x00007eb4 str r3, [r0]                                  |     *(r0) = r3;
    0x00007eb6 b 0x7d50                                      |     goto label_0;
    0x00007eb8 ldr r2, [sp, 4]                               |     r2 = var_4h;
    0x00007eba ldr r0, [r2, 0x4c]                            |     r0 = *((r2 + 0x4c));
    0x00007ebc blx 0x29cc                                    |     fcn_000029cc ();
    0x00007ec0 ldr r2, [sp, 4]                               |     r2 = var_4h;
    0x00007ec2 movs r3, 0                                    |     r3 = 0;
    0x00007ec4 ldr r0, [sp, 0xc]                             |     r0 = var_ch;
    0x00007ec6 str r3, [r2, 0x4c]                            |     *((r2 + 0x4c)) = r3;
    0x00007ec8 blx 0x2808                                    |     inflateEnd ();
    0x00007ecc ldr r2, [sp, 4]                               |     r2 = var_4h;
    0x00007ece movs r3, 0                                    |     r3 = 0;
    0x00007ed0 str r3, [r2, 0x10]                            |     *((r2 + 0x10)) = r3;
    0x00007ed2 ldr r3, [sp, 8]                               |     r3 = var_8h;
    0x00007ed4 ldr r2, [r3, 0x24]                            |     r2 = *((r3 + 0x24));
    0x00007ed6 cmp r2, 0                                     |     
                                                             |     if (r2 != 0) {
    0x00007ed8 bne 0x7e0c                                    |         goto label_1;
                                                             |     }
    0x00007eda ldr r3, [pc, 0xf0]                            |     r3 = *(0x7fce);
    0x00007edc mov r2, r4                                    |     r2 = r4;
    0x00007ede mov r1, r5                                    |     r1 = r5;
    0x00007ee0 ldr r0, [r7, r3]                              |     r0 = *((r7 + r3));
    0x00007ee2 blx 0x2e1c                                    |     fcn_00002e1c ();
    0x00007ee6 subs r3, r4, 1                                |     r3 = r4 - 1;
    0x00007ee8 b 0x7e88                                      |     goto label_2;
    0x00007eea ldr r1, [pc, 0xec]                            |     
    0x00007eec movs r0, 2                                    |     r0 = 2;
    0x00007eee add r1, pc                                    |     r1 = 0xfecc;
    0x00007ef0 bl 0xfcdc                                     |     r0 = fcn_0000fcdc (r0);
    0x00007ef4 blx 0x2f88                                    |     cxa_finalize ();
    0x00007ef8 movs r3, 0xc                                  |     r3 = 0xc;
    0x00007efa mov r2, r3                                    |     r2 = r3;
    0x00007efc str r3, [r0]                                  |     *(r0) = r3;
    0x00007efe b 0x7d50                                      |     goto label_0;
                                                             | label_16:
    0x00007f00 ldr r1, [pc, 0xd8]                            |     
    0x00007f02 mov r2, r0                                    |     r2 = r0;
    0x00007f04 movs r0, 2                                    |     r0 = 2;
    0x00007f06 add r1, pc                                    |     r1 = 0xfee6;
    0x00007f08 bl 0xfcdc                                     |     r0 = fcn_0000fcdc (r0);
    0x00007f0c blx 0x2f88                                    |     cxa_finalize ();
    0x00007f10 movs r3, 0x16                                 |     r3 = 0x16;
    0x00007f12 mov r2, r3                                    |     r2 = r3;
    0x00007f14 str r3, [r0]                                  |     *(r0) = r3;
    0x00007f16 b 0x7d50                                      |     goto label_0;
                                                             | label_12:
    0x00007f18 ldr r3, [pc, 0xb0]                            |     r3 = "_";
    0x00007f1a mov r2, r8                                    |     r2 = r8;
    0x00007f1c mov r1, r5                                    |     r1 = r5;
    0x00007f1e ldr r0, [r7, r3]                              |     r0 = *((r7 + r3));
    0x00007f20 blx 0x2e1c                                    |     fcn_00002e1c ();
    0x00007f24 add.w r3, r8, -1                              |     r3 = r8 + -1;
    0x00007f28 b 0x7e88                                      |     goto label_2;
                                                             | label_10:
    0x00007f2a ldr r3, [pc, 0xa0]                            |     r3 = *(0x7fce);
    0x00007f2c mov r2, r4                                    |     r2 = r4;
    0x00007f2e str r4, [sp, 4]                               |     var_4h = r4;
    0x00007f30 mov r1, r5                                    |     r1 = r5;
    0x00007f32 ldr r0, [r7, r3]                              |     r0 = *((r7 + r3));
    0x00007f34 blx 0x2e1c                                    |     fcn_00002e1c ();
    0x00007f38 ldr r2, [sp, 4]                               |     r2 = var_4h;
    0x00007f3a b 0x7d50                                      |     goto label_0;
                                                             | label_17:
    0x00007f3c ldr r1, [pc, 0xa0]                            |     
    0x00007f3e add r1, pc                                    |     r1 = 0xff22;
                                                             | label_4:
    0x00007f40 movs r0, 3                                    |     r0 = 3;
    0x00007f42 bl 0xfcdc                                     |     r0 = fcn_0000fcdc (r0);
    0x00007f46 blx 0x2f88                                    |     cxa_finalize ();
    0x00007f4a movs r3, 0x3d                                 |     r3 = 0x3d;
    0x00007f4c mov r2, r3                                    |     r2 = r3;
    0x00007f4e str r3, [r0]                                  |     *(r0) = r3;
    0x00007f50 b 0x7d50                                      |     goto label_0;
                                                             |     if (r6 == 0) {
                                                             | label_13:
    0x00007f52 cbz r6, 0x7f5e                                |         goto label_18;
                                                             |     }
    0x00007f54 ldr r3, [r6]                                  |     r3 = *(r6);
    0x00007f56 sub.w r8, r4, r2                              |     r8 = r4 - r2;
    0x00007f5a cmp r3, 0                                     |     
                                                             |     if (r3 != 0) {
    0x00007f5c bne 0x7e72                                    |         goto label_3;
                                                             |     }
                                                             | label_18:
    0x00007f5e ldr r1, [pc, 0x84]                            |     
    0x00007f60 add r1, pc                                    |     r1 = 0xff4a;
    0x00007f62 b 0x7f40                                      |     goto label_4;
                                                             |     if (r6 != 0) {
                                                             | label_15:
    0x00007f64 cbz r6, 0x7f80                                |         
    0x00007f66 ldr r2, [r6]                                  |         r2 = *(r6);
                                                             |         if (r2 == 0) {
    0x00007f68 cbz r2, 0x7f80                                |             goto label_19;
                                                             |         }
    0x00007f6a ldr.w r3, [sl, 0x24]                          |         r3 = *((sl + 0x24));
    0x00007f6e sub.w r8, r4, r3                              |         r8 = r4 - r3;
    0x00007f72 b 0x7e72                                      |         goto label_3;
                                                             | label_14:
    0x00007f74 str r0, [sp, 4]                               |         var_4h = r0;
    0x00007f76 blx 0x2f88                                    |         cxa_finalize ();
    0x00007f7a ldr r2, [sp, 4]                               |         r2 = var_4h;
    0x00007f7c str r2, [r0]                                  |         *(r0) = r2;
    0x00007f7e b 0x7d50                                      |         goto label_0;
                                                             |     }
                                                             | label_19:
    0x00007f80 ldr r1, [pc, 0x64]                            |     
    0x00007f82 add r1, pc                                    |     r1 = 0xff6e;
    0x00007f84 b 0x7f40                                      |     goto label_4;
                                                             | label_7:
    0x00007f86 blx 0x2cdc                                    |     fprintf_chk ()
                                                             | label_5:
    0x00007f8a ldr r1, [pc, 0x60]                            |     
    0x00007f8c mov r2, r5                                    |     r2 = r5;
    0x00007f8e movs r0, 2                                    |     r0 = 2;
    0x00007f90 add r1, pc                                    |     r1 = 0xff82;
    0x00007f92 bl 0xfcdc                                     |     r0 = fcn_0000fcdc (r0);
    0x00007f96 blx 0x2f88                                    |     cxa_finalize ();
    0x00007f9a movs r3, 0xc                                  |     r3 = 0xc;
    0x00007f9c mov r2, r3                                    |     r2 = r3;
    0x00007f9e str r3, [r0]                                  |     *(r0) = r3;
    0x00007fa0 b 0x7d50                                      |     goto label_0;
                                                             | }
    ; assembly                               | /* r2dec pseudo code output */
                                             | /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/sbin/fwmgr @ 0x7ff0 */
                                             | #include <stdint.h>
                                             |  
    ; (fcn) fcn.00007ff0 ()                  | void fcn_00007ff0 (int16_t arg_10000h, int16_t arg1) {
                                             |     int16_t var_10000h;
                                             |     int16_t var_4h;
                                             |     r0 = arg1;
    0x00007ff0 ldr r2, [pc, 0x74]            |     
    0x00007ff2 ldr r3, [pc, 0x78]            |     r3 = *(0x806e);
    0x00007ff4 push {r4, r5, r6, r7, lr}     |     
    0x00007ff6 sub.w sp, sp, 0x10000         |     
    0x00007ffa add r2, pc                    |     r2 = 0x10066;
    0x00007ffc sub sp, 0xc                   |     
    0x00007ffe add.w r1, sp, 0x10000         |     r1 += arg_10000h;
    0x00008002 ldr r3, [r2, r3]              |     
    0x00008004 adds r1, 4                    |     r1 += 4;
    0x00008006 ldr r3, [r3]                  |     r3 = *(0x10066);
    0x00008008 str r3, [r1]                  |     *(r1) = r3;
    0x0000800a mov.w r3, 0                   |     r3 = 0;
                                             |     if (r0 == 0) {
    0x0000800e cbz r0, 0x803e                |         goto label_0;
                                             |     }
    0x00008010 mov r4, r0                    |     r4 = r0;
    0x00008012 add r7, sp, 4                 |     r7 += var_4h;
    0x00008014 b 0x801a                      |     
                                             |     while (r0 == 0) {
    0x00008016 subs r4, r4, r6               |         r4 -= r6;
                                             |         if (r4 == r4) {
    0x00008018 beq 0x803e                    |             goto label_0;
                                             |         }
    0x0000801a cmp.w r4, 0x10000             |         
    0x0000801e mov r6, r4                    |         r6 = r4;
    0x00008020 it hs                         |         
                                             |         if (r4 < 0x10000) {
    0x00008022 movhs r6, 0x10000             |             r6 = 0x10000;
                                             |         }
    0x00008026 movs r2, 0                    |         r2 = 0;
    0x00008028 mov r1, r6                    |         r1 = r6;
    0x0000802a mov r0, r7                    |         r0 = r7;
    0x0000802c bl 0x7cd8                     |         r0 = fcn_00007cd8 (r0, r1, r2);
    0x00008030 mov r5, r0                    |         r5 = r0;
    0x00008032 cmp r0, 0                     |         
    0x00008034 beq 0x8016                    |         
                                             |     }
    0x00008036 blx 0x2f88                    |     r0 = cxa_finalize ();
    0x0000803a str r5, [r0]                  |     *(r0) = r5;
    0x0000803c b 0x8040                      |     goto label_1;
                                             | label_0:
    0x0000803e movs r5, 0                    |     r5 = 0;
                                             | label_1:
    0x00008040 ldr r2, [pc, 0x2c]            |     
    0x00008042 add.w r1, sp, 0x10000         |     r1 += arg_10000h;
    0x00008046 ldr r3, [pc, 0x24]            |     r3 = *(0x806e);
    0x00008048 adds r1, 4                    |     r1 += 4;
    0x0000804a add r2, pc                    |     r2 = 0x100be;
    0x0000804c ldr r3, [r2, r3]              |     r3 = *(0x100be);
    0x0000804e ldr r2, [r3]                  |     r2 = *(0x100be);
    0x00008050 ldr r3, [r1]                  |     r3 = *(r1);
    0x00008052 eors r2, r3                   |     r2 ^= r3;
    0x00008054 mov.w r3, 0                   |     r3 = 0;
                                             |     if (r2 == r3) {
    0x00008058 bne 0x8064                    |         
    0x0000805a mov r0, r5                    |         r0 = r5;
    0x0000805c add.w sp, sp, 0x10000         |         
    0x00008060 add sp, 0xc                   |         
    0x00008062 pop {r4, r5, r6, r7, pc}      |         
                                             |     }
    0x00008064 blx 0x2cdc                    |     fprintf_chk ()
    0x00008068 ldr r2, [r0, 0x44]            |     r2 = *((r0 + 0x44));
    0x0000806a movs r2, r0                   |     r2 = r0;
    0x0000806c lsls r4, r1, 0xd              |     r4 = r1 << 0xd;
    0x0000806e movs r0, r0                   |     
    0x00008070 ldr r2, [r6, 0x3c]            |     r2 = *((r6 + 0x3c));
    0x00008072 movs r2, r0                   |     r2 = r0;
                                             | }
    ; assembly                                                   | /* r2dec pseudo code output */
                                                                 | /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/sbin/fwmgr @ 0x80e8 */
                                                                 | #include <stdint.h>
                                                                 |  
    ; (fcn) fcn.000080e8 ()                                      | void fcn_000080e8 (int16_t arg_10000h) {
                                                                 |     int16_t var_10000h;
                                                                 |     int16_t var_4h;
                                                                 |     int8_t var_1h;
    0x000080e8 ldmdbmi fp!, {r1, r3, r4, r5, r8, sb, fp, lr}     |     __asm ("ldmdbmi fp!, {r1, r3, r4, r5, r8, sb, fp, lr}");
    0x000080ec ldr r2, [pc, 0xec]                                |     
    0x000080ee add r3, pc                                        |     r3 += pc;
    0x000080f0 push {r4, r5, lr}                                 |     
    0x000080f2 ldr r5, [r3]                                      |     r5 = *(r3);
    0x000080f4 add r1, pc                                        |     r1 += pc;
    0x000080f6 sub.w sp, sp, 0x10000                             |     
    0x000080fa ldr r2, [r1, r2]                                  |     r2 = *((r1 + r2));
    0x000080fc sub sp, 0xc                                       |     
    0x000080fe add.w r0, sp, 0x10000                             |     r0 += arg_10000h;
    0x00008102 cmp r5, 0                                         |     
    0x00008104 add.w r0, r0, 4                                   |     r0 += var_4h;
    0x00008108 ldr r2, [r2]                                      |     r2 = *(0x81dc);
    0x0000810a str r2, [r0]                                      |     *(r0) = r2;
    0x0000810c mov.w r2, 0                                       |     r2 = 0;
                                                                 |     if (r5 < 0) {
    0x00008110 blt 0x8182                                        |         goto label_3;
                                                                 |     }
    0x00008112 ldrb r3, [r3, 4]                                  |     r3 = *((r3 + 4));
                                                                 |     if (r3 != 0) {
    0x00008114 cbnz r3, 0x8166                                   |         goto label_2;
                                                                 |     }
    0x00008116 ldr r3, [pc, 0xc8]                                |     
    0x00008118 add r3, pc                                        |     
    0x0000811a ldr r3, [r3]                                      |     r3 = *(0x102fe);
                                                                 |     if (r3 == 0) {
    0x0000811c cbz r3, 0x8166                                    |         goto label_2;
                                                                 |     }
    0x0000811e ldr r5, [pc, 0xc4]                                |     
    0x00008120 add r4, sp, 4                                     |     r4 += var_4h;
    0x00008122 add r5, pc                                        |     r5 = 0x1030c;
                                                                 |     do {
                                                                 | label_0:
    0x00008124 movs r0, 0xa                                      |         r0 = 0xa;
    0x00008126 bl 0x7ac8                                         |         r0 = fcn_00007ac8 ();
    0x0000812a cmp r0, 0                                         |         
                                                                 |         if (r0 != 0) {
    0x0000812c bne 0x81c8                                        |             goto label_4;
                                                                 |         }
    0x0000812e ldr r2, [r5]                                      |         r2 = *(r5);
    0x00008130 mov.w r3, 0x10000                                 |         r3 = 0x10000;
    0x00008134 ldr r0, [pc, 0xb0]                                |         
    0x00008136 mov r1, r4                                        |         r1 = r4;
    0x00008138 cmp r2, r3                                        |         
    0x0000813a add r0, pc                                        |         
    0x0000813c it hs                                             |         
                                                                 |         if (r2 < r3) {
    0x0000813e movhs r2, r3                                      |             r2 = r3;
                                                                 |         }
    0x00008140 ldr r0, [r0]                                      |         r0 = *(0x10326);
    0x00008142 blx 0x2a80                                        |         fcn_00002a80 ();
    0x00008144 ldc p8, c2, [lr], {0}                             |         __asm ("ldc p8, c2, [lr], {0}");
                                                                 |         if (r2 == r3) {
    0x00008148 beq 0x81c8                                        |             goto label_4;
                                                                 |         }
                                                                 |         if (r2 < r3) {
    0x0000814a blt 0x81a4                                        |             goto label_5;
                                                                 |         }
    0x0000814c ldr r2, [pc, 0x9c]                                |         
    0x0000814e add r2, pc                                        |         r2 = 0x1033e;
    0x00008150 ldr r3, [r2]                                      |         r3 = *(0x1033e);
    0x00008152 cmp r3, 0                                         |         
    0x00008154 itt ge                                            |         
                                                                 |         if (r3 < 0) {
    0x00008156 subge r3, r3, r0                                  |             r3 -= r0;
                                                                 |         }
                                                                 |         if (r3 < 0) {
    0x00008158 strge r3, [r2]                                    |             *(r2) = r3;
                                                                 |         }
    0x0000815a blt 0x8124                                        |         
                                                                 |     } while (r3 < 0);
    0x0000815c cmp r3, 0                                         |     
                                                                 |     if (r3 != 0) {
    0x0000815e bne 0x8124                                        |         goto label_0;
                                                                 |     }
                                                                 | label_1:
    0x00008160 ldr r3, [pc, 0x8c]                                |     
    0x00008162 add r3, pc                                        |     r3 = 0x10356;
    0x00008164 ldr r5, [r3]                                      |     r5 = *(0x10356);
                                                                 | label_2:
    0x00008166 ldr r4, [pc, 0x8c]                                |     
    0x00008168 add r4, pc                                        |     r4 = 0x10362;
    0x0000816a ldr r0, [r4, 8]                                   |     r0 = *(0x1036a);
    0x0000816c blx 0x29cc                                        |     fcn_000029cc ();
    0x00008170 movs r3, 0                                        |     r3 = 0;
    0x00008172 mov r0, r5                                        |     r0 = r5;
    0x00008174 strd r3, r3, [r4, 8]                              |     __asm ("strd r3, r3, [r4, 8]");
    0x00008178 blx 0x2bf8                                        |     EVP_PKEY_verify_init ();
    0x0000817c mov.w r3, -1                                      |     r3 = -1;
    0x00008180 str r3, [r4]                                      |     *(r4) = r3;
                                                                 | label_3:
    0x00008182 ldr r2, [pc, 0x74]                                |     
    0x00008184 add.w r1, sp, 0x10000                             |     r1 += arg_10000h;
    0x00008188 ldr r3, [pc, 0x50]                                |     r3 = *(0x81dc);
    0x0000818a adds r1, 4                                        |     r1 += 4;
    0x0000818c add r2, pc                                        |     r2 = 0x1038a;
    0x0000818e ldr r3, [r2, r3]                                  |     r3 = *(0x1038a);
    0x00008190 ldr r2, [r3]                                      |     r2 = *(0x1038a);
    0x00008192 ldr r3, [r1]                                      |     r3 = *(r1);
    0x00008194 eors r2, r3                                       |     r2 ^= r3;
    0x00008196 mov.w r3, 0                                       |     r3 = 0;
                                                                 |     if (r2 != r3) {
    0x0000819a bne 0x81d0                                        |         goto label_6;
                                                                 |     }
    0x0000819c add.w sp, sp, 0x10000                             |     
    0x000081a0 add sp, 0xc                                       |     
    0x000081a2 pop {r4, r5, pc}                                  |     
                                                                 | label_5:
    0x000081a4 blx 0x2f88                                        |     r0 = cxa_finalize ();
    0x000081a8 ldr r3, [r0]                                      |     r3 = *(r0);
    0x000081aa cmp r3, 4                                         |     
    0x000081ac it ne                                             |     
                                                                 |     if (r3 != 4) {
    0x000081ae cmpne r3, 0xb                                     |         __asm ("cmpne r3, 0xb");
                                                                 |     }
                                                                 |     if (r3 != 4) {
    0x000081b0 bne 0x81be                                        |         goto label_7;
                                                                 |     }
    0x000081b2 ldr r3, [pc, 0x48]                                |     
    0x000081b4 add r3, pc                                        |     
    0x000081b6 ldr r3, [r3]                                      |     r3 = *(0x103b6);
    0x000081b8 cmp r3, 0                                         |     
                                                                 |     if (r3 != 0) {
    0x000081ba bne 0x8124                                        |         goto label_0;
                                                                 |     }
    0x000081bc b 0x8160                                          |     goto label_1;
                                                                 | label_7:
    0x000081be ldr r1, [pc, 0x40]                                |     
    0x000081c0 movs r0, 3                                        |     r0 = 3;
    0x000081c2 add r1, pc                                        |     r1 = 0x103c8;
    0x000081c4 bl 0xfcdc                                         |     fcn_0000fcdc (r0);
                                                                 | label_4:
    0x000081c8 ldr r3, [pc, 0x38]                                |     
    0x000081ca add r3, pc                                        |     r3 = 0x103d2;
    0x000081cc ldr r5, [r3]                                      |     r5 = *(0x103d2);
    0x000081ce b 0x8166                                          |     goto label_2;
                                                                 | label_6:
    0x000081d0 blx 0x2cdc                                        |     fprintf_chk ()
    0x000081d4 strb r6, [r5, 6]                                  |     *((r5 + 6)) = r6;
    0x000081d6 movs r2, r0                                       |     r2 = r0;
    0x000081d8 ldr r0, [r1, 0x34]                                |     r0 = *((r1 + 0x34));
    0x000081da movs r2, r0                                       |     r2 = r0;
    0x000081dc lsls r4, r1, 0xd                                  |     r4 = r1 << 0xd;
    0x000081de movs r0, r0                                       |     
    0x000081e0 strb r0, [r0, 2]                                  |     *((r0 + 2)) = r0;
    0x000081e2 movs r2, r0                                       |     r2 = r0;
    0x000081e4 strb r6, [r6, 1]                                  |     *((r6 + 1)) = r6;
    0x000081e6 movs r2, r0                                       |     r2 = r0;
    0x000081e8 strb r2, [r4, 5]                                  |     *((r4 + 5)) = r2;
    0x000081ea movs r2, r0                                       |     r2 = r0;
    0x000081ec strb r2, [r1, 1]                                  |     var_1h = r2;
    0x000081ee movs r2, r0                                       |     r2 = r0;
    0x000081f0 strb r2, [r7, 4]                                  |     *((r7 + 4)) = r2;
    0x000081f2 movs r2, r0                                       |     r2 = r0;
    0x000081f4 strb r4, [r6, 4]                                  |     *((r6 + 4)) = r4;
    0x000081f6 movs r2, r0                                       |     r2 = r0;
    0x000081f8 ldr r0, [r6, 0x28]                                |     r0 = *((r6 + 0x28));
    0x000081fa movs r2, r0                                       |     r2 = r0;
    0x000081fc ldr r4, [r4, 0x7c]                                |     r4 = *((r4 + 0x7c));
    0x000081fe movs r2, r0                                       |     r2 = r0;
    0x00008200 invalid                                           |     
                                                                 | }
    ; assembly                                               | /* r2dec pseudo code output */
                                                             | /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/sbin/fwmgr @ 0x8208 */
                                                             | #include <stdint.h>
                                                             |  
    ; (fcn) fcn.00008208 ()                                  | void fcn_00008208 (int16_t arg_404h) {
                                                             |     int16_t var_40ch;
                                                             |     int16_t var_4h;
    0x00008208 stmibmi r7, {r1, r2, r7, r8, sb, fp, lr}      |     __asm ("stmibmi r7, {r1, r2, r7, r8, sb, fp, lr}");
    0x0000820c ldr r2, [pc, 0x21c]                           |     
    0x0000820e add r3, pc                                    |     r3 += pc;
    0x00008210 push.w {r4, r5, r6, r7, r8, sb, lr}           |     
    0x00008214 ldr r3, [r3, 0xc]                             |     r3 = *((r3 + 0xc));
    0x00008216 add r1, pc                                    |     r1 += pc;
    0x00008218 subw sp, sp, 0x40c                            |     __asm ("subw sp, sp, 0x40c");
    0x0000821c ldr r4, [pc, 0x210]                           |     
    0x0000821e ldr r2, [r1, r2]                              |     r2 = *((r1 + r2));
    0x00008220 cmp r3, 0xf                                   |     
    0x00008222 add r4, pc                                    |     r4 = 0x10656;
    0x00008224 ldr r2, [r2]                                  |     r2 = *(0x842c);
    0x00008226 str.w r2, [sp, 0x404]                         |     __asm ("str.w r2, [arg_404h]");
    0x0000822a mov.w r2, 0                                   |     r2 = 0;
                                                             |     if (r3 > 0xf) {
    0x0000822e bhi 0x8278                                    |         goto label_6;
                                                             |     }
    0x00008230 mov r5, sp                                    |     r5 = sp;
    0x00008232 add r6, sp, 4                                 |     r6 += var_4h;
    0x00008234 movs r3, 0                                    |     r3 = 0;
    0x00008236 mov r2, r5                                    |     r2 = r5;
    0x00008238 mov.w r1, 0x400                               |     r1 = 0x400;
    0x0000823c mov r0, r6                                    |     r0 = r6;
    0x0000823e str r3, [r5]                                  |     *(r5) = r3;
    0x00008240 bl 0x7cd8                                     |     r0 = fcn_00007cd8 (r0, r1, r2);
    0x00008244 cbz r0, 0x826c                                |     
                                                             |     while (r0 != 0) {
    0x00008246 blx 0x2f88                                    |         r0 = cxa_finalize ();
    0x0000824a ldr r0, [r0]                                  |         r0 = *(r0);
                                                             | label_0:
    0x0000824c ldr r2, [pc, 0x1e4]                           |         
    0x0000824e ldr r3, [pc, 0x1dc]                           |         r3 = *(0x842e);
    0x00008250 add r2, pc                                    |         r2 = 0x10688;
    0x00008252 ldr r3, [r2, r3]                              |         r3 = *(0x10688);
    0x00008254 ldr r2, [r3]                                  |         r2 = *(0x10688);
    0x00008256 ldr.w r3, [sp, 0x404]                         |         r3 = *(arg_404h);
    0x0000825a eors r2, r3                                   |         r2 ^= r3;
    0x0000825c mov.w r3, 0                                   |         r3 = 0;
                                                             |         if (r2 != r3) {
    0x00008260 bne.w 0x8420                                  |             goto label_7;
                                                             |         }
    0x00008264 addw sp, sp, 0x40c                            |         __asm ("addw sp, var_40ch");
    0x00008268 pop.w {r4, r5, r6, r7, r8, sb, pc}            |         
    0x0000826c ldr r1, [r5]                                  |         r1 = *(r5);
    0x0000826e mov r0, r6                                    |         r0 = r6;
    0x00008270 bl 0x8074                                     |         r0 = fcn_00008074 (r0, r1);
    0x00008274 cmp r0, 0                                     |         
    0x00008276 bne 0x8246                                    |         
                                                             |     }
                                                             | label_6:
    0x00008278 ldr r2, [pc, 0x1bc]                           |     r2 = *(0x8438);
    0x0000827a movs r1, 0                                    |     r1 = 0;
    0x0000827c ldr r3, [pc, 0x1bc]                           |     r3 = *(0x843c);
    0x0000827e ldr r6, [r4, r2]                              |     r6 = *((r4 + r2));
    0x00008280 str r1, [r6]                                  |     *(r6) = r1;
    0x00008282 ldr r5, [r4, r3]                              |     r5 = *((r4 + r3));
    0x00008284 mov r0, r5                                    |     r0 = r5;
    0x00008286 blx 0x2e38                                    |     timerfd_create ();
    0x0000828a ldr r3, [pc, 0x1b4]                           |     r3 = *(0x8442);
    0x0000828c ldr r7, [r4, r3]                              |     r7 = *((r4 + r3));
    0x0000828e ldr r4, [pc, 0x1b4]                           |     
    0x00008290 mov r0, r7                                    |     r0 = r7;
    0x00008292 add r4, pc                                    |     r4 = 0x106dc;
    0x00008294 blx 0x2e38                                    |     timerfd_create ();
    0x00008298 ldr r2, [r4, 0xc]                             |     r2 = *(0x106e8);
    0x0000829a mov r0, r5                                    |     r0 = r5;
    0x0000829c ldr r1, [r4, 8]                               |     r1 = *(0x106e4);
    0x0000829e blx 0x2e1c                                    |     fcn_00002e1c ();
    0x000082a2 ldrd r4, r5, [r4, 8]                          |     __asm ("ldrd r4, r5, [r4, 8]");
    0x000082a6 cmp r5, 0xf                                   |     
                                                             |     if (r5 < 0xf) {
    0x000082a8 bls 0x8398                                    |         goto label_8;
                                                             |     }
    0x000082aa ldrb.w r8, [r4]                               |     r8 = *(r4);
    0x000082ae cmp.w r8, 0x1f                                |     
                                                             |     if (r8 == 0x1f) {
    0x000082b2 beq 0x8368                                    |         goto label_9;
                                                             |     }
                                                             | label_2:
    0x000082b4 ldr r1, [pc, 0x190]                           |     
    0x000082b6 movs r2, 6                                    |     r2 = 6;
    0x000082b8 mov r0, r4                                    |     r0 = r4;
    0x000082ba add r1, pc                                    |     r1 = 0x10706;
    0x000082bc blx 0x27e4                                    |     r0 = memcmp (r0, r1, r2);
    0x000082c0 cmp r0, 0                                     |     
                                                             |     if (r0 == 0) {
    0x000082c2 bne 0x8336                                    |         
    0x000082c4 ldr.w r8, [pc, 0x184]                         |         
    0x000082c8 movs r3, 1                                    |         r3 = 1;
    0x000082ca add r8, pc                                    |         r8 = 0x1071a;
                                                             | label_3:
    0x000082cc ldr r4, [pc, 0x180]                           |         
    0x000082ce mov r2, r8                                    |         r2 = r8;
    0x000082d0 ldr r1, [pc, 0x180]                           |         
    0x000082d2 movs r0, 6                                    |         r0 = 6;
    0x000082d4 add r4, pc                                    |         r4 = 0x10728;
    0x000082d6 add r1, pc                                    |         r1 = 0x1072e;
    0x000082d8 str r3, [r4, 0x10]                            |         *((r4 + 0x10)) = r3;
    0x000082da bl 0xfcdc                                     |         fcn_0000fcdc (r0);
    0x000082de mov.w r0, 0x20000                             |         r0 = 0x20000;
    0x000082e2 blx 0x2cc4                                    |         r0 = stack_chk_fail ();
    0x000082e6 mov r5, r0                                    |         r5 = r0;
    0x000082e8 str r0, [r4, 0x4c]                            |         *((r4 + 0x4c)) = r0;
    0x000082ea cmp r0, 0                                     |         
                                                             |         if (r0 == 0) {
    0x000082ec beq.w 0x8408                                  |             goto label_10;
                                                             |         }
    0x000082f0 ldrd r6, r7, [r4, 8]                          |         __asm ("ldrd r6, r7, [r4, 8]");
    0x000082f4 mov.w r3, 0x20000                             |         r3 = 0x20000;
    0x000082f8 mov r1, r6                                    |         r1 = r6;
    0x000082fa mov r2, r7                                    |         r2 = r7;
    0x000082fc blx 0x2a08                                    |         fcn_00002a08 ();
    0x00008300 mov r0, r6                                    |         r0 = r6;
    0x00008302 blx 0x29cc                                    |         fcn_000029cc ();
    0x00008306 ldr r6, [r4, 0x10]                            |         r6 = *((r4 + 0x10));
    0x00008308 movs r3, 0                                    |         r3 = 0;
    0x0000830a strd r3, r3, [r4, 8]                          |         __asm ("strd r3, r3, [r4, 8]");
    0x0000830e cmp r6, 2                                     |         
                                                             |         if (r6 != 2) {
    0x00008310 bne 0x837e                                    |             goto label_11;
                                                             |         }
    0x00008312 ldr r2, [pc, 0x144]                           |         
    0x00008314 movs r3, 0x38                                 |         r3 = 0x38;
    0x00008316 movs r1, 0x2f                                 |         r1 = 0x2f;
    0x00008318 add.w r0, r4, 0x14                            |         r0 = r4 + 0x14;
    0x0000831c strd r5, r7, [r4, 0x14]                       |         __asm ("strd r5, r7, [r4, 0x14]");
    0x00008320 add r2, pc                                    |         r2 = 0x1077e;
    0x00008322 blx 0x2974                                    |         fcn_00002974 ();
    0x00008326 ldr r1, [pc, 0x134]                           |         
    0x00008328 adds r3, r0, 4                                |         r3 = r0 + 4;
    0x0000832a add r1, pc                                    |         r1 = 0x1078c;
                                                             |         if (r3 == r0) {
    0x0000832c beq 0x840c                                    |             goto label_12;
                                                             |         }
    0x0000832e cmp r0, 0                                     |         
                                                             |         if (r0 != 0) {
    0x00008330 bne 0x83b8                                    |             goto label_13;
                                                             |         }
                                                             | label_1:
    0x00008332 movs r0, 0                                    |         r0 = 0;
    0x00008334 b 0x824c                                      |         goto label_0;
                                                             |     }
    0x00008336 cmp.w r8, 0x42                                |     
    0x0000833a add.w sb, r4, 1                               |     sb = r4 + 1;
                                                             |     if (r8 == 0x42) {
    0x0000833e beq 0x83d2                                    |         goto label_14;
                                                             |     }
                                                             | label_4:
    0x00008340 ldrb r3, [r4]                                 |     r3 = *(r4);
    0x00008342 cmp r3, 0x50                                  |     
                                                             |     if (r3 == 0x50) {
    0x00008344 beq 0x83ea                                    |         goto label_15;
                                                             |     }
                                                             | label_5:
    0x00008346 mov r1, r4                                    |     r1 = r4;
    0x00008348 mov r0, r7                                    |     r0 = r7;
    0x0000834a mov r2, r5                                    |     r2 = r5;
    0x0000834c add r4, r5                                    |     r4 += r5;
    0x0000834e blx 0x2e1c                                    |     fcn_00002e1c ();
    0x00008352 ldr r3, [r6]                                  |     r3 = *(r6);
    0x00008354 b 0x835a                                      |     
                                                             |     while (r4 != sb) {
    0x00008356 add.w sb, sb, 1                               |         sb++;
    0x0000835a ldrb r2, [sb, -0x1]                           |         r2 = *((sb - 0x1));
    0x0000835e cmp r4, sb                                    |         
    0x00008360 add r3, r2                                    |         r3 += r2;
    0x00008362 str r3, [r6]                                  |         *(r6) = r3;
    0x00008364 bne 0x8356                                    |         
                                                             |     }
    0x00008366 b 0x8332                                      |     goto label_1;
                                                             | label_9:
    0x00008368 ldrb r3, [r4, 1]                              |     r3 = *((r4 + 1));
    0x0000836a cmp r3, 0x8b                                  |     
                                                             |     if (r3 != 0x8b) {
    0x0000836c bne 0x82b4                                    |         goto label_2;
                                                             |     }
    0x0000836e ldrb r3, [r4, 2]                              |     r3 = *((r4 + 2));
    0x00008370 cmp r3, 8                                     |     
                                                             |     if (r3 != 8) {
    0x00008372 bne 0x82b4                                    |         goto label_2;
                                                             |     }
    0x00008374 ldr.w r8, [pc, 0xe8]                          |     
    0x00008378 movs r3, 2                                    |     r3 = 2;
    0x0000837a add r8, pc                                    |     r8 = 0x107de;
    0x0000837c b 0x82cc                                      |     goto label_3;
                                                             | label_11:
    0x0000837e ldr r1, [pc, 0xe4]                            |     
    0x00008380 mov r2, r8                                    |     r2 = r8;
    0x00008382 movs r0, 3                                    |     r0 = 3;
    0x00008384 add r1, pc                                    |     r1 = 0x107ee;
    0x00008386 bl 0xfcdc                                     |     r0 = fcn_0000fcdc (r0);
    0x0000838a blx 0x2f88                                    |     cxa_finalize ();
    0x0000838e movs r3, 0x5c                                 |     r3 = 0x5c;
    0x00008390 mov r2, r0                                    |     r2 = r0;
    0x00008392 str r3, [r2]                                  |     *(r2) = r3;
    0x00008394 mov r0, r3                                    |     r0 = r3;
    0x00008396 b 0x824c                                      |     goto label_0;
                                                             | label_8:
    0x00008398 mov r2, r5                                    |     r2 = r5;
    0x0000839a mov r0, r7                                    |     r0 = r7;
    0x0000839c mov r1, r4                                    |     r1 = r4;
    0x0000839e blx 0x2e1c                                    |     fcn_00002e1c ();
    0x000083a2 cmp r5, 0                                     |     
                                                             |     if (r5 == 0) {
    0x000083a4 beq 0x8332                                    |         goto label_1;
                                                             |     }
    0x000083a6 ldr r3, [r6]                                  |     r3 = *(r6);
    0x000083a8 add r5, r4                                    |     r5 += r4;
                                                             |     do {
    0x000083aa ldrb r2, [r4], 1                              |         r2 = *(r4);
                                                             |         r4++;
    0x000083ae cmp r4, r5                                    |         
    0x000083b0 add r3, r2                                    |         r3 += r2;
    0x000083b2 str r3, [r6]                                  |         *(r6) = r3;
    0x000083b4 bne 0x83aa                                    |         
                                                             |     } while (r4 != r5);
    0x000083b6 b 0x8332                                      |     goto label_1;
                                                             | label_13:
    0x000083b8 ldr r1, [pc, 0xac]                            |     
    0x000083ba mov r2, r0                                    |     r2 = r0;
    0x000083bc mov r0, r6                                    |     r0 = r6;
    0x000083be add r1, pc                                    |     r1 = 0x1082a;
    0x000083c0 bl 0xfcdc                                     |     r0 = fcn_0000fcdc (r0);
    0x000083c4 blx 0x2f88                                    |     cxa_finalize ();
    0x000083c8 movs r3, 0x16                                 |     r3 = 0x16;
    0x000083ca mov r2, r0                                    |     r2 = r0;
    0x000083cc str r3, [r2]                                  |     *(r2) = r3;
    0x000083ce mov r0, r3                                    |     r0 = r3;
    0x000083d0 b 0x824c                                      |     goto label_0;
                                                             | label_14:
    0x000083d2 ldrb r3, [r4, 1]                              |     r3 = *((r4 + 1));
    0x000083d4 cmp r3, 0x5a                                  |     
                                                             |     if (r3 != 0x5a) {
    0x000083d6 bne 0x8340                                    |         goto label_4;
                                                             |     }
    0x000083d8 ldrb.w r3, [sb, 1]                            |     r3 = *((sb + 1));
    0x000083dc cmp r3, 0x68                                  |     
                                                             |     if (r3 != 0x68) {
    0x000083de bne 0x8340                                    |         goto label_4;
                                                             |     }
    0x000083e0 ldr.w r8, [pc, 0x88]                          |     
    0x000083e4 movs r3, 3                                    |     r3 = 3;
    0x000083e6 add r8, pc                                    |     r8 = 0x10856;
    0x000083e8 b 0x82cc                                      |     goto label_3;
                                                             | label_15:
    0x000083ea ldrb r3, [r4, 1]                              |     r3 = *((r4 + 1));
    0x000083ec cmp r3, 0x4b                                  |     
                                                             |     if (r3 != 0x4b) {
    0x000083ee bne 0x8346                                    |         goto label_5;
                                                             |     }
    0x000083f0 mov r3, sb                                    |     r3 = sb;
    0x000083f2 ldrb r2, [r3, 1]!                             |     r2 = *((r3 += 1));
    0x000083f6 cmp r2, 3                                     |     
                                                             |     if (r2 != 3) {
    0x000083f8 bne 0x8346                                    |         goto label_5;
                                                             |     }
    0x000083fa ldrb r3, [r3, 1]                              |     r3 = *((r3 + 1));
    0x000083fc cmp r3, 4                                     |     
                                                             |     if (r3 != 4) {
    0x000083fe bne 0x8346                                    |         goto label_5;
                                                             |     }
    0x00008400 ldr.w r8, [pc, 0x6c]                          |     
    0x00008404 add r8, pc                                    |     r8 = 0x10878;
    0x00008406 b 0x82cc                                      |     goto label_3;
                                                             | label_10:
    0x00008408 ldr r1, [pc, 0x68]                            |     
    0x0000840a add r1, pc                                    |     r1 = 0x10882;
                                                             | label_12:
    0x0000840c movs r0, 2                                    |     r0 = 2;
    0x0000840e bl 0xfcdc                                     |     r0 = fcn_0000fcdc (r0);
    0x00008412 blx 0x2f88                                    |     cxa_finalize ();
    0x00008416 movs r3, 0xc                                  |     r3 = 0xc;
    0x00008418 mov r2, r0                                    |     r2 = r0;
    0x0000841a str r3, [r2]                                  |     *(r2) = r3;
    0x0000841c mov r0, r3                                    |     r0 = r3;
    0x0000841e b 0x824c                                      |     goto label_0;
                                                             | label_7:
    0x00008420 blx 0x2cdc                                    |     fprintf_chk ()
    0x00008424 strb r6, [r1, 2]                              |     *((r1 + 2)) = r6;
    0x00008426 movs r2, r0                                   |     r2 = r0;
    0x00008428 ldr r6, [r4, 0x20]                            |     r6 = *((r4 + 0x20));
    0x0000842a movs r2, r0                                   |     r2 = r0;
    0x0000842c lsls r4, r1, 0xd                              |     r4 = r1 << 0xd;
    0x0000842e movs r0, r0                                   |     
    0x00008430 ldr r2, [r3, 0x20]                            |     r2 = *((r3 + 0x20));
    0x00008432 movs r2, r0                                   |     r2 = r0;
    0x00008434 ldr r4, [r5, 0x1c]                            |     r4 = *((r5 + 0x1c));
    0x00008436 movs r2, r0                                   |     r2 = r0;
    0x00008438 lsls r4, r7, 0xc                              |     r4 = r7 << 0xc;
    0x0000843a movs r0, r0                                   |     
    0x0000843c lsls r0, r2, 0xe                              |     r0 = r2 << 0xe;
    0x0000843e movs r0, r0                                   |     
    0x00008440 lsls r4, r5, 0xd                              |     r4 = r5 << 0xd;
    0x00008442 movs r0, r0                                   |     
    0x00008444 strb r2, [r1]                                 |     *(r1) = r2;
    0x00008446 movs r2, r0                                   |     r2 = r0;
    0x00008448 invalid                                       |     
                                                             | }
    ; assembly                                                   | /* r2dec pseudo code output */
                                                                 | /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/sbin/fwmgr @ 0x8988 */
                                                                 | #include <stdint.h>
                                                                 |  
    ; (fcn) fcn.00008988 ()                                      | void fcn_00008988 (int16_t arg_0h, int16_t arg_4h, int16_t arg_14h, int16_t arg_5ch, int16_t arg1, int16_t arg2) {
                                                                 |     int16_t var_ch_3;
                                                                 |     int16_t var_0h_3;
                                                                 |     size_t size;
                                                                 |     int16_t var_ch_2;
                                                                 |     int16_t var_10h_2;
                                                                 |     int16_t var_18h;
                                                                 |     int16_t var_28h;
                                                                 |     int16_t var_30h;
                                                                 |     int16_t var_34h;
                                                                 |     int16_t var_40h;
                                                                 |     char * var_4ch;
                                                                 |     int16_t var_88h;
                                                                 |     int16_t var_8ch;
                                                                 |     int16_t var_10ch_2;
                                                                 |     int16_t var_0h_2;
                                                                 |     int16_t var_10h;
                                                                 |     int16_t var_14h;
                                                                 |     int16_t var_1ch;
                                                                 |     char * s1;
                                                                 |     int16_t var_110h;
                                                                 |     int16_t var_68h;
                                                                 |     int16_t var_a0h;
                                                                 |     int16_t var_1c0h;
                                                                 |     int16_t var_10ch;
                                                                 |     int16_t var_128h;
                                                                 |     int16_t var_130h;
                                                                 |     int16_t var_200h;
                                                                 |     int16_t var_2e0h;
                                                                 |     int16_t var_238h;
                                                                 |     int16_t var_248h;
                                                                 |     int16_t var_2a8h;
                                                                 |     int16_t var_310h;
                                                                 |     int16_t var_360h;
                                                                 |     int16_t var_3d8h;
                                                                 |     int16_t var_3f8h;
                                                                 |     int16_t var_1120h;
                                                                 |     int32_t var_0h_4;
                                                                 |     int32_t var_4h_2;
                                                                 |     int16_t var_8h_2;
                                                                 |     int16_t var_0h;
                                                                 |     int16_t var_4h;
                                                                 |     int16_t var_8h;
                                                                 |     int16_t var_ch;
                                                                 |     r0 = arg1;
                                                                 |     r1 = arg2;
                                                                 |     if (? < ?) {
    0x00008988 andhs r4, r0, 0x3680                              |         r4 = r0 & 0x3680;
                                                                 |     }
    0x0000898c ldr r4, [pc, 0x368]                               |     
    0x0000898e mov r8, r2                                        |     r8 = r2;
    0x00008990 ldr r3, [pc, 0x368]                               |     
    0x00008992 mov sb, r8                                        |     sb = r8;
    0x00008994 add r5, pc                                        |     r5 += pc;
    0x00008996 push.w {r7, fp, lr}                               |     
    0x0000899a ldr r4, [r5, r4]                                  |     r4 = *((r5 + r4));
    0x0000899c sub sp, 0x14                                      |     
    0x0000899e add r3, pc                                        |     r3 = 0x1169e;
    0x000089a0 mov r5, r0                                        |     r5 = r0;
    0x000089a2 ldr r6, [pc, 0x35c]                               |     
    0x000089a4 ldr r4, [r4]                                      |     r4 = *(0x8cf8);
    0x000089a6 str r4, [sp, 0xc]                                 |     var_ch = r4;
    0x000089a8 mov.w r4, 0                                       |     r4 = 0;
    0x000089ac str r2, [r3, 0x58]                                |     *((r3 + 0x58)) = r2;
    0x000089ae ldr r3, [pc, 0x354]                               |     r3 = *(0x8d06);
    0x000089b0 mov r4, r1                                        |     r4 = r1;
    0x000089b2 ldr r7, [pc, 0x354]                               |     
    0x000089b4 add r6, pc                                        |     r6 = 0x116ba;
    0x000089b6 ldr.w fp, [pc, 0x354]                             |     fp = *(0x00008d0c);
    0x000089ba movs r2, 1                                        |     r2 = 1;
    0x000089bc ldr.w sl, [pc, 0x350]                             |     
    0x000089c0 ldr r3, [r6, r3]                                  |     r3 = *(0x116ba);
    0x000089c2 add r7, pc                                        |     r7 = 0x116d0;
    0x000089c4 add fp, pc                                        |     
    0x000089c6 add sl, pc                                        |     sl = 0x116da;
    0x000089c8 str r2, [r3]                                      |     *(r3) = r2;
                                                                 |     do {
                                                                 | label_0:
    0x000089ca mov r2, r7                                        |         r2 = r7;
    0x000089cc mov r1, r4                                        |         r1 = r4;
    0x000089ce mov r0, r5                                        |         r0 = r5;
    0x000089d0 blx 0x2ad8                                        |         r0 = sd_bus_error_set_const ();
    0x000089d4 cmp r0, 0                                         |         
                                                                 |         if (r0 < 0) {
    0x000089d6 blt.w 0x8c00                                      |             goto label_26;
                                                                 |         }
    0x000089da subs r0, 0x41                                     |         r0 -= 0x41;
    0x000089dc cmp r0, 0x35                                      |         
                                                                 |         if (r0 <= 0x35) {
    0x000089de bhi 0x8a50                                        |             
                                                                 |             /* switch table (55 cases) at 0x89e4 */
    0x000089e0 tbh [pc, r0, lsl 1]                               |             __asm ("tbh [pc, r0, lsl 1]");
                                                                 |         }
    0x00008a50 ldr r1, [pc, 0x2c0]                               |         
    0x00008a52 ldr r0, [r4]                                      |         r0 = *(r4);
    0x00008a54 add r1, pc                                        |         r1 = 0x1176c;
    0x00008a56 bl 0x874c                                         |         fcn_0000874c (r0, r1);
    0x00008a5a movs r0, 1                                        |         r0 = 1;
    0x00008a5c blx 0x2f7c                                        |         memset_chk ();
    0x00008a5e invalid                                           |         
    0x00008a60 ldr r3, [pc, 0x2b4]                               |         r3 = *(0x8d18);
    0x00008a62 movs r2, 1                                        |         r2 = 1;
    0x00008a64 ldr r3, [r6, r3]                                  |         r3 = *((r6 + r3));
    0x00008a66 strb r2, [r3]                                     |         *(r3) = r2;
    0x00008a68 b 0x89ca                                          |         
                                                                 |     } while (1);
    0x00008a6a ldr r3, [pc, 0x2b0]                               |     
    0x00008a6c ldr r1, [pc, 0x2b0]                               |     
    0x00008a6e ldr r3, [r6, r3]                                  |     r3 = *((r6 + r3));
    0x00008a70 add r1, pc                                        |     r1 = 0x11794;
    0x00008a72 ldr r3, [r3]                                      |     r3 = *(0x8d1e);
    0x00008a74 mov r0, r3                                        |     r0 = r3;
    0x00008a76 str r3, [sp]                                      |     *(sp) = r3;
    0x00008a78 blx 0x28f0                                        |     fcn_000028f0 ();
    0x00008a7c ldr r3, [sp]                                      |     r3 = *(sp);
    0x00008a7e cmp r0, 0                                         |     
                                                                 |     if (r0 == 0) {
    0x00008a80 bne 0x8b80                                        |         
    0x00008a82 ldr r3, [pc, 0x2a0]                               |         
    0x00008a84 add r3, pc                                        |         r3 = 0x117ae;
    0x00008a86 str r0, [r3, 0x58]                                |         *((r3 + 0x58)) = r0;
    0x00008a88 b 0x89ca                                          |         goto label_0;
    0x00008a8a ldr r3, [pc, 0x29c]                               |         r3 = *(0x8d2a);
    0x00008a8c movs r2, 0                                        |         r2 = 0;
    0x00008a8e ldr r3, [r6, r3]                                  |         r3 = *((r6 + r3));
    0x00008a90 strb r2, [r3]                                     |         *(r3) = r2;
    0x00008a92 b 0x89ca                                          |         goto label_0;
    0x00008a94 ldr r3, [pc, 0x294]                               |         r3 = *(0x8d2c);
    0x00008a96 movs r2, 1                                        |         r2 = 1;
    0x00008a98 ldr r3, [r6, r3]                                  |         r3 = *((r6 + r3));
    0x00008a9a strb r2, [r3]                                     |         *(r3) = r2;
    0x00008a9c b 0x89ca                                          |         goto label_0;
    0x00008a9e ldr r3, [pc, 0x27c]                               |         
    0x00008aa0 ldr r1, [pc, 0x28c]                               |         
    0x00008aa2 ldr r3, [r6, r3]                                  |         r3 = *((r6 + r3));
    0x00008aa4 add r1, pc                                        |         r1 = 0x117d8;
    0x00008aa6 ldr r3, [r3]                                      |         r3 = *(0x8d1e);
    0x00008aa8 mov r0, r3                                        |         r0 = r3;
    0x00008aaa str r3, [sp]                                      |         *(sp) = r3;
    0x00008aac blx 0x28f0                                        |         fcn_000028f0 ();
    0x00008ab0 ldr r3, [sp]                                      |         r3 = *(sp);
    0x00008ab2 cmp r0, 0                                         |         
                                                                 |         if (r0 == 0) {
    0x00008ab4 beq 0x8baa                                        |             goto label_27;
                                                                 |         }
    0x00008ab6 ldr r1, [pc, 0x27c]                               |         
    0x00008ab8 mov r0, r3                                        |         r0 = r3;
    0x00008aba add r1, pc                                        |         r1 = 0x117f4;
    0x00008abc blx 0x28f0                                        |         r0 = fcn_000028f0 ();
    0x00008ac0 cmp r0, 0                                         |         
                                                                 |         if (r0 != 0) {
    0x00008ac2 bne.w 0x8cbc                                      |             goto label_28;
                                                                 |         }
    0x00008ac6 ldr r3, [pc, 0x270]                               |         r3 = *(0x8d3a);
    0x00008ac8 ldr r3, [r6, r3]                                  |         r3 = *((r6 + r3));
    0x00008aca strb r0, [r3]                                     |         *(r3) = r0;
    0x00008acc b 0x89ca                                          |         goto label_0;
    0x00008ace ldr r0, [r4]                                      |         r0 = *(r4);
    0x00008ad0 movs r1, 0                                        |         r1 = 0;
    0x00008ad2 bl 0x874c                                         |         fcn_0000874c (r0, r1);
    0x00008ad6 movs r0, 0                                        |         r0 = 0;
    0x00008ad8 blx 0x2f7c                                        |         memset_chk ();
    0x00008adc ldr r3, [pc, 0x23c]                               |         r3 = *(0x8d1c);
    0x00008ade ldr r3, [r6, r3]                                  |         r3 = *((r6 + r3));
    0x00008ae0 ldr.w sb, [r3]                                    |         sb = *(0x8d1c);
    0x00008ae4 b 0x89ca                                          |         goto label_0;
    0x00008ae6 ldr r3, [pc, 0x254]                               |         
    0x00008ae8 movs r2, 1                                        |         r2 = 1;
    0x00008aea add r3, pc                                        |         r3 = 0x1182c;
    0x00008aec str r2, [r3, 0x58]                                |         *((r3 + 0x58)) = r2;
    0x00008aee b 0x89ca                                          |         goto label_0;
    0x00008af0 ldr r3, [pc, 0x228]                               |         
    0x00008af2 ldr r1, [pc, 0x24c]                               |         
    0x00008af4 ldr r3, [r6, r3]                                  |         r3 = *((r6 + r3));
    0x00008af6 add r1, pc                                        |         r1 = 0x1183c;
    0x00008af8 ldr r3, [r3]                                      |         r3 = *(0x8d1c);
    0x00008afa mov r0, r3                                        |         r0 = r3;
    0x00008afc str r3, [sp]                                      |         *(sp) = r3;
    0x00008afe blx 0x2f70                                        |         vdprintf_chk ();
    0x00008b02 ldr r3, [sp]                                      |         r3 = *(sp);
                                                                 |         if (r0 == 0) {
    0x00008b04 cbnz r0, 0x8b54                                   |             
    0x00008b06 ldr r3, [pc, 0x23c]                               |             
    0x00008b08 add r3, pc                                        |             r3 = 0x11852;
    0x00008b0a str r0, [r3]                                      |             *(r3) = r0;
    0x00008b0c b 0x89ca                                          |             goto label_0;
    0x00008b0e movs r3, 1                                        |             r3 = 1;
    0x00008b10 strb.w r3, [fp, 0x5c]                             |             *(arg_5ch) = r3;
    0x00008b14 b 0x89ca                                          |             goto label_0;
    0x00008b16 ldr r3, [pc, 0x230]                               |             r3 = *(0x8d4a);
    0x00008b18 movs r2, 0                                        |             r2 = 0;
    0x00008b1a ldr r3, [r6, r3]                                  |             r3 = *((r6 + r3));
    0x00008b1c strb r2, [r3]                                     |             *(r3) = r2;
    0x00008b1e b 0x89ca                                          |             goto label_0;
    0x00008b20 ldr r3, [pc, 0x228]                               |             r3 = *(0x8d4c);
    0x00008b22 movs r2, 1                                        |             r2 = 1;
    0x00008b24 ldr r3, [r6, r3]                                  |             r3 = *((r6 + r3));
    0x00008b26 strb r2, [r3]                                     |             *(r3) = r2;
    0x00008b28 b 0x89ca                                          |             goto label_0;
    0x00008b2a ldr r3, [pc, 0x224]                               |             r3 = *(0x8d52);
    0x00008b2c movs r2, 1                                        |             r2 = 1;
    0x00008b2e ldr r3, [r6, r3]                                  |             r3 = *((r6 + r3));
    0x00008b30 strb r2, [r3]                                     |             *(r3) = r2;
    0x00008b32 b 0x89ca                                          |             goto label_0;
    0x00008b34 ldr r3, [pc, 0x1e4]                               |             
    0x00008b36 mov r1, sl                                        |             r1 = sl;
    0x00008b38 ldr r3, [r6, r3]                                  |             r3 = *((r6 + r3));
    0x00008b3a str r3, [sp, 4]                                   |             var_4h = r3;
    0x00008b3c ldr r3, [r3]                                      |             r3 = *(0x8d1c);
    0x00008b3e mov r0, r3                                        |             r0 = r3;
    0x00008b40 str r3, [sp]                                      |             *(sp) = r3;
    0x00008b42 blx 0x2f70                                        |             vdprintf_chk ();
    0x00008b46 ldr r3, [sp]                                      |             r3 = *(sp);
    0x00008b48 cmp r0, 0                                         |             
                                                                 |             if (r0 != 0) {
    0x00008b4a bne 0x8bba                                        |                 goto label_29;
                                                                 |             }
    0x00008b4c ldr r3, [pc, 0x204]                               |             
    0x00008b4e add r3, pc                                        |             r3 = 0x118a6;
    0x00008b50 str r0, [r3, 4]                                   |             *((r3 + 4)) = r0;
    0x00008b52 b 0x89ca                                          |             goto label_0;
                                                                 |         }
    0x00008b54 ldr r1, [pc, 0x200]                               |         
    0x00008b56 mov r0, r3                                        |         r0 = r3;
    0x00008b58 str r3, [sp]                                      |         *(sp) = r3;
    0x00008b5a add r1, pc                                        |         r1 = 0x118b6;
    0x00008b5c blx 0x2f70                                        |         vdprintf_chk ();
    0x00008b60 ldr r3, [sp]                                      |         r3 = *(sp);
                                                                 |         if (r0 == 0) {
    0x00008b62 cbz r0, 0x8ba0                                    |             goto label_30;
                                                                 |         }
    0x00008b64 ldr r1, [pc, 0x1f4]                               |         
    0x00008b66 mov r0, r3                                        |         r0 = r3;
    0x00008b68 str r3, [sp]                                      |         *(sp) = r3;
    0x00008b6a add r1, pc                                        |         r1 = 0x118ca;
    0x00008b6c blx 0x2f70                                        |         vdprintf_chk ();
    0x00008b70 ldr r3, [sp]                                      |         r3 = *(sp);
    0x00008b72 cmp r0, 0                                         |         
                                                                 |         if (r0 != 0) {
    0x00008b74 bne 0x8c5c                                        |             goto label_31;
                                                                 |         }
    0x00008b76 ldr r3, [pc, 0x1e8]                               |         
    0x00008b78 movs r2, 2                                        |         r2 = 2;
    0x00008b7a add r3, pc                                        |         r3 = 0x118e0;
    0x00008b7c str r2, [r3]                                      |         *(r3) = r2;
    0x00008b7e b 0x89ca                                          |         goto label_0;
                                                                 |     }
    0x00008b80 ldr r1, [pc, 0x1e0]                               |     
    0x00008b82 mov r0, r3                                        |     r0 = r3;
    0x00008b84 add r1, pc                                        |     r1 = 0x118ec;
    0x00008b86 blx 0x28f0                                        |     r0 = fcn_000028f0 ();
    0x00008b8a cmp r0, 0                                         |     
                                                                 |     if (r0 != 0) {
    0x00008b8c bne.w 0x8ccc                                      |         goto label_32;
                                                                 |     }
    0x00008b90 ldr r3, [pc, 0x1d4]                               |     
    0x00008b92 movs r2, 1                                        |     r2 = 1;
    0x00008b94 add r3, pc                                        |     r3 = 0x11900;
    0x00008b96 str r2, [r3, 0x58]                                |     *((r3 + 0x58)) = r2;
    0x00008b98 b 0x89ca                                          |     goto label_0;
    0x00008b9a mov.w r8, 1                                       |     r8 = 1;
    0x00008b9e b 0x89ca                                          |     goto label_0;
                                                                 | label_30:
    0x00008ba0 ldr r3, [pc, 0x1c8]                               |     
    0x00008ba2 movs r2, 1                                        |     r2 = 1;
    0x00008ba4 add r3, pc                                        |     r3 = 0x11914;
    0x00008ba6 str r2, [r3]                                      |     *(r3) = r2;
    0x00008ba8 b 0x89ca                                          |     goto label_0;
                                                                 | label_27:
    0x00008baa ldr r3, [pc, 0x18c]                               |     r3 = *(0x8d3a);
    0x00008bac movs r2, 1                                        |     r2 = 1;
    0x00008bae movs r0, 3                                        |     r0 = 3;
    0x00008bb0 ldr r3, [r6, r3]                                  |     r3 = *((r6 + r3));
    0x00008bb2 strb r2, [r3]                                     |     *(r3) = r2;
    0x00008bb4 blx 0x2bf8                                        |     EVP_PKEY_verify_init ();
    0x00008bb8 b 0x89ca                                          |     goto label_0;
                                                                 | label_29:
    0x00008bba mov r0, r3                                        |     r0 = r3;
    0x00008bbc movs r2, 0xa                                      |     r2 = 0xa;
    0x00008bbe add r1, sp, 8                                     |     r1 += var_8h;
    0x00008bc0 blx 0x2ae4                                        |     xpg_basename ();
    0x00008bc4 ldr r3, [sp, 4]                                   |     r3 = var_4h;
    0x00008bc6 ldr r2, [pc, 0x1a8]                               |     
    0x00008bc8 ldr r3, [r3]                                      |     r3 = *(r3);
    0x00008bca add r2, pc                                        |     r2 = 0x11940;
    0x00008bcc str r0, [r2, 4]                                   |     *((r2 + 4)) = r0;
    0x00008bce ldrb r3, [r3]                                     |     r3 = *(r3);
                                                                 |     if (r3 == 0) {
    0x00008bd0 cbz r3, 0x8bf0                                    |         goto label_33;
                                                                 |     }
    0x00008bd2 ldr r3, [sp, 8]                                   |     r3 = var_8h;
    0x00008bd4 ldrb r3, [r3]                                     |     r3 = *(r3);
                                                                 |     if (r3 != 0) {
    0x00008bd6 cbnz r3, 0x8bf0                                   |         goto label_33;
                                                                 |     }
    0x00008bd8 cmp.w r0, 0x5a0                                   |     
    0x00008bdc ite le                                            |     
                                                                 |     if (r0 > 0x5a0) {
    0x00008bde movle r3, 0                                       |         r3 = 0;
                                                                 |     }
                                                                 |     if (r0 <= 0x5a0) {
    0x00008be0 movgt r3, 1                                       |         r3 = 1;
                                                                 |     }
    0x00008be2 cmp r0, 0                                         |     
    0x00008be4 it eq                                             |     
                                                                 |     if (r0 != 0) {
    0x00008be6 orreq r3, r3, 1                                   |         r3 |= 1;
                                                                 |     }
    0x00008bea cmp r3, 0                                         |     
                                                                 |     if (r3 == 0) {
    0x00008bec beq.w 0x89ca                                      |         goto label_0;
                                                                 |     }
                                                                 | label_33:
    0x00008bf0 ldr r1, [pc, 0x180]                               |     
    0x00008bf2 ldr r0, [r4]                                      |     r0 = *(r4);
    0x00008bf4 add r1, pc                                        |     r1 = 0x1196c;
    0x00008bf6 bl 0x874c                                         |     fcn_0000874c (r0, r1);
    0x00008bfa movs r0, 1                                        |     r0 = 1;
    0x00008bfc blx 0x2f7c                                        |     memset_chk ();
                                                                 | label_26:
    0x00008c00 ldr r3, [pc, 0x134]                               |     r3 = *(0x8d38);
    0x00008c02 ldr r3, [r6, r3]                                  |     r3 = *((r6 + r3));
    0x00008c04 ldrb r3, [r3]                                     |     r3 = *(r3);
                                                                 |     if (r3 != 0) {
    0x00008c06 cbz r3, 0x8c10                                    |         
    0x00008c08 ldr r3, [pc, 0x16c]                               |         r3 = *(0x8d78);
    0x00008c0a movs r2, 1                                        |         r2 = 1;
    0x00008c0c ldr r3, [r6, r3]                                  |         r3 = *((r6 + r3));
    0x00008c0e strb r2, [r3]                                     |         *(r3) = r2;
                                                                 |     }
    0x00008c10 cmp.w r8, 0                                       |     
                                                                 |     if (r8 == 0) {
    0x00008c14 beq 0x8c40                                        |         goto label_34;
                                                                 |     }
    0x00008c16 cmp.w sb, 0                                       |     
    0x00008c1a beq 0x8c2c                                        |     
                                                                 |     while (r3 != 0) {
                                                                 | label_1:
    0x00008c1c ldr r1, [pc, 0x15c]                               |         
    0x00008c1e ldr r0, [r4]                                      |         r0 = *(r4);
    0x00008c20 add r1, pc                                        |         r1 = 0x119a0;
    0x00008c22 bl 0x874c                                         |         fcn_0000874c (r0, r1);
    0x00008c26 movs r0, 1                                        |         r0 = 1;
    0x00008c28 blx 0x2f7c                                        |         memset_chk ();
    0x00008c2c ldr r3, [pc, 0xfc]                                |         r3 = *(0x8d2c);
    0x00008c2e ldr r3, [r6, r3]                                  |         r3 = *((r6 + r3));
    0x00008c30 ldrb r3, [r3]                                     |         r3 = *(r3);
    0x00008c32 cmp r3, 0                                         |         
    0x00008c34 bne 0x8c1c                                        |         
                                                                 |     }
    0x00008c36 ldr r3, [pc, 0xf0]                                |     r3 = *(0x8d2a);
    0x00008c38 ldr r3, [r6, r3]                                  |     r3 = *((r6 + r3));
    0x00008c3a ldrb r3, [r3]                                     |     r3 = *(r3);
    0x00008c3c cmp r3, 0                                         |     
                                                                 |     if (r3 == 0) {
    0x00008c3e beq 0x8c1c                                        |         goto label_1;
                                                                 |     }
                                                                 | label_34:
    0x00008c40 ldr r3, [pc, 0x13c]                               |     
    0x00008c42 add r3, pc                                        |     
    0x00008c44 ldr r3, [r3, 0x60]                                |     r3 = *(0x11a26);
    0x00008c46 cmp r3, 1                                         |     
                                                                 |     if (r3 >= 1) {
    0x00008c48 bls 0x8c74                                        |         
    0x00008c4a ldr r1, [pc, 0x138]                               |         
    0x00008c4c mov.w r0, -1                                      |         r0 = -1;
    0x00008c50 add r1, pc                                        |         r1 = 0x119da;
    0x00008c52 bl 0xfcdc                                         |         fcn_0000fcdc (r0);
    0x00008c56 movs r0, 1                                        |         r0 = 1;
    0x00008c58 blx 0x2f7c                                        |         memset_chk ();
                                                                 | label_31:
    0x00008c5c ldr r1, [pc, 0x128]                               |         
    0x00008c5e mov r0, r3                                        |         r0 = r3;
    0x00008c60 add r1, pc                                        |         r1 = 0x119ec;
    0x00008c62 blx 0x2f70                                        |         r0 = vdprintf_chk ();
    0x00008c66 cmp r0, 0                                         |         
                                                                 |         if (r0 != 0) {
    0x00008c68 bne 0x8ce2                                        |             goto label_35;
                                                                 |         }
    0x00008c6a ldr r3, [pc, 0x120]                               |         
    0x00008c6c movs r2, 3                                        |         r2 = 3;
    0x00008c6e add r3, pc                                        |         r3 = 0x11a00;
    0x00008c70 str r2, [r3]                                      |         *(r3) = r2;
    0x00008c72 b 0x89ca                                          |         goto label_0;
                                                                 |     }
    0x00008c74 movs r0, 0                                        |     r0 = 0;
    0x00008c76 bl 0x10130                                        |     r0 = fcn_00010130 (r0);
                                                                 |     if (r0 != 0) {
    0x00008c7a cbnz r0, 0x8ca0                                   |         goto label_36;
                                                                 |     }
    0x00008c7c cmp.w r8, 0                                       |     
                                                                 |     if (r8 != 0) {
    0x00008c80 bne 0x8cb2                                        |         goto label_37;
                                                                 |     }
    0x00008c82 mov.w r1, -1                                      |     r1 = -1;
    0x00008c86 cmp.w sb, 0                                       |     
                                                                 |     if (sb == 0) {
    0x00008c8a beq 0x8cdc                                        |         goto label_38;
                                                                 |     }
    0x00008c8c mov r0, sb                                        |     r0 = sb;
    0x00008c8e bl 0x7c1c                                         |     r0 = fcn_00007c1c (r0, r1);
                                                                 |     if (r0 != 0) {
    0x00008c92 cbnz r0, 0x8cb8                                   |         goto label_39;
                                                                 |     }
                                                                 | label_2:
    0x00008c94 bl 0xe7d4                                         |     r0 = fcn_0000e7d4 (r0);
                                                                 |     if (r0 != 0) {
    0x00008c98 cbnz r0, 0x8cb8                                   |         goto label_39;
                                                                 |     }
                                                                 |     do {
    0x00008c9a movs r0, 0                                        |         r0 = 0;
    0x00008c9c bl 0x8784                                         |         fcn_00008784 (r0);
                                                                 | label_36:
    0x00008ca0 ldr r1, [pc, 0xec]                                |         
    0x00008ca2 mov.w r0, -1                                      |         r0 = -1;
    0x00008ca6 add r1, pc                                        |         r1 = 0x11a3a;
    0x00008ca8 bl 0xfcdc                                         |         fcn_0000fcdc (r0);
    0x00008cac movs r0, 1                                        |         r0 = 1;
    0x00008cae bl 0x8784                                         |         r0 = fcn_00008784 (r0);
                                                                 | label_37:
    0x00008cb2 bl 0xf484                                         |         fcn_0000f484 ();
    0x00008cb6 b 0x8c9a                                          |         
                                                                 |     } while (1);
                                                                 | label_39:
    0x00008cb8 bl 0x87a8                                         |     fcn_000087a8 ();
                                                                 | label_28:
    0x00008cbc ldr r1, [pc, 0xd4]                                |     
    0x00008cbe ldr r0, [r4]                                      |     r0 = *(r4);
    0x00008cc0 add r1, pc                                        |     r1 = 0x11a58;
    0x00008cc2 bl 0x874c                                         |     fcn_0000874c (r0, r1);
    0x00008cc6 movs r0, 1                                        |     r0 = 1;
    0x00008cc8 blx 0x2f7c                                        |     memset_chk ();
                                                                 | label_32:
    0x00008ccc ldr r1, [pc, 0xc8]                                |     
    0x00008cce ldr r0, [r4]                                      |     r0 = *(r4);
    0x00008cd0 add r1, pc                                        |     r1 = 0x11a6c;
    0x00008cd2 bl 0x874c                                         |     fcn_0000874c (r0, r1);
    0x00008cd6 movs r0, 1                                        |     r0 = 1;
    0x00008cd8 blx 0x2f7c                                        |     memset_chk ();
                                                                 | label_38:
    0x00008cdc bl 0x7c8c                                         |     fcn_00007c8c (r0, r1);
    0x00008ce0 b 0x8c94                                          |     goto label_2;
                                                                 | label_35:
    0x00008ce2 ldr r1, [pc, 0xb8]                                |     
    0x00008ce4 ldr r0, [r4]                                      |     r0 = *(r4);
    0x00008ce6 add r1, pc                                        |     r1 = 0x11a88;
    0x00008ce8 bl 0x874c                                         |     fcn_0000874c (r0, r1);
    0x00008cec movs r0, 1                                        |     r0 = 1;
    0x00008cee blx 0x2f7c                                        |     memset_chk ();
    0x00008cf2 nop                                               |     
    0x00008cf4 str r0, [r5, 0x28]                                |     *((r5 + 0x28)) = r0;
    0x00008cf6 movs r2, r0                                       |     r2 = r0;
    0x00008cf8 lsls r4, r1, 0xd                                  |     r4 = r1 << 0xd;
    0x00008cfa movs r0, r0                                       |     
    0x00008cfc ldr r6, [r1, 0x14]                                |     r6 = *(0x11a9c);
    0x00008cfe movs r2, r0                                       |     r2 = r0;
    0x00008d00 str r0, [r1, 0x28]                                |     *((r1 + 0x28)) = r0;
    0x00008d02 movs r2, r0                                       |     r2 = r0;
    0x00008d04 lsls r4, r5, 0xc                                  |     r4 = r5 << 0xc;
    0x00008d06 movs r0, r0                                       |     
    0x00008d08 ldrh.w r0, [r6]                                   |     r0 = *(r6);
    0x00008d0c ldr r0, [r5, 0x10]                                |     r0 = *((r5 + 0x10));
    0x00008d0e movs r2, r0                                       |     r2 = r0;
    0x00008d10 str.w r0, [sl]                                    |     __asm ("str.w r0, [sl]");
    0x00008d14 invalid                                           |     
                                                                 | label_10:
    0x00011b68 push.w {r4, r5, r6, r7, r8, sb, sl, fp, lr}       |     
    0x00011b6c sub.w sp, sp, 0x1120                              |     
    0x00011b70 ldr r4, [pc, 0x160]                               |     
    0x00011b72 sub sp, 0xc                                       |     
    0x00011b74 add.w r5, sp, 0x1120                              |     r5 += var_1120h;
    0x00011b78 movw r2, 0x6e2d                                   |     
    0x00011b7c ldr r0, [pc, 0x158]                               |     r0 = *(0x11cd8);
    0x00011b7e adds r5, 4                                        |     r5 += 4;
    0x00011b80 add r4, pc                                        |     r4 = 0x23858;
    0x00011b82 ldr r3, [pc, 0x158]                               |     
    0x00011b84 ldr r1, [pc, 0x158]                               |     
    0x00011b86 movt r2, 0x7765                                   |     r2 = 0x77656e2d;
    0x00011b8a ldr r0, [r4, r0]                                  |     
    0x00011b8c add r3, pc                                        |     r3 = 0x2386e;
    0x00011b8e add r1, pc                                        |     r1 = 0x23872;
    0x00011b90 ldr r0, [r0]                                      |     r0 = *(0x23858);
    0x00011b92 str r0, [r5]                                      |     *(r5) = r0;
    0x00011b94 mov.w r0, 0                                       |     r0 = 0;
    0x00011b98 ldr r0, [r3, 4]                                   |     r0 = *(0x23872);
    0x00011b9a cmp r0, r2                                        |     
                                                                 |     if (r0 == r2) {
    0x00011b9c beq.w 0x11cb4                                     |         goto label_40;
                                                                 |     }
                                                                 | label_6:
    0x00011ba0 ldr r3, [pc, 0x140]                               |     r3 = *(0x11ce4);
    0x00011ba2 ldr r4, [r1, r3]                                  |     r4 = *((r1 + r3));
    0x00011ba4 ldrb r3, [r4]                                     |     r3 = *(r4);
    0x00011ba6 cmp r3, 0                                         |     
                                                                 |     if (r3 != 0) {
    0x00011ba8 bne 0x11c98                                       |         goto label_41;
                                                                 |     }
    0x00011baa ldr r2, [pc, 0x13c]                               |     
    0x00011bac movs r0, 6                                        |     r0 = 6;
    0x00011bae ldr r1, [pc, 0x13c]                               |     
    0x00011bb0 add r2, pc                                        |     r2 = 0x2389e;
    0x00011bb2 add r1, pc                                        |     r1 = 0x238a4;
    0x00011bb4 adds r2, 4                                        |     r2 += 4;
    0x00011bb6 bl 0xfcdc                                         |     fcn_0000fcdc (r0);
    0x00011bba ldrb r3, [r4]                                     |     r3 = *(r4);
    0x00011bbc cmp r3, 0                                         |     
                                                                 |     if (r3 != 0) {
    0x00011bbe bne 0x11cae                                       |         goto label_42;
                                                                 |     }
                                                                 | label_3:
    0x00011bc0 ldr r1, [pc, 0x12c]                               |     
    0x00011bc2 add r1, pc                                        |     r1 = 0x238b6;
                                                                 | label_4:
    0x00011bc4 ldr r0, [pc, 0x12c]                               |     
    0x00011bc6 add.w r8, sp, 0x128                               |     r8 += var_128h;
    0x00011bca ldr r4, [pc, 0x12c]                               |     
    0x00011bcc movs r5, 0                                        |     r5 = 0;
    0x00011bce ldr r6, [pc, 0x12c]                               |     
    0x00011bd0 add r7, sp, 0x14                                  |     r7 += var_14h;
    0x00011bd2 ldr.w sb, [pc, 0x12c]                             |     
    0x00011bd6 add r0, pc                                        |     r0 = 0x238ce;
    0x00011bd8 add r4, pc                                        |     r4 = 0x238d6;
    0x00011bda adds r0, 4                                        |     r0 += 4;
    0x00011bdc add r6, pc                                        |     r6 = 0x238de;
    0x00011bde adds r4, 0x84                                     |     r4 += 0x84;
    0x00011be0 add sb, pc                                        |     sb = 0x238e6;
    0x00011be2 adds r6, 4                                        |     r6 += 4;
    0x00011be4 blx 0x2b44                                        |     waitpid ();
    0x00011be8 movw r2, 0x1110                                   |     r2 = 0x1110;
    0x00011bec movs r1, 0                                        |     r1 = 0;
    0x00011bee sub.w r0, r8, 0x114                               |     r0 = r8 - 0x114;
    0x00011bf2 blx 0x2938                                        |     fcn_00002938 ();
                                                                 |     do {
    0x00011bf6 ldr r3, [r4, -0x84]                               |         r3 = *((r4 - 0x84));
    0x00011bfa and r3, r3, 0xe0                                  |         r3 &= 0xe0;
    0x00011bfe cmp r3, 0x20                                      |         
                                                                 |         if (r3 == 0x20) {
    0x00011c00 bne 0x11c54                                       |             
    0x00011c02 sub.w fp, r8, 0x114                               |             
    0x00011c06 movs r2, 0x80                                     |             r2 = 0x80;
    0x00011c08 ldr.w r3, [fp]                                    |             r3 = *(fp);
    0x00011c0c mov r1, r6                                        |             r1 = r6;
    0x00011c0e mov r0, r4                                        |             r0 = r4;
    0x00011c10 add.w r3, r3, r3, lsl 4                           |             r3 += (r3 << 4);
    0x00011c14 lsl.w sl, r3, 3                                   |             sl = r3 << 3;
    0x00011c18 add.w r3, fp, sl                                  |             r3 = fp + sl;
    0x00011c1c str r5, [r3, 0x10]                                |             *((r3 + 0x10)) = r5;
    0x00011c1e blx 0x2ee0                                        |             pipe ();
    0x00011c22 sub.w ip, r4, 0x80                                |             
    0x00011c26 add.w r0, sl, 0x18                                |             r0 = sl + 0x18;
    0x00011c2a movs r3, 0x80                                     |             r3 = 0x80;
    0x00011c2c movs r2, 1                                        |             r2 = 1;
    0x00011c2e movs r1, 0x7f                                     |             r1 = 0x7f;
    0x00011c30 add r0, r7                                        |             r0 += r7;
    0x00011c32 strd ip, r4, [sp, 4]                              |             __asm ("strd ip, r4, [sp, 4]");
    0x00011c36 str.w sb, [sp]                                    |             __asm ("str.w sb, [sp]");
    0x00011c3a blx 0x2b98                                        |             shutdown ();
    0x00011c3e invalid                                           |             
                                                                 | label_8:
    0x00011c40 adds r0, 0                                        |             r0 += 0;
    0x00011c42 adds r2, r3, 1                                    |             r2 = r3 + 1;
    0x00011c44 add.w r3, r3, r3, lsl 4                           |             r3 += (r3 << 4);
    0x00011c48 str.w r2, [fp]                                    |             __asm ("str.w r2, [fp]");
    0x00011c4c add.w fp, fp, r3, lsl 3                           |             
                                                                 | label_7:
    0x00011c50 strh.w r0, [fp, 0x14]                             |             *(arg_14h) = r0;
                                                                 |         }
    0x00011c54 adds r5, 1                                        |         r5++;
    0x00011c56 add.w r4, r4, 0x104                               |         r4 += 0x104;
    0x00011c5a cmp r5, 0x80                                      |         
    0x00011c5c bne 0x11bf6                                       |         
                                                                 |     } while (r5 != 0x80);
    0x00011c5e ldr r3, [pc, 0xa4]                                |     
    0x00011c60 movw r1, 0x6f03                                   |     
    0x00011c64 mov r2, r7                                        |     r2 = r7;
    0x00011c66 movt r1, 0x5110                                   |     r1 = 0x51106f03;
    0x00011c6a add r3, pc                                        |     r3 = 0x23974;
    0x00011c6c ldr r0, [r3]                                      |     r0 = *(0x23974);
    0x00011c6e blx 0x2a8c                                        |     r0 = fcn_00002a8c ();
                                                                 |     if (r0 != 0) {
    0x00011c72 cbnz r0, 0x11cbe                                  |         goto label_43;
                                                                 |     }
                                                                 | label_5:
    0x00011c74 ldr r2, [pc, 0x90]                                |     
    0x00011c76 add.w r1, sp, 0x1120                              |     r1 += var_1120h;
    0x00011c7a ldr r3, [pc, 0x5c]                                |     r3 = *(0x11cda);
    0x00011c7c adds r1, 4                                        |     r1 += 4;
    0x00011c7e add r2, pc                                        |     r2 = 0x2398a;
    0x00011c80 ldr r3, [r2, r3]                                  |     r3 = *(0x2398a);
    0x00011c82 ldr r2, [r3]                                      |     r2 = *(0x2398a);
    0x00011c84 ldr r3, [r1]                                      |     r3 = *(r1);
    0x00011c86 eors r2, r3                                       |     r2 ^= r3;
    0x00011c88 mov.w r3, 0                                       |     r3 = 0;
                                                                 |     if (r2 != r3) {
    0x00011c8c bne 0x11cd0                                       |         goto label_44;
                                                                 |     }
    0x00011c8e add.w sp, sp, 0x1120                              |     
    0x00011c92 add sp, 0xc                                       |     
    0x00011c94 pop.w {r4, r5, r6, r7, r8, sb, sl, fp, pc}        |     
                                                                 | label_41:
    0x00011c98 ldr r2, [pc, 0x70]                                |     
    0x00011c9a movs r0, 6                                        |     r0 = 6;
    0x00011c9c ldr r1, [pc, 0x70]                                |     
    0x00011c9e add r2, pc                                        |     r2 = 0x239ae;
    0x00011ca0 add r1, pc                                        |     r1 = 0x239b4;
    0x00011ca2 adds r2, 4                                        |     r2 += 4;
    0x00011ca4 bl 0xfcdc                                         |     fcn_0000fcdc (r0);
    0x00011ca8 ldrb r3, [r4]                                     |     r3 = *(r4);
    0x00011caa cmp r3, 0                                         |     
                                                                 |     if (r3 == 0) {
    0x00011cac beq 0x11bc0                                       |         goto label_3;
                                                                 |     }
                                                                 | label_42:
    0x00011cae ldr r1, [pc, 0x64]                                |     
    0x00011cb0 add r1, pc                                        |     r1 = 0x239ca;
    0x00011cb2 b 0x11bc4                                         |     goto label_4;
                                                                 | label_40:
    0x00011cb4 ldrb r0, [r3, 8]                                  |     r0 = *((r3 + 8));
    0x00011cb6 adds r3, 4                                        |     r3 += 4;
    0x00011cb8 cmp r0, 0                                         |     
                                                                 |     if (r0 == 0) {
    0x00011cba beq 0x11c74                                       |         goto label_5;
                                                                 |     }
    0x00011cbc b 0x11ba0                                         |     goto label_6;
                                                                 | label_43:
    0x00011cbe ldr r1, [pc, 0x58]                                |     
    0x00011cc0 movs r0, 2                                        |     r0 = 2;
    0x00011cc2 add r1, pc                                        |     r1 = 0x239e0;
    0x00011cc4 bl 0xfcdc                                         |     r0 = fcn_0000fcdc (r0);
    0x00011cc8 blx 0x2f88                                        |     r0 = cxa_finalize ();
    0x00011ccc ldr r0, [r0]                                      |     r0 = *(r0);
    0x00011cce b 0x11c74                                         |     goto label_5;
                                                                 | label_44:
    0x00011cd0 blx 0x2cdc                                        |     fprintf_chk ()
                                                                 |     if (r0 == 2) {
    0x00011cd4 beq 0x11c50                                       |         goto label_7;
                                                                 |     }
    0x00011cd6 movs r1, r0                                       |     r1 = r0;
    0x00011cd8 lsls r4, r1, 0xd                                  |     r4 = r1 << 0xd;
    0x00011cda movs r0, r0                                       |     
    0x00011cdc cmp r1, 0x60                                      |     
    0x00011cde movs r2, r0                                       |     r2 = r0;
                                                                 |     if (r2 == r0) {
    0x00011ce0 beq 0x11c40                                       |         goto label_8;
                                                                 |     }
    0x00011ce2 movs r1, r0                                       |     r1 = r0;
    0x00011ce4 lsls r0, r7, 0xb                                  |     r0 = r7 << 0xb;
    0x00011ce6 movs r0, r0                                       |     
    0x00011ce8 cmp r1, 0x3c                                      |     
    0x00011cea movs r2, r0                                       |     r2 = r0;
    0x00011cec add r4, sp, 0x3f8                                 |     r4 += var_3f8h;
    0x00011cee movs r0, r0                                       |     
    0x00011cf0 str r6, [r6]                                      |     *(r6) = r6;
    0x00011cf2 movs r0, r0                                       |     
    0x00011cf4 cmp r1, 0x16                                      |     
    0x00011cf6 movs r2, r0                                       |     r2 = r0;
    0x00011cf8 cmp r1, 0x98                                      |     
    0x00011cfa movs r2, r0                                       |     r2 = r0;
    0x00011cfc cmp r1, 0x10                                      |     
    0x00011cfe movs r2, r0                                       |     r2 = r0;
    0x00011d00 ldr r0, [r2, 0x18]                                |     r0 = *((r2 + 0x18));
    0x00011d02 movs r0, r0                                       |     
                                                                 |     if (r0 >= r0) {
    0x00011d04 bpl 0x11d9c                                       |         goto label_45;
                                                                 |     }
    0x00011d06 movs r1, r0                                       |     r1 = r0;
    0x00011d08 ldm r7, {r1, r2, r3, r4, r5, r7}                  |     r1 = *(r7);
                                                                 |     r2 = *((r7 + 4));
                                                                 |     r3 = *((r7 + 8));
                                                                 |     r4 = *((r7 + 12));
                                                                 |     r5 = *((r7 + 16));
                                                                 |     r7 = *((r7 + 20));
    0x00011d0a movs r1, r0                                       |     r1 = r0;
    0x00011d0c cmp r0, 0x4e                                      |     
    0x00011d0e movs r2, r0                                       |     r2 = r0;
    0x00011d10 add r3, sp, 0x360                                 |     r3 += var_360h;
    0x00011d12 movs r0, r0                                       |     
    0x00011d14 add r3, sp, 0x130                                 |     r3 += var_130h;
    0x00011d16 movs r0, r0                                       |     
    0x00011d18 add r4, sp, 0x68                                  |     r4 += var_68h;
    0x00011d1a movs r0, r0                                       |     
    0x00011d1c push {r3, r4, r5, r6, r7, lr}                     |     
    0x00011d1e movs r4, 0                                        |     r4 = 0;
    0x00011d20 ldr r6, [pc, 0x54]                                |     
    0x00011d22 mov r5, r4                                        |     r5 = r4;
    0x00011d24 ldr r7, [pc, 0x54]                                |     
    0x00011d26 add r6, pc                                        |     r6 = 0x23aa2;
    0x00011d28 add r7, pc                                        |     r7 = 0x23aa8;
    0x00011d2a b 0x11d4a                                         |     
                                                                 |     while (r3 != 0xe0) {
    0x00011d2c ldr r2, [r7, r2]                                  |         r2 = *((r7 + r2));
    0x00011d2e ldrb r2, [r2]                                     |         r2 = *(r2);
    0x00011d30 eor r2, r2, 1                                     |         r2 ^= 1;
    0x00011d34 cmp r3, 0x40                                      |         
    0x00011d36 ite ne                                            |         
                                                                 |         if (r3 == 0x40) {
    0x00011d38 movne r2, 0                                       |             r2 = 0;
                                                                 |         }
                                                                 |         if (r3 != 0x40) {
    0x00011d3a andeq r2, r2, 1                                   |             r2 &= 1;
                                                                 |         }
    0x00011d3c lsls r1, r0, 8                                    |         r1 = r0 << 8;
                                                                 |         if (r2 != 0) {
    0x00011d3e cbnz r2, 0x11d5a                                  |             goto label_46;
                                                                 |         }
    0x00011d40 cmp.w r4, 0x2080                                  |         
    0x00011d44 add.w r5, r5, 1                                   |         r5++;
                                                                 |         if (r4 == 0x2080) {
    0x00011d48 beq 0x11d68                                       |             goto label_47;
                                                                 |         }
                                                                 | label_9:
    0x00011d4a ldr.w r3, [r6, r4, lsl 2]                         |         offset_0 = r4 << 2;
                                                                 |         r3 = *((r6 + offset_0));
    0x00011d4e adds r4, 0x41                                     |         r4 += 0x41;
    0x00011d50 ldr r2, [pc, 0x2c]                                |         r2 = *(0x11d80);
    0x00011d52 and r3, r3, 0xe0                                  |         r3 &= 0xe0;
    0x00011d56 cmp r3, 0xe0                                      |         
    0x00011d58 bne 0x11d2c                                       |         
                                                                 |     }
                                                                 | label_46:
    0x00011d5a mov r0, r5                                        |     r0 = r5;
    0x00011d5c adds r5, 1                                        |     r5++;
    0x00011d5e bl 0x10d3c                                        |     fcn_00010d3c (r0);
    0x00011d62 cmp.w r4, 0x2080                                  |     
    0x00011d64 ldrsh r2, [r0, r4]                                |     r2 = *((r0 + r4));
                                                                 |     if (r4 != 0x2080) {
    0x00011d66 bne 0x11d4a                                       |         goto label_9;
                                                                 |     }
                                                                 | label_47:
    0x00011d68 ldr r3, [pc, 0x18]                                |     
    0x00011d6a add r3, pc                                        |     r3 = 0x23af2;
    0x00011d6c ldrb r0, [r3, 4]                                  |     r0 = *((r3 + 4));
                                                                 |     if (r0 != 0) {
    0x00011d6e cbz r0, 0x11d76                                   |         
    0x00011d70 pop.w {r3, r4, r5, r6, r7, lr}                    |         
    0x00011d74 b 0x11b68                                         |         goto label_10;
                                                                 |     }
    0x00011d76 pop {r3, r4, r5, r6, r7, pc}                      |     
                                                                 | label_45:
    0x00011d9c ldr r0, [pc, 0x1a4]                               |     
    0x00011d9e adds r5, 0xc                                      |     r5 += 0xc;
    0x00011da0 add r4, pc                                        |     r4 += pc;
    0x00011da2 ldr r1, [pc, 0x1a4]                               |     
    0x00011da4 ldr r3, [pc, 0x1a4]                               |     
    0x00011da6 movw r2, 0x1110                                   |     r2 = 0x1110;
    0x00011da8 asrs r0, r2, 8                                    |     r0 = r2 >> 8;
    0x00011daa ldr r0, [r4, r0]                                  |     r0 = *((r4 + r0));
    0x00011dac add.w sb, sp, 0x1c                                |     sb += var_1ch;
    0x00011db0 add r1, pc                                        |     r1 = 0x23cfe;
    0x00011db2 ldr.w fp, [pc, 0x19c]                             |     fp = *(0x00011f50);
    0x00011db6 ldr r4, [pc, 0x19c]                               |     
    0x00011db8 add r3, pc                                        |     r3 = 0x23d08;
    0x00011dba ldr r0, [r0]                                      |     r0 = *(0x11f44);
    0x00011dbc str r0, [r5]                                      |     *(r5) = r0;
    0x00011dbe mov.w r0, 0                                       |     r0 = 0;
    0x00011dc2 ldr r0, [pc, 0x194]                               |     
    0x00011dc4 ldr.w r8, [pc, 0x194]                             |     
    0x00011dc8 add fp, pc                                        |     
    0x00011dca add r4, pc                                        |     r4 = 0x23d24;
    0x00011dcc movs r5, 0                                        |     r5 = 0;
    0x00011dce add r0, pc                                        |     r0 = 0x23d2c;
    0x00011dd0 adds r4, 4                                        |     r4 += 4;
    0x00011dd2 str r0, [sp, 0x14]                                |     var_14h = r0;
    0x00011dd4 add r8, pc                                        |     r8 = 0x23d34;
    0x00011dd6 ldm r1, {r0, r1}                                  |     r0 = *(r1);
                                                                 |     r1 = *((r1 + 4));
    0x00011dd8 str r0, [r3, 4]                                   |     *((r3 + 4)) = r0;
    0x00011dda sub.w r0, sl, 0x114                               |     r0 = sl - 0x114;
    0x00011dde strb r1, [r3, 8]                                  |     *((r3 + 8)) = r1;
    0x00011de0 movs r1, 0                                        |     r1 = 0;
    0x00011de2 blx 0x2938                                        |     fcn_00002938 ();
    0x00011de4 stc p1, c15, [sl, 0x2c]!                          |     __asm ("stc p1, c15, [sl, 0x2c]!");
    0x00011de6 add.w r3, fp, 4                                   |     r3 += arg_4h;
    0x00011dea str r3, [sp, 0x10]                                |     var_10h = r3;
    0x00011dec b 0x11e04                                         |     
                                                                 |     while (r3 != 0x20) {
    0x00011dee cmp r3, 0x40                                      |         
                                                                 |         if (r3 == 0x40) {
    0x00011df0 bne 0x11dfa                                       |             
    0x00011df2 ldrb.w r3, [r4, 0x80]                             |             r3 = *((r4 + 0x80));
    0x00011df6 cmp r3, 0                                         |             
                                                                 |             if (r3 != 0) {
    0x00011df8 bne 0x11ee8                                       |                 goto label_48;
                                                                 |             }
                                                                 |         }
                                                                 | label_11:
    0x00011dfa adds r5, 1                                        |         r5++;
    0x00011dfc add.w r4, r4, 0x104                               |         r4 += 0x104;
    0x00011e00 cmp r5, 0x80                                      |         
                                                                 |         if (r5 == 0x80) {
    0x00011e02 beq 0x11e7a                                       |             goto label_49;
                                                                 |         }
                                                                 | label_12:
    0x00011e04 ldr r3, [r4, -0x4]                                |         r3 = *((r4 - 0x4));
    0x00011e08 and r3, r3, 0xe0                                  |         r3 &= 0xe0;
    0x00011e0a lsls r0, r4, 0xf                                  |         r0 = r4 << 0xf;
    0x00011e0c cmp r3, 0x20                                      |         
    0x00011e0e bne 0x11dee                                       |         
                                                                 |     }
    0x00011e10 add.w r7, r4, 0x80                                |     r7 = r4 + 0x80;
    0x00011e14 mov r1, r8                                        |     r1 = r8;
    0x00011e16 mov r0, r7                                        |     r0 = r7;
    0x00011e18 blx 0x2f70                                        |     vdprintf_chk ();
    0x00011e1a invalid                                           |     
                                                                 |     if (r3 == 0x20) {
    0x00011e1e beq 0x11dfa                                       |         goto label_11;
                                                                 |     }
    0x00011e20 sub.w fp, sl, 0x114                               |     
    0x00011e24 movs r2, 0x80                                     |     r2 = 0x80;
    0x00011e26 ldr.w r3, [fp]                                    |     r3 = *(fp);
    0x00011e2a mov r0, r7                                        |     r0 = r7;
    0x00011e2c add.w r3, r3, r3, lsl 4                           |     r3 += (r3 << 4);
    0x00011e30 lsls r6, r3, 3                                    |     r6 = r3 << 3;
    0x00011e32 add.w r1, fp, r6                                  |     r1 = fp + r6;
    0x00011e34 lsls r6, r0, 4                                    |     r6 = r0 << 4;
    0x00011e36 str r5, [r1, 0x10]                                |     *((r1 + 0x10)) = r5;
    0x00011e38 adds r5, 1                                        |     r5++;
    0x00011e3a ldr r1, [sp, 0x10]                                |     r1 = var_10h;
    0x00011e3c blx 0x2ee0                                        |     pipe ();
    0x00011e3e invalid                                           |     
    0x00011e40 ldr r2, [pc, 0x11c]                               |     
    0x00011e42 add.w r0, r6, 0x18                                |     r0 = r6 + 0x18;
    0x00011e46 movs r3, 0x80                                     |     r3 = 0x80;
    0x00011e48 strd r4, r7, [sp, 4]                              |     __asm ("strd r4, r7, [sp, 4]");
    0x00011e4a bx r0                                             |     return uint32_t (*r0)() ();
    0x00011e4c add r0, sb                                        |     r0 += sb;
    0x00011e4e movs r1, 0x7f                                     |     r1 = 0x7f;
    0x00011e50 add r2, pc                                        |     r2 = 0x23db4;
    0x00011e52 add.w r4, r4, 0x104                               |     r4 += 0x104;
    0x00011e56 str r2, [sp]                                      |     *(sp) = r2;
    0x00011e58 movs r2, 1                                        |     r2 = 1;
    0x00011e5a blx 0x2b98                                        |     shutdown ();
    0x00011e5e ldr.w r3, [fp]                                    |     r3 = *(fp);
    0x00011e62 cmp r5, 0x80                                      |     
    0x00011e64 add.w r2, r3, 1                                   |     r2 = r3 + 1;
    0x00011e68 add.w r3, r3, r3, lsl 4                           |     r3 += (r3 << 4);
    0x00011e6c str.w r2, [fp]                                    |     __asm ("str.w r2, [fp]");
    0x00011e70 add.w fp, fp, r3, lsl 3                           |     
    0x00011e74 strh.w r0, [fp, 0x14]                             |     *(arg_14h) = r0;
    0x00011e76 movs r4, r2                                       |     r4 = r2;
                                                                 |     if (r4 != r2) {
    0x00011e78 bne 0x11e04                                       |         goto label_12;
                                                                 |     }
                                                                 | label_49:
    0x00011e7a ldr r3, [pc, 0xe8]                                |     
    0x00011e7c movw r1, 0x6f03                                   |     
    0x00011e80 mov r2, sb                                        |     r2 = sb;
    0x00011e82 movt r1, 0x5110                                   |     r1 = 0x51106f03;
    0x00011e86 add r3, pc                                        |     r3 = 0x23df0;
    0x00011e88 ldr r0, [r3]                                      |     r0 = *(0x23df0);
    0x00011e8a blx 0x2a8c                                        |     r0 = fcn_00002a8c ();
    0x00011e8e mov r5, r0                                        |     r5 = r0;
    0x00011e90 cmp r0, 0                                         |     
                                                                 |     if (r0 != 0) {
    0x00011e92 bne 0x11f22                                       |         goto label_50;
                                                                 |     }
    0x00011e94 ldr r2, [pc, 0xd0]                                |     r2 = *(0x11f68);
    0x00011e96 mov r3, r0                                        |     r3 = r0;
    0x00011e98 ldr r0, [sp, 0x14]                                |     r0 = var_14h;
    0x00011e9a movs r1, 1                                        |     r1 = 1;
    0x00011e9c ldr r4, [pc, 0xcc]                                |     
    0x00011e9e ldr r2, [r0, r2]                                  |     r2 = *((r0 + r2));
    0x00011ea0 add r4, pc                                        |     r4 = 0x23e10;
    0x00011ea2 strb r1, [r2]                                     |     *(r2) = r1;
    0x00011ea4 mov r2, r5                                        |     r2 = r5;
    0x00011ea6 b 0x11eb0                                         |     
                                                                 |     while (r1 != 0x41) {
    0x00011ea8 adds r2, 1                                        |         r2++;
    0x00011eaa adds r3, 0x41                                     |         r3 += 0x41;
    0x00011eac cmp r2, 0x80                                      |         
                                                                 |         if (r2 == 0x80) {
    0x00011eae beq 0x11f34                                       |             goto label_51;
                                                                 |         }
    0x00011eb0 ldr.w r1, [r4, r3, lsl 2]                         |         offset_1 = r3 << 2;
                                                                 |         r1 = *((r4 + offset_1));
    0x00011eb4 cmp r1, 0x41                                      |         
    0x00011eb6 bne 0x11ea8                                       |         
                                                                 |     }
                                                                 | label_13:
    0x00011eb8 ldr r1, [pc, 0xb4]                                |     
    0x00011eba movs r0, 5                                        |     r0 = 5;
    0x00011ebc add r1, pc                                        |     r1 = 0x23e30;
    0x00011ebe bl 0xfcdc                                         |     fcn_0000fcdc (r0);
                                                                 |     do {
    0x00011ec2 ldr r2, [pc, 0xb0]                                |         
    0x00011ec4 add.w r1, sp, 0x1120                              |         r1 += var_1120h;
    0x00011ec8 ldr r3, [pc, 0x78]                                |         r3 = *(0x11f44);
    0x00011eca adds r1, 0xc                                      |         r1 += 0xc;
    0x00011ecc add r2, pc                                        |         r2 = 0x23e46;
    0x00011ece ldr r3, [r2, r3]                                  |         r3 = *(0x23e46);
    0x00011ed0 ldr r2, [r3]                                      |         r2 = *(0x23e46);
    0x00011ed2 ldr r3, [r1]                                      |         r3 = *(r1);
    0x00011ed4 eors r2, r3                                       |         r2 ^= r3;
    0x00011ed6 mov.w r3, 0                                       |         r3 = 0;
                                                                 |         if (r2 != r3) {
    0x00011eda bne 0x11f3a                                       |             goto label_52;
                                                                 |         }
    0x00011edc mov r0, r5                                        |         r0 = r5;
    0x00011ede add.w sp, sp, 0x1120                              |         
    0x00011ee2 add sp, 0x14                                      |         
    0x00011ee4 pop.w {r4, r5, r6, r7, r8, sb, sl, fp, pc}        |         
                                                                 | label_48:
    0x00011ee8 sub.w r7, sl, 0x114                               |         r7 = sl - 0x114;
    0x00011eec movs r3, 0                                        |         r3 = 0;
    0x00011eee ldr r0, [r7]                                      |         r0 = *(r7);
    0x00011ef0 movs r2, 0x80                                     |         r2 = 0x80;
    0x00011ef2 strb.w r3, [r4, 0x80]                             |         *((r4 + 0x80)) = r3;
    0x00011ef6 mov r1, r4                                        |         r1 = r4;
    0x00011ef8 add.w r0, r0, r0, lsl 4                           |         r0 += (r0 << 4);
    0x00011efc lsls r0, r0, 3                                    |         r0 <<= 3;
    0x00011efe adds r3, r7, r0                                   |         r3 = r7 + r0;
    0x00011f00 adds r0, 0x18                                     |         r0 += 0x18;
    0x00011f02 str r5, [r3, 0x10]                                |         *((r3 + 0x10)) = r5;
    0x00011f04 add r0, sb                                        |         r0 += sb;
    0x00011f06 blx 0x2ee0                                        |         pipe ();
    0x00011f08 vsubhn.i64 d20, q6, q8                            |         __asm ("vsubhn.i64 d20, q6, q8");
    0x00011f0c blx 0x2ab0                                        |         fcn_00002ab0 ();
    0x00011f10 ldr r3, [r7]                                      |         r3 = *(r7);
    0x00011f12 adds r2, r3, 1                                    |         r2 = r3 + 1;
    0x00011f14 add.w r3, r3, r3, lsl 4                           |         r3 += (r3 << 4);
    0x00011f16 asrs r3, r0, 0xc                                  |         r3 = r0 >> 0xc;
    0x00011f18 str r2, [r7]                                      |         *(r7) = r2;
    0x00011f1a add.w r7, r7, r3, lsl 3                           |         r7 += (r3 << 3);
    0x00011f1e strh r0, [r7, 0x14]                               |         *((r7 + 0x14)) = r0;
    0x00011f20 b 0x11dfa                                         |         goto label_11;
                                                                 | label_50:
    0x00011f22 ldr r1, [pc, 0x54]                                |         
    0x00011f24 movs r0, 2                                        |         r0 = 2;
    0x00011f26 add r1, pc                                        |         r1 = 0x23ea4;
    0x00011f28 bl 0xfcdc                                         |         r0 = fcn_0000fcdc (r0);
    0x00011f2c blx 0x2f88                                        |         r0 = cxa_finalize ();
    0x00011f30 ldr r5, [r0]                                      |         r5 = *(r0);
    0x00011f32 b 0x11ec2                                         |         
                                                                 |     } while (1);
                                                                 | label_51:
    0x00011f34 mov.w r2, -1                                      |     r2 = -1;
    0x00011f38 b 0x11eb8                                         |     goto label_13;
                                                                 | label_52:
    0x00011f3a blx 0x2cdc                                        |     fprintf_chk ()
    0x00011f3e nop                                               |     
    0x00011f40 ldm r6!, {r2, r3, r4, r7}                         |     r2 = *(r6!);
                                                                 |     r3 = *((r6! + 4));
                                                                 |     r4 = *((r6! + 8));
                                                                 |     r7 = *((r6! + 12));
    0x00011f42 movs r1, r0                                       |     r1 = r0;
    0x00011f44 lsls r4, r1, 0xd                                  |     r4 = r1 << 0xd;
    0x00011f46 movs r0, r0                                       |     
    0x00011f48 add r2, sp, 0x130                                 |     r2 += var_130h;
    0x00011f4a movs r0, r0                                       |     
    0x00011f4c movs r7, 0x34                                     |     r7 = 0x34;
    0x00011f4e movs r2, r0                                       |     r2 = r0;
    0x00011f50 movs r7, 0x24                                     |     r7 = 0x24;
    0x00011f52 movs r2, r0                                       |     r2 = r0;
    0x00011f54 movs r7, 0xa6                                     |     r7 = 0xa6;
    0x00011f56 movs r2, r0                                       |     r2 = r0;
    0x00011f58 ldm r6, {r1, r2, r3, r5, r6}                      |     r1 = *(r6);
                                                                 |     r2 = *((r6 + 4));
                                                                 |     r3 = *((r6 + 8));
                                                                 |     r5 = *((r6 + 12));
                                                                 |     r6 = *((r6 + 16));
    0x00011f5a movs r1, r0                                       |     r1 = r0;
    0x00011f5c add r2, sp, 0xa0                                  |     r2 += var_a0h;
    0x00011f5e movs r0, r0                                       |     
    0x00011f60 str r0, [r4, 0x70]                                |     *((r4 + 0x70)) = r0;
    0x00011f62 movs r0, r0                                       |     
                                                                 |     if (r0 > r0) {
    0x00011f64 blo 0x11fc4                                       |         
    0x00011f66 movs r1, r0                                       |         r1 = r0;
    0x00011f68 lsls r0, r7, 0xb                                  |         r0 = r7 << 0xb;
    0x00011f6a movs r0, r0                                       |         
    0x00011f6c movs r6, 0xd0                                     |         r6 = 0xd0;
    0x00011f6e movs r2, r0                                       |         r2 = r0;
    0x00011f70 add r1, sp, 0x200                                 |         r1 += var_200h;
    0x00011f72 movs r0, r0                                       |         
    0x00011f74 ldm r5, {r4, r5, r6}                              |         r4 = *(r5);
                                                                 |         r5 = *((r5 + 4));
                                                                 |         r6 = *((r5 + 8));
    0x00011f76 movs r1, r0                                       |         r1 = r0;
    0x00011f78 add r1, sp, 0x3d8                                 |         r1 += var_3d8h;
    0x00011f7a movs r0, r0                                       |         
    0x00011f7c ldr r2, [pc, 0xec]                                |         
    0x00011f7e ldr r3, [pc, 0xf0]                                |         r3 = *(0x12072);
    0x00011f80 ldr.w ip, [pc, 0xf0]                              |         
    0x00011f84 add r2, pc                                        |         r2 = 0x23ff4;
    0x00011f86 push {r4, r5, r6, lr}                             |         
    0x00011f88 ldr r3, [r2, r3]                                  |         
    0x00011f8a sub sp, 0x110                                     |         
    0x00011f8c add ip, pc                                        |         ip = 0x24004;
    0x00011f8e add r5, sp, 0xc                                   |         r5 += var_ch_3;
    0x00011f90 mov r4, r5                                        |         r4 = r5;
    0x00011f92 ldr.w lr, [pc, 0xe4]                              |         
    0x00011f96 ldr r3, [r3]                                      |         r3 = *(0x23ff4);
    0x00011f98 str r3, [sp, 0x10c]                               |         var_10ch_2 = r3;
    0x00011f9a mov.w r3, 0                                       |         r3 = 0;
    0x00011f9e ldm.w ip!, {r0, r1, r2, r3}                       |         r0 = *(ip!);
                                                                 |         r1 = *((ip! + 4));
                                                                 |         r2 = *((ip! + 8));
                                                                 |         r3 = *((ip! + 12));
    0x00011fa2 ldr r6, [pc, 0xd8]                                |         r6 = *(0x1207e);
    0x00011fa4 add lr, pc                                        |         lr = 0x24022;
    0x00011fa6 stm r4!, {r0, r1, r2, r3}                         |         *(r4!) = r0;
                                                                 |         *((r4! + 4)) = r1;
                                                                 |         *((r4! + 8)) = r2;
                                                                 |         *((r4! + 12)) = r3;
    0x00011fa8 ldm.w ip!, {r0, r1, r2, r3}                       |         r0 = *(ip!);
                                                                 |         r1 = *((ip! + 4));
                                                                 |         r2 = *((ip! + 8));
                                                                 |         r3 = *((ip! + 12));
    0x00011fac stm r4!, {r0, r1, r2, r3}                         |         *(r4!) = r0;
                                                                 |         *((r4! + 4)) = r1;
                                                                 |         *((r4! + 8)) = r2;
                                                                 |         *((r4! + 12)) = r3;
    0x00011fae ldm.w ip, {r0, r1, r2, r3}                        |         r0 = *(ip);
                                                                 |         r1 = *((ip + 4));
                                                                 |         r2 = *((ip + 8));
                                                                 |         r3 = *((ip + 12));
    0x00011fb2 stm r4!, {r0, r1, r2}                             |         *(r4!) = r0;
                                                                 |         *((r4! + 4)) = r1;
                                                                 |         *((r4! + 8)) = r2;
    0x00011fb4 strh r3, [r4], 2                                  |         *(r4) = r3;
                                                                 |         r4 += 2;
    0x00011fb8 lsrs r3, r3, 0x10                                 |         r3 >>= 0x10;
    0x00011fba strb r3, [r4]                                     |         *(r4) = r3;
    0x00011fbc ldr.w r3, [lr, r6]                                |         r3 = *(0x24022);
    0x00011fc0 ldr r4, [r3]                                      |         r4 = *(0x24022);
                                                                 |         if (r4 != 0) {
    0x00011fc2 cbnz r4, 0x12024                                  |             goto label_53;
                                                                 |         }
                                                                 |     }
    0x00011fc4 ldr r0, [pc, 0xb8]                                |     
    0x00011fc6 mov r2, r4                                        |     r2 = r4;
    0x00011fc8 mov r3, r4                                        |     r3 = r4;
    0x00011fca add r0, pc                                        |     r0 = 0x2404e;
    0x00011fcc b 0x11fd6                                         |     
                                                                 |     while (r1 != 0x22) {
    0x00011fce adds r3, 1                                        |         r3++;
    0x00011fd0 adds r2, 0x41                                     |         r2 += 0x41;
    0x00011fd2 cmp r3, 0x80                                      |         
                                                                 |         if (r3 == 0x80) {
    0x00011fd4 beq 0x12062                                       |             goto label_54;
                                                                 |         }
    0x00011fd6 ldr.w r1, [r0, r2, lsl 2]                         |         offset_2 = r2 << 2;
                                                                 |         r1 = *((r0 + offset_2));
    0x00011fda cmp r1, 0x22                                      |         
    0x00011fdc bne 0x11fce                                       |         
                                                                 |     }
    0x00011fde mov r1, r3                                        |     r1 = r3;
                                                                 | label_15:
    0x00011fe0 ldr r3, [pc, 0xa0]                                |     
    0x00011fe2 mov.w r2, -1                                      |     r2 = -1;
    0x00011fe6 str r1, [sp]                                      |     *(sp) = r1;
    0x00011fe8 add.w r0, sp, 0x3a                                |     r0 += s1;
    0x00011fec movs r1, 1                                        |     r1 = 1;
    0x00011fee add r3, pc                                        |     r3 = 0x24076;
    0x00011ff0 blx 0x2e80                                        |     strncmp (r0, r1, r2);
    0x00011ff4 ldr r1, [pc, 0x90]                                |     
    0x00011ff6 movs r3, 0                                        |     r3 = 0;
    0x00011ff8 add r1, pc                                        |     r1 = 0x24084;
    0x00011ffa b 0x12004                                         |     
                                                                 |     while (r2 != 0x23) {
    0x00011ffc adds r4, 1                                        |         r4++;
    0x00011ffe adds r3, 0x41                                     |         r3 += 0x41;
    0x00012000 cmp r4, 0x80                                      |         
                                                                 |         if (r4 == 0x80) {
    0x00012002 beq 0x12024                                       |             goto label_53;
                                                                 |         }
    0x00012004 ldr.w r2, [r1, r3, lsl 2]                         |         offset_3 = r3 << 2;
                                                                 |         r2 = *((r1 + offset_3));
    0x00012008 cmp r2, 0x23                                      |         
    0x0001200a bne 0x11ffc                                       |         
                                                                 |     }
    0x0001200c mov r0, r5                                        |     r0 = r5;
    0x0001200e blx 0x2ab0                                        |     fcn_00002ab0 ();
    0x00012012 ldr r3, [pc, 0x78]                                |     
    0x00012014 mov.w r2, -1                                      |     r2 = -1;
    0x00012018 add r0, r5                                        |     r0 += r5;
    0x0001201a movs r1, 1                                        |     r1 = 1;
    0x0001201c str r4, [sp]                                      |     *(sp) = r4;
    0x0001201e add r3, pc                                        |     r3 = 0x240b0;
    0x00012020 blx 0x2e80                                        |     strncmp (r0, r1, r2);
                                                                 | label_53:
    0x00012024 ldr r0, [pc, 0x68]                                |     
    0x00012026 movw r1, 0x1ed                                    |     r1 = 0x1ed;
    0x0001202a add r0, pc                                        |     r0 = 0x240be;
    0x0001202c bl 0x10804                                        |     r0 = fcn_00010804 (r0, r1);
    0x00012030 mov r2, r0                                        |     r2 = r0;
                                                                 |     if (r0 == 0) {
    0x00012032 cbz r0, 0x12052                                   |         goto label_55;
                                                                 |     }
                                                                 | label_14:
    0x00012034 blx 0x2f88                                        |     r0 = cxa_finalize ();
    0x00012038 ldr r0, [r0]                                      |     r0 = *(r0);
                                                                 |     do {
    0x0001203a ldr r2, [pc, 0x58]                                |         
    0x0001203c ldr r3, [pc, 0x30]                                |         r3 = *(0x12070);
    0x0001203e add r2, pc                                        |         r2 = 0x240d8;
    0x00012040 ldr r3, [r2, r3]                                  |         r3 = *(0x240d8);
    0x00012042 ldr r2, [r3]                                      |         r2 = *(0x240d8);
    0x00012044 ldr r3, [sp, 0x10c]                               |         r3 = var_10ch;
    0x00012046 eors r2, r3                                       |         r2 ^= r3;
    0x00012048 mov.w r3, 0                                       |         r3 = 0;
                                                                 |         if (r2 != r3) {
    0x0001204c bne 0x12068                                       |             goto label_56;
                                                                 |         }
    0x0001204e add sp, 0x110                                     |         
    0x00012050 pop {r4, r5, r6, pc}                              |         
                                                                 | label_55:
    0x00012052 ldr r0, [pc, 0x44]                                |         
    0x00012054 mov r1, r5                                        |         r1 = r5;
    0x00012056 add r0, pc                                        |         r0 = 0x240f4;
    0x00012058 bl 0x10554                                        |         r0 = fcn_00010554 (r0, r1, r2);
    0x0001205c cmp r0, 0                                         |         
    0x0001205e beq 0x1203a                                       |         
                                                                 |     } while (r0 == 0);
    0x00012060 b 0x12034                                         |     goto label_14;
                                                                 | label_54:
    0x00012062 mov.w r1, -1                                      |     r1 = -1;
    0x00012066 b 0x11fe0                                         |     goto label_15;
                                                                 | label_56:
    0x00012068 blx 0x2cdc                                        |     fprintf_chk ()
    0x0001206c ldm r4, {r3, r4, r5, r7}                          |     r3 = *(r4);
                                                                 |     r4 = *((r4 + 4));
                                                                 |     r5 = *((r4 + 8));
                                                                 |     r7 = *((r4 + 12));
    0x0001206e movs r1, r0                                       |     r1 = r0;
    0x00012070 lsls r4, r1, 0xd                                  |     r4 = r1 << 0xd;
    0x00012072 movs r0, r0                                       |     
    0x00012074 add r1, sp, 0x310                                 |     r1 += var_310h;
    0x00012076 movs r0, r0                                       |     
    0x00012078 ldm r4, {r3, r4, r7}                              |     r3 = *(r4);
                                                                 |     r4 = *((r4 + 4));
                                                                 |     r7 = *((r4 + 8));
    0x0001207a movs r1, r0                                       |     r1 = r0;
    0x0001207c lsls r4, r6, 0xb                                  |     r4 = r6 << 0xb;
    0x0001207e movs r0, r0                                       |     
    0x00012080 movs r5, 0xa6                                     |     r5 = 0xa6;
    0x00012082 movs r2, r0                                       |     r2 = r0;
    0x00012084 add r1, sp, 0x248                                 |     r1 += var_248h;
    0x00012086 movs r0, r0                                       |     
    0x00012088 movs r5, 0x78                                     |     r5 = 0x78;
    0x0001208a movs r2, r0                                       |     r2 = r0;
    0x0001208c add r1, sp, 0x238                                 |     r1 += var_238h;
    0x0001208e movs r0, r0                                       |     
    0x00012090 add r1, sp, 0x2a8                                 |     r1 += var_2a8h;
    0x00012092 movs r0, r0                                       |     
    0x00012094 ldm r3, {r1, r2, r3, r4, r5, r6, r7}              |     r1 = *(r3);
                                                                 |     r2 = *((r3 + 4));
                                                                 |     r3 = *((r3 + 8));
                                                                 |     r4 = *((r3 + 12));
                                                                 |     r5 = *((r3 + 16));
                                                                 |     r6 = *((r3 + 20));
                                                                 |     r7 = *((r3 + 24));
    0x00012096 movs r1, r0                                       |     r1 = r0;
    0x00012098 add r1, sp, 0x248                                 |     r1 += var_248h;
    0x0001209a movs r0, r0                                       |     
    0x0001209c ldr r0, [pc, 0x208]                               |     
    0x0001209e ldr r1, [pc, 0x20c]                               |     r1 = *(0x122ae);
    0x000120a0 push.w {r4, r5, r6, r7, r8, sb, sl, fp, lr}       |     
    0x000120a4 sub sp, 0x94                                      |     
    0x000120a6 add r0, pc                                        |     r0 = 0x24352;
    0x000120a8 ldr r3, [pc, 0x204]                               |     
    0x000120aa ldr r1, [r0, r1]                                  |     
    0x000120ac ldr r2, [pc, 0x204]                               |     r2 = *(0x122b4);
    0x000120ae add r3, pc                                        |     
    0x000120b0 ldr r1, [r1]                                      |     r1 = *(0x24352);
    0x000120b2 str r1, [sp, 0x8c]                                |     var_8ch = r1;
    0x000120b4 mov.w r1, 0                                       |     r1 = 0;
    0x000120b8 ldr r3, [r3, r2]                                  |     
    0x000120ba ldr r3, [r3]                                      |     r3 = *(0x24362);
    0x000120bc cbnz r3, 0x120dc                                  |     
                                                                 |     while (r0 == 0) {
                                                                 | label_16:
    0x000120be movs r0, 0                                        |         r0 = 0;
                                                                 | label_20:
    0x000120c0 ldr r2, [pc, 0x1f4]                               |         
    0x000120c2 ldr r3, [pc, 0x1e8]                               |         r3 = *(0x122ae);
    0x000120c4 add r2, pc                                        |         r2 = 0x24380;
    0x000120c6 ldr r3, [r2, r3]                                  |         r3 = *(0x24380);
    0x000120c8 ldr r2, [r3]                                      |         r2 = *(0x24380);
    0x000120ca ldr r3, [sp, 0x8c]                                |         r3 = var_8ch;
    0x000120cc eors r2, r3                                       |         r2 ^= r3;
    0x000120ce mov.w r3, 0                                       |         r3 = 0;
                                                                 |         if (r2 != r3) {
    0x000120d2 bne.w 0x122a2                                     |             goto label_57;
                                                                 |         }
    0x000120d6 add sp, 0x94                                      |         
    0x000120d8 pop.w {r4, r5, r6, r7, r8, sb, sl, fp, pc}        |         
    0x000120dc ldr r0, [pc, 0x1dc]                               |         
    0x000120de add r0, pc                                        |         r0 = 0x2439e;
    0x000120e0 bl 0x1070c                                        |         r0 = fcn_0001070c (r0);
    0x000120e4 cmp r0, 0                                         |         
    0x000120e6 beq 0x120be                                       |         
                                                                 |     }
    0x000120e8 ldr r1, [pc, 0x1d4]                               |     
    0x000120ea add r1, pc                                        |     r1 = 0x243ae;
    0x000120ec blx 0x2d30                                        |     r0 = ftruncate ();
    0x000120f0 mov r4, r0                                        |     r4 = r0;
    0x000120f2 cmp r0, 0                                         |     
                                                                 |     if (r0 == 0) {
    0x000120f4 beq 0x120be                                       |         goto label_16;
                                                                 |     }
    0x000120f6 ldr r3, [pc, 0x1cc]                               |     
    0x000120f8 movw r7, 0x4d0b                                   |     
    0x000120fc ldr.w sl, [pc, 0x1c8]                             |     
    0x00012100 movw sb, 0x4d14                                   |     
    0x00012104 movt r7, 0x4008                                   |     r7 = 0x40084d0b;
    0x00012108 movt sb, 0x4010                                   |     sb = 0x40104d14;
    0x0001210c add r3, pc                                        |     r3 = 0x243d6;
    0x0001210e str r3, [sp, 8]                                   |     size = r3;
    0x00012110 add sl, pc                                        |     sl = 0x243dc;
    0x00012112 movw r3, 0x4d01                                   |     
    0x00012116 movt r3, 0x8020                                   |     r3 = 0x80204d01;
    0x0001211a str r3, [sp, 0xc]                                 |     var_ch_2 = r3;
                                                                 | label_21:
    0x0001211c ldrb r3, [r4]                                     |     r3 = *(r4);
    0x0001211e cmp r3, 0x30                                      |     
                                                                 |     if (r3 != 0x30) {
    0x00012120 bne 0x121e0                                       |         goto label_58;
                                                                 |     }
    0x00012122 ldrb r2, [r4, 1]                                  |     r2 = *((r4 + 1));
    0x00012124 cmp r2, 0                                         |     
                                                                 |     if (r2 != 0) {
    0x00012126 bne 0x121e0                                       |         goto label_58;
                                                                 |     }
                                                                 | label_18:
    0x00012128 bl 0x105d0                                        |     fcn_000105d0 ();
    0x0001212c ldr r1, [sp, 8]                                   |     r1 = size;
    0x0001212e movs r2, 0xa                                      |     r2 = 0xa;
    0x00012130 blx 0x2ea4                                        |     r0 = realloc (r0, r1);
    0x00012134 cmp r0, 0                                         |     
                                                                 |     if (r0 == 0) {
    0x00012136 beq 0x121fa                                       |         goto label_59;
                                                                 |     }
                                                                 | label_19:
    0x00012138 ldrb r3, [r4]                                     |     r3 = *(r4);
    0x0001213a sub.w r2, r3, 0x30                                |     r2 = r3 - 0x30;
    0x0001213e cmp r2, 9                                         |     
                                                                 |     if (r2 <= 9) {
    0x00012140 bhi 0x1214a                                       |         
    0x00012142 ldrb r2, [r4, 1]                                  |         r2 = *((r4 + 1));
    0x00012144 cmp r2, 0                                         |         
                                                                 |         if (r2 == 0) {
    0x00012146 beq.w 0x12268                                     |             goto label_60;
                                                                 |         }
                                                                 |     }
    0x0001214a ldr r0, [pc, 0x180]                               |     
    0x0001214c add.w r8, sp, 0x4c                                |     r8 += var_4ch;
    0x00012150 movs r3, 0x40                                     |     r3 = 0x40;
    0x00012152 movs r2, 1                                        |     r2 = 1;
    0x00012154 mov r1, r3                                        |     r1 = r3;
    0x00012156 add r0, pc                                        |     r0 = 0x24428;
    0x00012158 strd r0, r4, [sp]                                 |     __asm ("strd r0, r4, [sp]");
    0x0001215c mov r0, r8                                        |     r0 = r8;
    0x0001215e blx 0x2b98                                        |     shutdown ();
                                                                 | label_23:
    0x00012162 movs r1, 2                                        |     r1 = 2;
    0x00012164 mov r0, r8                                        |     r0 = r8;
    0x00012166 blx 0x2730                                        |     r0 = open (r0, r1, r2);
    0x0001216a subs r5, r0, 0                                    |     r5 = r0 - 0;
                                                                 |     if (r5 < r0) {
    0x0001216c blt 0x1221a                                       |         goto label_61;
                                                                 |     }
    0x0001216e ldr r1, [sp, 0xc]                                 |     r1 = var_ch_2;
    0x00012170 add r2, sp, 0x28                                  |     r2 += var_28h;
    0x00012172 blx 0x2a8c                                        |     r0 = fcn_00002a8c ();
    0x00012176 cmp r0, 0                                         |     
                                                                 |     if (r0 < 0) {
    0x00012178 blt.w 0x12288                                     |         goto label_62;
                                                                 |     }
    0x0001217c ldr r3, [sp, 0x30]                                |     r3 = var_30h;
    0x0001217e movs r4, 0                                        |     r4 = 0;
    0x00012180 add r6, sp, 0x10                                  |     r6 += var_10h_2;
                                                                 |     if (r3 != 0) {
    0x00012182 cbnz r3, 0x121a8                                  |         goto label_17;
                                                                 |     }
    0x00012184 b 0x121d8                                         |     goto label_63;
                                                                 |     do {
    0x00012186 ldr r3, [sp, 0x34]                                |         r3 = var_34h;
    0x00012188 add r2, sp, 0x18                                  |         r2 += var_18h;
    0x0001218a mov r1, sb                                        |         r1 = sb;
    0x0001218c mov r0, r5                                        |         r0 = r5;
    0x0001218e strd r4, fp, [sp, 0x18]                           |         __asm ("strd r4, fp, [var_0h_3x18]");
    0x00012192 strd r3, fp, [sp, 0x20]                           |         __asm ("strd r3, fp, [var_0h_3x20]");
    0x00012196 blx 0x2a8c                                        |         r0 = fcn_00002a8c ();
    0x0001219a cmp r0, 0                                         |         
                                                                 |         if (r0 < 0) {
    0x0001219c blt 0x1227e                                       |             goto label_64;
                                                                 |         }
    0x0001219e ldrd r3, r2, [sp, 0x30]                           |         __asm ("ldrd r3, r2, [var_30h]");
    0x000121a2 add r4, r2                                        |         r4 += r2;
    0x000121a4 cmp r4, r3                                        |         
                                                                 |         if (r4 >= r3) {
    0x000121a6 bhs 0x121d8                                       |             goto label_63;
                                                                 |         }
                                                                 | label_17:
    0x000121a8 mov.w fp, 0                                       |         
    0x000121ac mov r2, r6                                        |         r2 = r6;
    0x000121ae mov r1, r7                                        |         r1 = r7;
    0x000121b0 mov r0, r5                                        |         r0 = r5;
    0x000121b2 strd r4, fp, [sp, 0x10]                           |         __asm ("strd r4, fp, [var_0h_3x10]");
    0x000121b6 blx 0x2a8c                                        |         r0 = fcn_00002a8c ();
    0x000121ba cmp r0, 0                                         |         
                                                                 |         if (r0 < 0) {
    0x000121bc blt 0x12242                                       |             goto label_65;
                                                                 |         }
    0x000121be cmp r0, 1                                         |         
    0x000121c0 bne 0x12186                                       |         
                                                                 |     } while (r0 != 1);
    0x000121c2 mov r2, r4                                        |     r2 = r4;
    0x000121c4 mov r3, r8                                        |     r3 = r8;
    0x000121c6 mov r1, sl                                        |     r1 = sl;
    0x000121c8 movs r0, 7                                        |     r0 = 7;
    0x000121ca bl 0xfcdc                                         |     fcn_0000fcdc (r0);
    0x000121ce ldrd r3, r2, [sp, 0x30]                           |     __asm ("ldrd r3, r2, [var_30h]");
    0x000121d2 add r4, r2                                        |     r4 += r2;
    0x000121d4 cmp r4, r3                                        |     
                                                                 |     if (r4 <= r3) {
    0x000121d6 blo 0x121a8                                       |         goto label_17;
                                                                 |     }
                                                                 | label_63:
    0x000121d8 mov r0, r5                                        |     r0 = r5;
    0x000121da blx 0x2bf8                                        |     EVP_PKEY_verify_init ();
    0x000121de b 0x1222e                                         |     goto label_22;
                                                                 | label_58:
    0x000121e0 cmp r3, 0x31                                      |     
                                                                 |     if (r3 != 0x31) {
    0x000121e2 bne 0x121ea                                       |         goto label_66;
                                                                 |     }
    0x000121e4 ldrb r3, [r4, 1]                                  |     r3 = *((r4 + 1));
    0x000121e6 cmp r3, 0                                         |     
                                                                 |     if (r3 == 0) {
    0x000121e8 beq 0x12128                                       |         goto label_18;
                                                                 |     }
                                                                 | label_66:
    0x000121ea ldr r1, [pc, 0xe4]                                |     
    0x000121ec mov r0, r4                                        |     r0 = r4;
    0x000121ee add r1, pc                                        |     r1 = 0x244c4;
    0x000121f0 blx 0x2f70                                        |     r0 = vdprintf_chk ();
    0x000121f4 cmp r0, 0                                         |     
                                                                 |     if (r0 != 0) {
    0x000121f6 bne 0x12138                                       |         goto label_19;
                                                                 |     }
    0x000121f8 b 0x12128                                         |     goto label_18;
                                                                 | label_59:
    0x000121fa bl 0x3d9c                                         |     r0 = fcn_00003d9c (r0, r1);
    0x000121fe cmp r0, 0                                         |     
                                                                 |     if (r0 == 0) {
    0x00012200 beq 0x12138                                       |         goto label_19;
                                                                 |     }
    0x00012202 ldr r1, [pc, 0xd0]                                |     
    0x00012204 movs r0, 2                                        |     r0 = 2;
    0x00012206 add r1, pc                                        |     r1 = 0x244e0;
    0x00012208 bl 0xfcdc                                         |     r0 = fcn_0000fcdc (r0);
    0x0001220c blx 0x2f88                                        |     cxa_finalize ();
    0x00012210 movs r3, 1                                        |     r3 = 1;
    0x00012212 mov r2, r0                                        |     r2 = r0;
    0x00012214 str r3, [r2]                                      |     *(r2) = r3;
    0x00012216 mov r0, r3                                        |     r0 = r3;
    0x00012218 b 0x120c0                                         |     goto label_20;
                                                                 | label_61:
    0x0001221a ldr r1, [pc, 0xbc]                                |     
    0x0001221c mov r2, r8                                        |     r2 = r8;
    0x0001221e movs r0, 2                                        |     r0 = 2;
    0x00012220 add r1, pc                                        |     r1 = 0x244fe;
    0x00012222 bl 0xfcdc                                         |     r0 = fcn_0000fcdc (r0);
    0x00012226 blx 0x2f88                                        |     r0 = cxa_finalize ();
    0x0001222a ldr r3, [r0]                                      |     r3 = *(r0);
                                                                 |     if (r3 != 0) {
                                                                 | label_25:
    0x0001222c cbnz r3, 0x12260                                  |         goto label_67;
                                                                 |     }
                                                                 | label_22:
    0x0001222e ldr r1, [pc, 0xac]                                |     
    0x00012230 movs r0, 0                                        |     r0 = 0;
    0x00012232 add r1, pc                                        |     r1 = 0x24514;
    0x00012234 blx 0x2d30                                        |     r0 = ftruncate ();
    0x00012238 mov r4, r0                                        |     r4 = r0;
    0x0001223a cmp r0, 0                                         |     
                                                                 |     if (r0 != 0) {
    0x0001223c bne.w 0x1211c                                     |         goto label_21;
                                                                 |     }
    0x00012240 b 0x120be                                         |     goto label_16;
                                                                 | label_65:
    0x00012242 ldr r1, [pc, 0x9c]                                |     
    0x00012244 mov r3, r4                                        |     r3 = r4;
    0x00012246 mov r2, r8                                        |     r2 = r8;
    0x00012248 add r1, pc                                        |     r1 = 0x2452e;
                                                                 | label_24:
    0x0001224a movs r0, 2                                        |     r0 = 2;
    0x0001224c bl 0xfcdc                                         |     fcn_0000fcdc (r0);
    0x00012250 mov r0, r5                                        |     r0 = r5;
    0x00012252 bl 0x10978                                        |     r0 = fcn_00010978 (r0);
    0x00012256 blx 0x2f88                                        |     r0 = cxa_finalize ();
    0x0001225a ldr r3, [r0]                                      |     r3 = *(r0);
    0x0001225c cmp r3, 0                                         |     
                                                                 |     if (r3 == 0) {
    0x0001225e beq 0x1222e                                       |         goto label_22;
                                                                 |     }
                                                                 | label_67:
    0x00012260 blx 0x2f88                                        |     r0 = cxa_finalize ();
    0x00012264 ldr r0, [r0]                                      |     r0 = *(r0);
    0x00012266 b 0x120c0                                         |     goto label_20;
                                                                 | label_60:
    0x00012268 str r3, [sp]                                      |     *(sp) = r3;
    0x0001226a add.w r8, sp, 0x4c                                |     r8 += var_4ch;
    0x0001226e ldr r3, [pc, 0x74]                                |     
    0x00012270 movs r2, 0x40                                     |     r2 = 0x40;
    0x00012272 movs r1, 1                                        |     r1 = 1;
    0x00012274 mov r0, r8                                        |     r0 = r8;
    0x00012276 add r3, pc                                        |     r3 = 0x24560;
    0x00012278 blx 0x2e80                                        |     strncmp (r0, r1, r2);
    0x0001227c b 0x12162                                         |     goto label_23;
                                                                 | label_64:
    0x0001227e ldr r1, [pc, 0x68]                                |     
    0x00012280 mov r3, r4                                        |     r3 = r4;
    0x00012282 mov r2, r8                                        |     r2 = r8;
    0x00012284 add r1, pc                                        |     r1 = 0x24572;
    0x00012286 b 0x1224a                                         |     goto label_24;
                                                                 | label_62:
    0x00012288 ldr r1, [pc, 0x60]                                |     
    0x0001228a mov r2, r8                                        |     r2 = r8;
    0x0001228c movs r0, 2                                        |     r0 = 2;
    0x0001228e add r1, pc                                        |     r1 = 0x2457e;
    0x00012290 bl 0xfcdc                                         |     fcn_0000fcdc (r0);
    0x00012294 mov r0, r5                                        |     r0 = r5;
    0x00012296 bl 0x10978                                        |     r0 = fcn_00010978 (r0);
    0x0001229a blx 0x2f88                                        |     r0 = cxa_finalize ();
    0x0001229e ldr r3, [r0]                                      |     r3 = *(r0);
    0x000122a0 b 0x1222c                                         |     goto label_25;
                                                                 | label_57:
    0x000122a2 blx 0x2cdc                                        |     fprintf_chk ()
    0x000122a6 nop                                               |     
    0x000122a8 ldm r3!, {r1, r2, r4, r7}                         |     r1 = *(r3!);
                                                                 |     r2 = *((r3! + 4));
                                                                 |     r4 = *((r3! + 8));
                                                                 |     r7 = *((r3! + 12));
    0x000122aa movs r1, r0                                       |     r1 = r0;
    0x000122ac lsls r4, r1, 0xd                                  |     r4 = r1 << 0xd;
    0x000122ae movs r0, r0                                       |     
    0x000122b0 ldm r3, {r1, r2, r3, r7}                          |     r1 = *(r3);
                                                                 |     r2 = *((r3 + 4));
                                                                 |     r3 = *((r3 + 8));
                                                                 |     r7 = *((r3 + 12));
    0x000122b2 movs r1, r0                                       |     r1 = r0;
    0x000122b4 lsls r4, r6, 0xb                                  |     r4 = r6 << 0xb;
    0x000122b6 movs r0, r0                                       |     
    0x000122b8 ldm r3, {r3, r4, r5, r6}                          |     r3 = *(r3);
                                                                 |     r4 = *((r3 + 4));
                                                                 |     r5 = *((r3 + 8));
                                                                 |     r6 = *((r3 + 12));
    0x000122ba movs r1, r0                                       |     r1 = r0;
    0x000122bc add r1, sp, 0xc8                                  |     r1 += var_10h;
    0x000122be movs r0, r0                                       |     
    0x000122c0 ldrh r6, [r4, 0x3a]                               |     r6 = *((r4 + 0x3a));
    0x000122c2 movs r0, r0                                       |     
    0x000122c4 add r1, sp, 0x40                                  |     r1 += var_40h;
    0x000122c6 movs r0, r0                                       |     
    0x000122c8 add r1, sp, 0x2e0                                 |     r1 += var_2e0h;
    0x000122ca movs r0, r0                                       |     
    0x000122cc adr r3, 0x308                                     |     r3 = 0x308;
    0x000122ce movs r0, r0                                       |     
    0x000122d0 str r2, [r5, 8]                                   |     *((r5 + 8)) = r2;
    0x000122d2 movs r0, r0                                       |     
    0x000122d4 add r0, sp, 0x88                                  |     r0 += var_88h;
    0x000122d6 movs r0, r0                                       |     
    0x000122d8 strh r0, [r1, r1]                                 |     *((r1 + r1)) = r0;
    0x000122da movs r0, r0                                       |     
    0x000122dc ldrh r6, [r3, 0x30]                               |     r6 = *((r3 + 0x30));
    0x000122de movs r0, r0                                       |     
    0x000122e0 add r0, sp, 0x110                                 |     r0 += var_110h;
    0x000122e2 movs r0, r0                                       |     
    0x000122e4 adr r7, 0x398                                     |     r7 = 0x398;
    0x000122e6 movs r0, r0                                       |     
    0x000122e8 add r0, sp, 0x1c0                                 |     r0 += var_1c0h;
    0x000122ea movs r0, r0                                       |     
    0x000122ec adr r7, 0x368                                     |     r7 = 0x368;
    0x000122ee movs r0, r0                                       |     
                                                                 | }
    ; assembly                                       | /* r2dec pseudo code output */
                                                     | /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/sbin/fwmgr @ 0x8da0 */
                                                     | #include <stdint.h>
                                                     |  
    ; (fcn) fcn.00008da0 ()                          | void fcn_00008da0 (int16_t arg_404h) {
                                                     |     int16_t var_40ch;
                                                     |     int16_t var_4h;
    0x00008da0 mvnsmi lr, 0xb4000                    |     __asm ("mvnsmi lr, 0xb4000");
    0x00008da4 subw sp, sp, 0x40c                    |     __asm ("subw sp, sp, 0x40c");
    0x00008da8 ldr r6, [pc, 0x200]                   |     
    0x00008daa add r4, sp, 4                         |     r4 += var_4h;
    0x00008dac movs r3, 1                            |     r3 = 1;
    0x00008dae mov.w r2, 0x400                       |     r2 = 0x400;
    0x00008db2 ldr r5, [pc, 0x1fc]                   |     r5 = *(0x8fb2);
    0x00008db4 mov r1, r4                            |     r1 = r4;
    0x00008db6 add r6, pc                            |     r6 = 0x11d66;
    0x00008db8 ldr r0, [pc, 0x1f8]                   |     
    0x00008dba ldr r5, [r6, r5]                      |     
    0x00008dbc ldr r6, [pc, 0x1f8]                   |     
    0x00008dbe add r0, pc                            |     r0 = 0x11d76;
    0x00008dc0 ldr r5, [r5]                          |     r5 = *(0x11d66);
    0x00008dc2 str.w r5, [sp, 0x404]                 |     __asm ("str.w r5, [arg_404h]");
    0x00008dc4 strb r4, [r0, r0]                     |     *((r0 + r0)) = r4;
    0x00008dc6 mov.w r5, 0                           |     r5 = 0;
    0x00008dca add r6, pc                            |     r6 = 0x11d86;
    0x00008dcc bl 0x10338                            |     r0 = fcn_00010338 (r0, r1, r2, r3);
                                                     |     if (r0 == 0) {
    0x00008dd0 cbz r0, 0x8e00                        |         goto label_4;
                                                     |     }
    0x00008dd2 blx 0x2f88                            |     r0 = cxa_finalize ();
    0x00008dd6 ldr r0, [r0]                          |     r0 = *(r0);
    0x00008dd8 cmp r0, 2                             |     
    0x00008dda beq 0x8dfc                            |     
                                                     |     while (1) {
    0x00008ddc ldr r2, [pc, 0x1dc]                   |         
    0x00008dde ldr r3, [pc, 0x1d0]                   |         r3 = *(0x8fb2);
    0x00008de0 add r2, pc                            |         r2 = 0x11da0;
    0x00008de2 ldr r3, [r2, r3]                      |         r3 = *(0x11da0);
    0x00008de4 ldr r2, [r3]                          |         r2 = *(0x11da0);
    0x00008de6 ldr.w r3, [sp, 0x404]                 |         r3 = *(arg_404h);
    0x00008dea eors r2, r3                           |         r2 ^= r3;
    0x00008dec mov.w r3, 0                           |         r3 = 0;
                                                     |         if (r2 != r3) {
    0x00008df0 bne.w 0x8f80                          |             goto label_5;
                                                     |         }
    0x00008df4 addw sp, sp, 0x40c                    |         __asm ("addw sp, var_40ch");
    0x00008df8 pop.w {r4, r5, r6, r7, r8, sb, pc}    |         
                                                     | label_0:
    0x00008dfc movs r0, 0                            |         r0 = 0;
    0x00008dfe b 0x8ddc                              |         
                                                     |     }
                                                     | label_4:
    0x00008e00 ldr r1, [pc, 0x1bc]                   |     
    0x00008e02 mov r0, r4                            |     r0 = r4;
    0x00008e04 add r1, pc                            |     r1 = 0x11dc8;
    0x00008e06 blx 0x2d30                            |     r0 = ftruncate ();
    0x00008e0a mov r4, r0                            |     r4 = r0;
    0x00008e0c cmp r0, 0                             |     
                                                     |     if (r0 == 0) {
    0x00008e0e beq 0x8dfc                            |         goto label_0;
                                                     |     }
    0x00008e10 ldr r5, [pc, 0x1b0]                   |     
    0x00008e12 ldr r7, [pc, 0x1b4]                   |     
    0x00008e14 ldr.w r8, [pc, 0x1b4]                 |     
    0x00008e16 strh r4, [r6, 0xc]                    |     *((r6 + 0xc)) = r4;
    0x00008e18 add r5, pc                            |     r5 = 0x11de0;
    0x00008e1a add r7, pc                            |     r7 = 0x11de8;
    0x00008e1c add r8, pc                            |     r8 = 0x11dec;
    0x00008e1e b 0x8e38                              |     goto label_6;
                                                     | label_2:
    0x00008e20 ldr r3, [pc, 0x1ac]                   |     
    0x00008e22 add r3, pc                            |     r3 = 0x11df6;
    0x00008e24 strb.w r0, [r3, 0x5c]                 |     *((r3 + 0x5c)) = r0;
                                                     | label_1:
    0x00008e28 ldr r1, [pc, 0x1a8]                   |     
    0x00008e2a movs r0, 0                            |     r0 = 0;
    0x00008e2c add r1, pc                            |     r1 = 0x11e04;
    0x00008e2e blx 0x2d30                            |     r0 = ftruncate ();
    0x00008e32 mov r4, r0                            |     r4 = r0;
    0x00008e34 cmp r0, 0                             |     
                                                     |     if (r0 == 0) {
    0x00008e36 beq 0x8dfc                            |         goto label_0;
                                                     |     }
                                                     | label_6:
    0x00008e38 ldrb r2, [r4]                         |     r2 = *(r4);
    0x00008e3a cmp r2, 0x23                          |     
    0x00008e3c it ne                                 |     
                                                     |     if (r2 != 0x23) {
    0x00008e3e cmpne r2, 0                           |         __asm ("cmpne r2, 0");
                                                     |     }
    0x00008e40 ite eq                                |     
                                                     |     if (r2 != 0x23) {
    0x00008e42 moveq r3, 1                           |         r3 = 1;
                                                     |     }
                                                     |     if (r2 == 0x23) {
    0x00008e44 movne r3, 0                           |         r3 = 0;
                                                     |     }
    0x00008e46 cmp r2, 0x3b                          |     
    0x00008e48 it eq                                 |     
                                                     |     if (r2 != 0x3b) {
    0x00008e4a orreq r3, r3, 1                       |         r3 |= 1;
                                                     |     }
    0x00008e4e cmp r3, 0                             |     
                                                     |     if (r3 != 0) {
    0x00008e50 bne 0x8e28                            |         goto label_1;
                                                     |     }
    0x00008e52 mov r1, r5                            |     r1 = r5;
    0x00008e54 mov r0, r4                            |     r0 = r4;
    0x00008e56 blx 0x2f70                            |     r0 = vdprintf_chk ();
    0x00008e5a cmp r0, 0                             |     
                                                     |     if (r0 == 0) {
    0x00008e5c beq 0x8e20                            |         goto label_2;
                                                     |     }
    0x00008e5e mov r1, r7                            |     r1 = r7;
    0x00008e60 mov r0, r4                            |     r0 = r4;
    0x00008e62 blx 0x2f70                            |     r0 = vdprintf_chk ();
                                                     |     if (r0 == 0) {
    0x00008e66 cbnz r0, 0x8e74                       |         
    0x00008e68 ldr r3, [pc, 0x16c]                   |         
    0x00008e6a movs r2, 1                            |         r2 = 1;
    0x00008e6c add r3, pc                            |         r3 = 0x11e48;
    0x00008e6e strb.w r2, [r3, 0x5c]                 |         *((r3 + 0x5c)) = r2;
    0x00008e72 b 0x8e28                              |         goto label_1;
                                                     |     }
    0x00008e74 mov r1, r8                            |     r1 = r8;
    0x00008e76 mov r0, r4                            |     r0 = r4;
    0x00008e78 blx 0x2f70                            |     r0 = vdprintf_chk ();
                                                     |     if (r0 == 0) {
    0x00008e7c cbnz r0, 0x8e88                       |         
    0x00008e7e ldr r3, [pc, 0x15c]                   |         r3 = *(0x8fde);
    0x00008e80 movs r2, 1                            |         r2 = 1;
    0x00008e82 ldr r3, [r6, r3]                      |         r3 = *((r6 + r3));
    0x00008e84 strb r2, [r3]                         |         *(r3) = r2;
    0x00008e86 b 0x8e28                              |         goto label_1;
                                                     |     }
    0x00008e88 ldr r1, [pc, 0x154]                   |     
    0x00008e8a mov r0, r4                            |     r0 = r4;
    0x00008e8c add r1, pc                            |     r1 = 0x11e70;
    0x00008e8e blx 0x2f70                            |     r0 = vdprintf_chk ();
    0x00008e92 cmp r0, 0                             |     
                                                     |     if (r0 == 0) {
    0x00008e94 beq 0x8f3c                            |         goto label_7;
                                                     |     }
    0x00008e96 ldr r1, [pc, 0x14c]                   |     
    0x00008e98 mov r0, r4                            |     r0 = r4;
    0x00008e9a add r1, pc                            |     r1 = 0x11e84;
    0x00008e9c blx 0x2f70                            |     r0 = vdprintf_chk ();
    0x00008ea0 cmp r0, 0                             |     
                                                     |     if (r0 == 0) {
    0x00008ea2 beq 0x8f44                            |         goto label_8;
                                                     |     }
    0x00008ea4 ldr r1, [pc, 0x140]                   |     
    0x00008ea6 mov r0, r4                            |     r0 = r4;
    0x00008ea8 add r1, pc                            |     r1 = 0x11e94;
    0x00008eaa blx 0x2f70                            |     r0 = vdprintf_chk ();
    0x00008eae cmp r0, 0                             |     
                                                     |     if (r0 == 0) {
    0x00008eb0 beq 0x8f44                            |         goto label_8;
                                                     |     }
    0x00008eb2 ldr r1, [pc, 0x138]                   |     
    0x00008eb4 mov r0, r4                            |     r0 = r4;
    0x00008eb6 add r1, pc                            |     r1 = 0x11ea8;
    0x00008eb8 blx 0x2f70                            |     r0 = vdprintf_chk ();
    0x00008ebc cmp r0, 0                             |     
                                                     |     if (r0 == 0) {
    0x00008ebe beq 0x8f4e                            |         goto label_9;
                                                     |     }
    0x00008ec0 ldr r1, [pc, 0x12c]                   |     
    0x00008ec2 mov r0, r4                            |     r0 = r4;
    0x00008ec4 add r1, pc                            |     r1 = 0x11eb8;
    0x00008ec6 blx 0x2f70                            |     r0 = vdprintf_chk ();
    0x00008eca cmp r0, 0                             |     
                                                     |     if (r0 == 0) {
    0x00008ecc beq 0x8f4e                            |         goto label_9;
                                                     |     }
    0x00008ece ldr r1, [pc, 0x124]                   |     
    0x00008ed0 mov r0, r4                            |     r0 = r4;
    0x00008ed2 add r1, pc                            |     r1 = 0x11ecc;
    0x00008ed4 blx 0x2f70                            |     r0 = vdprintf_chk ();
    0x00008ed8 cmp r0, 0                             |     
                                                     |     if (r0 == 0) {
    0x00008eda beq 0x8f58                            |         goto label_10;
                                                     |     }
    0x00008edc ldr r1, [pc, 0x118]                   |     
    0x00008ede mov r0, r4                            |     r0 = r4;
    0x00008ee0 add r1, pc                            |     r1 = 0x11edc;
    0x00008ee2 blx 0x2f70                            |     r0 = vdprintf_chk ();
    0x00008ee6 cmp r0, 0                             |     
                                                     |     if (r0 == 0) {
    0x00008ee8 beq 0x8f58                            |         goto label_10;
                                                     |     }
    0x00008eea ldr r1, [pc, 0x110]                   |     
    0x00008eec mov r0, r4                            |     r0 = r4;
    0x00008eee add r1, pc                            |     r1 = 0x11ef0;
    0x00008ef0 blx 0x2f70                            |     r0 = vdprintf_chk ();
    0x00008ef4 cmp r0, 0                             |     
                                                     |     if (r0 == 0) {
    0x00008ef6 beq 0x8f64                            |         goto label_11;
                                                     |     }
    0x00008ef8 ldr r1, [pc, 0x104]                   |     
    0x00008efa mov r0, r4                            |     r0 = r4;
    0x00008efc add r1, pc                            |     r1 = 0x11f00;
    0x00008efe blx 0x2f70                            |     r0 = vdprintf_chk ();
                                                     |     if (r0 == 0) {
    0x00008f02 cbz r0, 0x8f64                        |         goto label_11;
                                                     |     }
    0x00008f04 ldr r1, [pc, 0xfc]                    |     
    0x00008f06 mov r0, r4                            |     r0 = r4;
    0x00008f08 add r1, pc                            |     r1 = 0x11f10;
    0x00008f0a blx 0x2f70                            |     r0 = vdprintf_chk ();
                                                     |     if (r0 == 0) {
    0x00008f0e cbz r0, 0x8f70                        |         goto label_12;
                                                     |     }
    0x00008f10 ldr r1, [pc, 0xf4]                    |     
    0x00008f12 mov r0, r4                            |     r0 = r4;
    0x00008f14 add r1, pc                            |     r1 = 0x11f20;
    0x00008f16 blx 0x2f70                            |     r0 = vdprintf_chk ();
                                                     |     if (r0 == 0) {
    0x00008f1a cbz r0, 0x8f70                        |         goto label_12;
                                                     |     }
    0x00008f1c ldr r1, [pc, 0xec]                    |     
    0x00008f1e movs r2, 0x13                         |     r2 = 0x13;
    0x00008f20 mov r0, r4                            |     r0 = r4;
    0x00008f22 add r1, pc                            |     r1 = 0x11f32;
    0x00008f24 blx 0x2ea4                            |     r0 = realloc (r0, r1);
                                                     |     if (r0 != 0) {
    0x00008f28 cbnz r0, 0x8f2e                       |         goto label_3;
                                                     |     }
    0x00008f2a ldrb r3, [r4, 0x13]                   |     r3 = *((r4 + 0x13));
    0x00008f2c cbnz r3, 0x8f84                       |     
                                                     |     while (r2 >= 0x254) {
                                                     | label_3:
    0x00008f2e ldr r1, [pc, 0xe0]                    |         
    0x00008f30 mov r2, r4                            |         r2 = r4;
    0x00008f32 movs r0, 4                            |         r0 = 4;
    0x00008f34 add r1, pc                            |         r1 = 0x11f4a;
    0x00008f36 bl 0xfcdc                             |         fcn_0000fcdc (r0);
    0x00008f3a b 0x8e28                              |         goto label_1;
                                                     | label_7:
    0x00008f3c ldr r3, [pc, 0x9c]                    |         r3 = *(0x8fdc);
    0x00008f3e ldr r3, [r6, r3]                      |         r3 = *((r6 + r3));
    0x00008f40 strb r0, [r3]                         |         *(r3) = r0;
    0x00008f42 b 0x8e28                              |         goto label_1;
                                                     | label_8:
    0x00008f44 ldr r3, [pc, 0xcc]                    |         r3 = *(0x9014);
    0x00008f46 movs r2, 0                            |         r2 = 0;
    0x00008f48 ldr r3, [r6, r3]                      |         r3 = *((r6 + r3));
    0x00008f4a strb r2, [r3]                         |         *(r3) = r2;
    0x00008f4c b 0x8e28                              |         goto label_1;
                                                     | label_9:
    0x00008f4e ldr r3, [pc, 0xc4]                    |         r3 = *(0x9016);
    0x00008f50 movs r2, 1                            |         r2 = 1;
    0x00008f52 ldr r3, [r6, r3]                      |         r3 = *((r6 + r3));
    0x00008f54 strb r2, [r3]                         |         *(r3) = r2;
    0x00008f56 b 0x8e28                              |         goto label_1;
                                                     | label_10:
    0x00008f58 ldr r3, [pc, 0xbc]                    |         
    0x00008f5a movs r2, 1                            |         r2 = 1;
    0x00008f5c add r3, pc                            |         r3 = 0x11f78;
    0x00008f5e strb.w r2, [r3, 0x64]                 |         *((r3 + 0x64)) = r2;
    0x00008f62 b 0x8e28                              |         goto label_1;
                                                     | label_11:
    0x00008f64 ldr r3, [pc, 0xb4]                    |         
    0x00008f66 movs r2, 0                            |         r2 = 0;
    0x00008f68 add r3, pc                            |         r3 = 0x11f88;
    0x00008f6a strb.w r2, [r3, 0x64]                 |         *((r3 + 0x64)) = r2;
    0x00008f6e b 0x8e28                              |         goto label_1;
                                                     | label_12:
    0x00008f70 ldr r3, [pc, 0xac]                    |         
    0x00008f72 movs r2, 1                            |         r2 = 1;
    0x00008f74 add r3, pc                            |         r3 = 0x11f98;
    0x00008f76 strb.w r2, [r3, 0x64]                 |         *((r3 + 0x64)) = r2;
    0x00008f7a strb.w r2, [r3, 0x65]                 |         *((r3 + 0x65)) = r2;
    0x00008f7e b 0x8e28                              |         goto label_1;
                                                     | label_5:
    0x00008f80 blx 0x2cdc                            |         fprintf_chk ()
    0x00008f84 mov sb, sp                            |         sb = sp;
    0x00008f86 movs r2, 0xa                          |         r2 = 0xa;
    0x00008f88 mov r1, sb                            |         r1 = sb;
    0x00008f8a add.w r0, r4, 0x13                    |         r0 = r4 + 0x13;
    0x00008f8e blx 0x2ae4                            |         r0 = xpg_basename ();
    0x00008f92 subs r2, r0, 5                        |         r2 = r0 - 5;
    0x00008f94 cmp.w r2, 0x254                       |         
    0x00008f98 bhs 0x8f2e                            |         
                                                     |     }
    0x00008f9a ldr.w r2, [sb]                        |     r2 = *(sb);
    0x00008f9e ldrb r2, [r2]                         |     r2 = *(r2);
    0x00008fa0 cmp r2, 0                             |     
                                                     |     if (r2 != 0) {
    0x00008fa2 bne 0x8f2e                            |         goto label_3;
                                                     |     }
    0x00008fa4 ldr r2, [pc, 0x7c]                    |     r2 = *(0x9024);
    0x00008fa6 ldr r2, [r6, r2]                      |     r2 = *((r6 + r2));
    0x00008fa8 str r0, [r2]                          |     *(r2) = r0;
    0x00008faa b 0x8e28                              |     goto label_1;
                                                     | }
    ; assembly                                       | /* r2dec pseudo code output */
                                                     | /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/sbin/fwmgr @ 0x9028 */
                                                     | #include <stdint.h>
                                                     |  
    ; (fcn) fcn.00009028 ()                          | void fcn_00009028 () {
                                                     |     int16_t var_4h;
                                                     |     int16_t var_8h;
                                                     |     int16_t var_ch;
                                                     |     int16_t var_dh;
                                                     |     int16_t var_0h;
                                                     |     int16_t var_7h;
                                                     |     int16_t var_404h;
                                                     |     int16_t var_408h;
    0x00009028 push.w {r4, r5, r6, r7, r8, lr}       |     
    0x0000902c sub.w sp, sp, 0x408                   |     
    0x00009030 ldr r6, [pc, 0xf8]                    |     
    0x00009032 add r5, sp, 4                         |     r5 += var_4h;
    0x00009034 movs r3, 0                            |     r3 = 0;
    0x00009036 mov.w r2, 0x400                       |     r2 = 0x400;
    0x0000903a ldr r4, [pc, 0xf4]                    |     r4 = *(0x9132);
    0x0000903c mov r1, r5                            |     r1 = r5;
    0x0000903e add r6, pc                            |     r6 = 0x1216e;
    0x00009040 ldr r0, [pc, 0xf0]                    |     
    0x00009042 ldr r4, [r6, r4]                      |     
    0x00009044 add r0, pc                            |     r0 = 0x1217c;
    0x00009046 ldr r4, [r4]                          |     r4 = *(0x1216e);
    0x00009048 str.w r4, [sp, 0x404]                 |     __asm ("str.w r4, [var_404h]");
    0x0000904c mov.w r4, 0                           |     r4 = 0;
    0x00009050 bl 0x10338                            |     r0 = fcn_00010338 (r0, r1, r2, r3);
    0x00009054 cmp r0, 0                             |     
                                                     |     if (r0 != 0) {
    0x00009056 bne 0x90f8                            |         goto label_2;
                                                     |     }
    0x00009058 ldr r2, [r5]                          |     r2 = *(r5);
    0x0000905a movw r3, 0x4552                       |     
    0x0000905e movt r3, 0x454c                       |     r3 = 0x454c4552;
    0x00009062 cmp r2, r3                            |     
    0x00009064 beq 0x9080                            |     
                                                     |     while (r2 != r3) {
                                                     | label_0:
    0x00009066 ldr r2, [pc, 0xd0]                    |         
    0x00009068 ldr r1, [pc, 0xd0]                    |         
    0x0000906a add r2, pc                            |         r2 = 0x121a8;
    0x0000906c add r1, pc                            |         r1 = 0x121ac;
                                                     | label_1:
    0x0000906e movs r0, 2                            |         r0 = 2;
    0x00009070 bl 0xfcdc                             |         r0 = fcn_0000fcdc (r0);
    0x00009074 blx 0x2f88                            |         cxa_finalize ();
    0x00009078 movs r3, 0x47                         |         r3 = 0x47;
    0x0000907a mov r4, r3                            |         r4 = r3;
    0x0000907c str r3, [r0]                          |         *(r0) = r3;
    0x0000907e b 0x90fe                              |         goto label_3;
    0x00009080 ldr r2, [sp, 8]                       |         r2 = var_8h;
    0x00009082 movw r3, 0x5341                       |         
    0x00009086 movt r3, 0x3d45                       |         r3 = 0x3d455341;
    0x0000908a cmp r2, r3                            |         
    0x0000908c bne 0x9066                            |         
                                                     |     }
    0x0000908e ldrb.w r7, [sp, 0xc]                  |     r7 = var_ch;
    0x00009092 cmp r7, 0x22                          |     
                                                     |     if (r7 != 0x22) {
    0x00009094 bne 0x9066                            |         goto label_0;
                                                     |     }
    0x00009096 add.w r6, sp, 0xd                     |     r6 += var_dh;
    0x0000909a mov r4, r0                            |     r4 = r0;
    0x0000909c mov r1, r7                            |     r1 = r7;
    0x0000909e mov r0, r6                            |     r0 = r6;
    0x000090a0 blx 0x28e4                            |     r0 = fcn_000028e4 ();
    0x000090a2 stc p6, c4, [r0], -0x200              |     __asm ("stc p6, c4, [r0], -0x200");
    0x000090a6 cmp r0, 0                             |     
                                                     |     if (r0 == 0) {
    0x000090a8 beq 0x9066                            |         goto label_0;
                                                     |     }
    0x000090aa mov r1, r6                            |     r1 = r6;
    0x000090ac ldr r6, [pc, 0x90]                    |     
    0x000090ae mov r5, r0                            |     r5 = r0;
    0x000090b0 mov.w r2, 0x400                       |     r2 = 0x400;
    0x000090b2 str r0, [r0, 0x28]                    |     *((r0 + 0x28)) = r0;
    0x000090b4 strb r4, [r5], 1                      |     *(r5) = r4;
                                                     |     r5++;
    0x000090b8 add r6, pc                            |     r6 = 0x121fc;
    0x000090ba add.w r0, r6, 0x68                    |     r0 = r6 + 0x68;
    0x000090be blx 0x2ee0                            |     pipe ();
    0x000090c2 ldrb.w r3, [r8, 1]                    |     r3 = var_0h;
    0x000090c4 adds r0, 1                            |     r0++;
                                                     |     if (r3 != 0) {
    0x000090c6 cbz r3, 0x911e                        |         
    0x000090c8 ldr r1, [pc, 0x78]                    |         
    0x000090ca mov r0, r5                            |         r0 = r5;
    0x000090cc add r1, pc                            |         r1 = 0x12214;
    0x000090ce blx 0x2bd4                            |         r0 = sd_bus_message_new_method_return ();
                                                     |         if (r0 == 0) {
    0x000090d2 cbz r0, 0x911e                        |             goto label_4;
                                                     |         }
    0x000090d4 adds r5, r0, 7                        |         r5 += var_7h;
    0x000090d6 mov r1, r7                            |         r1 = r7;
    0x000090d8 mov r0, r5                            |         r0 = r5;
    0x000090da blx 0x28e4                            |         r0 = fcn_000028e4 ();
    0x000090de mov r3, r0                            |         r3 = r0;
                                                     |         if (r0 == 0) {
    0x000090e0 cbz r0, 0x911e                        |             goto label_4;
                                                     |         }
    0x000090e2 subs r2, r0, r5                       |         r2 = r0 - r5;
    0x000090e4 cmp r2, 0x3f                          |         
                                                     |         if (r2 > 0x3f) {
    0x000090e6 bgt 0x911e                            |             goto label_4;
                                                     |         }
    0x000090e8 movs r2, 0x40                         |         r2 = 0x40;
    0x000090ea mov r1, r5                            |         r1 = r5;
    0x000090ec add.w r0, r6, 0x468                   |         r0 = r6 + 0x468;
    0x000090f0 strb r4, [r3]                         |         *(r3) = r4;
    0x000090f2 blx 0x2ee0                            |         pipe ();
    0x000090f6 b 0x90fe                              |         goto label_3;
                                                     | label_2:
    0x000090f8 blx 0x2f88                            |         r0 = cxa_finalize ();
    0x000090fc ldr r4, [r0]                          |         r4 = *(r0);
                                                     | label_3:
    0x000090fe ldr r2, [pc, 0x48]                    |         
    0x00009100 ldr r3, [pc, 0x2c]                    |         r3 = *(0x9130);
    0x00009102 add r2, pc                            |         r2 = 0x12250;
    0x00009104 ldr r3, [r2, r3]                      |         r3 = *(0x12250);
    0x00009106 ldr r2, [r3]                          |         r2 = *(0x12250);
    0x00009108 ldr.w r3, [sp, 0x404]                 |         r3 = var_404h;
    0x0000910c eors r2, r3                           |         r2 ^= r3;
    0x0000910e mov.w r3, 0                           |         r3 = 0;
                                                     |         if (r2 != r3) {
    0x00009112 bne 0x9128                            |             goto label_5;
                                                     |         }
    0x00009114 mov r0, r4                            |         r0 = r4;
    0x00009116 add.w sp, sp, 0x408                   |         
    0x0000911a pop.w {r4, r5, r6, r7, r8, pc}        |         
                                                     |     }
                                                     | label_4:
    0x0000911e ldr r2, [pc, 0x2c]                    |     
    0x00009120 ldr r1, [pc, 0x2c]                    |     
    0x00009122 add r2, pc                            |     r2 = 0x12274;
    0x00009124 add r1, pc                            |     r1 = 0x12278;
    0x00009126 b 0x906e                              |     goto label_1;
                                                     | label_5:
    0x00009128 blx 0x2cdc                            |     fprintf_chk ()
    0x0000912c ldrh r6, [r7, r7]                     |     r6 = *((r7 + r7));
    0x0000912e movs r2, r0                           |     r2 = r0;
    0x00009130 lsls r4, r1, 0xd                      |     r4 = r1 << 0xd;
    0x00009132 movs r0, r0                           |     
    0x00009134 invalid                               |     
                                                     | }
    ; assembly                                                   | /* r2dec pseudo code output */
                                                                 | /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/sbin/fwmgr @ 0x9154 */
                                                                 | #include <stdint.h>
                                                                 |  
    ; (fcn) fcn.00009154 ()                                      | void fcn_00009154 (int16_t arg_ch, int16_t arg_dh, int16_t arg_4a7h, int16_t arg_4a8h, int16_t arg_54h, int16_t arg_454h, int16_t arg1) {
                                                                 |     int16_t var_45ch;
                                                                 |     int16_t var_8h;
                                                                 |     int16_t var_ch;
                                                                 |     time_t * timer;
                                                                 |     int16_t var_14h;
                                                                 |     r0 = arg1;
                                                                 |     if (? < ?) {
    0x00009154 subhs r4, r0, 0x348000                            |         r4 = r0 - 0x348000;
                                                                 |     }
    0x00009158 push.w {r4, r5, r6, r7, r8, sb, sl, fp, lr}       |     
    0x0000915c subw sp, sp, 0x45c                                |     __asm ("subw sp, sp, 0x45c");
    0x00009160 ldr r3, [pc, 0x340]                               |     
    0x00009162 add r4, sp, 0x14                                  |     r4 += var_14h;
    0x00009164 add r1, pc                                        |     r1 += pc;
    0x00009166 add r5, sp, 0x54                                  |     r5 += arg_54h;
    0x00009168 strd r0, r1, [sp]                                 |     __asm ("strd r0, r1, [sp]");
    0x0000916c ldr r0, [pc, 0x338]                               |     
    0x0000916e add r3, pc                                        |     r3 = 0x12616;
    0x00009170 ldr r1, [pc, 0x338]                               |     r1 = *(0x94ac);
    0x00009172 add r0, pc                                        |     r0 = 0x1261e;
    0x00009174 ldr r1, [r0, r1]                                  |     
    0x00009176 mov r0, r4                                        |     r0 = r4;
    0x00009178 ldr r1, [r1]                                      |     r1 = *(0x1261e);
    0x0000917a str.w r1, [sp, 0x454]                             |     __asm ("str.w r1, [arg_454h]");
    0x0000917e mov.w r1, 0                                       |     r1 = 0;
    0x00009182 movs r1, 1                                        |     r1 = 1;
    0x00009184 blx 0x2e80                                        |     strncmp (r0, r1, r2);
    0x00009188 movs r3, 1                                        |     r3 = 1;
    0x0000918a mov.w r2, 0x400                                   |     r2 = 0x400;
    0x0000918e mov r1, r5                                        |     r1 = r5;
    0x00009190 mov r0, r4                                        |     r0 = r4;
    0x00009192 bl 0x10338                                        |     r0 = fcn_00010338 (r0, r1, r2, r3);
                                                                 |     if (r0 != 0) {
    0x00009196 cbz r0, 0x91c0                                    |         
    0x00009198 blx 0x2f88                                        |         r0 = cxa_finalize ();
    0x0000919c ldr r4, [r0]                                      |         r4 = *(r0);
                                                                 | label_2:
    0x0000919e ldr r2, [pc, 0x310]                               |         
    0x000091a0 ldr r3, [pc, 0x308]                               |         r3 = *(0x94ac);
    0x000091a2 add r2, pc                                        |         r2 = 0x12658;
    0x000091a4 ldr r3, [r2, r3]                                  |         r3 = *(0x12658);
    0x000091a6 ldr r2, [r3]                                      |         r2 = *(0x12658);
    0x000091a8 ldr.w r3, [sp, 0x454]                             |         r3 = *(arg_454h);
    0x000091ac eors r2, r3                                       |         r2 ^= r3;
    0x000091ae mov.w r3, 0                                       |         r3 = 0;
                                                                 |         if (r2 != r3) {
    0x000091b2 bne.w 0x9400                                      |             goto label_5;
                                                                 |         }
    0x000091b6 mov r0, r4                                        |         r0 = r4;
    0x000091b8 addw sp, sp, 0x45c                                |         __asm ("addw sp, var_45ch");
    0x000091bc pop.w {r4, r5, r6, r7, r8, sb, sl, fp, pc}        |         
                                                                 |     }
    0x000091c0 ldr r1, [pc, 0x2f0]                               |     
    0x000091c2 mov r4, r0                                        |     r4 = r0;
    0x000091c4 mov r0, r5                                        |     r0 = r5;
    0x000091c6 add r1, pc                                        |     r1 = 0x1267e;
    0x000091c8 blx 0x2d30                                        |     r0 = ftruncate ();
    0x000091cc mov fp, r0                                        |     
    0x000091ce cmp r0, 0                                         |     
                                                                 |     if (r0 == 0) {
    0x000091d0 beq 0x9254                                        |         goto label_6;
                                                                 |     }
    0x000091d2 ldr.w r8, [pc, 0x2e4]                             |     r8 = *(0x000094b8);
    0x000091d6 ldr r7, [pc, 0x2e4]                               |     
    0x000091d8 ldr r5, [pc, 0x2e4]                               |     
    0x000091da ldr r6, [pc, 0x2e8]                               |     
    0x000091dc add r8, pc                                        |     r8 += pc;
    0x000091de add r7, pc                                        |     r7 = 0x126a0;
    0x000091e0 addw sl, r8, 0xca8                                |     __asm ("addw sl, r8, 0xca8");
    0x000091e4 add r5, pc                                        |     r5 = 0x126a8;
    0x000091e6 addw sb, r7, 0x8a8                                |     __asm ("addw sb, r7, 0x8a8");
    0x000091ea add r6, pc                                        |     r6 = 0x126b4;
    0x000091ec b 0x9202                                          |     goto label_7;
                                                                 | label_0:
    0x000091ee ldr r3, [pc, 0x2d8]                               |     
    0x000091f0 add r3, pc                                        |     r3 = 0x126be;
    0x000091f2 str r0, [r3, 0x58]                                |     *((r3 + 0x58)) = r0;
                                                                 |     do {
                                                                 | label_1:
    0x000091f4 ldr r1, [pc, 0x2d4]                               |         
    0x000091f6 movs r0, 0                                        |         r0 = 0;
    0x000091f8 add r1, pc                                        |         r1 = 0x126c8;
    0x000091fa blx 0x2d30                                        |         r0 = ftruncate ();
    0x000091fe mov fp, r0                                        |         
                                                                 |         if (r0 == 0) {
    0x00009200 cbz r0, 0x9254                                    |             goto label_6;
                                                                 |         }
                                                                 | label_7:
    0x00009202 ldrb.w r2, [fp]                                   |         r2 = *(fp);
    0x00009206 cmp r2, 0x23                                      |         
    0x00009208 it ne                                             |         
                                                                 |         if (r2 != 0x23) {
    0x0000920a cmpne r2, 0                                       |             __asm ("cmpne r2, 0");
                                                                 |         }
    0x0000920c ite eq                                            |         
                                                                 |         if (r2 != 0x23) {
    0x0000920e moveq r3, 1                                       |             r3 = 1;
                                                                 |         }
                                                                 |         if (r2 == 0x23) {
    0x00009210 movne r3, 0                                       |             r3 = 0;
                                                                 |         }
    0x00009212 cmp r2, 0x3b                                      |         
    0x00009214 it eq                                             |         
                                                                 |         if (r2 != 0x3b) {
    0x00009216 orreq r3, r3, 1                                   |             r3 |= 1;
                                                                 |         }
    0x0000921a cmp r3, 0                                         |         
    0x0000921c bne 0x91f4                                        |         
                                                                 |     } while (r3 != 0);
    0x0000921e mov r1, r5                                        |     r1 = r5;
    0x00009220 mov r0, fp                                        |     r0 = fp;
    0x00009222 blx 0x2f70                                        |     r0 = vdprintf_chk ();
    0x00009226 cmp r0, 0                                         |     
                                                                 |     if (r0 == 0) {
    0x00009228 beq 0x91ee                                        |         goto label_0;
                                                                 |     }
    0x0000922a mov r1, r6                                        |     r1 = r6;
    0x0000922c mov r0, fp                                        |     r0 = fp;
    0x0000922e blx 0x2f70                                        |     r0 = vdprintf_chk ();
                                                                 |     if (r0 == 0) {
    0x00009232 cbnz r0, 0x923e                                   |         
    0x00009234 ldr r3, [pc, 0x298]                               |         
    0x00009236 movs r2, 1                                        |         r2 = 1;
    0x00009238 add r3, pc                                        |         r3 = 0x1270c;
    0x0000923a str r2, [r3, 0x58]                                |         *((r3 + 0x58)) = r2;
    0x0000923c b 0x91f4                                          |         goto label_1;
                                                                 |     }
    0x0000923e ldr r1, [pc, 0x294]                               |     
    0x00009240 mov r0, fp                                        |     r0 = fp;
    0x00009242 add r1, pc                                        |     r1 = 0x1271c;
    0x00009244 blx 0x2f70                                        |     r0 = vdprintf_chk ();
                                                                 |     if (r0 != 0) {
    0x00009248 cbnz r0, 0x929c                                   |         goto label_8;
                                                                 |     }
    0x0000924a ldr r3, [pc, 0x28c]                               |     
    0x0000924c movs r2, 3                                        |     r2 = 3;
    0x0000924e add r3, pc                                        |     r3 = 0x1272c;
    0x00009250 str r2, [r3, 0x58]                                |     *((r3 + 0x58)) = r2;
    0x00009252 b 0x91f4                                          |     goto label_1;
                                                                 | label_6:
    0x00009254 ldr r3, [pc, 0x284]                               |     
    0x00009256 add r3, pc                                        |     r3 = 0x12736;
    0x00009258 ldrb.w r6, [r3, 0xca8]                            |     r6 = *((r3 + 0xca8));
    0x0000925c cmp r6, 0                                         |     
                                                                 |     if (r6 != 0) {
    0x0000925e bne 0x919e                                        |         goto label_2;
                                                                 |     }
    0x00009260 mov r0, r6                                        |     r0 = r6;
    0x00009262 addw r5, r3, 0xca8                                |     __asm ("addw r5, r3, 0xca8");
    0x00009266 blx 0x2c7c                                        |     accept4 ();
    0x0000926a add r3, sp, 0x10                                  |     r3 += timer;
    0x0000926c str r0, [sp, 0x10]                                |     timer = r0;
    0x0000926e mov r0, r3                                        |     r0 = r3;
    0x00009270 blx 0x27b4                                        |     localtime (r0);
    0x00009274 ldr r2, [pc, 0x268]                               |     
    0x00009276 mov r3, r0                                        |     r3 = r0;
    0x00009278 movs r1, 0x40                                     |     r1 = 0x40;
    0x0000927a mov r0, r5                                        |     r0 = r5;
    0x0000927c add r2, pc                                        |     r2 = 0x12760;
    0x0000927e blx 0x2d94                                        |     r0 = fcn_00002d94 ();
    0x00009282 adds r3, r5, r0                                   |     r3 = r5 + r0;
    0x00009284 movs r1, 0x3a                                     |     r1 = 0x3a;
    0x00009286 ldrb r2, [r3, -0x1]                               |     r2 = *((r3 - 0x1));
    0x0000928a strb r6, [r3, 1]                                  |     *((r3 + 1)) = r6;
    0x0000928c strb r2, [r5, r0]                                 |     *((r5 + r0)) = r2;
    0x0000928e ldrb r2, [r3, -0x2]                               |     r2 = *((r3 - 0x2));
    0x00009292 strb r1, [r3, -0x2]                               |     *((r3 - 0x2)) = r1;
    0x00009296 strb r2, [r3, -0x1]                               |     *((r3 - 0x1)) = r2;
    0x0000929a b 0x919e                                          |     goto label_2;
                                                                 | label_8:
    0x0000929c ldr r1, [pc, 0x244]                               |     
    0x0000929e mov r0, fp                                        |     r0 = fp;
    0x000092a0 add r1, pc                                        |     r1 = 0x12788;
    0x000092a2 blx 0x2f70                                        |     r0 = vdprintf_chk ();
                                                                 |     if (r0 != 0) {
    0x000092a6 cbz r0, 0x92c0                                    |         
    0x000092a8 ldr r1, [pc, 0x23c]                               |         
    0x000092aa mov r0, fp                                        |         r0 = fp;
    0x000092ac add r1, pc                                        |         r1 = 0x12798;
    0x000092ae blx 0x2f70                                        |         r0 = vdprintf_chk ();
                                                                 |         if (r0 != 0) {
    0x000092b2 cbnz r0, 0x92ca                                   |             goto label_9;
                                                                 |         }
    0x000092b4 ldr r3, [pc, 0x234]                               |         
    0x000092b6 mov.w r2, -1                                      |         r2 = -1;
    0x000092b8 adds r2, 0xff                                     |         r2 += 0xff;
    0x000092ba add r3, pc                                        |         r3 = 0x127aa;
    0x000092bc str r2, [r3]                                      |         *(r3) = r2;
    0x000092be b 0x91f4                                          |         goto label_1;
                                                                 |     }
    0x000092c0 ldr r3, [pc, 0x22c]                               |     
    0x000092c2 movs r2, 2                                        |     r2 = 2;
    0x000092c4 add r3, pc                                        |     r3 = 0x127b8;
    0x000092c6 str r2, [r3, 0x58]                                |     *((r3 + 0x58)) = r2;
    0x000092c8 b 0x91f4                                          |     goto label_1;
                                                                 | label_9:
    0x000092ca ldr r1, [pc, 0x228]                               |     
    0x000092cc mov r0, fp                                        |     r0 = fp;
    0x000092ce add r1, pc                                        |     r1 = 0x127c8;
    0x000092d0 blx 0x2f70                                        |     r0 = vdprintf_chk ();
                                                                 |     if (r0 != 0) {
    0x000092d4 cbz r0, 0x92ec                                    |         
    0x000092d6 ldr r1, [pc, 0x220]                               |         
    0x000092d8 mov r0, fp                                        |         r0 = fp;
    0x000092da add r1, pc                                        |         r1 = 0x127d8;
    0x000092dc blx 0x2f70                                        |         r0 = vdprintf_chk ();
                                                                 |         if (r0 != 0) {
    0x000092e0 cbnz r0, 0x92f4                                   |             goto label_10;
                                                                 |         }
    0x000092e2 ldr r3, [pc, 0x218]                               |         
    0x000092e4 movs r2, 1                                        |         r2 = 1;
    0x000092e6 add r3, pc                                        |         r3 = 0x127e8;
    0x000092e8 str r2, [r3]                                      |         *(r3) = r2;
    0x000092ea b 0x91f4                                          |         goto label_1;
                                                                 |     }
    0x000092ec ldr r3, [pc, 0x210]                               |     
    0x000092ee add r3, pc                                        |     r3 = 0x127f2;
    0x000092f0 str r0, [r3]                                      |     *(r3) = r0;
    0x000092f2 b 0x91f4                                          |     goto label_1;
                                                                 | label_10:
    0x000092f4 ldr r1, [pc, 0x20c]                               |     
    0x000092f6 mov r0, fp                                        |     r0 = fp;
    0x000092f8 add r1, pc                                        |     r1 = 0x12800;
    0x000092fa blx 0x2f70                                        |     r0 = vdprintf_chk ();
                                                                 |     if (r0 == 0) {
    0x000092fe cbnz r0, 0x930a                                   |         
    0x00009300 ldr r3, [pc, 0x204]                               |         
    0x00009302 movs r2, 2                                        |         r2 = 2;
    0x00009304 add r3, pc                                        |         r3 = 0x12810;
    0x00009306 str r2, [r3]                                      |         *(r3) = r2;
    0x00009308 b 0x91f4                                          |         goto label_1;
                                                                 |     }
    0x0000930a ldr r1, [pc, 0x200]                               |     
    0x0000930c mov r0, fp                                        |     r0 = fp;
    0x0000930e add r1, pc                                        |     r1 = 0x12820;
    0x00009310 blx 0x2f70                                        |     r0 = vdprintf_chk ();
                                                                 |     if (r0 == 0) {
    0x00009314 cbnz r0, 0x9322                                   |         
    0x00009316 ldr r3, [pc, 0x1f8]                               |         
    0x00009318 mov.w r2, -1                                      |         r2 = -1;
    0x0000931c add r3, pc                                        |         r3 = 0x12832;
    0x0000931e str r2, [r3, 4]                                   |         *((r3 + 4)) = r2;
    0x00009320 b 0x91f4                                          |         goto label_1;
                                                                 |     }
    0x00009322 ldr r1, [pc, 0x1f0]                               |     
    0x00009324 mov r0, fp                                        |     r0 = fp;
    0x00009326 add r1, pc                                        |     r1 = 0x12840;
    0x00009328 blx 0x2f70                                        |     r0 = vdprintf_chk ();
                                                                 |     if (r0 == 0) {
    0x0000932c cbnz r0, 0x9336                                   |         
    0x0000932e ldr r2, [pc, 0x1e8]                               |         
    0x00009330 add r2, pc                                        |         r2 = 0x1284e;
    0x00009332 str r0, [r2, 4]                                   |         *((r2 + 4)) = r0;
    0x00009334 b 0x91f4                                          |         goto label_1;
                                                                 |     }
    0x00009336 ldr r1, [pc, 0x1e4]                               |     
    0x00009338 movs r2, 0xd                                      |     r2 = 0xd;
    0x0000933a mov r0, fp                                        |     r0 = fp;
    0x0000933c add r1, pc                                        |     r1 = 0x1285e;
    0x0000933e blx 0x2ea4                                        |     r0 = realloc (r0, r1);
                                                                 |     if (r0 == 0) {
    0x00009342 cbnz r0, 0x934c                                   |         
    0x00009344 ldrb.w r3, [fp, 0xd]                              |         r3 = *(arg_dh);
    0x00009348 cmp r3, 0                                         |         
                                                                 |         if (r3 != 0) {
    0x0000934a bne 0x941a                                        |             goto label_11;
                                                                 |         }
                                                                 |     }
                                                                 | label_4:
    0x0000934c ldr r1, [pc, 0x1d0]                               |     
    0x0000934e movs r2, 0xc                                      |     r2 = 0xc;
    0x00009350 mov r0, fp                                        |     r0 = fp;
    0x00009352 add r1, pc                                        |     r1 = 0x12876;
    0x00009354 blx 0x2ea4                                        |     realloc (r0, r1);
    0x00009358 str r0, [sp, 8]                                   |     var_8h = r0;
                                                                 |     if (r0 != 0) {
    0x0000935a cbnz r0, 0x93aa                                   |         goto label_12;
                                                                 |     }
    0x0000935c mov r0, fp                                        |     r0 = fp;
    0x0000935e blx 0x2ab0                                        |     r0 = fcn_00002ab0 ();
    0x00009362 add.w r3, fp, r0                                  |     r3 = fp + r0;
    0x00009366 ldrb r3, [r3, -0x1]                               |     r3 = *((r3 - 0x1));
    0x0000936a cmp r3, 0x22                                      |     
                                                                 |     if (r3 == 0x22) {
    0x0000936c beq 0x945a                                        |         goto label_13;
                                                                 |     }
                                                                 | label_3:
    0x0000936e ldr r1, [pc, 0x1b4]                               |     
    0x00009370 movs r2, 0xc                                      |     r2 = 0xc;
    0x00009372 mov r0, fp                                        |     r0 = fp;
    0x00009374 add r1, pc                                        |     r1 = 0x1289e;
    0x00009376 blx 0x2ea4                                        |     r0 = realloc (r0, r1);
    0x0000937a cmp r0, 0                                         |     
                                                                 |     if (r0 == 0) {
    0x0000937c beq 0x9404                                        |         goto label_14;
                                                                 |     }
    0x0000937e ldr r1, [pc, 0x1a8]                               |     
    0x00009380 mov r0, fp                                        |     r0 = fp;
    0x00009382 add r1, pc                                        |     r1 = 0x128b0;
    0x00009384 blx 0x2f70                                        |     r0 = vdprintf_chk ();
                                                                 |     if (r0 != 0) {
    0x00009388 cbnz r0, 0x93ea                                   |         goto label_15;
                                                                 |     }
    0x0000938a ldr r3, [pc, 0x1a0]                               |     
    0x0000938c add r3, pc                                        |     r3 = 0x128be;
    0x0000938e ldrb.w r2, [r3, 0xce8]                            |     r2 = *((r3 + 0xce8));
    0x00009392 cmp r2, 0                                         |     
                                                                 |     if (r2 != 0) {
    0x00009394 bne.w 0x91f4                                      |         goto label_1;
                                                                 |     }
    0x00009398 ldrb.w r2, [r3, 0xce9]                            |     r2 = *((r3 + 0xce9));
    0x0000939c cmp r2, 0                                         |     
                                                                 |     if (r2 != 0) {
    0x0000939e bne.w 0x91f4                                      |         goto label_1;
                                                                 |     }
    0x000093a2 movs r2, 1                                        |     r2 = 1;
    0x000093a4 strb.w r2, [r3, 0xcea]                            |     *((r3 + 0xcea)) = r2;
    0x000093a8 b 0x91f4                                          |     goto label_1;
                                                                 | label_12:
    0x000093aa ldr r1, [pc, 0x184]                               |     
    0x000093ac movs r2, 0xc                                      |     r2 = 0xc;
    0x000093ae mov r0, fp                                        |     r0 = fp;
    0x000093b0 add r1, pc                                        |     r1 = 0x128e6;
    0x000093b2 blx 0x2ea4                                        |     realloc (r0, r1);
    0x000093b6 str r0, [sp, 8]                                   |     var_8h = r0;
    0x000093b8 cmp r0, 0                                         |     
                                                                 |     if (r0 != 0) {
    0x000093ba bne 0x936e                                        |         goto label_3;
                                                                 |     }
    0x000093bc mov r0, fp                                        |     r0 = fp;
    0x000093be blx 0x2ab0                                        |     r0 = fcn_00002ab0 ();
    0x000093c2 add.w r3, fp, r0                                  |     r3 = fp + r0;
    0x000093c6 ldrb r3, [r3, -0x1]                               |     r3 = *((r3 - 0x1));
    0x000093ca cmp r3, 0x22                                      |     
                                                                 |     if (r3 != 0x22) {
    0x000093cc bne 0x936e                                        |         goto label_3;
                                                                 |     }
    0x000093ce mov.w r2, 0x400                                   |     r2 = 0x400;
    0x000093d2 add.w r1, fp, 0xc                                 |     r1 += arg_ch;
    0x000093d6 mov r0, sb                                        |     r0 = sb;
    0x000093d8 blx 0x2c34                                        |     syncfs ();
    0x000093dc ldr r2, [sp, 8]                                   |     r2 = var_8h;
    0x000093de sub.w r3, r0, sb                                  |     r3 = r0 - sb;
    0x000093e2 add r3, r7                                        |     r3 += r7;
    0x000093e4 strb.w r2, [r3, 0x8a7]                            |     *((r3 + 0x8a7)) = r2;
    0x000093e8 b 0x91f4                                          |     goto label_1;
                                                                 | label_15:
    0x000093ea ldr r1, [pc, 0x148]                               |     
    0x000093ec mov r0, fp                                        |     r0 = fp;
    0x000093ee add r1, pc                                        |     r1 = 0x12928;
    0x000093f0 blx 0x2f70                                        |     r0 = vdprintf_chk ();
                                                                 |     if (r0 != 0) {
    0x000093f4 cbnz r0, 0x9442                                   |         goto label_16;
                                                                 |     }
    0x000093f6 ldr r2, [pc, 0x140]                               |     
    0x000093f8 add r2, pc                                        |     r2 = 0x12936;
    0x000093fa strb.w r0, [r2, 0xceb]                            |     *((r2 + 0xceb)) = r0;
    0x000093fe b 0x91f4                                          |     goto label_1;
                                                                 | label_5:
    0x00009400 blx 0x2cdc                                        |     fprintf_chk ()
                                                                 | label_14:
    0x00009404 str r0, [sp, 8]                                   |     var_8h = r0;
    0x00009406 add.w r1, fp, 0xc                                 |     r1 += arg_ch;
    0x0000940a movs r2, 0x3f                                     |     r2 = 0x3f;
    0x0000940c mov r0, sl                                        |     r0 = sl;
    0x0000940e blx 0x2884                                        |     fcn_00002884 ();
    0x00009412 ldr r3, [sp, 8]                                   |     r3 = var_8h;
    0x00009414 strb.w r3, [r8, 0xce7]                            |     *((r8 + 0xce7)) = r3;
    0x00009416 subs r4, 0xe7                                     |     r4 -= 0xe7;
    0x00009418 b 0x91f4                                          |     goto label_1;
                                                                 | label_11:
    0x0000941a add r1, sp, 0x10                                  |     r1 += timer;
    0x0000941c movs r2, 0xa                                      |     r2 = 0xa;
    0x0000941e add.w r0, fp, 0xd                                 |     r0 += arg_dh;
    0x00009422 str r1, [sp, 8]                                   |     var_8h = r1;
    0x00009424 blx 0x2ae4                                        |     r0 = xpg_basename ();
    0x00009428 subs r2, r0, 1                                    |     r2 = r0 - 1;
    0x0000942a ldr r1, [sp, 8]                                   |     r1 = var_8h;
    0x0000942c cmp.w r2, 0x5a0                                   |     
                                                                 |     if (r2 >= 0x5a0) {
    0x00009430 bhs 0x934c                                        |         goto label_4;
                                                                 |     }
    0x00009432 ldr r2, [r1]                                      |     r2 = *(r1);
    0x00009434 ldrb r2, [r2]                                     |     r2 = *(r2);
    0x00009436 cmp r2, 0                                         |     
                                                                 |     if (r2 != 0) {
    0x00009438 bne 0x934c                                        |         goto label_4;
                                                                 |     }
    0x0000943a ldr r2, [pc, 0x100]                               |     
    0x0000943c add r2, pc                                        |     r2 = 0x1297e;
    0x0000943e str r0, [r2, 4]                                   |     *((r2 + 4)) = r0;
    0x00009440 b 0x91f4                                          |     goto label_1;
                                                                 | label_16:
    0x00009442 ldr r1, [pc, 0xfc]                                |     
    0x00009444 mov r0, fp                                        |     r0 = fp;
    0x00009446 add r1, pc                                        |     r1 = 0x1298c;
    0x00009448 blx 0x2f70                                        |     r0 = vdprintf_chk ();
                                                                 |     if (r0 == 0) {
    0x0000944c cbnz r0, 0x9482                                   |         
    0x0000944e ldr r3, [pc, 0xf4]                                |         
    0x00009450 movs r2, 1                                        |         r2 = 1;
    0x00009452 add r3, pc                                        |         r3 = 0x1299c;
    0x00009454 strb.w r2, [r3, 0xceb]                            |         *((r3 + 0xceb)) = r2;
    0x00009458 b 0x91f4                                          |         goto label_1;
                                                                 | label_13:
    0x0000945a add.w r1, fp, 0xc                                 |         r1 += arg_ch;
    0x0000945e ldr.w fp, [pc, 0xe8]                              |         fp = *(0x00009548);
    0x00009462 mov.w r2, 0x400                                   |         r2 = 0x400;
    0x00009466 add fp, pc                                        |         
    0x00009468 add.w r3, fp, 0x4a8                               |         r3 += arg_4a8h;
    0x0000946c mov r0, r3                                        |         r0 = r3;
    0x0000946e str r3, [sp, 0xc]                                 |         var_ch = r3;
    0x00009470 blx 0x2c34                                        |         syncfs ();
    0x00009472 invalid                                           |         
    0x00009476 subs r3, r0, r3                                   |         r3 = r0 - r3;
    0x00009478 add fp, r3                                        |         
    0x0000947a ldr r3, [sp, 8]                                   |         r3 = var_8h;
    0x0000947c strb.w r3, [fp, 0x4a7]                            |         *(arg_4a7h) = r3;
    0x00009480 b 0x91f4                                          |         goto label_1;
                                                                 |     }
    0x00009482 ldr r1, [pc, 0xc8]                                |     
    0x00009484 mov r0, fp                                        |     r0 = fp;
    0x00009486 add r1, pc                                        |     r1 = 0x129d8;
    0x00009488 blx 0x2f70                                        |     r0 = vdprintf_chk ();
    0x0000948c cmp r0, 0                                         |     
                                                                 |     if (r0 == 0) {
    0x0000948e beq.w 0x91f4                                      |         goto label_1;
                                                                 |     }
    0x00009492 ldr r1, [pc, 0xbc]                                |     
    0x00009494 mov r2, fp                                        |     r2 = fp;
    0x00009496 movs r0, 5                                        |     r0 = 5;
    0x00009498 add r1, pc                                        |     r1 = 0x129ee;
    0x0000949a bl 0xfcdc                                         |     fcn_0000fcdc (r0);
    0x0000949e b 0x91f4                                          |     goto label_1;
                                                                 | }
    ; assembly                                           | /* r2dec pseudo code output */
                                                         | /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/sbin/fwmgr @ 0x9554 */
                                                         | #include <stdint.h>
                                                         |  
    ; (fcn) fcn.00009554 ()                              | void fcn_00009554 (int16_t arg1, int16_t arg2, int16_t arg3) {
                                                         |     time_t * timer;
                                                         |     int16_t var_4h;
                                                         |     r0 = arg1;
                                                         |     r1 = arg2;
                                                         |     r2 = arg3;
    0x00009554 push.w {r4, r5, r6, r7, r8, sb, lr}       |     
    0x00009558 mov r5, r2                                |     r5 = r2;
    0x0000955a ldr r2, [pc, 0x290]                       |     
    0x0000955c mov r6, r1                                |     r6 = r1;
    0x0000955e sub sp, 0xc                               |     
    0x00009560 mov r7, r0                                |     r7 = r0;
    0x00009562 ldr r3, [pc, 0x28c]                       |     r3 = *(0x97f2);
    0x00009564 ldr.w r8, [pc, 0x28c]                     |     
    0x00009568 add r2, pc                                |     r2 = 0x12d5a;
    0x0000956a ldr r1, [pc, 0x28c]                       |     
    0x0000956c ldr r3, [r2, r3]                          |     
    0x0000956e add r8, pc                                |     r8 = 0x12d66;
    0x00009570 add r1, pc                                |     r1 = 0x12d6e;
    0x00009572 mov r0, r8                                |     r0 = r8;
    0x00009574 ldr r3, [r3]                              |     r3 = *(0x12d5a);
    0x00009576 str r3, [sp, 4]                           |     var_4h = r3;
    0x00009578 mov.w r3, 0                               |     r3 = 0;
    0x0000957c blx 0x2920                                |     r0 = fcn_00002920 ();
    0x00009580 cmp r0, 0                                 |     
                                                         |     if (r0 == 0) {
    0x00009582 beq.w 0x97d8                              |         goto label_10;
                                                         |     }
    0x00009586 mov r4, r0                                |     r4 = r0;
    0x00009588 ldr r0, [pc, 0x270]                       |     
    0x0000958a add r0, pc                                |     r0 = 0x12d8a;
    0x0000958c ldrb.w r3, [r0, 0xce9]                    |     r3 = *((r0 + 0xce9));
    0x00009590 orrs r3, r5                               |     r3 |= r5;
                                                         |     if (r3 != r5) {
    0x00009592 beq 0x95e2                                |         
    0x00009594 ldrb.w sb, [r0, 0xca8]                    |         sb = *((r0 + 0xca8));
    0x00009598 cmp.w sb, 0                               |         
                                                         |         if (sb == 0) {
    0x0000959c beq.w 0x9758                              |             goto label_11;
                                                         |         }
    0x0000959e strh r4, [r3, 6]                          |         *((r3 + 6)) = r4;
                                                         | label_9:
    0x000095a0 ldr.w r8, [pc, 0x25c]                     |         r8 = *(0x00009800);
    0x000095a4 movs r1, 1                                |         r1 = 1;
    0x000095a6 ldr r2, [pc, 0x25c]                       |         
    0x000095a8 mov r0, r4                                |         r0 = r4;
    0x000095aa add r8, pc                                |         r8 += pc;
    0x000095ac add r2, pc                                |         r2 = 0x12db6;
    0x000095ae addw r3, r8, 0xca8                        |         __asm ("addw r3, r8, 0xca8");
    0x000095b2 blx 0x2cf4                                |         sd_bus_call_method ();
                                                         |         if (r5 == 0) {
    0x000095b6 cbnz r5, 0x95c4                           |             
    0x000095b8 ldrb.w r3, [r8, 0x4a8]                    |             r3 = *((r8 + 0x4a8));
                                                         |             if (r3 == 0) {
    0x000095bc cbz r3, 0x95d4                            |                 goto label_12;
                                                         |             }
    0x000095be add.w r3, r8, 0x4a8                       |             r3 = r8 + 0x4a8;
    0x000095c2 b 0x95c8                                  |             
                                                         |         } else {
    0x000095c4 add.w r3, r8, 0x68                        |             r3 = r8 + 0x68;
                                                         |         }
    0x000095c8 ldr r2, [pc, 0x23c]                       |         
    0x000095ca movs r1, 1                                |         r1 = 1;
    0x000095cc mov r0, r4                                |         r0 = r4;
    0x000095ce add r2, pc                                |         r2 = 0x12dda;
    0x000095d0 blx 0x2cf4                                |         sd_bus_call_method ();
                                                         | label_12:
    0x000095d4 ldr r3, [pc, 0x234]                       |         
    0x000095d6 add r3, pc                                |         r3 = 0x12de6;
    0x000095d8 ldrb.w r2, [r3, 0x8a8]                    |         r2 = *((r3 + 0x8a8));
    0x000095da cmp r0, 0xa8                              |         
    0x000095dc cmp r2, 0                                 |         
                                                         |         if (r2 != 0) {
    0x000095de bne.w 0x9720                              |             goto label_13;
                                                         |         }
                                                         |     }
                                                         |     if (r7 != 0) {
    0x000095e2 cbz r7, 0x95fc                            |         
                                                         | label_7:
    0x000095e4 ldr r3, [pc, 0x228]                       |         
    0x000095e6 add r3, pc                                |         r3 = 0x12dfa;
    0x000095e8 ldr r1, [r3, 0x58]                        |         r1 = *(0x12e52);
    0x000095ea cmp r1, 2                                 |         
                                                         |         if (r1 == 2) {
    0x000095ec beq.w 0x97be                              |             goto label_14;
                                                         |         }
    0x000095f0 cmp r1, 3                                 |         
                                                         |         if (r1 == 3) {
    0x000095f2 beq.w 0x97a8                              |             goto label_15;
                                                         |         }
    0x000095f6 cmp r1, 1                                 |         
                                                         |         if (r1 == 1) {
    0x000095f8 beq.w 0x970c                              |             goto label_16;
                                                         |         }
                                                         |     }
                                                         |     if (r6 != 0) {
                                                         | label_6:
    0x000095fc cbnz r6, 0x9650                           |         goto label_5;
                                                         |     }
                                                         | label_1:
    0x000095fe cmp r5, 0                                 |     
                                                         |     if (r5 != 0) {
    0x00009600 bne 0x96d8                                |         goto label_17;
                                                         |     }
                                                         | label_2:
    0x00009602 ldr r3, [pc, 0x210]                       |     
    0x00009604 add r3, pc                                |     r3 = 0x12e1e;
    0x00009606 ldrb.w r2, [r3, 0xceb]                    |     r2 = *((r3 + 0xceb));
    0x0000960a cbnz r2, 0x9662                           |     
                                                         |     while (r3 == 0) {
                                                         | label_3:
    0x0000960c movs r1, 1                                |         r1 = 1;
    0x0000960e mov r0, r4                                |         r0 = r4;
    0x00009610 bl 0x10574                                |         r0 = fcn_00010574 (r0, r1);
    0x00009614 cmp r0, 0                                 |         
                                                         |         if (r0 != 0) {
    0x00009616 bne 0x9684                                |             goto label_18;
                                                         |         }
                                                         | label_0:
    0x00009618 ldr r5, [pc, 0x1fc]                       |         
    0x0000961a ldr r4, [pc, 0x200]                       |         
    0x0000961c add r5, pc                                |         r5 = 0x12e38;
    0x0000961e add r4, pc                                |         r4 = 0x12e40;
    0x00009620 mov r1, r5                                |         r1 = r5;
    0x00009622 mov r0, r4                                |         r0 = r4;
    0x00009624 blx 0x2878                                |         r0 = fcn_00002878 ();
    0x00009628 cmp r0, 0                                 |         
                                                         |         if (r0 < 0) {
    0x0000962a blt 0x96f6                                |             goto label_19;
                                                         |         }
    0x0000962c ldr r2, [pc, 0x1f0]                       |         
    0x0000962e ldr r3, [pc, 0x1c0]                       |         r3 = *(0x97f2);
    0x00009630 add r2, pc                                |         r2 = 0x12e54;
    0x00009632 ldr r3, [r2, r3]                          |         r3 = *(0x12e54);
    0x00009634 ldr r2, [r3]                              |         r2 = *(0x12e54);
    0x00009636 ldr r3, [sp, 4]                           |         r3 = var_4h;
    0x00009638 eors r2, r3                               |         r2 ^= r3;
    0x0000963a mov.w r3, 0                               |         r3 = 0;
                                                         |         if (r2 != r3) {
    0x0000963e bne.w 0x97d4                              |             goto label_20;
                                                         |         }
    0x00009642 ldr r0, [pc, 0x1e0]                       |         
    0x00009644 add r0, pc                                |         r0 = 0x12e6e;
    0x00009646 add sp, 0xc                               |         
    0x00009648 pop.w {r4, r5, r6, r7, r8, sb, lr}        |         
    0x0000964c b.w 0x108d0                               |         void (*0x108d0)() ();
                                                         | label_5:
    0x00009650 ldr r3, [pc, 0x1d4]                       |         
    0x00009652 add r3, pc                                |         
    0x00009654 ldr r3, [r3]                              |         r3 = *(0x12e7e);
    0x00009656 cmp r3, 3                                 |         
                                                         |         if (r3 > 3) {
    0x00009658 bhi 0x96bc                                |             goto label_8;
                                                         |         }
                                                         |         /* switch table (4 cases) at 0x965e */
    0x0000965a tbb [pc, r3]                              |         __asm ("tbb [0x00009660]");
    0x00009662 ldrb.w r3, [r3, 0xce9]                    |         r3 = *((r3 + 0xce9));
    0x00009666 cmp r3, 0                                 |         
    0x00009668 beq 0x960c                                |         
                                                         |     }
    0x0000966a ldr r0, [pc, 0x1c0]                       |     
    0x0000966c movs r1, 1                                |     r1 = 1;
    0x0000966e mov r3, r4                                |     r3 = r4;
    0x00009670 movs r2, 0x12                             |     r2 = 0x12;
    0x00009672 add r0, pc                                |     r0 = 0x12ea4;
    0x00009674 blx 0x2c1c                                |     stpcpy_chk ();
    0x00009678 movs r1, 1                                |     r1 = 1;
    0x0000967a mov r0, r4                                |     r0 = r4;
    0x0000967c bl 0x10574                                |     r0 = fcn_00010574 (r0, r1);
    0x00009680 cmp r0, 0                                 |     
                                                         |     if (r0 == 0) {
    0x00009682 beq 0x9618                                |         goto label_0;
                                                         |     }
                                                         | label_18:
    0x00009684 ldr r0, [pc, 0x1a8]                       |     
    0x00009686 add r0, pc                                |     
    0x00009688 blx 0x2acc                                |     r0 = strtoul (r0, r1, r2);
    0x0000968c blx 0x2f88                                |     r0 = cxa_finalize ();
    0x00009690 ldr r0, [r0]                              |     r0 = *(0x12eba);
                                                         | label_4:
    0x00009692 ldr r2, [pc, 0x1a0]                       |     
    0x00009694 ldr r3, [pc, 0x158]                       |     r3 = *(0x97f0);
    0x00009696 add r2, pc                                |     r2 = 0x12ed0;
    0x00009698 ldr r3, [r2, r3]                          |     r3 = *(0x12ed0);
    0x0000969a ldr r2, [r3]                              |     r2 = *(0x12ed0);
    0x0000969c ldr r3, [sp, 4]                           |     r3 = var_4h;
    0x0000969e eors r2, r3                               |     r2 ^= r3;
    0x000096a0 mov.w r3, 0                               |     r3 = 0;
                                                         |     if (r2 != r3) {
    0x000096a4 bne.w 0x97d4                              |         goto label_20;
                                                         |     }
    0x000096a8 add sp, 0xc                               |     
    0x000096aa pop.w {r4, r5, r6, r7, r8, sb, pc}        |     
    0x000096ae ldr r0, [pc, 0x188]                       |     
    0x000096b0 mov r3, r4                                |     r3 = r4;
    0x000096b2 movs r2, 0x10                             |     r2 = 0x10;
    0x000096b4 movs r1, 1                                |     r1 = 1;
    0x000096b6 add r0, pc                                |     r0 = 0x12ef4;
    0x000096b8 blx 0x2c1c                                |     stpcpy_chk ();
    0x000096ba invalid                                   |     
                                                         | label_8:
    0x000096bc ldr r3, [pc, 0x17c]                       |     
    0x000096be add r3, pc                                |     
    0x000096c0 ldr r3, [r3, 4]                           |     r3 = *(0x12f02);
    0x000096c2 cmp r3, 0                                 |     
                                                         |     if (r3 == 0) {
    0x000096c4 beq 0x9798                                |         goto label_21;
                                                         |     }
                                                         |     if (r3 <= 0) {
    0x000096c6 ble 0x95fe                                |         goto label_1;
                                                         |     }
    0x000096c8 ldr r2, [pc, 0x174]                       |     
    0x000096ca movs r1, 1                                |     r1 = 1;
    0x000096cc mov r0, r4                                |     r0 = r4;
    0x000096ce add r2, pc                                |     r2 = 0x12f12;
    0x000096d0 blx 0x2cf4                                |     sd_bus_call_method ();
    0x000096d4 cmp r5, 0                                 |     
                                                         |     if (r5 == 0) {
    0x000096d6 beq 0x9602                                |         goto label_2;
                                                         |     }
                                                         | label_17:
    0x000096d8 ldr r0, [pc, 0x168]                       |     
    0x000096da mov r3, r4                                |     r3 = r4;
    0x000096dc movs r2, 0xe                              |     r2 = 0xe;
    0x000096de movs r1, 1                                |     r1 = 1;
    0x000096e0 add r0, pc                                |     r0 = 0x12f28;
    0x000096e2 blx 0x2c1c                                |     stpcpy_chk ();
    0x000096e6 ldr r0, [pc, 0x160]                       |     
    0x000096e8 mov r3, r4                                |     r3 = r4;
    0x000096ea movs r2, 0x19                             |     r2 = 0x19;
    0x000096ec movs r1, 1                                |     r1 = 1;
    0x000096ee add r0, pc                                |     r0 = 0x12f3c;
    0x000096f0 blx 0x2c1c                                |     stpcpy_chk ();
    0x000096f4 b 0x960c                                  |     goto label_3;
                                                         | label_19:
    0x000096f6 ldr r1, [pc, 0x154]                       |     
    0x000096f8 mov r3, r5                                |     r3 = r5;
    0x000096fa mov r2, r4                                |     r2 = r4;
    0x000096fc movs r0, 2                                |     r0 = 2;
    0x000096fe add r1, pc                                |     r1 = 0x12f50;
    0x00009700 bl 0xfcdc                                 |     r0 = fcn_0000fcdc (r0);
    0x00009704 blx 0x2f88                                |     r0 = cxa_finalize ();
    0x00009708 ldr r0, [r0]                              |     r0 = *(r0);
    0x0000970a b 0x9692                                  |     goto label_4;
                                                         | label_16:
    0x0000970c ldr r0, [pc, 0x140]                       |     
    0x0000970e mov r3, r4                                |     r3 = r4;
    0x00009710 movs r2, 0x14                             |     r2 = 0x14;
    0x00009712 add r0, pc                                |     r0 = 0x12f66;
    0x00009714 blx 0x2c1c                                |     r0 = stpcpy_chk ();
    0x00009716 eor.w lr, r2, r0, lsl 8                   |     lr = r2 ^ (r0 << 8);
                                                         |     if (r2 == 0x14) {
    0x0000971a beq.w 0x95fe                              |         goto label_1;
                                                         |     }
    0x0000971e b 0x9650                                  |     goto label_5;
                                                         | label_13:
    0x00009720 ldr r2, [pc, 0x130]                       |     
    0x00009722 addw r3, r3, 0x8a8                        |     __asm ("addw r3, r3, 0x8a8");
    0x00009726 movs r1, 1                                |     r1 = 1;
    0x00009728 mov r0, r4                                |     r0 = r4;
    0x0000972a add r2, pc                                |     r2 = 0x12f82;
    0x0000972c blx 0x2cf4                                |     sd_bus_call_method ();
    0x00009730 cmp r7, 0                                 |     
                                                         |     if (r7 == 0) {
    0x00009732 beq.w 0x95fc                              |         goto label_6;
                                                         |     }
    0x00009736 b 0x95e4                                  |     goto label_7;
    0x00009738 ldr r0, [pc, 0x11c]                       |     
    0x0000973a mov r3, r4                                |     r3 = r4;
    0x0000973c movs r2, 0x13                             |     r2 = 0x13;
    0x0000973e movs r1, 1                                |     r1 = 1;
    0x00009740 add r0, pc                                |     r0 = 0x12f9c;
    0x00009742 blx 0x2c1c                                |     stpcpy_chk ();
    0x00009746 b 0x96bc                                  |     goto label_8;
    0x00009748 ldr r0, [pc, 0x110]                       |     
    0x0000974a mov r3, r4                                |     r3 = r4;
    0x0000974c movs r2, 0x11                             |     r2 = 0x11;
    0x0000974e movs r1, 1                                |     r1 = 1;
    0x00009750 add r0, pc                                |     r0 = 0x12fb0;
    0x00009752 blx 0x2c1c                                |     stpcpy_chk ();
    0x00009756 b 0x96bc                                  |     goto label_8;
                                                         | label_11:
    0x00009758 addw r8, r0, 0xca8                        |     __asm ("addw r8, r0, 0xca8");
    0x0000975c mov r0, sb                                |     r0 = sb;
    0x0000975e blx 0x2c7c                                |     accept4 ();
    0x00009762 str r0, [sp]                              |     *(sp) = r0;
    0x00009764 mov r0, sp                                |     r0 = sp;
    0x00009766 blx 0x27b4                                |     localtime (r0);
    0x0000976a ldr r2, [pc, 0xf4]                        |     
    0x0000976c mov r3, r0                                |     r3 = r0;
    0x0000976e movs r1, 0x40                             |     r1 = 0x40;
    0x00009770 mov r0, r8                                |     r0 = r8;
    0x00009772 add r2, pc                                |     r2 = 0x12fd8;
    0x00009774 blx 0x2d94                                |     r0 = fcn_00002d94 ();
    0x00009778 add.w r3, r8, r0                          |     r3 = r8 + r0;
    0x0000977c movs r1, 0x3a                             |     r1 = 0x3a;
    0x0000977e ldrb r2, [r3, -0x1]                       |     r2 = *((r3 - 0x1));
    0x00009782 strb.w sb, [r3, 1]                        |     *((r3 + 1)) = sb;
    0x00009786 strb.w r2, [r8, r0]                       |     *((r8 + r0)) = r2;
    0x0000978a ldrb r2, [r3, -0x2]                       |     r2 = *((r3 - 0x2));
    0x0000978e strb r1, [r3, -0x2]                       |     *((r3 - 0x2)) = r1;
    0x00009792 strb r2, [r3, -0x1]                       |     *((r3 - 0x1)) = r2;
    0x00009796 b 0x95a0                                  |     goto label_9;
                                                         | label_21:
    0x00009798 ldr r0, [pc, 0xc8]                        |     
    0x0000979a mov r3, r4                                |     r3 = r4;
    0x0000979c movs r2, 0x13                             |     r2 = 0x13;
    0x0000979e movs r1, 1                                |     r1 = 1;
    0x000097a0 add r0, pc                                |     r0 = 0x13008;
    0x000097a2 blx 0x2c1c                                |     stpcpy_chk ();
    0x000097a6 b 0x95fe                                  |     goto label_1;
                                                         | label_15:
    0x000097a8 ldr r0, [pc, 0xbc]                        |     
    0x000097aa mov r3, r4                                |     r3 = r4;
    0x000097ac movs r2, 0x14                             |     r2 = 0x14;
    0x000097ae movs r1, 1                                |     r1 = 1;
    0x000097b0 add r0, pc                                |     r0 = 0x1301c;
    0x000097b2 blx 0x2c1c                                |     stpcpy_chk ();
    0x000097b6 cmp r6, 0                                 |     
                                                         |     if (r6 == 0) {
    0x000097b8 beq.w 0x95fe                              |         goto label_1;
                                                         |     }
    0x000097bc b 0x9650                                  |     goto label_5;
                                                         | label_14:
    0x000097be ldr r0, [pc, 0xac]                        |     
    0x000097c0 mov r3, r4                                |     r3 = r4;
    0x000097c2 movs r2, 0x19                             |     r2 = 0x19;
    0x000097c4 movs r1, 1                                |     r1 = 1;
    0x000097c6 add r0, pc                                |     r0 = 0x13038;
    0x000097c8 blx 0x2c1c                                |     stpcpy_chk ();
    0x000097cc cmp r6, 0                                 |     
                                                         |     if (r6 == 0) {
    0x000097ce beq.w 0x95fe                              |         goto label_1;
                                                         |     }
    0x000097d2 b 0x9650                                  |     goto label_5;
                                                         | label_20:
    0x000097d4 blx 0x2cdc                                |     fprintf_chk ()
                                                         | label_10:
    0x000097d8 ldr r1, [pc, 0x94]                        |     
    0x000097da mov r2, r8                                |     r2 = r8;
    0x000097dc movs r0, 2                                |     r0 = 2;
    0x000097de add r1, pc                                |     r1 = 0x13052;
    0x000097e0 bl 0xfcdc                                 |     r0 = fcn_0000fcdc (r0);
    0x000097e4 blx 0x2f88                                |     r0 = cxa_finalize ();
    0x000097e8 ldr r0, [r0]                              |     r0 = *(r0);
    0x000097ea b 0x9692                                  |     goto label_4;
                                                         | }
    ; assembly                                       | /* r2dec pseudo code output */
                                                     | /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/sbin/fwmgr @ 0x991c */
                                                     | #include <stdint.h>
                                                     |  
    ; (fcn) fcn.0000991c ()                          | void fcn_0000991c (int16_t arg1, int16_t arg2) {
                                                     |     int32_t var_0h_3;
                                                     |     int32_t var_0h_4;
                                                     |     int16_t var_8h;
                                                     |     int16_t var_ch;
                                                     |     int32_t var_0h_2;
                                                     |     int8_t var_1fh;
                                                     |     int16_t var_2ch;
                                                     |     int16_t var_0h;
                                                     |     int8_t var_ffh;
                                                     |     int16_t var_12ch;
                                                     |     r0 = arg1;
                                                     |     r1 = arg2;
    0x0000991c push.w {r4, r5, r6, r7, r8, lr}       |     
    0x00009920 sub sp, 0x130                         |     
    0x00009922 ldr r7, [pc, 0x184]                   |     
    0x00009924 add r5, sp, 0xc                       |     r5 += var_ch;
    0x00009926 mov r6, r1                            |     r6 = r1;
    0x00009928 movs r2, 0x1f                         |     r2 = 0x1f;
    0x0000992a ldr r3, [pc, 0x180]                   |     r3 = *(0x9aae);
    0x0000992c mov r1, r0                            |     r1 = r0;
    0x0000992e add r7, pc                            |     r7 = 0x133dc;
    0x00009930 add r4, sp, 0x2c                      |     r4 += var_2ch;
    0x00009932 mov r0, r5                            |     r0 = r5;
    0x00009934 ldr r3, [r7, r3]                      |     
    0x00009936 ldr r3, [r3]                          |     r3 = *(0x133dc);
    0x00009938 str r3, [sp, 0x12c]                   |     var_12ch = r3;
    0x0000993a mov.w r3, 0                           |     r3 = 0;
    0x0000993e blx 0x2884                            |     fcn_00002884 ();
    0x00009940 invalid                               |     
    0x00009944 mov r1, r6                            |     r1 = r6;
    0x00009946 mov r0, r4                            |     r0 = r4;
    0x00009948 ldr r6, [pc, 0x164]                   |     
    0x0000994a blx 0x2884                            |     fcn_00002884 ();
    0x0000994e ldrb r3, [r5]                         |     r3 = *(r5);
    0x00009950 movs r2, 0                            |     r2 = 0;
    0x00009952 add r6, pc                            |     r6 = 0x13406;
    0x00009954 strb r2, [r5, 0x1f]                   |     var_1fh = r2;
    0x00009956 strb.w r2, [r4, 0xff]                 |     var_ffh = r2;
                                                     |     if (r3 == 0) {
    0x0000995a cbz r3, 0x996e                        |         goto label_2;
                                                     |     }
    0x0000995c mov r2, r5                            |     r2 = r5;
    0x0000995e movs r1, 0x20                         |     r1 = 0x20;
                                                     |     do {
    0x00009960 cmp r3, 0x1f                          |         
    0x00009962 it ls                                 |         
                                                     |         if (r3 > 0x1f) {
    0x00009964 strbls r1, [r2]                       |             *(r2) = r1;
                                                     |         }
    0x00009966 ldrb r3, [r2, 1]!                     |         r3 = var_0h_2;
    0x0000996a cmp r3, 0                             |         
    0x0000996c bne 0x9960                            |         
                                                     |     } while (r3 != 0);
                                                     | label_2:
    0x0000996e ldrb r3, [r4]                         |     r3 = *(r4);
    0x00009970 cmp r3, 0                             |     
                                                     |     if (r3 == 0) {
    0x00009972 beq 0x9a3c                            |         goto label_3;
                                                     |     }
    0x00009974 mov r2, r4                            |     r2 = r4;
    0x00009976 movs r1, 0x20                         |     r1 = 0x20;
                                                     |     do {
    0x00009978 cmp r3, 0x1f                          |         
    0x0000997a it ls                                 |         
                                                     |         if (r3 > 0x1f) {
    0x0000997c strbls r1, [r2]                       |             *(r2) = r1;
                                                     |         }
    0x0000997e ldrb r3, [r2, 1]!                     |         r3 = var_0h;
    0x00009982 cmp r3, 0                             |         
    0x00009984 bne 0x9978                            |         
                                                     |     } while (r3 != 0);
    0x00009986 ldrb r3, [r4]                         |     r3 = *(r4);
    0x00009988 cmp r3, 0                             |     
                                                     |     if (r3 == 0) {
    0x0000998a beq 0x9a3c                            |         goto label_3;
                                                     |     }
    0x0000998c mov r3, r4                            |     r3 = r4;
                                                     |     do {
    0x0000998e ldr r1, [pc, 0x124]                   |         
    0x00009990 mov r2, r5                            |         r2 = r5;
    0x00009992 movs r0, 5                            |         r0 = 5;
    0x00009994 add r1, pc                            |         r1 = 0x1344e;
    0x00009996 bl 0xfcdc                             |         fcn_0000fcdc (r0);
    0x0000999a movs r0, 5                            |         r0 = 5;
    0x0000999c movs r2, 0                            |         r2 = 0;
    0x0000999e movs r1, 1                            |         r1 = 1;
    0x000099a0 bl 0xced8                             |         fcn_0000ced8 (r0, r1, r2);
    0x000099a4 ldr r3, [pc, 0x110]                   |         
    0x000099a6 movs r0, 0x42                         |         r0 = 0x42;
    0x000099a8 add r3, pc                            |         
    0x000099aa ldr r3, [r3, 0x54]                    |         
    0x000099ac ldr r3, [r3, 0xc]                     |         r3 = *(0x134c4);
    0x000099ae blx r3                                |         r0 = uint32_t (*r3)(uint32_t, uint32_t) (r0, r3);
    0x000099b0 cmp r0, 0                             |         
                                                     |         if (r0 == 0) {
    0x000099b2 beq 0x9a42                            |             goto label_4;
                                                     |         }
    0x000099b4 ldr r0, [pc, 0x104]                   |         
    0x000099b6 add r0, pc                            |         r0 = 0x13476;
    0x000099b8 blx 0x29a4                            |         r0 = fcn_000029a4 ();
                                                     |         if (r0 != 0) {
    0x000099bc cbz r0, 0x99c8                        |             
    0x000099be blx 0x2f88                            |             r0 = cxa_finalize ();
    0x000099c2 ldr r3, [r0]                          |             r3 = *(r0);
    0x000099c4 cmp r3, 0x16                          |             
                                                     |             if (r3 != 0x16) {
    0x000099c6 bne 0x9a66                            |                 goto label_5;
                                                     |             }
                                                     |         }
    0x000099c8 ldr r3, [pc, 0xf4]                    |         
    0x000099ca movs r2, 0                            |         r2 = 0;
    0x000099cc ldr.w r8, [pc, 0xf4]                  |         
    0x000099d0 movs r0, 0x42                         |         r0 = 0x42;
    0x000099d2 add r3, pc                            |         
    0x000099d4 ldr r3, [r3, 0x54]                    |         
    0x000099d6 add r8, pc                            |         r8 = 0x1349e;
    0x000099d8 mov r1, r8                            |         r1 = r8;
    0x000099da ldr r3, [r3, 0x14]                    |         r3 = *(0x134fe);
    0x000099dc blx r3                                |         r0 = uint32_t (*r3)(uint32_t, uint32_t, uint32_t, uint32_t) (r0, r1, r2, r3);
    0x000099de mov r7, r0                            |         r7 = r0;
    0x000099e0 cmp r0, 0                             |         
                                                     |         if (r0 != 0) {
    0x000099e2 bne 0x9a4e                            |             goto label_6;
                                                     |         }
    0x000099e4 blx 0x2df8                            |         r0 = fcn_00002df8 ();
    0x000099e8 subs r1, r0, 0                        |         r1 = r0 - 0;
                                                     |         if (r1 < r0) {
    0x000099ea blt 0x9a72                            |             goto label_7;
                                                     |         }
                                                     |         if (r1 == r0) {
    0x000099ec beq 0x9a8a                            |             goto label_8;
                                                     |         }
    0x000099ee add r4, sp, 8                         |         r4 += var_8h;
    0x000099f0 mov r2, r7                            |         r2 = r7;
    0x000099f2 mov r1, r4                            |         r1 = r4;
    0x000099f4 blx 0x2b5c                            |         r0 = EVP_PKEY_CTX_free ();
    0x000099f8 cmp r0, 0                             |         
                                                     |         if (r0 < 0) {
    0x000099fa blt 0x9a7e                            |             goto label_9;
                                                     |         }
    0x000099fc ldr r2, [r4]                          |         r2 = *(r4);
    0x000099fe ubfx r3, r2, 8, 8                     |         r3 = (r2 >> 8) & ((1 << 8) - 1);
    0x00009a02 and r1, r2, 0x7f                      |         r1 = r2 & 0x7f;
    0x00009a06 orrs r3, r1                           |         r3 |= r1;
                                                     |         if (r3 != r1) {
    0x00009a08 bne 0x9a5a                            |             goto label_10;
                                                     |         }
                                                     | label_1:
    0x00009a0a ldr r0, [pc, 0xbc]                    |         
    0x00009a0c add r0, pc                            |         r0 = 0x134da;
    0x00009a0e blx 0x29a4                            |         fcn_000029a4 ();
                                                     | label_0:
    0x00009a12 ldr r3, [pc, 0xb8]                    |         r3 = *(0x9ace);
    0x00009a14 movs r1, 1                            |         r1 = 1;
    0x00009a16 movs r2, 0                            |         r2 = 0;
    0x00009a18 ldr r3, [r6, r3]                      |         r3 = *((r6 + r3));
    0x00009a1a ldrb r0, [r3]                         |         r0 = *(r3);
    0x00009a1c eors r0, r1                           |         r0 ^= r1;
    0x00009a1e bl 0xced8                             |         fcn_0000ced8 (r0, r1, r2);
    0x00009a22 ldr r2, [pc, 0xac]                    |         
    0x00009a24 ldr r3, [pc, 0x84]                    |         r3 = *(0x9aac);
    0x00009a26 add r2, pc                            |         r2 = 0x134fc;
    0x00009a28 ldr r3, [r2, r3]                      |         r3 = *(0x134fc);
    0x00009a2a ldr r2, [r3]                          |         r2 = *(0x134fc);
    0x00009a2c ldr r3, [sp, 0x12c]                   |         r3 = var_12ch;
    0x00009a2e eors r2, r3                           |         r2 ^= r3;
    0x00009a30 mov.w r3, 0                           |         r3 = 0;
                                                     |         if (r2 != r3) {
    0x00009a34 bne 0x9aa2                            |             goto label_11;
                                                     |         }
    0x00009a36 add sp, 0x130                         |         
    0x00009a38 pop.w {r4, r5, r6, r7, r8, pc}        |         
                                                     | label_3:
    0x00009a3c ldr r3, [pc, 0x94]                    |         
    0x00009a3e add r3, pc                            |         r3 = 0x13516;
    0x00009a40 b 0x998e                              |         
                                                     |     } while (1);
                                                     | label_4:
    0x00009a42 ldr r1, [pc, 0x94]                    |     
    0x00009a44 movs r0, 2                            |     r0 = 2;
    0x00009a46 add r1, pc                            |     r1 = 0x13524;
    0x00009a48 bl 0xfcdc                             |     fcn_0000fcdc (r0);
    0x00009a4c b 0x9a12                              |     goto label_0;
                                                     | label_6:
    0x00009a4e ldr r1, [pc, 0x8c]                    |     
    0x00009a50 movs r0, 2                            |     r0 = 2;
    0x00009a52 add r1, pc                            |     r1 = 0x13534;
    0x00009a54 bl 0xfcdc                             |     fcn_0000fcdc (r0);
    0x00009a58 b 0x9a12                              |     goto label_0;
                                                     | label_10:
    0x00009a5a ldr r1, [pc, 0x84]                    |     
    0x00009a5c movs r0, 2                            |     r0 = 2;
    0x00009a5e add r1, pc                            |     r1 = 0x13544;
    0x00009a60 bl 0xfcdc                             |     fcn_0000fcdc (r0);
    0x00009a64 b 0x9a0a                              |     goto label_1;
                                                     | label_5:
    0x00009a66 ldr r1, [pc, 0x7c]                    |     
    0x00009a68 movs r0, 2                            |     r0 = 2;
    0x00009a6a add r1, pc                            |     r1 = 0x13554;
    0x00009a6c bl 0xfcdc                             |     fcn_0000fcdc (r0);
    0x00009a70 b 0x9a12                              |     goto label_0;
                                                     | label_7:
    0x00009a72 ldr r1, [pc, 0x74]                    |     
    0x00009a74 movs r0, 2                            |     r0 = 2;
    0x00009a76 add r1, pc                            |     r1 = 0x13564;
    0x00009a78 bl 0xfcdc                             |     fcn_0000fcdc (r0);
    0x00009a7c b 0x9a0a                              |     goto label_1;
                                                     | label_9:
    0x00009a7e ldr r1, [pc, 0x6c]                    |     
    0x00009a80 movs r0, 2                            |     r0 = 2;
    0x00009a82 add r1, pc                            |     r1 = 0x13574;
    0x00009a84 bl 0xfcdc                             |     fcn_0000fcdc (r0);
    0x00009a88 b 0x9a0a                              |     goto label_1;
                                                     | label_8:
    0x00009a8a ldr r0, [pc, 0x64]                    |     
    0x00009a8c mov r3, r5                            |     r3 = r5;
    0x00009a8e strd r4, r1, [sp]                     |     __asm ("strd r4, r1, [sp]");
    0x00009a92 mov r2, r8                            |     r2 = r8;
    0x00009a94 add r0, pc                            |     r0 = 0x1358a;
    0x00009a96 mov r1, r0                            |     r1 = r0;
    0x00009a98 blx 0x2a2c                            |     fcn_00002a2c ();
    0x00009a9c movs r0, 0x7f                         |     r0 = 0x7f;
    0x00009a9e blx 0x29b0                            |     fcn_000029b0 ();
                                                     | label_11:
    0x00009aa2 blx 0x2cdc                            |     fprintf_chk ()
    0x00009aa6 nop                                   |     
    0x00009aa8 strh r6, [r1, r4]                     |     *((r1 + r4)) = r6;
    0x00009aaa movs r2, r0                           |     r2 = r0;
    0x00009aac lsls r4, r1, 0xd                      |     r4 = r1 << 0xd;
    0x00009aae movs r0, r0                           |     
    0x00009ab0 strh r2, [r5, r3]                     |     *((r5 + r3)) = r2;
    0x00009ab2 movs r2, r0                           |     r2 = r0;
    0x00009ab4 vhadd.s16 d0, d8, d0                  |     __asm ("vhadd.s16 d0, d8, d0");
    0x00009ab8 ldr r4, [r0, r5]                      |     r4 = *((r0 + r5));
    0x00009aba movs r2, r0                           |     r2 = r0;
    0x00009abc vhadd.s32 d16, d6, d0                 |     __asm ("vhadd.s32 d16, d6, d0");
    0x00009ac0 ldr r2, [r3, r4]                      |     r2 = *((r3 + r4));
    0x00009ac2 movs r2, r0                           |     r2 = r0;
    0x00009ac4 vhadd.s8 d16, d6, d0                  |     __asm ("vhadd.s8 d16, d6, d0");
    0x00009ac6 movs r0, r0                           |     
    0x00009ac8 vhadd.s16 d0, d0, d0                  |     __asm ("vhadd.s16 d0, d0, d0");
    0x00009acc lsls r4, r2, 0xd                      |     r4 = r2 << 0xd;
    0x00009ace movs r0, r0                           |     
    0x00009ad0 strh r6, [r2, r0]                     |     *((r2 + r0)) = r6;
    0x00009ad2 movs r2, r0                           |     r2 = r0;
    0x00009ad4 cdp p0, 6, c0, c2, c0, 0              |     __asm ("cdp p0, 6, c0, c2, c0, 0");
    0x00009ad8 cdp p0, 0xa, c0, c14, c0, 0           |     __asm ("cdp p0, 0xa, c0, c14, c0, 0");
    0x00009adc cdp p0, 0xf, c0, c14, c0, 0           |     __asm ("cdp p0, 0xf, c0, c14, c0, 0");
    0x00009ae0 vaddl.s8 q0, d2, d0                   |     __asm ("vaddl.s8 q0, d2, d0");
    0x00009ae4 cdp p0, 0xc, c0, c2, c0, 0            |     __asm ("cdp p0, 0xc, c0, c2, c0, 0");
    0x00009ae6 movs r0, r0                           |     
    0x00009ae8 cdp p0, 0xf, c0, c10, c0, 0           |     __asm ("cdp p0, 0xf, c0, c10, c0, 0");
    0x00009aec invalid                               |     
                                                     | }
    ; assembly                                   | /* r2dec pseudo code output */
                                                 | /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/sbin/fwmgr @ 0x9b9c */
                                                 | #include <stdint.h>
                                                 |  
                                                 | #define BIT_MASK(t,v) ((t)(-((v)!= 0)))&(((t)-1)>>((sizeof(t)*CHAR_BIT)-(v)))
                                                 |  
    ; (fcn) fcn.00009b9c ()                      | void fcn_00009b9c (int16_t arg1, int16_t arg2) {
                                                 |     int16_t var_0h;
                                                 |     int16_t var_4h;
                                                 |     int16_t var_8h;
                                                 |     int16_t var_14h;
                                                 |     int16_t var_54h;
                                                 |     r0 = arg1;
                                                 |     r1 = arg2;
    0x00009b9c rsbsvs pc, pc, 0x21000000         |     __asm ("rsbsvs pc, pc, 0x21000000");
    0x00009ba0 push {r4, r5, lr}                 |     
    0x00009ba2 lsrs r3, r0, 0xc                  |     r3 = r0 >> 0xc;
    0x00009ba4 uxtb r5, r0                       |     r5 = (int8_t) r0;
    0x00009ba6 bic r2, r2, 0xf                   |     r2 = BIT_MASK (r2, 0xf);
    0x00009baa ubfx r0, r0, 8, 0xc               |     r0 = (r0 >> 8) & ((1 << 0xc) - 1);
    0x00009bac movs r0, 0xb                      |     r0 = 0xb;
    0x00009bae orrs r2, r0                       |     r2 |= r0;
    0x00009bb0 ldr r0, [pc, 0x9c]                |     
    0x00009bb2 sub sp, 0x5c                      |     
    0x00009bb4 orr.w r3, r3, r1, lsl 20          |     r3 |= (r1 << 20);
    0x00009bb8 ldr r1, [pc, 0x98]                |     r1 = *(0x9c54);
    0x00009bba add r4, sp, 0x14                  |     r4 += var_14h;
    0x00009bbc add r0, pc                        |     r0 = 0x13810;
    0x00009bbe bic r3, r3, 0xff                  |     r3 = BIT_MASK (r3, 0xff);
    0x00009bc2 str r0, [sp]                      |     *(sp) = r0;
    0x00009bc4 orrs r5, r3                       |     r5 |= r3;
    0x00009bc6 ldr r0, [pc, 0x90]                |     
    0x00009bc8 movs r3, 0x40                     |     r3 = 0x40;
    0x00009bca str r2, [sp, 4]                   |     var_4h = r2;
    0x00009bcc movs r2, 1                        |     r2 = 1;
    0x00009bce str r5, [sp, 8]                   |     var_8h = r5;
    0x00009bd0 add r0, pc                        |     r0 = 0x1382e;
    0x00009bd2 ldr r5, [pc, 0x88]                |     
    0x00009bd4 ldr r1, [r0, r1]                  |     
    0x00009bd6 mov r0, r4                        |     r0 = r4;
    0x00009bd8 add r5, pc                        |     r5 = 0x1383a;
    0x00009bda ldr r1, [r1]                      |     r1 = *(0x1382e);
    0x00009bdc str r1, [sp, 0x54]                |     var_54h = r1;
    0x00009bde mov.w r1, 0                       |     r1 = 0;
    0x00009be2 mov r1, r3                        |     r1 = r3;
    0x00009be4 blx 0x2b98                        |     shutdown ();
    0x00009be8 mov.w r2, 0x100                   |     r2 = 0x100;
    0x00009bec mov r1, r5                        |     r1 = r5;
    0x00009bee mov r0, r4                        |     r0 = r4;
    0x00009bf0 blx 0x2dec                        |     fcn_00002dec ();
    0x00009bf4 subs r3, r0, 0                    |     r3 -= var_14h;
                                                 |     if (r3 < var_14h) {
    0x00009bf6 blt 0x9c3a                        |         goto label_1;
                                                 |     }
    0x00009bf8 cmp.w r3, 0x100                   |     
                                                 |     if (r3 == 0x100) {
    0x00009bfc beq 0x9c20                        |         goto label_2;
                                                 |     }
    0x00009bfe movs r2, 0                        |     r2 = 0;
    0x00009c00 mov r0, r5                        |     r0 = r5;
    0x00009c02 strb r2, [r5, r3]                 |     *((r5 + r3)) = r2;
    0x00009c04 blx 0x2afc                        |     sd_bus_open_system ();
                                                 |     do {
                                                 | label_0:
    0x00009c08 ldr r2, [pc, 0x54]                |         
    0x00009c0a ldr r3, [pc, 0x48]                |         r3 = *(0x9c56);
    0x00009c0c add r2, pc                        |         r2 = 0x13870;
    0x00009c0e ldr r3, [r2, r3]                  |         r3 = *(0x13870);
    0x00009c10 ldr r2, [r3]                      |         r2 = *(0x13870);
    0x00009c12 ldr r3, [sp, 0x54]                |         r3 = var_54h;
    0x00009c14 eors r2, r3                       |         r2 ^= r3;
    0x00009c16 mov.w r3, 0                       |         r3 = 0;
                                                 |         if (r2 != r3) {
    0x00009c1a bne 0x9c4a                        |             goto label_3;
                                                 |         }
    0x00009c1c add sp, 0x5c                      |         
    0x00009c1e pop {r4, r5, pc}                  |         
                                                 | label_2:
    0x00009c20 ldr r1, [pc, 0x40]                |         
    0x00009c22 mov r2, r4                        |         r2 = r4;
    0x00009c24 movs r0, 3                        |         r0 = 3;
    0x00009c26 add r1, pc                        |         r1 = 0x1388e;
    0x00009c28 bl 0xfcdc                         |         r0 = fcn_0000fcdc (r0);
    0x00009c2c blx 0x2f88                        |         cxa_finalize ();
    0x00009c30 movs r2, 0x24                     |         r2 = 0x24;
    0x00009c32 mov r3, r0                        |         r3 = r0;
    0x00009c34 str r2, [r3]                      |         *(r3) = r2;
    0x00009c36 movs r0, 0                        |         r0 = 0;
    0x00009c38 b 0x9c08                          |         
                                                 |     } while (1);
                                                 | label_1:
    0x00009c3a ldr r1, [pc, 0x2c]                |     
    0x00009c3c movs r0, 3                        |     r0 = 3;
    0x00009c3e mov r2, r4                        |     r2 = r4;
    0x00009c40 add r1, pc                        |     r1 = 0x138ae;
    0x00009c42 bl 0xfcdc                         |     fcn_0000fcdc (r0);
    0x00009c46 movs r0, 0                        |     r0 = 0;
    0x00009c48 b 0x9c08                          |     goto label_0;
                                                 | label_3:
    0x00009c4a blx 0x2cdc                        |     fprintf_chk ()
    0x00009c4e nop                               |     
    0x00009c50 sub.w r0, r4, 0x800000            |     r0 = r4 - 0x800000;
    0x00009c54 lsls r4, r1, 0xd                  |     r4 = r1 << 0xd;
    0x00009c56 movs r0, r0                       |     
    0x00009c58 str r4, [r5, r1]                  |     *((r5 + r1)) = r4;
    0x00009c5a movs r2, r0                       |     r2 = r0;
    0x00009c5c str r4, [r0, 0x40]                |     *((r0 + 0x40)) = r4;
    0x00009c5e movs r2, r0                       |     r2 = r0;
    0x00009c60 str r0, [r6, r0]                  |     *((r6 + r0)) = r0;
    0x00009c62 movs r2, r0                       |     r2 = r0;
    0x00009c64 sbcs r0, r6, 0x800000             |     __asm ("sbcs r0, r6, 0x800000");
    0x00009c68 invalid                           |     
                                                 | }
    ; assembly                               | /* r2dec pseudo code output */
                                             | /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/sbin/fwmgr @ 0x9d10 */
                                             | #include <stdint.h>
                                             |  
    ; (fcn) fcn.00009d10 ()                  | void fcn_00009d10 () {
                                             |     int16_t var_0h;
                                             |     int32_t var_0h_2;
                                             |     int16_t var_8h;
                                             |     int32_t var_8h_2;
                                             |     int16_t var_60h;
                                             |     int16_t var_64h;
                                             |     int16_t var_68h;
                                             |     int16_t var_6ch;
                                             |     int16_t var_e4h;
    0x00009d10 adcslt fp, fp, r0, lsr r5     |     __asm ("adcslt fp, fp, r0, lsr r5");
    0x00009d14 ldr r5, [pc, 0x1c8]           |     
    0x00009d16 movs r3, 0                    |     r3 = 0;
    0x00009d18 movs r2, 0x81                 |     r2 = 0x81;
    0x00009d1a add r1, sp, 0x60              |     r1 += var_60h;
    0x00009d1c ldr r4, [pc, 0x1c4]           |     r4 = *(0x9ee4);
    0x00009d1e add r5, pc                    |     r5 = 0x13c02;
    0x00009d20 ldr r0, [pc, 0x1c4]           |     
    0x00009d22 ldr r4, [r5, r4]              |     
    0x00009d24 add r0, pc                    |     r0 = 0x13c10;
    0x00009d26 ldr r4, [r4]                  |     r4 = *(0x13c02);
    0x00009d28 str r4, [sp, 0xe4]            |     var_e4h = r4;
    0x00009d2a mov.w r4, 0                   |     r4 = 0;
    0x00009d2e movs r4, 0                    |     r4 = 0;
    0x00009d30 bl 0x10338                    |     r0 = fcn_00010338 (r0, r1, r2, r3);
    0x00009d34 cmp r0, 0                     |     
                                             |     if (r0 != 0) {
    0x00009d36 bne 0x9dc0                    |         goto label_1;
                                             |     }
    0x00009d38 ldr r2, [sp, 0x60]            |     r2 = var_60h;
    0x00009d3a movw r3, 0x6f72               |     
    0x00009d3e movt r3, 0x746f               |     r3 = 0x746f6f72;
    0x00009d42 cmp r2, r3                    |     
    0x00009d44 beq 0x9ddc                    |     
                                             |     while (r1 != r3) {
                                             | label_0:
    0x00009d46 ldr r1, [sp, 0x60]            |         r1 = var_60h;
    0x00009d48 movw r3, 0x642f               |         
    0x00009d4a orrs r7, r5                   |         r7 |= r5;
    0x00009d4c movt r3, 0x7665               |         r3 = 0x7665642f;
    0x00009d50 cmp r1, r3                    |         
                                             |         if (r1 == r3) {
    0x00009d52 beq 0x9e16                    |             goto label_6;
                                             |         }
                                             | label_2:
    0x00009d54 movw r3, 0x642f               |         
    0x00009d58 movt r3, 0x7665               |         r3 = 0x7665642f;
    0x00009d5c cmp r2, r3                    |         
                                             |         if (r2 == r3) {
    0x00009d5e beq.w 0x9e72                  |             goto label_7;
                                             |         }
                                             | label_4:
    0x00009d62 add r5, sp, 8                 |         r5 += var_8h;
                                             | label_3:
    0x00009d64 ldr r0, [pc, 0x184]           |         
    0x00009d66 mov r1, r5                    |         r1 = r5;
    0x00009d68 add r0, pc                    |         r0 = 0x13c58;
    0x00009d6a blx 0x2f28                    |         r0 = add_key ();
    0x00009d6e cmp r0, 0                     |         
                                             |         if (r0 < 0) {
    0x00009d70 blt.w 0x9ec0                  |             goto label_8;
                                             |         }
    0x00009d74 ldrd r0, r1, [sp, 8]          |         __asm ("ldrd r0, r1, [var_8h]");
    0x00009d78 mov r2, sp                    |         r2 = sp;
    0x00009d7a bl 0x61fc                     |         r0 = fcn_000061fc (r0, r1, r2);
    0x00009d7e cmp r0, 0                     |         
                                             |         if (r0 != 0) {
    0x00009d80 bne.w 0x9eb2                  |             goto label_9;
                                             |         }
    0x00009d84 ldrd r0, r1, [sp]             |         __asm ("ldrd r0, r1, [sp]");
    0x00009d88 bl 0x9b9c                     |         r0 = fcn_00009b9c (r0, r1);
    0x00009d8c mov r4, r0                    |         r4 = r0;
    0x00009d8e cmp r0, 0                     |         
                                             |         if (r0 == 0) {
    0x00009d90 beq.w 0x9ece                  |             goto label_10;
                                             |         }
    0x00009d94 ldr r1, [pc, 0x158]           |         
    0x00009d96 mov r2, r0                    |         r2 = r0;
    0x00009d98 movs r0, 7                    |         r0 = 7;
    0x00009d9a add r1, pc                    |         r1 = 0x13c8e;
    0x00009d9c bl 0xfcdc                     |         fcn_0000fcdc (r0);
    0x00009da0 ldrb r3, [r4]                 |         r3 = *(r4);
    0x00009da2 cmp r3, 0x6d                  |         
                                             |         if (r3 == 0x6d) {
    0x00009da4 bne 0x9dc0                    |             
    0x00009da6 ldrb r3, [r4, 1]              |             r3 = *((r4 + 1));
    0x00009da8 cmp r3, 0x74                  |             
                                             |             if (r3 != 0x74) {
    0x00009daa bne 0x9dc0                    |                 goto label_1;
                                             |             }
    0x00009dac ldrb r3, [r4, 2]              |             r3 = *((r4 + 2));
    0x00009dae cmp r3, 0x64                  |             
                                             |             if (r3 != 0x64) {
    0x00009db0 bne 0x9dc0                    |                 goto label_1;
                                             |             }
    0x00009db2 ldr r1, [pc, 0x140]           |             
    0x00009db4 movs r0, 7                    |             r0 = 7;
    0x00009db6 ldr r4, [pc, 0x140]           |             
    0x00009db8 add r1, pc                    |             r1 = 0x13cb2;
    0x00009dba add r4, pc                    |             r4 = 0x13cb8;
    0x00009dbc bl 0xfcdc                     |             fcn_0000fcdc (r0);
                                             |         }
                                             | label_1:
    0x00009dc0 ldr r2, [pc, 0x138]           |         
    0x00009dc2 ldr r3, [pc, 0x120]           |         r3 = *(0x9ee6);
    0x00009dc4 add r2, pc                    |         r2 = 0x13cc4;
    0x00009dc6 ldr r3, [r2, r3]              |         r3 = *(0x13cc4);
    0x00009dc8 ldr r2, [r3]                  |         r2 = *(0x13cc4);
    0x00009dca ldr r3, [sp, 0xe4]            |         r3 = var_e4h;
    0x00009dcc eors r2, r3                   |         r2 ^= r3;
    0x00009dce mov.w r3, 0                   |         r3 = 0;
                                             |         if (r2 != r3) {
    0x00009dd2 bne.w 0x9eda                  |             goto label_11;
                                             |         }
    0x00009dd4 strh r2, [r0, 4]              |         *((r0 + 4)) = r2;
    0x00009dd6 mov r0, r4                    |         r0 = r4;
    0x00009dd8 add sp, 0xec                  |         
    0x00009dda pop {r4, r5, pc}              |         
    0x00009ddc ldr r1, [sp, 0x64]            |         r1 = var_64h;
    0x00009dde movw r3, 0x7366               |         
    0x00009de2 movt r3, 0x2f20               |         r3 = 0x2f207366;
    0x00009de6 cmp r1, r3                    |         
    0x00009de8 bne 0x9d46                    |         
                                             |     }
    0x00009dea ldr r1, [sp, 0x68]            |     r1 = var_68h;
    0x00009dec movw r3, 0x7220               |     
    0x00009df0 movt r3, 0x6f6f               |     r3 = 0x6f6f7220;
    0x00009df4 cmp r1, r3                    |     
                                             |     if (r1 != r3) {
    0x00009df6 bne 0x9d46                    |         goto label_0;
                                             |     }
    0x00009df8 ldr r1, [sp, 0x6c]            |     r1 = var_6ch;
    0x00009dfa movw r3, 0x6674               |     
    0x00009dfe movt r3, 0x2073               |     r3 = 0x20736674;
    0x00009e02 cmp r1, r3                    |     
                                             |     if (r1 != r3) {
    0x00009e04 bne 0x9d46                    |         goto label_0;
                                             |     }
    0x00009e06 ldr r1, [pc, 0xf8]            |     
    0x00009e08 movs r0, 7                    |     r0 = 7;
    0x00009e0a ldr r4, [pc, 0xf8]            |     
    0x00009e0c add r1, pc                    |     r1 = 0x13d12;
    0x00009e0e add r4, pc                    |     r4 = 0x13d18;
    0x00009e10 bl 0xfcdc                     |     fcn_0000fcdc (r0);
    0x00009e14 b 0x9dc0                      |     goto label_1;
                                             | label_6:
    0x00009e16 ldr r1, [sp, 0x64]            |     r1 = var_64h;
    0x00009e18 movw r3, 0x722f               |     
    0x00009e1c movt r3, 0x6f6f               |     r3 = 0x6f6f722f;
    0x00009e20 cmp r1, r3                    |     
                                             |     if (r1 != r3) {
    0x00009e22 bne 0x9d54                    |         goto label_2;
                                             |     }
    0x00009e24 ldr r1, [sp, 0x68]            |     r1 = var_68h;
    0x00009e26 movw r3, 0x2074               |     
    0x00009e2a movt r3, 0x202f               |     r3 = 0x202f2074;
    0x00009e2e cmp r1, r3                    |     
                                             |     if (r1 != r3) {
    0x00009e30 bne 0x9d54                    |         goto label_2;
                                             |     }
                                             | label_5:
    0x00009e32 ldr r0, [pc, 0xd4]            |     
    0x00009e34 add r5, sp, 8                 |     r5 += var_8h;
    0x00009e36 mov r1, r5                    |     r1 = r5;
    0x00009e38 add r0, pc                    |     r0 = 0x13d46;
    0x00009e3a blx 0x2f28                    |     r0 = add_key ();
    0x00009e3e cmp r0, 0                     |     
                                             |     if (r0 < 0) {
    0x00009e40 blt 0x9ea4                    |         goto label_12;
                                             |     }
    0x00009e42 ldrd r0, r1, [sp, 8]          |     __asm ("ldrd r0, r1, [var_8h]");
    0x00009e46 bl 0x9b9c                     |     r0 = fcn_00009b9c (r0, r1);
    0x00009e4a mov r4, r0                    |     r4 = r0;
    0x00009e4c cmp r0, 0                     |     
                                             |     if (r0 == 0) {
    0x00009e4e beq 0x9dc0                    |         goto label_1;
                                             |     }
    0x00009e50 ldrb r3, [r0]                 |     r3 = *(r0);
    0x00009e52 cmp r3, 0x72                  |     
                                             |     if (r3 != 0x72) {
    0x00009e54 bne 0x9d64                    |         goto label_3;
                                             |     }
    0x00009e56 ldrb r3, [r0, 1]              |     r3 = *((r0 + 1));
    0x00009e58 cmp r3, 0x61                  |     
                                             |     if (r3 != 0x61) {
    0x00009e5a bne 0x9d64                    |         goto label_3;
                                             |     }
    0x00009e5c ldrb r3, [r0, 2]              |     r3 = *((r0 + 2));
    0x00009e5e cmp r3, 0x6d                  |     
                                             |     if (r3 != 0x6d) {
    0x00009e60 bne 0x9d64                    |         goto label_3;
                                             |     }
    0x00009e62 ldr r1, [pc, 0xa8]            |     
    0x00009e64 movs r0, 7                    |     r0 = 7;
    0x00009e66 ldr r4, [pc, 0xa8]            |     
    0x00009e68 add r1, pc                    |     r1 = 0x13d7a;
    0x00009e6a add r4, pc                    |     r4 = 0x13d80;
    0x00009e6c bl 0xfcdc                     |     fcn_0000fcdc (r0);
    0x00009e70 b 0x9dc0                      |     goto label_1;
                                             | label_7:
    0x00009e72 ldr r2, [sp, 0x64]            |     r2 = var_64h;
    0x00009e74 movw r3, 0x722f               |     
    0x00009e78 movt r3, 0x6f6f               |     r3 = 0x6f6f722f;
    0x00009e7c cmp r2, r3                    |     
                                             |     if (r2 != r3) {
    0x00009e7e bne.w 0x9d62                  |         goto label_4;
                                             |     }
    0x00009e82 ldr r2, [sp, 0x68]            |     r2 = var_68h;
    0x00009e84 movw r3, 0x2e74               |     
    0x00009e88 movt r3, 0x6c6f               |     r3 = 0xNaN;
    0x00009e8c cmp r2, r3                    |     
                                             |     if (r2 != r3) {
    0x00009e8e bne.w 0x9d62                  |         goto label_4;
                                             |     }
    0x00009e92 ldr r2, [sp, 0x6c]            |     r2 = var_6ch;
    0x00009e94 movw r3, 0x2064               |     
    0x00009e98 movt r3, 0x202f               |     r3 = 0x202f2064;
    0x00009e9c cmp r2, r3                    |     
                                             |     if (r2 != r3) {
    0x00009e9e bne.w 0x9d62                  |         goto label_4;
                                             |     }
    0x00009ea2 b 0x9e32                      |     goto label_5;
                                             | label_12:
    0x00009ea4 ldr r1, [pc, 0x6c]            |     
    0x00009ea6 movs r0, 2                    |     r0 = 2;
    0x00009ea8 movs r4, 0                    |     r4 = 0;
    0x00009eaa add r1, pc                    |     r1 = 0x13dc2;
    0x00009eac bl 0xfcdc                     |     fcn_0000fcdc (r0);
    0x00009eae vabd.u16 d14, d22, d6         |     __asm ("vabd.u16 d14, d22, d6");
                                             | label_9:
    0x00009eb2 ldr r1, [pc, 0x64]            |     
    0x00009eb4 movs r0, 2                    |     r0 = 2;
    0x00009eb6 movs r4, 0                    |     r4 = 0;
    0x00009eb8 add r1, pc                    |     r1 = 0x13dd6;
    0x00009eba bl 0xfcdc                     |     fcn_0000fcdc (r0);
    0x00009ebe b 0x9dc0                      |     goto label_1;
                                             | label_8:
    0x00009ec0 ldr r1, [pc, 0x58]            |     
    0x00009ec2 movs r0, 2                    |     r0 = 2;
    0x00009ec4 movs r4, 0                    |     r4 = 0;
    0x00009ec6 add r1, pc                    |     r1 = 0x13de6;
    0x00009ec8 bl 0xfcdc                     |     fcn_0000fcdc (r0);
    0x00009ecc b 0x9dc0                      |     goto label_1;
                                             | label_10:
    0x00009ece ldr r1, [pc, 0x50]            |     
    0x00009ed0 movs r0, 2                    |     r0 = 2;
    0x00009ed2 add r1, pc                    |     r1 = 0x13df8;
    0x00009ed4 bl 0xfcdc                     |     fcn_0000fcdc (r0);
    0x00009ed8 b 0x9dc0                      |     goto label_1;
                                             | label_11:
    0x00009eda blx 0x2cdc                    |     fprintf_chk ()
    0x00009ede nop                           |     
    0x00009ee0 ldr r7, [pc, 0x78]            |     r7 = *(0x9f5c);
    0x00009ee2 movs r2, r0                   |     r2 = r0;
    0x00009ee4 lsls r4, r1, 0xd              |     r4 = r1 << 0xd;
    0x00009ee6 movs r0, r0                   |     
    0x00009ee8 invalid                       |     
                                             | }
    ; assembly                                       | /* r2dec pseudo code output */
                                                     | /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/sbin/fwmgr @ 0xa0f4 */
                                                     | #include <stdint.h>
                                                     |  
    ; (fcn) fcn.0000a0f4 ()                          | void fcn_0000a0f4 (int16_t arg1, int16_t arg2, int16_t arg3) {
                                                     |     int16_t var_0h;
                                                     |     int32_t var_0h_2;
                                                     |     int32_t var_4h;
                                                     |     char * path;
                                                     |     char * s1;
                                                     |     char * var_94h;
                                                     |     int16_t var_194h;
                                                     |     r0 = arg1;
                                                     |     r1 = arg2;
                                                     |     r2 = arg3;
    0x0000a0f4 mvnsmi lr, sp, lsr 18                 |     __asm ("mvnsmi lr, sp, lsr 18");
    0x0000a0f8 sub sp, 0x198                         |     
    0x0000a0fa strd r1, r0, [sp]                     |     __asm ("strd r1, r0, [sp]");
    0x0000a0fe mov r5, r1                            |     r5 = r1;
    0x0000a100 mov r7, r2                            |     r7 = r2;
    0x0000a102 add r4, sp, 0x14                      |     r4 += path;
    0x0000a104 ldr r1, [pc, 0x138]                   |     
    0x0000a106 mov r6, r0                            |     r6 = r0;
    0x0000a108 ldr r2, [pc, 0x138]                   |     r2 = *(0xa244);
    0x0000a10a mov r0, r4                            |     r0 = r4;
    0x0000a10c ldr r3, [pc, 0x138]                   |     
    0x0000a10e add r1, pc                            |     r1 = 0x14352;
    0x0000a110 ldr r2, [r1, r2]                      |     
    0x0000a112 movs r1, 1                            |     r1 = 1;
    0x0000a114 add r3, pc                            |     r3 = 0x14360;
    0x0000a116 ldr r2, [r2]                          |     r2 = *(0x14352);
    0x0000a118 str r2, [sp, 0x194]                   |     var_194h = r2;
    0x0000a11a mov.w r2, 0                           |     r2 = 0;
    0x0000a11e movs r2, 0x40                         |     r2 = 0x40;
    0x0000a120 blx 0x2e80                            |     strncmp (r0, r1, r2);
    0x0000a122 cdp p6, 0xa, c4, c14, c8, 1           |     __asm ("cdp p6, 0xa, c4, c14, c8, 1");
    0x0000a126 blx 0x2ab0                            |     r0 = fcn_00002ab0 ();
    0x0000a12a add.w ip, r0, 6                       |     
    0x0000a12e ldrb.w r3, [r4, ip]                   |     r3 = *((r4 + ip));
    0x0000a130 adds r0, 0xc                          |     r0 += 0xc;
    0x0000a132 add ip, r4                            |     
                                                     |     if (r3 == 0) {
    0x0000a134 cbz r3, 0xa148                        |         goto label_2;
                                                     |     }
    0x0000a136 movs r2, 0x2d                         |     r2 = 0x2d;
                                                     |     do {
    0x0000a138 cmp r3, 0x2f                          |         
    0x0000a13a it eq                                 |         
                                                     |         if (r3 != 0x2f) {
    0x0000a13c strbeq r2, [ip]                       |             *(ip) = r2;
                                                     |         }
    0x0000a140 ldrb r3, [ip, 1]!                     |         r3 = *((ip += 1));
    0x0000a142 subs r7, 1                            |         r7--;
    0x0000a144 cmp r3, 0                             |         
    0x0000a146 bne 0xa138                            |         
                                                     |     } while (r3 != 0);
                                                     | label_2:
    0x0000a148 mov r1, r7                            |     r1 = r7;
    0x0000a14a mov r0, r4                            |     r0 = r4;
    0x0000a14c blx 0x276c                            |     r0 = mkdir ();
    0x0000a150 cmp r0, 0                             |     
                                                     |     if (r0 < 0) {
    0x0000a152 bge 0xa176                            |         
    0x0000a154 blx 0x2f88                            |         r0 = cxa_finalize ();
    0x0000a158 ldr r3, [r0]                          |         r3 = *(r0);
    0x0000a15a mov r8, r0                            |         r8 = r0;
    0x0000a15c cmp r3, 0x11                          |         
                                                     |         if (r3 != 0x11) {
    0x0000a15e bne 0xa1ee                            |             goto label_3;
                                                     |         }
    0x0000a160 mov.w r1, 0x4000                      |         r1 = 0x4000;
    0x0000a164 mov r0, r4                            |         r0 = r4;
    0x0000a166 blx 0x2730                            |         r0 = open (r0, r1, r2);
    0x0000a16a cmp r0, 0                             |         
                                                     |         if (r0 < 0) {
    0x0000a16c blt 0xa22c                            |             goto label_4;
                                                     |         }
    0x0000a16e bl 0xa014                             |         r0 = fcn_0000a014 (r0);
    0x0000a172 cmp r0, 0                             |         
                                                     |         if (r0 != 0) {
    0x0000a174 bne 0xa216                            |             goto label_5;
                                                     |         }
                                                     |     }
    0x0000a176 ldr r3, [pc, 0xd4]                    |     
    0x0000a178 add.w r8, sp, 0x54                    |     r8 += s1;
    0x0000a17c movs r2, 0x40                         |     r2 = 0x40;
    0x0000a17e movs r1, 1                            |     r1 = 1;
    0x0000a180 mov r0, r8                            |     r0 = r8;
    0x0000a182 strd r5, r6, [sp]                     |     __asm ("strd r5, r6, [sp]");
    0x0000a186 add r3, pc                            |     r3 = 0x143d8;
    0x0000a188 blx 0x2e80                            |     strncmp (r0, r1, r2);
    0x0000a18a mrc p6, 3, r4, c10, c9, 1             |     __asm ("mrc p6, 3, r4, c10, c9, 1");
    0x0000a18e mov r0, r8                            |     r0 = r8;
    0x0000a190 bl 0x10804                            |     r0 = fcn_00010804 (r0, r1);
    0x0000a194 cmp r0, 0                             |     
                                                     |     if (r0 < 0) {
    0x0000a196 blt 0xa20e                            |         goto label_6;
                                                     |     }
    0x0000a198 ldr r3, [pc, 0xb4]                    |     
    0x0000a19a add r5, sp, 0x94                      |     r5 += var_94h;
    0x0000a19c movs r1, 1                            |     r1 = 1;
    0x0000a19e mov.w r2, 0x100                       |     r2 = 0x100;
    0x0000a1a2 mov r0, r5                            |     r0 = r5;
    0x0000a1a4 strd r8, r4, [sp, 4]                  |     __asm ("strd r8, r4, [var_0h_2]");
    0x0000a1a8 add r3, pc                            |     r3 = 0x143fc;
    0x0000a1aa str r6, [sp]                          |     *(sp) = r6;
    0x0000a1ac blx 0x2e80                            |     strncmp (r0, r1, r2);
    0x0000a1b0 ldr r0, [pc, 0xa0]                    |     
    0x0000a1b2 movs r1, 0                            |     r1 = 0;
    0x0000a1b4 add r0, pc                            |     r0 = 0x1440c;
    0x0000a1b6 blx 0x29f0                            |     r0 = fcn_000029f0 ();
                                                     |     if (r0 == 0) {
    0x0000a1ba cbz r0, 0xa21c                        |         goto label_7;
                                                     |     }
                                                     | label_1:
    0x0000a1bc ldr r2, [pc, 0x98]                    |     
    0x0000a1be movs r3, 0                            |     r3 = 0;
    0x0000a1c0 mov r1, r6                            |     r1 = r6;
    0x0000a1c2 str r5, [sp]                          |     *(sp) = r5;
    0x0000a1c4 add r2, pc                            |     r2 = 0x14420;
    0x0000a1c6 mov r0, r2                            |     r0 = r2;
    0x0000a1c8 blx 0x2c70                            |     r0 = ctype_b_loc ();
    0x0000a1cc cmp r0, 0                             |     
    0x0000a1ce it ge                                 |     
                                                     |     if (r0 < 0) {
    0x0000a1d0 movge r0, 0                           |         r0 = 0;
                                                     |     }
                                                     |     if (r0 < 0) {
    0x0000a1d2 blt 0xa202                            |         goto label_8;
                                                     |     }
                                                     |     do {
                                                     | label_0:
    0x0000a1d4 ldr r2, [pc, 0x84]                    |         
    0x0000a1d6 ldr r3, [pc, 0x6c]                    |         r3 = *(0xa246);
    0x0000a1d8 add r2, pc                            |         r2 = 0x14438;
    0x0000a1da ldr r3, [r2, r3]                      |         r3 = *(0x14438);
    0x0000a1dc ldr r2, [r3]                          |         r2 = *(0x14438);
    0x0000a1de ldr r3, [sp, 0x194]                   |         r3 = var_194h;
    0x0000a1e0 eors r2, r3                           |         r2 ^= r3;
    0x0000a1e2 mov.w r3, 0                           |         r3 = 0;
                                                     |         if (r2 != r3) {
    0x0000a1e6 bne 0xa23c                            |             goto label_9;
                                                     |         }
    0x0000a1e8 add sp, 0x198                         |         
    0x0000a1ea pop.w {r4, r5, r6, r7, r8, pc}        |         
                                                     | label_3:
    0x0000a1ee ldr r1, [pc, 0x70]                    |         
    0x0000a1f0 movs r0, 2                            |         r0 = 2;
    0x0000a1f2 mov r3, r4                            |         r3 = r4;
    0x0000a1f4 mov r2, r6                            |         r2 = r6;
    0x0000a1f6 add r1, pc                            |         r1 = 0x1445c;
    0x0000a1f8 bl 0xfcdc                             |         fcn_0000fcdc (r0);
    0x0000a1fc ldr.w r0, [r8]                        |         r0 = *(r8);
    0x0000a200 b 0xa1d4                              |         
                                                     |     } while (1);
                                                     | label_8:
    0x0000a202 ldr r1, [pc, 0x60]                    |     
    0x0000a204 mov r2, r6                            |     r2 = r6;
    0x0000a206 movs r0, 2                            |     r0 = 2;
    0x0000a208 add r1, pc                            |     r1 = 0x14472;
    0x0000a20a bl 0xfcdc                             |     r0 = fcn_0000fcdc (r0);
                                                     | label_6:
    0x0000a20e blx 0x2f88                            |     r0 = cxa_finalize ();
    0x0000a212 ldr r0, [r0]                          |     r0 = *(r0);
    0x0000a214 b 0xa1d4                              |     goto label_0;
                                                     | label_5:
    0x0000a216 ldr.w r0, [r8]                        |     r0 = *(r8);
    0x0000a21a b 0xa1d4                              |     goto label_0;
                                                     | label_7:
    0x0000a21c ldr r1, [pc, 0x48]                    |     
    0x0000a21e mov.w r2, 0x100                       |     r2 = 0x100;
    0x0000a222 mov r0, r5                            |     r0 = r5;
    0x0000a224 add r1, pc                            |     r1 = 0x14490;
    0x0000a226 blx 0x2860                            |     fcn_00002860 ();
    0x0000a22a b 0xa1bc                              |     goto label_1;
                                                     | label_4:
    0x0000a22c ldr r1, [pc, 0x3c]                    |     
    0x0000a22e movs r0, 2                            |     r0 = 2;
    0x0000a230 add r1, pc                            |     r1 = 0x144a0;
    0x0000a232 bl 0xfcdc                             |     fcn_0000fcdc (r0);
    0x0000a236 ldr.w r0, [r8]                        |     r0 = *(r8);
    0x0000a23a b 0xa1d4                              |     goto label_0;
                                                     | label_9:
    0x0000a23c blx 0x2cdc                            |     fprintf_chk ()
    0x0000a240 ldr r3, [pc, 0xb8]                    |     r3 = *(0xa2fc);
    0x0000a242 movs r2, r0                           |     r2 = r0;
    0x0000a244 lsls r4, r1, 0xd                      |     r4 = r1 << 0xd;
    0x0000a246 movs r0, r0                           |     
    0x0000a248 invalid                               |     
                                                     | }
    ; assembly                               | /* r2dec pseudo code output */
                                             | /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/sbin/fwmgr @ 0xa40c */
                                             | #include <stdint.h>
                                             |  
    ; (fcn) fcn.0000a40c ()                  | void fcn_0000a40c () {
                                             |     int16_t var_0h;
                                             |     int16_t var_5ch;
                                             |     int16_t var_6ch;
    0x0000a40c ldrsbgt pc, [r8], pc          |     __asm ("ldrsbgt pc, [r8], pc");
    0x0000a410 movs r3, 1                    |     r3 = 1;
    0x0000a412 push {r4, r5, lr}             |     
    0x0000a414 sub sp, 0x74                  |     
    0x0000a416 ldr r4, [pc, 0x94]            |     
    0x0000a418 movs r2, 0x10                 |     r2 = 0x10;
    0x0000a41a add ip, pc                    |     
    0x0000a41c add r1, sp, 0x5c              |     r1 += var_5ch;
    0x0000a41e ldr r0, [pc, 0x90]            |     
    0x0000a420 ldr.w r4, [ip, r4]            |     r4 = *((ip + r4));
    0x0000a424 add r0, pc                    |     r0 = 0x148da;
    0x0000a426 ldr r4, [r4]                  |     r4 = *(0xa4ae);
    0x0000a428 str r4, [sp, 0x6c]            |     var_6ch = r4;
    0x0000a42a mov.w r4, 0                   |     r4 = 0;
    0x0000a42e bl 0x10338                    |     r0 = fcn_00010338 (r0, r1, r2, r3);
                                             |     if (r0 != 0) {
    0x0000a432 cbnz r0, 0xa470               |         goto label_2;
                                             |     }
    0x0000a434 ldrb.w r3, [sp, 0x5c]         |     r3 = var_5ch;
    0x0000a438 mov r4, r0                    |     r4 = r0;
    0x0000a43a sub.w r2, r3, 0x30            |     r2 = r3 - 0x30;
    0x0000a43e cmp r2, 1                     |     
                                             |     if (r2 > 1) {
    0x0000a440 bhi 0xa474                    |         goto label_3;
                                             |     }
    0x0000a442 cmp r3, 0x30                  |     
                                             |     if (r3 == 0x30) {
    0x0000a444 beq 0xa458                    |         goto label_0;
                                             |     }
    0x0000a446 ldr r5, [pc, 0x6c]            |     
    0x0000a448 mov r1, sp                    |     r1 = sp;
    0x0000a44a add r5, pc                    |     r5 = 0x14904;
    0x0000a44c mov r0, r5                    |     r0 = r5;
    0x0000a44e blx 0x2f28                    |     r0 = add_key ();
    0x0000a452 mov r4, r0                    |     r4 = r0;
                                             |     if (r0 == 0) {
    0x0000a454 cbz r0, 0xa482                |         goto label_4;
                                             |     }
                                             | label_1:
    0x0000a456 movs r0, 1                    |     r0 = 1;
                                             |     do {
                                             | label_0:
    0x0000a458 ldr r2, [pc, 0x5c]            |         
    0x0000a45a ldr r3, [pc, 0x50]            |         r3 = *(0xa4ae);
    0x0000a45c add r2, pc                    |         r2 = 0x14918;
    0x0000a45e ldr r3, [r2, r3]              |         r3 = *(0x14918);
    0x0000a460 ldr r2, [r3]                  |         r2 = *(0x14918);
    0x0000a462 ldr r3, [sp, 0x6c]            |         r3 = var_6ch;
    0x0000a464 eors r2, r3                   |         r2 ^= r3;
    0x0000a466 mov.w r3, 0                   |         r3 = 0;
                                             |         if (r2 != r3) {
    0x0000a46a bne 0xa4a4                    |             goto label_5;
                                             |         }
    0x0000a46c add sp, 0x74                  |         
    0x0000a46e pop {r4, r5, pc}              |         
                                             | label_2:
    0x0000a470 movs r0, 0                    |         r0 = 0;
    0x0000a472 b 0xa458                      |         
                                             |     } while (1);
                                             | label_3:
    0x0000a474 ldr r1, [pc, 0x44]            |     
    0x0000a476 movs r0, 4                    |     r0 = 4;
    0x0000a478 add r1, pc                    |     r1 = 0x14938;
    0x0000a47a bl 0xfcdc                     |     fcn_0000fcdc (r0);
    0x0000a47e mov r0, r4                    |     r0 = r4;
    0x0000a480 b 0xa458                      |     goto label_0;
                                             | label_4:
    0x0000a482 ldr r1, [pc, 0x3c]            |     
    0x0000a484 mov r2, r0                    |     r2 = r0;
    0x0000a486 mov r0, r5                    |     r0 = r5;
    0x0000a488 add r1, pc                    |     r1 = 0x1494e;
    0x0000a48a bl 0x10554                    |     fcn_00010554 (r0, r1, r2);
    0x0000a48e movw r0, 0xc350               |     r0 = 0xc350;
    0x0000a492 blx 0x2998                    |     fcn_00002998 ();
    0x0000a496 ldr r1, [pc, 0x2c]            |     
    0x0000a498 mov r2, r4                    |     r2 = r4;
    0x0000a49a mov r0, r5                    |     r0 = r5;
    0x0000a49c add r1, pc                    |     r1 = 0x14966;
    0x0000a49e bl 0x10554                    |     fcn_00010554 (r0, r1, r2);
    0x0000a4a2 b 0xa456                      |     goto label_1;
                                             | label_5:
    0x0000a4a4 blx 0x2cdc                    |     fprintf_chk ()
    0x0000a4a8 ldr r0, [pc, 0x88]            |     r0 = *(0xa534);
    0x0000a4aa movs r2, r0                   |     r2 = r0;
    0x0000a4ac lsls r4, r1, 0xd              |     r4 = r1 << 0xd;
    0x0000a4ae movs r0, r0                   |     
    0x0000a4b0 invalid                       |     
                                             | }
    ; assembly                                   | /* r2dec pseudo code output */
                                                 | /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/sbin/fwmgr @ 0xa4c8 */
                                                 | #include <stdint.h>
                                                 |  
    ; (fcn) fcn.0000a4c8 ()                      | void fcn_0000a4c8 (int16_t arg1) {
                                                 |     int16_t var_0h;
                                                 |     int32_t var_0h_2;
                                                 |     int16_t var_8h;
                                                 |     char * s1;
                                                 |     char * var_a4h;
                                                 |     char * var_e4h;
                                                 |     int16_t var_1e4h;
                                                 |     r0 = arg1;
    0x0000a4c8 rscslt fp, sl, r0, ror r5         |     __asm ("rscslt fp, sl, r0, ror r5");
    0x0000a4cc ldr r6, [pc, 0xa4]                |     
    0x0000a4ce mov r4, r0                        |     r4 = r0;
    0x0000a4d0 add r5, sp, 0x64                  |     r5 += s1;
    0x0000a4d2 movs r1, 1                        |     r1 = 1;
    0x0000a4d4 str r0, [sp]                      |     *(sp) = r0;
    0x0000a4d6 movs r2, 0x40                     |     r2 = 0x40;
    0x0000a4d8 ldr r0, [pc, 0x9c]                |     r0 = *(0xa578);
    0x0000a4da add r6, pc                        |     r6 = 0x14a52;
    0x0000a4dc ldr r3, [pc, 0x9c]                |     
    0x0000a4de ldr r0, [r6, r0]                  |     
    0x0000a4e0 add r3, pc                        |     r3 = 0x14a60;
    0x0000a4e2 ldr r0, [r0]                      |     r0 = *(0x14a52);
    0x0000a4e4 str r0, [sp, 0x1e4]               |     var_1e4h = r0;
    0x0000a4e6 mov.w r0, 0                       |     r0 = 0;
    0x0000a4ea mov r0, r5                        |     r0 = r5;
    0x0000a4ec blx 0x2e80                        |     strncmp (r0, r1, r2);
    0x0000a4f0 add r1, sp, 8                     |     r1 += var_8h;
    0x0000a4f2 mov r0, r5                        |     r0 = r5;
    0x0000a4f4 blx 0x2f28                        |     r0 = add_key ();
                                                 |     if (r0 != 0) {
    0x0000a4f8 cbnz r0, 0xa554                   |         goto label_1;
                                                 |     }
    0x0000a4fa ldr r2, [pc, 0x84]                |     
    0x0000a4fc add r6, sp, 0xa4                  |     r6 += var_a4h;
    0x0000a4fe ldr r3, [pc, 0x84]                |     
    0x0000a500 movs r1, 1                        |     r1 = 1;
    0x0000a502 mov r0, r6                        |     r0 = r6;
    0x0000a504 add r2, pc                        |     r2 = 0x14a8a;
    0x0000a506 strd r2, r4, [sp]                 |     __asm ("strd r2, r4, [sp]");
    0x0000a50a add r3, pc                        |     r3 = 0x14a94;
    0x0000a50c movs r2, 0x40                     |     r2 = 0x40;
    0x0000a50e add r4, sp, 0xe4                  |     r4 += var_e4h;
    0x0000a510 blx 0x2e80                        |     strncmp (r0, r1, r2);
    0x0000a514 ldr r3, [pc, 0x70]                |     
    0x0000a516 mov.w r2, 0x100                   |     r2 = 0x100;
    0x0000a51a movs r1, 1                        |     r1 = 1;
    0x0000a51c mov r0, r4                        |     r0 = r4;
    0x0000a51e strd r5, r6, [sp]                 |     __asm ("strd r5, r6, [sp]");
    0x0000a522 add r3, pc                        |     r3 = 0x14aae;
    0x0000a524 blx 0x2e80                        |     strncmp (r0, r1, r2);
    0x0000a528 ldr r2, [pc, 0x60]                |     
    0x0000a52a movs r3, 1                        |     r3 = 1;
    0x0000a52c mov r1, r6                        |     r1 = r6;
    0x0000a52e str r4, [sp]                      |     *(sp) = r4;
    0x0000a530 add r2, pc                        |     r2 = 0x14ac0;
    0x0000a532 mov r0, r2                        |     r0 = r2;
    0x0000a534 blx 0x2c70                        |     r0 = ctype_b_loc ();
    0x0000a538 cmp r0, 0                         |     
                                                 |     if (r0 < 0) {
    0x0000a53a blt 0xa562                        |         goto label_2;
                                                 |     }
                                                 |     do {
                                                 | label_0:
    0x0000a53c ldr r2, [pc, 0x50]                |         
    0x0000a53e ldr r3, [pc, 0x38]                |         r3 = *(0xa57a);
    0x0000a540 add r2, pc                        |         r2 = 0x14ad4;
    0x0000a542 ldr r3, [r2, r3]                  |         r3 = *(0x14ad4);
    0x0000a544 ldr r2, [r3]                      |         r2 = *(0x14ad4);
    0x0000a546 ldr r3, [sp, 0x1e4]               |         r3 = var_1e4h;
    0x0000a548 eors r2, r3                       |         r2 ^= r3;
    0x0000a54a mov.w r3, 0                       |         r3 = 0;
                                                 |         if (r2 != r3) {
    0x0000a54e bne 0xa570                        |             goto label_3;
                                                 |         }
    0x0000a550 add sp, 0x1e8                     |         
    0x0000a552 pop {r4, r5, r6, pc}              |         
                                                 | label_1:
    0x0000a554 ldr r1, [pc, 0x3c]                |         
    0x0000a556 mov r2, r5                        |         r2 = r5;
    0x0000a558 movs r0, 5                        |         r0 = 5;
    0x0000a55a add r1, pc                        |         r1 = 0x14af2;
    0x0000a55c bl 0xfcdc                         |         fcn_0000fcdc (r0);
    0x0000a560 b 0xa53c                          |         
                                                 |     } while (1);
                                                 | label_2:
    0x0000a562 ldr r1, [pc, 0x34]                |     
    0x0000a564 mov r2, r6                        |     r2 = r6;
    0x0000a566 movs r0, 4                        |     r0 = 4;
    0x0000a568 add r1, pc                        |     r1 = 0x14b06;
    0x0000a56a bl 0xfcdc                         |     fcn_0000fcdc (r0);
    0x0000a56e b 0xa53c                          |     goto label_0;
                                                 | label_3:
    0x0000a570 blx 0x2cdc                        |     fprintf_chk ()
    0x0000a574 bx ip                             |     return void (*ip)() ();
                                                 | }
    ; assembly                                                   | /* r2dec pseudo code output */
                                                                 | /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/sbin/fwmgr @ 0xa59c */
                                                                 | #include <stdint.h>
                                                                 |  
                                                                 | #define BIT_MASK(t,v) ((t)(-((v)!= 0)))&(((t)-1)>>((sizeof(t)*CHAR_BIT)-(v)))
                                                                 |  
    ; (fcn) fcn.0000a59c ()                                      | void fcn_0000a59c () {
                                                                 |     int16_t var_26ch;
                                                                 |     int16_t var_0h;
                                                                 |     int16_t var_4h;
                                                                 |     int16_t var_3h;
                                                                 |     int16_t var_10h;
                                                                 |     int16_t var_1000h;
                                                                 |     int32_t var_0h_2;
    0x0000a59c bmi 0x131cad0                                     |     
    0x0000a5a0 push.w {r4, r5, r6, r7, r8, sb, sl, lr}           |     
    0x0000a5a4 sub.w sp, sp, 0x1000                              |     
    0x0000a5a8 add r1, pc                                        |     r1 += pc;
    0x0000a5aa sub sp, 0x10                                      |     
    0x0000a5ac add.w r0, sp, 0x1000                              |     r0 += var_1000h;
    0x0000a5b0 ldr r2, [r1, r2]                                  |     r2 = *((r1 + r2));
    0x0000a5b2 adds r0, 0xc                                      |     r0 += 0xc;
    0x0000a5b4 ldr r5, [pc, 0x11c]                               |     
    0x0000a5b6 ldr r3, [pc, 0x120]                               |     r3 = *(0xa6da);
    0x0000a5b8 ldr r2, [r2]                                      |     r2 = *(r2);
    0x0000a5ba str r2, [r0]                                      |     *(r0) = r2;
    0x0000a5bc mov.w r2, 0                                       |     r2 = 0;
    0x0000a5c0 ldr r6, [pc, 0x118]                               |     
    0x0000a5c2 add r5, pc                                        |     r5 = 0x14c9a;
    0x0000a5c4 ldr r3, [r5, r3]                                  |     
    0x0000a5c6 add r6, pc                                        |     r6 = 0x14ca6;
    0x0000a5c8 ldr r3, [r3]                                      |     
    0x0000a5ca ldr r3, [r3, 0x64]                                |     r3 = *(0x14cfe);
    0x0000a5cc blx r3                                            |     uint32_t (*r3)(uint32_t, uint32_t, uint32_t, uint32_t) (r0, r1, r2, r3);
    0x0000a5ce ldr r2, [pc, 0x110]                               |     
    0x0000a5d0 movs r3, 0                                        |     r3 = 0;
    0x0000a5d2 ldr r1, [pc, 0x110]                               |     
    0x0000a5d4 add r2, pc                                        |     r2 = 0x14cba;
    0x0000a5d6 add r1, pc                                        |     r1 = 0x14cc0;
    0x0000a5d8 mov r0, r2                                        |     r0 = r2;
    0x0000a5da str r1, [sp]                                      |     *(sp) = r1;
    0x0000a5dc mov r1, r6                                        |     r1 = r6;
    0x0000a5de blx 0x2c70                                        |     r0 = ctype_b_loc ();
    0x0000a5e2 cmp r0, 0                                         |     
                                                                 |     if (r0 < 0) {
    0x0000a5e4 blt 0xa68a                                        |         goto label_2;
                                                                 |     }
    0x0000a5e6 bl 0xa378                                         |     r0 = fcn_0000a378 ();
    0x0000a5ea mov r4, r0                                        |     r4 = r0;
                                                                 |     if (r0 == 0) {
    0x0000a5ec cbz r0, 0xa61a                                    |         goto label_3;
                                                                 |     }
                                                                 | label_1:
    0x0000a5ee blx 0x2f88                                        |     r0 = cxa_finalize ();
    0x0000a5f2 ldr r4, [r0]                                      |     r4 = *(r0);
                                                                 |     do {
                                                                 | label_0:
    0x0000a5f4 ldr r2, [pc, 0xf0]                                |         
    0x0000a5f6 add.w r1, sp, 0x1000                              |         r1 += var_1000h;
    0x0000a5fa ldr r3, [pc, 0xd4]                                |         r3 = *(0xa6d2);
    0x0000a5fc adds r1, 0xc                                      |         r1 += 0xc;
    0x0000a5fe add r2, pc                                        |         r2 = 0x14cea;
    0x0000a600 ldr r3, [r2, r3]                                  |         r3 = *(0x14cea);
    0x0000a602 ldr r2, [r3]                                      |         r2 = *(0x14cea);
    0x0000a604 ldr r3, [r1]                                      |         r3 = *(r1);
    0x0000a606 eors r2, r3                                       |         r2 ^= r3;
    0x0000a608 mov.w r3, 0                                       |         r3 = 0;
                                                                 |         if (r2 != r3) {
    0x0000a60c bne 0xa6c6                                        |             goto label_4;
                                                                 |         }
    0x0000a60e mov r0, r4                                        |         r0 = r4;
    0x0000a610 add.w sp, sp, 0x1000                              |         
    0x0000a614 add sp, 0x10                                      |         
    0x0000a616 pop.w {r4, r5, r6, r7, r8, sb, sl, pc}            |         
                                                                 | label_3:
    0x0000a61a ldr r0, [pc, 0xd0]                                |         
    0x0000a61c movs r1, 2                                        |         r1 = 2;
    0x0000a61e add r0, pc                                        |         r0 = 0x14d10;
    0x0000a620 blx 0x2730                                        |         r0 = open (r0, r1, r2);
    0x0000a624 subs.w r8, r0, 0                                  |         r8 = r0 - 0;
                                                                 |         if (r8 < r0) {
    0x0000a628 blt 0xa6ae                                        |             goto label_5;
                                                                 |         }
    0x0000a62a add.w sb, sp, 0x10                                |         sb += var_10h;
    0x0000a62e mov.w r2, 0xf00                                   |         r2 = 0xf00;
    0x0000a632 sub.w r1, sb, 3                                   |         r1 -= var_3h;
    0x0000a636 sub.w sl, sb, 4                                   |         sl -= var_4h;
    0x0000a63a blx 0x29d8                                        |         r0 = fcn_000029d8 ();
    0x0000a63e subs r7, r0, 0                                    |         r7 = r0 - 0;
                                                                 |         if (r7 < r0) {
    0x0000a640 blt 0xa69c                                        |             goto label_6;
                                                                 |         }
    0x0000a642 add.w r3, sb, r7                                  |         r3 = sb + r7;
    0x0000a646 movs r2, 0xa                                      |         r2 = 0xa;
    0x0000a648 strb r2, [r3, -0x3]                               |         *((r3 - 0x3)) = r2;
    0x0000a64c mov r1, r6                                        |         r1 = r6;
    0x0000a64e strb r4, [r3, -0x2]                               |         *((r3 - 0x2)) = r4;
    0x0000a652 mov r0, sl                                        |         r0 = sl;
    0x0000a654 strb r2, [sb, -0x4]                               |         *((sb - 0x4)) = r2;
    0x0000a658 bl 0xa270                                         |         fcn_0000a270 (r0);
    0x0000a65c ldr r3, [pc, 0x90]                                |         
    0x0000a65e ldr r3, [r5, r3]                                  |         r3 = *((r5 + r3));
    0x0000a660 ldr r3, [r3]                                      |         r3 = *(0xa6f0);
    0x0000a662 cmp r3, 1                                         |         
                                                                 |         if (r3 >= 1) {
    0x0000a664 bls 0xa670                                        |             
    0x0000a666 ldr r1, [pc, 0x8c]                                |             
    0x0000a668 mov r0, sl                                        |             r0 = sl;
    0x0000a66a add r1, pc                                        |             r1 = 0x14d64;
    0x0000a66c bl 0xa270                                         |             fcn_0000a270 (r0);
                                                                 |         }
    0x0000a670 movs r3, 0                                        |         r3 = 0;
    0x0000a672 sub.w r1, sb, 3                                   |         r1 -= var_3h;
    0x0000a676 mov r2, r7                                        |         r2 = r7;
    0x0000a678 mov r0, r8                                        |         r0 = r8;
    0x0000a67a blx 0x2d70                                        |         r0 = fcn_00002d70 ();
    0x0000a67e cmp r0, r7                                        |         
                                                                 |         if (r0 < r7) {
    0x0000a680 blt 0xa6c0                                        |             goto label_7;
                                                                 |         }
    0x0000a682 mov r0, r8                                        |         r0 = r8;
    0x0000a684 blx 0x2bf8                                        |         EVP_PKEY_verify_init ();
    0x0000a688 b 0xa5f4                                          |         
                                                                 |     } while (1);
                                                                 | label_2:
    0x0000a68a ldr r1, [pc, 0x6c]                                |     
    0x0000a68c movs r0, 2                                        |     r0 = 2;
    0x0000a68e add r1, pc                                        |     r1 = 0x14d8c;
    0x0000a690 bl 0xfcdc                                         |     r0 = fcn_0000fcdc (r0);
    0x0000a694 blx 0x2f88                                        |     r0 = cxa_finalize ();
    0x0000a698 ldr r4, [r0]                                      |     r4 = *(r0);
    0x0000a69a b 0xa5f4                                          |     goto label_0;
                                                                 | label_6:
    0x0000a69c ldr r1, [pc, 0x5c]                                |     
    0x0000a69e add r1, pc                                        |     r1 = 0x14d9e;
                                                                 |     do {
    0x0000a6a0 movs r0, 2                                        |         r0 = 2;
    0x0000a6a2 bl 0xfcdc                                         |         fcn_0000fcdc (r0);
    0x0000a6a6 mov r0, r8                                        |         r0 = r8;
    0x0000a6a8 bl 0x10978                                        |         fcn_00010978 (r0);
    0x0000a6ac b 0xa5ee                                          |         goto label_1;
                                                                 | label_5:
    0x0000a6ae ldr r1, [pc, 0x50]                                |         
    0x0000a6b0 movs r0, 2                                        |         r0 = 2;
    0x0000a6b2 add r1, pc                                        |         r1 = 0x14db8;
    0x0000a6b4 bl 0xfcdc                                         |         r0 = fcn_0000fcdc (r0);
    0x0000a6b8 blx 0x2f88                                        |         r0 = cxa_finalize ();
    0x0000a6bc ldr r4, [r0]                                      |         r4 = *(r0);
    0x0000a6be b 0xa5f4                                          |         goto label_0;
                                                                 | label_7:
    0x0000a6c0 ldr r1, [pc, 0x40]                                |         
    0x0000a6c2 add r1, pc                                        |         r1 = 0x14dca;
    0x0000a6c4 b 0xa6a0                                          |         
                                                                 |     } while (1);
                                                                 | label_4:
    0x0000a6c6 blx 0x2cdc                                        |     fprintf_chk ()
    0x0000a6ca nop                                               |     
    0x0000a6cc mov ip, r2                                        |     
    0x0000a6ce movs r2, r0                                       |     r2 = r0;
    0x0000a6d0 lsls r4, r1, 0xd                                  |     r4 = r1 << 0xd;
    0x0000a6d2 movs r0, r0                                       |     
    0x0000a6d4 mov r2, pc                                        |     r2 = pc;
    0x0000a6d6 movs r2, r0                                       |     r2 = r0;
    0x0000a6d8 lsls r4, r6, 0xd                                  |     r4 = r6 << 0xd;
    0x0000a6da movs r0, r0                                       |     
    0x0000a6dc vhadd.s32 d0, d14, d0                             |     __asm ("vhadd.s32 d0, d14, d0");
    0x0000a6e0 cdp p0, 0xe, c0, c0, c0, 0                        |     __asm ("cdp p0, 0xe, c0, c0, c0, 0");
    0x0000a6e2 movs r0, r0                                       |     
    0x0000a6e4 bvs 0xa72c                                        |     __asm ("bvs 0xa72c");
    0x0000a6e6 movs r0, r0                                       |     
    0x0000a6e8 mov r6, r7                                        |     r6 = r7;
    0x0000a6ea movs r2, r0                                       |     r2 = r0;
    0x0000a6ec eor r0, r6, 0                                     |     r0 = r6 ^ 0;
    0x0000a6f0 lsls r4, r6, 0xb                                  |     r4 = r6 << 0xb;
    0x0000a6f2 movs r0, r0                                       |     
    0x0000a6f4 ldm r6, {r1, r3, r5, r6, r7}                      |     r1 = *(r6);
                                                                 |     r3 = *((r6 + 4));
                                                                 |     r5 = *((r6 + 8));
                                                                 |     r6 = *((r6 + 12));
                                                                 |     r7 = *((r6 + 16));
    0x0000a6f6 movs r0, r0                                       |     
    0x0000a6f8 vaddl.s32 q8, d14, d0                             |     __asm ("vaddl.s32 q8, d14, d0");
    0x0000a6fc bics r0, r2, 0                                    |     __asm ("bics r0, r2, 0");
    0x0000a700 vext.32 d16, d14, d0, 0                           |     __asm ("vext.32 d16, d14, d0, 0");
    0x0000a704 bic r0, lr, 0                                     |     r0 = BIT_MASK (lr, 0);
                                                                 | }
    ; assembly                                                       | /* r2dec pseudo code output */
                                                                     | /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/sbin/fwmgr @ 0xa708 */
                                                                     | #include <stdint.h>
                                                                     |  
    ; (fcn) fcn.0000a708 ()                                          | void fcn_0000a708 (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_24h;
                                                                     |     int32_t var_10h_2;
                                                                     |     int16_t var_6ch;
                                                                     |     char * s1;
                                                                     |     int16_t var_26ch;
                                                                     |     int16_t var_274h;
    0x0000a708 ldr.w r2, [pc, 0xc20]                                 |     r2 = *(0x0000b32c);
    0x0000a70c ldr.w r3, [pc, 0xc20]                                 |     
    0x0000a710 push.w {r4, r5, r6, r7, r8, sb, sl, fp, lr}           |     
    0x0000a714 sub.w sp, sp, 0x274                                   |     
    0x0000a716 ldrb r5, [r3, 0x14]                                   |     r5 = *((r3 + 0x14));
    0x0000a718 add r2, pc                                            |     r2 += pc;
    0x0000a71a ldr.w r4, [pc, 0xc18]                                 |     r4 = *(0x0000b334);
    0x0000a71e ldr r3, [r2, r3]                                      |     r3 = *((r2 + r3));
    0x0000a720 add r4, pc                                            |     r4 += pc;
    0x0000a722 ldr r3, [r3]                                          |     r3 = *(0xb330);
    0x0000a724 str r3, [sp, 0x26c]                                   |     var_26ch = r3;
    0x0000a726 mov.w r3, 0                                           |     r3 = 0;
    0x0000a72a invalid                                               |     
    0x0000a72c cdp2 p3, 6, c11, c15, c8, 2                           |     __asm ("cdp2 p3, 6, c11, c15, c8, 2");
    0x0000a730 ldr.w r3, [pc, 0xc04]                                 |     r3 = *(0xb338);
    0x0000a734 ldr r6, [r4, r3]                                      |     r6 = *((r4 + r3));
    0x0000a736 ldr r2, [r6]                                          |     r2 = *(r6);
    0x0000a738 cmp r2, 0                                             |     
                                                                     |     if (r2 == 0) {
    0x0000a73a beq 0xa7d8                                            |         goto label_41;
                                                                     |     }
    0x0000a73c ldr.w r1, [pc, 0xbfc]                                 |     
    0x0000a740 mov.w r0, -1                                          |     r0 = -1;
    0x0000a744 add r1, pc                                            |     r1 = 0x15a84;
    0x0000a746 bl 0xfcdc                                             |     fcn_0000fcdc (r0);
    0x0000a74a ldr r3, [r6]                                          |     r3 = *(r6);
    0x0000a74c add.w r3, r3, r3, lsl 2                               |     r3 += (r3 << 2);
    0x0000a750 lsls r3, r3, 2                                        |     r3 <<= 2;
                                                                     |     if (r3 == r3) {
    0x0000a752 beq 0xa7d8                                            |         goto label_41;
                                                                     |     }
    0x0000a754 movs r5, 0                                            |     r5 = 0;
    0x0000a756 b 0xa766                                              |     
                                                                     |     while (r0 != 0) {
    0x0000a758 ldr r3, [r6]                                          |         r3 = *(r6);
    0x0000a75a adds r5, 1                                            |         r5++;
    0x0000a75c add.w r3, r3, r3, lsl 2                               |         r3 += (r3 << 2);
    0x0000a760 cmp.w r5, r3, lsl 2                                   |         
                                                                     |         if (r5 >= r3) {
    0x0000a764 bhs 0xa7d8                                            |             goto label_41;
                                                                     |         }
    0x0000a766 movw r0, 0xc350                                       |         r0 = 0xc350;
    0x0000a76a blx 0x2998                                            |         fcn_00002998 ();
    0x0000a76e bl 0xa40c                                             |         r0 = fcn_0000a40c ();
    0x0000a772 cmp r0, 0                                             |         
    0x0000a774 bne 0xa758                                            |         
                                                                     |     }
    0x0000a776 ldr.w r1, [pc, 0xbc8]                                 |     
    0x0000a77a mov.w r0, -1                                          |     r0 = -1;
    0x0000a77e add r1, pc                                            |     r1 = 0x15ac4;
    0x0000a780 bl 0xfcdc                                             |     fcn_0000fcdc (r0);
    0x0000a784 ldr.w r3, [pc, 0xbbc]                                 |     r3 = *(0xb344);
    0x0000a788 ldr r6, [r4, r3]                                      |     r6 = *((r4 + r3));
    0x0000a78a ldr r3, [r6]                                          |     r3 = *(r6);
    0x0000a78c cmp r3, 1                                             |     
                                                                     |     if (r3 == 1) {
    0x0000a78e beq.w 0xad40                                          |         goto label_42;
                                                                     |     }
    0x0000a792 ldr.w r0, [pc, 0xbb4]                                 |     
    0x0000a796 add r0, pc                                            |     r0 = 0x15ae4;
    0x0000a798 bl 0x1070c                                            |     r0 = fcn_0001070c (r0);
    0x0000a79c mov r7, r0                                            |     r7 = r0;
    0x0000a79e cmp r0, 0                                             |     
                                                                     |     if (r0 == 0) {
    0x0000a7a0 beq 0xa864                                            |         goto label_43;
                                                                     |     }
    0x0000a7a2 ldr.w r1, [pc, 0xba8]                                 |     
    0x0000a7a6 movs r0, 5                                            |     r0 = 5;
    0x0000a7a8 add r1, pc                                            |     r1 = 0x15afa;
    0x0000a7aa bl 0xfcdc                                             |     fcn_0000fcdc (r0);
    0x0000a7ae ldr.w r1, [pc, 0xba0]                                 |     
    0x0000a7b2 mov r0, r7                                            |     r0 = r7;
    0x0000a7b4 add r1, pc                                            |     r1 = 0x15b0a;
    0x0000a7b6 blx 0x2f70                                            |     r0 = vdprintf_chk ();
    0x0000a7ba cmp r0, 0                                             |     
                                                                     |     if (r0 == 0) {
    0x0000a7bc beq.w 0xad44                                          |         goto label_44;
                                                                     |     }
    0x0000a7c0 ldr.w r1, [pc, 0xb90]                                 |     
    0x0000a7c4 mov r0, r7                                            |     r0 = r7;
    0x0000a7c6 add r1, pc                                            |     r1 = 0x15b1e;
    0x0000a7c8 blx 0x2f70                                            |     r0 = vdprintf_chk ();
    0x0000a7cc cmp r0, 0                                             |     
                                                                     |     if (r0 != 0) {
    0x0000a7ce bne.w 0xaec4                                          |         goto label_45;
                                                                     |     }
    0x0000a7d2 movs r3, 2                                            |     r3 = 2;
    0x0000a7d4 str r3, [r6]                                          |     *(r6) = r3;
    0x0000a7d6 b 0xa86a                                              |     goto label_8;
                                                                     | label_41:
    0x0000a7d8 ldr.w r1, [pc, 0xb7c]                                 |     
    0x0000a7dc movs r0, 5                                            |     r0 = 5;
    0x0000a7de ldr.w r7, [pc, 0xb7c]                                 |     
    0x0000a7e2 add r1, pc                                            |     r1 = 0x15b3e;
    0x0000a7e4 bl 0xfcdc                                             |     fcn_0000fcdc (r0);
    0x0000a7e6 invalid                                               |     
    0x0000a7ea subs r3, 0x58                                         |     r3 -= 0x58;
    0x0000a7ec add r7, pc                                            |     r7 = 0x15b4e;
    0x0000a7ee movs r2, 1                                            |     r2 = 1;
    0x0000a7f0 ldr r6, [r4, r3]                                      |     r6 = *((r4 + r3));
    0x0000a7f2 str r2, [r6]                                          |     *(r6) = r2;
                                                                     |     do {
                                                                     | label_7:
    0x0000a7f4 ldr.w r3, [pc, 0xb68]                                 |         r3 = *(0xb360);
    0x0000a7f8 movs r5, 0                                            |         r5 = 0;
    0x0000a7fa ldr.w sl, [r4, r3]                                    |         sl = *((r4 + r3));
                                                                     | label_15:
    0x0000a7fe ldr.w r3, [pc, 0xb64]                                 |         r3 = *(0xb366);
    0x0000a802 ldr r3, [r4, r3]                                      |         r3 = *((r4 + r3));
    0x0000a804 ldrb.w sb, [r3]                                       |         sb = *(r3);
    0x0000a808 str r3, [sp, 0x14]                                    |         var_14h = r3;
    0x0000a80a cmp.w sb, 0                                           |         
                                                                     |         if (sb != 0) {
    0x0000a80e bne.w 0xada4                                          |             goto label_46;
                                                                     |         }
    0x0000a812 ldr.w r8, [r6]                                        |         r8 = *(r6);
    0x0000a816 cmp.w r8, 0                                           |         
                                                                     |         if (r8 != 0) {
    0x0000a81a bne 0xa90a                                            |             goto label_47;
                                                                     |         }
                                                                     | label_0:
    0x0000a81c ldr.w fp, [pc, 0xb48]                                 |         
    0x0000a820 add r1, sp, 0x6c                                      |         r1 += var_6ch;
    0x0000a822 movs r3, 1                                            |         r3 = 1;
    0x0000a824 movs r2, 0xff                                         |         r2 = 0xff;
    0x0000a826 str r1, [sp, 0x10]                                    |         var_10h = r1;
    0x0000a828 add fp, pc                                            |         fp = 0x15b94;
    0x0000a82a mov r0, fp                                            |         r0 = fp;
    0x0000a82c bl 0x10338                                            |         fcn_00010338 (r0, r1, r2, r3);
    0x0000a830 ldr r1, [sp, 0x10]                                    |         r1 = var_10h;
    0x0000a832 cmp r0, 0                                             |         
                                                                     |         if (r0 != 0) {
    0x0000a834 bne.w 0xad52                                          |             goto label_48;
                                                                     |         }
    0x0000a838 str r0, [sp, 0x18]                                    |         var_18h = r0;
    0x0000a83a mov r0, r1                                            |         r0 = r1;
    0x0000a83c str r1, [sp, 0x10]                                    |         var_10h = r1;
    0x0000a83e blx 0x2ab0                                            |         fcn_00002ab0 ();
    0x0000a842 ldr r1, [sp, 0x10]                                    |         r1 = var_10h;
    0x0000a844 ldr r3, [sp, 0x18]                                    |         r3 = var_18h;
    0x0000a846 adds r2, r1, r0                                       |         r2 = r1 + r0;
    0x0000a848 ldrb ip, [r2, -0x1]                                   |         ip = *((r2 - 0x1));
    0x0000a84c cmp.w ip, 0xa                                         |         
                                                                     |         if (ip == 0xa) {
    0x0000a850 beq.w 0xb12a                                          |             goto label_49;
                                                                     |         }
    0x0000a854 mov.w ip, 0xa                                         |         
    0x0000a858 mov r8, r1                                            |         r8 = r1;
    0x0000a85a strb.w ip, [r1, r0]                                   |         *((r1 + r0)) = ip;
    0x0000a85e str r3, [sp, 0x10]                                    |         var_10h = r3;
    0x0000a860 strb r3, [r2, 1]                                      |         *((r2 + 1)) = r3;
    0x0000a862 b 0xa9f4                                              |         goto label_9;
                                                                     | label_43:
    0x0000a864 ldr r3, [r6]                                          |         r3 = *(r6);
    0x0000a866 cmp r3, 1                                             |         
    0x0000a868 beq 0xa7f4                                            |         
                                                                     |     } while (r3 == 1);
                                                                     | label_8:
    0x0000a86a ldr.w r3, [pc, 0xb00]                                 |     r3 = *(0xb36e);
    0x0000a86e ldr.w r2, [pc, 0xaf0]                                 |     r2 = *(0xb362);
    0x0000a870 cmp r2, 0xf0                                          |     
    0x0000a872 ldr.w r8, [r4, r3]                                    |     r8 = *((r4 + r3));
    0x0000a876 ldr.w sl, [r4, r2]                                    |     sl = *((r4 + r2));
    0x0000a87a ldr.w r3, [r8]                                        |     r3 = *(r8);
    0x0000a87e ldr r2, [r3, 0xc]                                     |     r2 = *(0xb37a);
    0x0000a880 ldrb.w r3, [sl]                                       |     r3 = *(sl);
    0x0000a884 cmp r3, 0                                             |     
                                                                     |     if (r3 == 0) {
    0x0000a886 beq 0xa94e                                            |         goto label_50;
                                                                     |     }
    0x0000a888 movs r0, 0x22                                         |     r0 = 0x22;
    0x0000a88a blx r2                                                |     r0 = uint32_t (*r2)(uint32_t) (r0);
    0x0000a88c mov r5, r0                                            |     r5 = r0;
    0x0000a88e cmp r0, 0                                             |     
                                                                     |     if (r0 != 0) {
    0x0000a890 bne 0xa94e                                            |         goto label_50;
                                                                     |     }
    0x0000a892 ldr.w r3, [r8]                                        |     r3 = *(r8);
    0x0000a896 movs r0, 0x42                                         |     r0 = 0x42;
    0x0000a898 ldr r3, [r3, 0xc]                                     |     r3 = *((r3 + 0xc));
    0x0000a89a blx r3                                                |     r0 = uint32_t (*r3)(uint32_t, uint32_t) (r0, r3);
    0x0000a89c mov sb, r0                                            |     sb = r0;
    0x0000a89e cmp r0, 0                                             |     
                                                                     |     if (r0 == 0) {
    0x0000a8a0 beq 0xa94e                                            |         goto label_50;
                                                                     |     }
    0x0000a8a2 ldr r3, [r6]                                          |     r3 = *(r6);
                                                                     |     if (r3 == 0) {
    0x0000a8a4 cbnz r3, 0xa8aa                                       |         
    0x0000a8a6 movs r3, 4                                            |         r3 = 4;
    0x0000a8a8 str r3, [r6]                                          |         *(r6) = r3;
                                                                     |     }
    0x0000a8aa ldr.w r1, [pc, 0xac4]                                 |     
    0x0000a8ae movs r0, 7                                            |     r0 = 7;
    0x0000a8b0 ldr.w fp, [pc, 0xac0]                                 |     
    0x0000a8b4 add r1, pc                                            |     r1 = 0x15c2a;
    0x0000a8b6 bl 0xfcdc                                             |     fcn_0000fcdc (r0);
    0x0000a8ba ldr.w r3, [r8]                                        |     r3 = *(r8);
    0x0000a8be add fp, pc                                            |     fp = 0x15c36;
    0x0000a8c0 movs r2, 1                                            |     r2 = 1;
    0x0000a8c2 mov r1, fp                                            |     r1 = fp;
    0x0000a8c4 movs r0, 0x42                                         |     r0 = 0x42;
    0x0000a8c6 ldr r3, [r3, 0x14]                                    |     r3 = *((r3 + 0x14));
    0x0000a8c8 blx r3                                                |     r0 = uint32_t (*r3)(uint32_t, uint32_t, uint32_t, uint32_t) (r0, r1, r2, r3);
    0x0000a8ca cmp r0, 0                                             |     
                                                                     |     if (r0 != 0) {
    0x0000a8cc bne.w 0xaf42                                          |         goto label_51;
                                                                     |     }
                                                                     | label_1:
    0x0000a8d0 ldr r7, [r6]                                          |     r7 = *(r6);
    0x0000a8d2 cmp r7, 1                                             |     
                                                                     |     if (r7 == 1) {
    0x0000a8d4 beq.w 0xae70                                          |         goto label_52;
                                                                     |     }
    0x0000a8d8 mov r0, fp                                            |     r0 = fp;
    0x0000a8da bl 0x9154                                             |     fcn_00009154 (r0, r1, r2, r3, r4, r5, r6);
    0x0000a8de ldr r3, [r6]                                          |     r3 = *(r6);
    0x0000a8e0 cmp r0, 0                                             |     
                                                                     |     if (r0 == 0) {
    0x0000a8e2 beq.w 0xadc8                                          |         goto label_53;
                                                                     |     }
    0x0000a8e6 cmp r3, 4                                             |     
                                                                     |     if (r3 == 4) {
    0x0000a8e8 beq.w 0xadac                                          |         goto label_54;
                                                                     |     }
                                                                     | label_16:
    0x0000a8ec cmp.w sb, 0                                           |     
                                                                     |     if (sb == 0) {
    0x0000a8f0 beq.w 0xadc4                                          |         goto label_55;
                                                                     |     }
                                                                     | label_14:
    0x0000a8f4 ldr.w r3, [pc, 0xa6c]                                 |     r3 = *(0xb364);
    0x0000a8f8 movs r7, 0                                            |     r7 = 0;
    0x0000a8fa ldr.w r8, [r6]                                        |     r8 = *(r6);
    0x0000a8fe ldr r3, [r4, r3]                                      |     r3 = *((r4 + r3));
    0x0000a900 str r3, [sp, 0x14]                                    |     var_14h = r3;
    0x0000a902 strb r7, [r3]                                         |     *(r3) = r7;
    0x0000a904 cmp.w r8, 0                                           |     
                                                                     |     if (r8 == 0) {
    0x0000a908 beq 0xa81c                                            |         goto label_0;
                                                                     |     }
                                                                     | label_47:
    0x0000a90a movs r3, 0                                            |     r3 = 0;
    0x0000a90c str r3, [sp, 0x10]                                    |     var_10h = r3;
                                                                     | label_2:
    0x0000a90e ldrb.w r3, [sl]                                       |     r3 = *(sl);
                                                                     |     if (r3 != 0) {
    0x0000a912 cbz r3, 0xa92c                                        |         
    0x0000a914 ldr.w r3, [pc, 0xa54]                                 |         
    0x0000a918 movs r0, 0x22                                         |         r0 = 0x22;
    0x0000a91a ldr.w r8, [r4, r3]                                    |         r8 = *((r4 + r3));
    0x0000a91e ldr.w r3, [r8]                                        |         r3 = *(r8);
    0x0000a922 ldr r3, [r3, 0xc]                                     |         r3 = *(0xb378);
    0x0000a924 blx r3                                                |         r0 = uint32_t (*r3)(uint32_t, uint32_t) (r0, r3);
    0x0000a926 cmp r0, 0                                             |         
                                                                     |         if (r0 == 0) {
    0x0000a928 beq.w 0xad5e                                          |             goto label_56;
                                                                     |         }
                                                                     |     }
    0x0000a92c cmp r7, 0                                             |     
                                                                     |     if (r7 == 0) {
    0x0000a92e beq.w 0xae9a                                          |         goto label_57;
                                                                     |     }
    0x0000a932 ldr.w r1, [pc, 0xa44]                                 |     
    0x0000a936 movs r2, 4                                            |     r2 = 4;
    0x0000a938 mov r0, r7                                            |     r0 = r7;
    0x0000a93a add r1, pc                                            |     r1 = 0x15cb8;
    0x0000a93c blx 0x2ea4                                            |     r0 = realloc (r0, r1);
    0x0000a940 cmp r0, 0                                             |     
                                                                     |     if (r0 != 0) {
    0x0000a942 bne.w 0xad4a                                          |         goto label_58;
                                                                     |     }
    0x0000a946 ldr.w r8, [pc, 0xa34]                                 |     
    0x0000a94a add r8, pc                                            |     r8 = 0x15ccc;
    0x0000a94c b 0xa9f4                                              |     goto label_9;
                                                                     | label_50:
    0x0000a94e ldr.w r3, [r8]                                        |     r3 = *(r8);
    0x0000a952 movs r0, 0x22                                         |     r0 = 0x22;
    0x0000a954 ldr r3, [r3, 0xc]                                     |     r3 = *((r3 + 0xc));
    0x0000a956 blx r3                                                |     r0 = uint32_t (*r3)(uint32_t, uint32_t) (r0, r3);
    0x0000a958 mov r5, r0                                            |     r5 = r0;
                                                                     |     if (r0 == 0) {
    0x0000a95a cbz r0, 0xa9b8                                        |         goto label_59;
                                                                     |     }
    0x0000a95c ldr.w r1, [pc, 0xa20]                                 |     
    0x0000a960 movs r0, 7                                            |     r0 = 7;
    0x0000a962 ldr.w fp, [pc, 0xa20]                                 |     
    0x0000a966 add r1, pc                                            |     r1 = 0x15cea;
    0x0000a968 bl 0xfcdc                                             |     fcn_0000fcdc (r0);
    0x0000a96c ldr.w r3, [r8]                                        |     r3 = *(r8);
    0x0000a970 add fp, pc                                            |     fp = 0x15cfa;
    0x0000a972 movs r2, 0                                            |     r2 = 0;
    0x0000a974 mov r1, fp                                            |     r1 = fp;
    0x0000a976 movs r0, 0x22                                         |     r0 = 0x22;
    0x0000a978 ldr r3, [r3, 0x14]                                    |     r3 = *((r3 + 0x14));
    0x0000a97a blx r3                                                |     r0 = uint32_t (*r3)(uint32_t, uint32_t, uint32_t, uint32_t) (r0, r1, r2, r3);
    0x0000a97c mov sb, r0                                            |     sb = r0;
    0x0000a97e cmp r0, 0                                             |     
                                                                     |     if (r0 == 0) {
    0x0000a980 beq 0xa8d0                                            |         goto label_1;
                                                                     |     }
    0x0000a982 blx 0x2f88                                            |     r0 = cxa_finalize ();
    0x0000a986 ldr r3, [r0]                                          |     r3 = *(r0);
    0x0000a988 mov r5, r0                                            |     r5 = r0;
    0x0000a98a cmp r3, 0x10                                          |     
                                                                     |     if (r3 == 0x10) {
    0x0000a98c beq.w 0xb18a                                          |         goto label_60;
                                                                     |     }
    0x0000a98e strh r5, [r7, 0x1e]                                   |     *((r7 + 0x1e)) = r5;
    0x0000a990 ldr.w r1, [pc, 0x9f4]                                 |     
    0x0000a994 movs r0, 2                                            |     r0 = 2;
    0x0000a996 add r1, pc                                            |     r1 = 0x15d22;
    0x0000a998 bl 0xfcdc                                             |     fcn_0000fcdc (r0);
    0x0000a99c ldr r3, [r5]                                          |     r3 = *(r5);
    0x0000a99e cmp r3, 0x3d                                          |     
    0x0000a9a0 it ne                                                 |     
                                                                     |     if (r3 != 0x3d) {
    0x0000a9a2 cmpne r3, 0x7e                                        |         __asm ("cmpne r3, 0x7e");
                                                                     |     }
                                                                     |     if (r3 == 0x3d) {
    0x0000a9a4 beq.w 0xaeec                                          |         goto label_61;
                                                                     |     }
    0x0000a9a8 ldr.w r7, [pc, 0x9e0]                                 |     
    0x0000a9ac add r7, pc                                            |     r7 = 0x15d3c;
                                                                     | label_22:
    0x0000a9ae movs r3, 1                                            |     r3 = 1;
    0x0000a9b0 str r3, [r6]                                          |     *(r6) = r3;
    0x0000a9b2 movs r3, 0                                            |     r3 = 0;
    0x0000a9b4 str r3, [sp, 0x10]                                    |     var_10h = r3;
    0x0000a9b6 b 0xa9cc                                              |     goto label_62;
                                                                     | label_59:
    0x0000a9b8 ldr.w r1, [pc, 0x9d4]                                 |     
    0x0000a9bc mov r7, r0                                            |     r7 = r0;
    0x0000a9be movs r0, 5                                            |     r0 = 5;
    0x0000a9c0 add r1, pc                                            |     r1 = 0x15d54;
    0x0000a9c2 bl 0xfcdc                                             |     fcn_0000fcdc (r0);
    0x0000a9c4 vst4.8 {d2[0], d3[0], d4[0], d5[0]}, [fp], r1         |     __asm ("vst4.8 {d2[0], d3[0], d4[0], d5[0]}, [fp], r1");
    0x0000a9c8 str r3, [r6]                                          |     *(r6) = r3;
    0x0000a9ca str r3, [sp, 0x10]                                    |     var_10h = r3;
                                                                     | label_62:
    0x0000a9cc ldr.w r3, [pc, 0x994]                                 |     r3 = *(0xb364);
    0x0000a9d0 ldr r3, [r4, r3]                                      |     r3 = *((r4 + r3));
    0x0000a9d2 ldrb r5, [r3]                                         |     r5 = *(r3);
    0x0000a9d4 str r3, [sp, 0x14]                                    |     var_14h = r3;
    0x0000a9d6 mov sb, r5                                            |     sb = r5;
    0x0000a9d8 cmp r5, 0                                             |     
                                                                     |     if (r5 == 0) {
    0x0000a9da beq 0xa90e                                            |         goto label_2;
                                                                     |     }
    0x0000a9dc mov.w sb, 0                                           |     sb = 0;
    0x0000a9e0 mov r5, sb                                            |     r5 = sb;
                                                                     | label_13:
    0x0000a9e2 ldr.w r8, [pc, 0x9b0]                                 |     
    0x0000a9e6 movs r1, 0                                            |     r1 = 0;
    0x0000a9e8 ldr.w r0, [pc, 0x9ac]                                 |     
    0x0000a9ec add r8, pc                                            |     r8 = 0x15d86;
    0x0000a9ee add r0, pc                                            |     r0 = 0x15d8a;
    0x0000a9f0 bl 0x70c8                                             |     fcn_000070c8 (r0, r1, r2);
                                                                     | label_9:
    0x0000a9f4 ldr.w r0, [pc, 0x9a4]                                 |     
    0x0000a9f8 add r0, pc                                            |     r0 = "Secure boot enabled: %s";
    0x0000a9fa blx 0x2acc                                            |     strtoul (r0, r1, r2);
    0x0000a9fe ldr.w r0, [pc, 0x9a0]                                 |     
    0x0000aa02 mov r1, r8                                            |     r1 = r8;
    0x0000aa04 movs r2, 0                                            |     r2 = 0;
    0x0000aa06 add r0, pc                                            |     r0 = 0x15dac;
    0x0000aa08 bl 0x10554                                            |     fcn_00010554 (r0, r1, r2);
                                                                     | label_10:
    0x0000aa0c ldr r3, [r6]                                          |     r3 = *(r6);
    0x0000aa0e cmp r3, 0                                             |     
    0x0000aa10 ite ne                                                |     
                                                                     |     if (r3 == 0) {
    0x0000aa12 movne r2, 0                                           |         r2 = 0;
                                                                     |     }
                                                                     |     if (r3 != 0) {
    0x0000aa14 andeq r2, r5, 1                                       |         r2 = r5 & 1;
                                                                     |     }
    0x0000aa16 lsls r1, r0, 8                                        |     r1 = r0 << 8;
    0x0000aa18 cmp r2, 0                                             |     
                                                                     |     if (r2 != 0) {
    0x0000aa1a bne.w 0xadea                                          |         goto label_63;
                                                                     |     }
                                                                     | label_17:
    0x0000aa1e ldrb.w r2, [sl]                                       |     r2 = *(sl);
    0x0000aa22 cmp r2, 0                                             |     
                                                                     |     if (r2 == 0) {
    0x0000aa24 beq.w 0xab2e                                          |         goto label_64;
                                                                     |     }
    0x0000aa28 ldr.w r2, [pc, 0x978]                                 |     r2 = *(0xb3a4);
    0x0000aa2c ldr.w fp, [r4, r2]                                    |     fp = *((r4 + r2));
    0x0000aa30 bics r2, r3, 4                                        |     __asm ("bics r2, r3, 4");
    0x0000aa34 ldr.w r1, [fp]                                        |     r1 = *(fp);
                                                                     |     if (r2 != 0) {
    0x0000aa38 beq 0xaa44                                            |         
    0x0000aa3a ldr.w r2, [pc, 0x96c]                                 |         r2 = *(0xb3aa);
    0x0000aa3e movs r0, 1                                            |         r0 = 1;
    0x0000aa40 ldr r2, [r4, r2]                                      |         r2 = *((r4 + r2));
    0x0000aa42 strb r0, [r2]                                         |         *(r2) = r0;
                                                                     |     }
    0x0000aa44 ldr.w r2, [pc, 0x964]                                 |     r2 = *(0xb3ac);
    0x0000aa48 ldr r2, [r4, r2]                                      |     r2 = *((r4 + r2));
    0x0000aa4a ldrb r2, [r2]                                         |     r2 = *(r2);
    0x0000aa4c cmp r2, 0                                             |     
                                                                     |     if (r2 != 0) {
    0x0000aa4e bne.w 0xac24                                          |         goto label_65;
                                                                     |     }
    0x0000aa52 ldr.w r1, [pc, 0x95c]                                 |     r1 = *(0xb3b2);
    0x0000aa56 movs r0, 1                                            |     r0 = 1;
    0x0000aa58 str.w r0, [fp]                                        |     __asm ("str.w r0, [fp]");
    0x0000aa5c ldr r1, [r4, r1]                                      |     r1 = *((r4 + r1));
    0x0000aa5e str r2, [r1]                                          |     *(r1) = r2;
                                                                     | label_5:
    0x0000aa60 cmp r3, 1                                             |     
                                                                     |     if (r3 < 1) {
    0x0000aa62 bls 0xab4a                                            |         goto label_66;
                                                                     |     }
                                                                     |     do {
    0x0000aa64 cmp r5, 0                                             |         
                                                                     |         if (r5 != 0) {
    0x0000aa66 bne.w 0xaba0                                          |             goto label_67;
                                                                     |         }
                                                                     | label_23:
    0x0000aa6a movs r5, 0                                            |         r5 = 0;
                                                                     | label_3:
    0x0000aa6c ldr.w r0, [pc, 0x944]                                 |         
    0x0000aa70 add r0, pc                                            |         r0 = 0x15e28;
    0x0000aa72 blx 0x28d8                                            |         r0 = fcn_000028d8 ();
    0x0000aa76 cmp r0, 0                                             |         
                                                                     |         if (r0 != 0) {
    0x0000aa78 bne.w 0xae62                                          |             goto label_68;
                                                                     |         }
                                                                     | label_19:
    0x0000aa7c ldr r3, [r6]                                          |         r3 = *(r6);
    0x0000aa7e cmp r3, 1                                             |         
                                                                     |         if (r3 == 1) {
    0x0000aa80 beq.w 0xae18                                          |             goto label_69;
                                                                     |         }
    0x0000aa84 ldr.w r3, [pc, 0x924]                                 |         r3 = *(0xb3ac);
    0x0000aa88 ldr r3, [r4, r3]                                      |         r3 = *((r4 + r3));
    0x0000aa8a str r3, [sp, 0x18]                                    |         var_18h = r3;
    0x0000aa8c ldrb r3, [r3]                                         |         r3 = *(r3);
    0x0000aa8e cmp r3, 0                                             |         
                                                                     |         if (r3 != 0) {
    0x0000aa90 bne.w 0xad6c                                          |             goto label_18;
                                                                     |         }
                                                                     | label_26:
    0x0000aa94 ldr.w r3, [pc, 0x8d4]                                 |         r3 = *(0xb36c);
    0x0000aa98 ldr.w r8, [r4, r3]                                    |         r8 = *((r4 + r3));
                                                                     | label_11:
    0x0000aa9c ldr.w r3, [r8]                                        |         r3 = *(r8);
    0x0000aaa0 ldr r3, [r3, 0x6c]                                    |         r3 = *((r3 + 0x6c));
    0x0000aaa2 blx r3                                                |         r0 = uint32_t (*r3)(uint32_t) (r3);
    0x0000aaa4 cmp r0, 0                                             |         
                                                                     |         if (r0 != 0) {
    0x0000aaa6 bne 0xab76                                            |             goto label_6;
                                                                     |         }
    0x0000aaa8 ldr.w r3, [r8]                                        |         r3 = *(r8);
    0x0000aaac movs r0, 0x22                                         |         r0 = 0x22;
    0x0000aaae ldr r2, [r3, 0xc]                                     |         r2 = *((r3 + 0xc));
    0x0000aab0 ldr r3, [r3, 0x5c]                                    |         r3 = *((r3 + 0x5c));
    0x0000aab2 str r3, [sp, 0x1c]                                    |         var_1ch = r3;
    0x0000aab4 blx r2                                                |         uint32_t (*r2)(uint32_t, uint32_t, uint32_t) (r0, r2, r3);
    0x0000aab6 ldr r3, [sp, 0x1c]                                    |         r3 = var_1ch;
    0x0000aab8 cmp r0, 0                                             |         
                                                                     |         if (r0 != 0) {
    0x0000aaba bne.w 0xaeb0                                          |             goto label_70;
                                                                     |         }
    0x0000aabe ldr r1, [r6]                                          |         r1 = *(r6);
                                                                     | label_20:
    0x0000aac0 movs r0, 0                                            |         r0 = 0;
                                                                     | label_21:
    0x0000aac2 sub.w r1, r1, 4                                       |         r1 -= 4;
    0x0000aac6 clz r1, r1                                            |         r1 &= r1;
    0x0000aaca lsrs r1, r1, 5                                        |         r1 >>= 5;
    0x0000aacc blx r3                                                |         r0 = uint32_t (*r3)(uint32_t, uint32_t) (r0, r1);
    0x0000aace cmp r0, 0                                             |         
                                                                     |         if (r0 != 0) {
    0x0000aad0 bne 0xab76                                            |             goto label_6;
                                                                     |         }
    0x0000aad2 mov r3, r0                                            |         r3 = r0;
    0x0000aad4 ldr.w r2, [pc, 0x8e0]                                 |         
    0x0000aad8 ldr.w r0, [pc, 0x8e0]                                 |         
    0x0000aadc ldr.w r1, [pc, 0x8e0]                                 |         
    0x0000aae0 add r2, pc                                            |         r2 = 0x15e9c;
    0x0000aae2 add r0, pc                                            |         r0 = 0x15ea2;
    0x0000aae4 add r1, pc                                            |         r1 = 0x15ea8;
    0x0000aae6 str r0, [sp]                                          |         *(sp) = r0;
    0x0000aae8 mov r0, r2                                            |         r0 = r2;
    0x0000aaea str r1, [sp, 0x18]                                    |         var_18h = r1;
    0x0000aaec blx 0x2c70                                            |         r0 = ctype_b_loc ();
    0x0000aaf0 cmp r0, 0                                             |         
    0x0000aaf2 ldr r1, [sp, 0x18]                                    |         r1 = var_18h;
                                                                     |         if (r0 < 0) {
    0x0000aaf4 blt.w 0xb1aa                                          |             goto label_71;
                                                                     |         }
    0x0000aaf8 mov r0, r1                                            |         r0 = r1;
    0x0000aafa mov.w r1, 0x4000                                      |         r1 = 0x4000;
    0x0000aafe blx 0x2730                                            |         r0 = open (r0, r1, r2);
    0x0000ab02 cmp r0, 0                                             |         
                                                                     |         if (r0 < 0) {
    0x0000ab04 blt.w 0xaf66                                          |             goto label_72;
                                                                     |         }
    0x0000ab08 bl 0xa014                                             |         r0 = fcn_0000a014 (r0);
    0x0000ab0c cmp r0, 0                                             |         
                                                                     |         if (r0 != 0) {
    0x0000ab0e bne.w 0xb1e8                                          |             goto label_73;
                                                                     |         }
                                                                     | label_25:
    0x0000ab12 ldr.w r0, [pc, 0x8b0]                                 |         
    0x0000ab16 add r0, pc                                            |         r0 = 0x15ee0;
    0x0000ab18 blx 0x29a4                                            |         r0 = fcn_000029a4 ();
    0x0000ab1c cmp r0, 0                                             |         
                                                                     |         if (r0 >= 0) {
    0x0000ab1e bge 0xab56                                            |             goto label_31;
                                                                     |         }
    0x0000ab20 ldr.w r1, [pc, 0x8a4]                                 |         
    0x0000ab24 movs r0, 4                                            |         r0 = 4;
    0x0000ab26 add r1, pc                                            |         r1 = 0x15ef2;
    0x0000ab28 bl 0xfcdc                                             |         fcn_0000fcdc (r0);
    0x0000ab2c b 0xab56                                              |         goto label_31;
                                                                     | label_64:
    0x0000ab2e ldr.w r2, [pc, 0x874]                                 |         r2 = *(0xb3a6);
    0x0000ab32 mov.w r1, -1                                          |         r1 = -1;
    0x0000ab36 cmp r3, 1                                             |         
    0x0000ab38 ldr.w fp, [r4, r2]                                    |         fp = *((r4 + r2));
    0x0000ab3c ldr.w r2, [pc, 0x870]                                 |         r2 = *(0xb3b0);
    0x0000ab40 str.w r1, [fp]                                        |         __asm ("str.w r1, [fp]");
    0x0000ab44 ldr r2, [r4, r2]                                      |         r2 = *((r4 + r2));
    0x0000ab46 str r1, [r2]                                          |         *(r2) = r1;
    0x0000ab48 bhi 0xaa64                                            |         
                                                                     |     } while (r3 > 1);
                                                                     | label_66:
    0x0000ab4a cmp r3, 0                                             |     
                                                                     |     if (r3 != 0) {
    0x0000ab4c bne 0xaa6c                                            |         goto label_3;
                                                                     |     }
    0x0000ab4e ldr.w r3, [pc, 0x81c]                                 |     r3 = *(0xb36e);
    0x0000ab52 ldr.w r8, [r4, r3]                                    |     r8 = *((r4 + r3));
                                                                     | label_31:
    0x0000ab56 ldr.w r3, [r8]                                        |     r3 = *(r8);
    0x0000ab5a ldr r3, [r3, 0x64]                                    |     r3 = *((r3 + 0x64));
    0x0000ab5c blx r3                                                |     uint32_t (*r3)(uint32_t) (r3);
    0x0000ab5e cmp r5, 0                                             |     
    0x0000ab60 beq 0xabee                                            |     
                                                                     |     while (r0 == 0) {
    0x0000ab62 bl 0xa378                                             |         r0 = fcn_0000a378 ();
                                                                     |         if (r0 == 0) {
    0x0000ab66 cbnz r0, 0xab76                                       |             
    0x0000ab68 ldr.w r0, [pc, 0x860]                                 |             
    0x0000ab6c add r0, pc                                            |             r0 = 0x15f3c;
    0x0000ab6e bl 0x10948                                            |             r0 = fcn_00010948 (r0);
    0x0000ab72 cmp r0, 0                                             |             
                                                                     |             if (r0 == 0) {
    0x0000ab74 beq 0xac62                                            |                 goto label_74;
                                                                     |             }
                                                                     |         }
                                                                     | label_6:
    0x0000ab76 blx 0x2f88                                            |         r0 = cxa_finalize ();
    0x0000ab7a ldr r5, [r0]                                          |         r5 = *(r0);
                                                                     | label_4:
    0x0000ab7c ldr.w r2, [pc, 0x850]                                 |         r2 = *(0x0000b3d0);
    0x0000ab80 ldr.w r3, [pc, 0x7ac]                                 |         r3 = *(0xb330);
    0x0000ab84 add r2, pc                                            |         r2 += pc;
    0x0000ab86 ldr r3, [r2, r3]                                      |         r3 = *((r2 + r3));
    0x0000ab88 ldr r2, [r3]                                          |         r2 = *(0xb330);
    0x0000ab8a ldr r3, [sp, 0x26c]                                   |         r3 = var_26ch;
    0x0000ab8c eors r2, r3                                           |         r2 ^= r3;
    0x0000ab8e mov.w r3, 0                                           |         r3 = 0;
                                                                     |         if (r2 != r3) {
    0x0000ab92 bne.w 0xb55c                                          |             goto label_75;
                                                                     |         }
    0x0000ab96 mov r0, r5                                            |         r0 = r5;
    0x0000ab98 add.w sp, sp, 0x274                                   |         
    0x0000ab9c pop.w {r4, r5, r6, r7, r8, sb, sl, fp, pc}            |         
                                                                     | label_67:
    0x0000aba0 ldr.w r1, [pc, 0x830]                                 |         
    0x0000aba4 movs r0, 7                                            |         r0 = 7;
    0x0000aba6 add r1, pc                                            |         r1 = 0x15f7e;
    0x0000aba8 bl 0xfcdc                                             |         fcn_0000fcdc (r0);
    0x0000abac ldr.w r0, [pc, 0x828]                                 |         
    0x0000abb0 add r0, pc                                            |         r0 = 0x15f8c;
    0x0000abb2 blx 0x29a4                                            |         r0 = fcn_000029a4 ();
    0x0000abb6 cmp r0, 0                                             |         
                                                                     |         if (r0 < 0) {
    0x0000abb8 blt.w 0xb198                                          |             goto label_76;
                                                                     |         }
    0x0000abbc ldr.w r3, [pc, 0x7ac]                                 |         
    0x0000abc0 movs r2, 1                                            |         r2 = 1;
    0x0000abc2 ldr.w r1, [pc, 0x818]                                 |         
    0x0000abc6 movs r0, 0x22                                         |         r0 = 0x22;
    0x0000abc8 ldr.w r8, [r4, r3]                                    |         r8 = *((r4 + r3));
    0x0000abcc add r1, pc                                            |         r1 = 0x15fae;
    0x0000abce ldr.w r3, [r8]                                        |         r3 = *(r8);
    0x0000abd2 ldr r3, [r3, 0x14]                                    |         r3 = *(0xb380);
    0x0000abd4 blx r3                                                |         r0 = uint32_t (*r3)(uint32_t, uint32_t, uint32_t, uint32_t) (r0, r1, r2, r3);
    0x0000abd6 cmp r0, 0                                             |         
                                                                     |         if (r0 != 0) {
    0x0000abd8 bne.w 0xaef4                                          |             goto label_77;
                                                                     |         }
    0x0000abdc ldr r3, [r6]                                          |         r3 = *(r6);
    0x0000abde cmp r3, 0                                             |         
                                                                     |         if (r3 != 0) {
    0x0000abe0 bne.w 0xb560                                          |             goto label_78;
                                                                     |         }
    0x0000abe4 ldr.w r3, [r8]                                        |         r3 = *(r8);
    0x0000abe8 mov sb, r5                                            |         sb = r5;
    0x0000abea ldr r3, [r3, 0x64]                                    |         r3 = *((r3 + 0x64));
    0x0000abec blx r3                                                |         uint32_t (*r3)(uint32_t) (r3);
    0x0000abee ldr.w r1, [pc, 0x7f0]                                 |         
    0x0000abf2 movs r0, 7                                            |         r0 = 7;
    0x0000abf4 add r1, pc                                            |         r1 = 0x15fda;
    0x0000abf6 bl 0xfcdc                                             |         fcn_0000fcdc (r0);
    0x0000abf8 invalid                                               |         
    0x0000abfc adds r0, 0                                            |         r0 += 0;
    0x0000abfe movs r2, 0                                            |         r2 = 0;
    0x0000ac00 ldr.w r1, [pc, 0x7e0]                                 |         
    0x0000ac04 movs r0, 0x22                                         |         r0 = 0x22;
    0x0000ac06 ldr r3, [r3, 0x14]                                    |         r3 = *((r3 + 0x14));
    0x0000ac08 add r1, pc                                            |         r1 = 0x15ff0;
    0x0000ac0a blx r3                                                |         r0 = uint32_t (*r3)(uint32_t, uint32_t, uint32_t, uint32_t) (r0, r1, r2, r3);
    0x0000ac0c cmp r0, 0                                             |         
    0x0000ac0e beq 0xab62                                            |         
                                                                     |     }
    0x0000ac10 ldr.w r1, [pc, 0x7d4]                                 |     
    0x0000ac14 movs r0, 2                                            |     r0 = 2;
    0x0000ac16 add r1, pc                                            |     r1 = 0x16002;
    0x0000ac18 bl 0xfcdc                                             |     fcn_0000fcdc (r0);
    0x0000ac1a invalid                                               |     
    0x0000ac1e invalid                                               |     
    0x0000ac22 b 0xab7c                                              |     goto label_4;
                                                                     | label_65:
    0x0000ac24 ldr.w r2, [pc, 0x788]                                 |     r2 = *(0xb3b0);
    0x0000ac28 cmp.w r1, -1                                          |     
    0x0000ac2c ldr r2, [r4, r2]                                      |     r2 = *((r4 + r2));
    0x0000ac2e ldr r0, [r2]                                          |     r0 = *(0xb3b0);
                                                                     |     if (r1 != -1) {
    0x0000ac30 bne.w 0xad90                                          |         goto label_79;
                                                                     |     }
    0x0000ac34 cmp r0, 0                                             |     
    0x0000ac36 itt gt                                                |     
                                                                     |     if (r0 <= 0) {
    0x0000ac38 movgt r2, 0                                           |         r2 = 0;
                                                                     |     }
                                                                     |     if (r0 > 0) {
    0x0000ac3a strgt r2, [fp]                                        |         *(fp) = r2;
                                                                     |         goto label_80;
                                                                     |     }
                                                                     |     if (r0 > 0) {
                                                                     | label_80:
    0x0000ac3e bgt.w 0xaa60                                          |         goto label_5;
                                                                     |     }
    0x0000ac42 adds r0, 1                                            |     r0++;
    0x0000ac44 mov.w r1, 2                                           |     r1 = 2;
    0x0000ac48 str.w r1, [fp]                                        |     __asm ("str.w r1, [fp]");
    0x0000ac4a asrs r0, r0, 0x20                                     |     r0 >>= 0x20;
                                                                     |     if (r0 != 1) {
    0x0000ac4c bne.w 0xaa60                                          |         goto label_5;
                                                                     |     }
                                                                     | label_12:
    0x0000ac50 ldr.w r1, [fp]                                        |     r1 = *(fp);
    0x0000ac54 cmp r1, 1                                             |     
    0x0000ac56 itt ne                                                |     
                                                                     |     if (r1 == 1) {
    0x0000ac58 movne r1, 0xa                                         |         r1 = 0xa;
                                                                     |     }
                                                                     |     if (r1 != 1) {
    0x0000ac5a strne r1, [r2]                                        |         *(r2) = r1;
                                                                     |         goto label_81;
                                                                     |     }
                                                                     |     if (r1 != 1) {
                                                                     | label_81:
    0x0000ac5c bne.w 0xaa60                                          |         goto label_5;
                                                                     |     }
    0x0000ac60 b 0xad9e                                              |     goto label_82;
                                                                     | label_74:
    0x0000ac62 ldr.w r0, [pc, 0x788]                                 |     
    0x0000ac66 add r0, pc                                            |     r0 = 0x16058;
    0x0000ac68 bl 0x10948                                            |     r0 = fcn_00010948 (r0);
    0x0000ac6c cmp r0, 0                                             |     
                                                                     |     if (r0 != 0) {
    0x0000ac6e bne 0xab76                                            |         goto label_6;
                                                                     |     }
    0x0000ac70 ldr.w r0, [pc, 0x77c]                                 |     
    0x0000ac74 add r0, pc                                            |     r0 = 0x16068;
    0x0000ac76 bl 0x10948                                            |     r0 = fcn_00010948 (r0);
    0x0000ac7a mov r5, r0                                            |     r5 = r0;
    0x0000ac7c cmp r0, 0                                             |     
                                                                     |     if (r0 != 0) {
    0x0000ac7e bne.w 0xab76                                          |         goto label_6;
                                                                     |     }
    0x0000ac82 ldr r3, [r6]                                          |     r3 = *(r6);
    0x0000ac84 cmp r3, 1                                             |     
                                                                     |     if (r3 > 1) {
    0x0000ac86 bhi.w 0xaf8a                                          |         goto label_83;
                                                                     |     }
                                                                     | label_27:
    0x0000ac8a cmp.w sb, 0                                           |     
                                                                     |     if (sb != 0) {
    0x0000ac8e bne.w 0xb1b6                                          |         goto label_84;
                                                                     |     }
                                                                     | label_32:
    0x0000ac92 ldrb.w r1, [sl]                                       |     r1 = *(sl);
    0x0000ac96 cmp r1, 0                                             |     
                                                                     |     if (r1 == 0) {
    0x0000ac98 beq.w 0xb166                                          |         goto label_85;
                                                                     |     }
    0x0000ac9c ldr.w r3, [pc, 0x70c]                                 |     r3 = *(0xb3ac);
    0x0000aca0 ldr r3, [r4, r3]                                      |     r3 = *((r4 + r3));
    0x0000aca2 ldrb r1, [r3]                                         |     r1 = *(r3);
    0x0000aca4 cmp r1, 0                                             |     
                                                                     |     if (r1 == 0) {
    0x0000aca6 beq.w 0xb166                                          |         goto label_85;
                                                                     |     }
                                                                     | label_30:
    0x0000acaa movs r2, 0                                            |     r2 = 0;
    0x0000acac mov r0, r2                                            |     r0 = r2;
    0x0000acae bl 0x9554                                             |     r0 = fcn_00009554 (r0, r1, r2);
    0x0000acb2 cmp r0, 0                                             |     
                                                                     |     if (r0 != 0) {
    0x0000acb4 bne.w 0xab76                                          |         goto label_6;
                                                                     |     }
                                                                     | label_29:
    0x0000acb8 ldr r3, [r6]                                          |     r3 = *(r6);
    0x0000acba cmp r3, 0                                             |     
                                                                     |     if (r3 != 0) {
    0x0000acbc bne.w 0xb1f4                                          |         goto label_86;
                                                                     |     }
                                                                     | label_33:
    0x0000acc0 ldr.w r0, [fp]                                        |     r0 = *(fp);
    0x0000acc4 cmp r0, 1                                             |     
                                                                     |     if (r0 == 1) {
    0x0000acc6 beq.w 0xb29e                                          |         goto label_87;
                                                                     |     }
                                                                     | label_36:
    0x0000acca ldrb.w r3, [sl]                                       |     r3 = *(sl);
                                                                     |     if (r3 == 0) {
    0x0000acce cbnz r3, 0xacde                                       |         
    0x0000acd0 ldr.w r3, [pc, 0x6d8]                                 |         r3 = *(0xb3ac);
    0x0000acd4 ldr r3, [r4, r3]                                      |         r3 = *((r4 + r3));
    0x0000acd6 ldrb r3, [r3]                                         |         r3 = *(r3);
    0x0000acd8 cmp r3, 0                                             |         
                                                                     |         if (r3 == 0) {
    0x0000acda beq.w 0xb2b0                                          |             goto label_88;
                                                                     |         }
                                                                     |     }
                                                                     | label_38:
    0x0000acde ldr r3, [r6]                                          |     r3 = *(r6);
                                                                     |     if (r3 == 0) {
    0x0000ace0 cbz r3, 0xacf8                                        |         goto label_89;
                                                                     |     }
    0x0000ace2 ldr.w r3, [fp]                                        |     r3 = *(fp);
    0x0000ace6 cmp r3, 1                                             |     
                                                                     |     if (r3 == 1) {
    0x0000ace8 beq 0xacf8                                            |         goto label_89;
                                                                     |     }
    0x0000acea ldr.w r3, [r8]                                        |     r3 = *(r8);
    0x0000acee ldr r3, [r3, 0x60]                                    |     r3 = *((r3 + 0x60));
    0x0000acf0 blx r3                                                |     r0 = uint32_t (*r3)(uint32_t) (r3);
    0x0000acf2 cmp r0, 0                                             |     
                                                                     |     if (r0 != 0) {
    0x0000acf4 bne.w 0xab76                                          |         goto label_6;
                                                                     |     }
                                                                     | label_89:
    0x0000acf8 ldr r3, [sp, 0x10]                                    |     r3 = var_10h;
    0x0000acfa cmp r3, 0                                             |     
                                                                     |     if (r3 != 0) {
    0x0000acfc bne.w 0xb292                                          |         goto label_90;
                                                                     |     }
    0x0000acfe strh r1, [r1, 0x16]                                   |     *((r1 + 0x16)) = r1;
                                                                     |     if (r7 != 0) {
    0x0000ad00 cbz r7, 0xad0e                                        |         
    0x0000ad02 ldr.w r0, [pc, 0x6f0]                                 |         
    0x0000ad06 mov r1, r7                                            |         r1 = r7;
    0x0000ad08 add r0, pc                                            |         r0 = 0x16102;
    0x0000ad0a bl 0x70c8                                             |         fcn_000070c8 (r0, r1, r2);
                                                                     |     }
    0x0000ad0e ldr.w r3, [pc, 0x69c]                                 |     r3 = *(0xb3ae);
    0x0000ad12 ldr r3, [r4, r3]                                      |     r3 = *((r4 + r3));
    0x0000ad14 ldrb r3, [r3]                                         |     r3 = *(r3);
    0x0000ad16 cmp r3, 0                                             |     
                                                                     |     if (r3 == 0) {
    0x0000ad18 beq.w 0xab7c                                          |         goto label_4;
                                                                     |     }
    0x0000ad1c ldrb.w r0, [sl]                                       |     r0 = *(sl);
    0x0000ad20 cmp r0, 0                                             |     
                                                                     |     if (r0 != 0) {
    0x0000ad22 bne.w 0xab7c                                          |         goto label_4;
                                                                     |     }
    0x0000ad26 ldr r3, [r6]                                          |     r3 = *(r6);
    0x0000ad28 bics r3, r3, 4                                        |     __asm ("bics r3, r3, 4");
                                                                     |     if (r0 == 0) {
    0x0000ad2c beq.w 0xab7c                                          |         goto label_4;
                                                                     |     }
    0x0000ad30 ldr.w r3, [r8]                                        |     r3 = *(r8);
    0x0000ad34 ldr r3, [r3, 0x28]                                    |     r3 = *((r3 + 0x28));
    0x0000ad36 blx r3                                                |     r0 = uint32_t (*r3)(uint32_t) (r3);
    0x0000ad38 cmp r0, 0                                             |     
                                                                     |     if (r0 == 0) {
    0x0000ad3a beq.w 0xab7c                                          |         goto label_4;
                                                                     |     }
    0x0000ad3c add r7, sp, 0x7c                                      |     r7 = sp + 0x7c;
                                                                     | label_42:
    0x0000ad40 movs r7, 0                                            |     r7 = 0;
    0x0000ad42 b 0xa7f4                                              |     goto label_7;
                                                                     | label_44:
    0x0000ad44 movs r3, 3                                            |     r3 = 3;
    0x0000ad46 str r3, [r6]                                          |     *(r6) = r3;
    0x0000ad48 b 0xa86a                                              |     goto label_8;
                                                                     | label_58:
    0x0000ad4a ldr.w r8, [pc, 0x6ac]                                 |     
    0x0000ad4e add r8, pc                                            |     r8 = 0x1614c;
    0x0000ad50 b 0xa9f4                                              |     goto label_9;
                                                                     | label_48:
    0x0000ad52 mov r0, fp                                            |     r0 = fp;
    0x0000ad54 blx 0x2acc                                            |     strtoul (r0, r1, r2);
    0x0000ad58 str.w r8, [sp, 0x10]                                  |     __asm ("str.w r8, [var_10h]");
    0x0000ad5c b 0xaa0c                                              |     goto label_10;
                                                                     | label_56:
    0x0000ad5e cmp r7, 0                                             |     
                                                                     |     if (r7 == 0) {
    0x0000ad60 beq.w 0xb172                                          |         goto label_91;
                                                                     |     }
    0x0000ad64 ldr.w r8, [pc, 0x694]                                 |     
    0x0000ad68 add r8, pc                                            |     r8 = 0x16168;
    0x0000ad6a b 0xa9f4                                              |     goto label_9;
                                                                     | label_18:
    0x0000ad6c ldr.w r3, [pc, 0x5fc]                                 |     
    0x0000ad70 movs r0, 0x22                                         |     r0 = 0x22;
    0x0000ad72 ldr.w r8, [r4, r3]                                    |     r8 = *((r4 + r3));
    0x0000ad76 ldr.w r3, [r8]                                        |     r3 = *(r8);
    0x0000ad78 adds r0, 0                                            |     r0 += 0;
    0x0000ad7a ldr r3, [r3, 0xc]                                     |     r3 = *(0xb378);
    0x0000ad7c blx r3                                                |     r0 = uint32_t (*r3)(uint32_t, uint32_t) (r0, r3);
    0x0000ad7e cmp r0, 0                                             |     
                                                                     |     if (r0 == 0) {
    0x0000ad80 beq.w 0xaa9c                                          |         goto label_11;
                                                                     |     }
    0x0000ad84 ldr r3, [r6]                                          |     r3 = *(r6);
    0x0000ad86 subs r3, 2                                            |     r3 -= 2;
    0x0000ad88 cmp r3, 1                                             |     
                                                                     |     if (r3 > 1) {
    0x0000ad8a bhi.w 0xaa9c                                          |         goto label_11;
                                                                     |     }
    0x0000ad8e b 0xae40                                              |     goto label_92;
                                                                     | label_79:
    0x0000ad90 adds r0, 1                                            |     r0++;
                                                                     |     if (r0 != 1) {
    0x0000ad92 bne.w 0xaa60                                          |         goto label_5;
                                                                     |     }
    0x0000ad96 subs r1, 1                                            |     r1--;
    0x0000ad98 cmp r1, 1                                             |     
                                                                     |     if (r1 > 1) {
    0x0000ad9a bhi.w 0xac50                                          |         goto label_12;
                                                                     |     }
                                                                     | label_82:
    0x0000ad9e movs r1, 0                                            |     r1 = 0;
    0x0000ada0 str r1, [r2]                                          |     *(r2) = r1;
    0x0000ada2 b 0xaa60                                              |     goto label_5;
                                                                     | label_46:
    0x0000ada4 movs r3, 0                                            |     r3 = 0;
    0x0000ada6 mov sb, r3                                            |     sb = r3;
    0x0000ada8 str r3, [sp, 0x10]                                    |     var_10h = r3;
    0x0000adaa b 0xa9e2                                              |     goto label_13;
                                                                     | label_54:
    0x0000adac ldr.w r1, [pc, 0x650]                                 |     
    0x0000adb0 movs r0, 5                                            |     r0 = 5;
    0x0000adb2 add r1, pc                                            |     r1 = 0x161b6;
    0x0000adb4 bl 0xfcdc                                             |     fcn_0000fcdc (r0);
    0x0000adb8 movs r3, 1                                            |     r3 = 1;
    0x0000adba str r3, [r6]                                          |     *(r6) = r3;
    0x0000adbc cmp.w sb, 0                                           |     
    0x0000adbe lsrs r0, r0, 0x1c                                     |     r0 >>= 0x1c;
                                                                     |     if (r0 != r0) {
    0x0000adc0 bne.w 0xa8f4                                          |         goto label_14;
                                                                     |     }
                                                                     | label_55:
    0x0000adc4 mov r7, sb                                            |     r7 = sb;
    0x0000adc6 b 0xa7fe                                              |     goto label_15;
                                                                     |     if (r3 == 0) {
                                                                     | label_53:
    0x0000adc8 cbz r3, 0xade6                                        |         goto label_93;
                                                                     |     }
    0x0000adca cmp r7, 0                                             |     
    0x0000adcc it ne                                                 |     
                                                                     |     if (r7 != 0) {
    0x0000adce cmpne r3, r7                                          |         __asm ("cmpne r3, r7");
                                                                     |     }
                                                                     |     if (r7 > 0) {
    0x0000add0 bhi 0xade6                                            |         goto label_93;
                                                                     |     }
    0x0000add2 cmp r3, 4                                             |     
                                                                     |     if (r3 == 4) {
    0x0000add4 beq.w 0xa8ec                                          |         goto label_16;
                                                                     |     }
    0x0000add6 add r5, sp, 0x228                                     |     r5 = sp + 0x228;
    0x0000add8 ldr.w r1, [pc, 0x628]                                 |     
    0x0000addc movs r0, 5                                            |     r0 = 5;
    0x0000adde add r1, pc                                            |     r1 = 0x161e6;
    0x0000ade0 bl 0xfcdc                                             |     fcn_0000fcdc (r0);
    0x0000ade4 b 0xa8ec                                              |     goto label_16;
                                                                     | label_93:
    0x0000ade6 str r7, [r6]                                          |     *(r6) = r7;
    0x0000ade8 b 0xa8ec                                              |     goto label_16;
                                                                     | label_63:
    0x0000adea ldr.w r0, [pc, 0x61c]                                 |     
    0x0000adee add.w r8, sp, 0x24                                    |     r8 += var_24h;
    0x0000adf2 mov r1, r8                                            |     r1 = r8;
    0x0000adf4 add r0, pc                                            |     r0 = 0x16202;
    0x0000adf6 blx 0x2be0                                            |     r0 = close (r0);
    0x0000adfa cmp r0, 0                                             |     
                                                                     |     if (r0 < 0) {
    0x0000adfc blt.w 0xb106                                          |         goto label_94;
                                                                     |     }
    0x0000ae00 ldr.w r2, [r8]                                        |     r2 = *(r8);
    0x0000ae04 ldr.w r3, [r8, 0x10]                                  |     r3 = var_10h_2;
    0x0000ae08 mul r2, r3, r2                                        |     r2 = r3 * r2;
    0x0000ae0c cmp.w r2, 0x4000                                      |     
                                                                     |     if (r2 <= 0x4000) {
    0x0000ae10 blo.w 0xb114                                          |         goto label_95;
                                                                     |     }
    0x0000ae14 ldr r3, [r6]                                          |     r3 = *(r6);
    0x0000ae16 b 0xaa1e                                              |     goto label_17;
                                                                     | label_69:
    0x0000ae18 cmp.w sb, 0                                           |     
                                                                     |     if (sb != 0) {
    0x0000ae1c bne 0xaf0c                                            |         goto label_96;
                                                                     |     }
                                                                     | label_24:
    0x0000ae1e cmp r5, 0                                             |     
                                                                     |     if (r5 != 0) {
    0x0000ae20 bne.w 0xb13c                                          |         goto label_97;
                                                                     |     }
                                                                     | label_28:
    0x0000ae24 ldr.w r3, [pc, 0x584]                                 |     r3 = *(0xb3ac);
    0x0000ae28 ldr r3, [r4, r3]                                      |     r3 = *((r4 + r3));
    0x0000ae2a ldrb r5, [r3]                                         |     r5 = *(r3);
    0x0000ae2c str r3, [sp, 0x18]                                    |     var_18h = r3;
    0x0000ae2e cmp r5, 0                                             |     
                                                                     |     if (r5 == 0) {
    0x0000ae30 beq.w 0xb0fc                                          |         goto label_98;
                                                                     |     }
    0x0000ae34 ldr r3, [r6]                                          |     r3 = *(r6);
    0x0000ae36 mov.w sb, 0                                           |     sb = 0;
    0x0000ae3a mov r5, sb                                            |     r5 = sb;
    0x0000ae3c cmp r3, 1                                             |     
                                                                     |     if (r3 != 1) {
    0x0000ae3e bne 0xad6c                                            |         goto label_18;
                                                                     |     }
                                                                     | label_92:
    0x0000ae40 ldrb.w r0, [sl]                                       |     r0 = *(sl);
    0x0000ae44 cmp r0, 0                                             |     
                                                                     |     if (r0 != 0) {
    0x0000ae46 bne.w 0xaf74                                          |         goto label_99;
                                                                     |     }
    0x0000ae4a ldr.w r3, [pc, 0x520]                                 |     
    0x0000ae4e ldr.w r8, [r4, r3]                                    |     r8 = *((r4 + r3));
    0x0000ae52 ldr.w r3, [r8]                                        |     r3 = *(r8);
    0x0000ae56 ldr r3, [r3, 0x28]                                    |     r3 = *(0xb396);
    0x0000ae58 blx r3                                                |     r0 = uint32_t (*r3)(uint32_t) (r3);
    0x0000ae5a cmp r0, 0                                             |     
                                                                     |     if (r0 == 0) {
    0x0000ae5c beq.w 0xaa9c                                          |         goto label_11;
                                                                     |     }
    0x0000ae60 b 0xab76                                              |     goto label_6;
                                                                     | label_68:
    0x0000ae62 ldr.w r1, [pc, 0x5a8]                                 |     
    0x0000ae66 movs r0, 4                                            |     r0 = 4;
    0x0000ae68 add r1, pc                                            |     r1 = 0x1627a;
    0x0000ae6a bl 0xfcdc                                             |     fcn_0000fcdc (r0);
    0x0000ae6e b 0xaa7c                                              |     goto label_19;
                                                                     | label_52:
    0x0000ae70 ldr.w r3, [pc, 0x4f0]                                 |     r3 = *(0xb364);
    0x0000ae74 ldr r3, [r4, r3]                                      |     r3 = *((r4 + r3));
    0x0000ae76 ldrb r7, [r3]                                         |     r7 = *(r3);
    0x0000ae78 str r3, [sp, 0x14]                                    |     var_14h = r3;
    0x0000ae7a cmp r7, 0                                             |     
                                                                     |     if (r7 != 0) {
    0x0000ae7c bne 0xaf3c                                            |         goto label_100;
                                                                     |     }
    0x0000ae7e ldrb.w r3, [sl]                                       |     r3 = *(sl);
    0x0000ae82 str r3, [sp, 0x10]                                    |     var_10h = r3;
                                                                     |     if (r3 != 0) {
    0x0000ae84 cbz r3, 0xae9a                                        |         
    0x0000ae86 ldr.w r3, [r8]                                        |         r3 = *(r8);
    0x0000ae8a movs r0, 0x22                                         |         r0 = 0x22;
    0x0000ae8c ldr r3, [r3, 0xc]                                     |         r3 = *((r3 + 0xc));
    0x0000ae8e blx r3                                                |         uint32_t (*r3)(uint32_t, uint32_t) (r0, r3);
    0x0000ae90 str r0, [sp, 0x10]                                    |         var_10h = r0;
    0x0000ae92 cmp r0, 0                                             |         
                                                                     |         if (r0 == 0) {
    0x0000ae94 beq.w 0xb172                                          |             goto label_91;
                                                                     |         }
    0x0000ae98 str r7, [sp, 0x10]                                    |         var_10h = r7;
                                                                     |     }
                                                                     | label_57:
    0x0000ae9a ldr r3, [r6]                                          |     r3 = *(r6);
    0x0000ae9c cmp r3, 3                                             |     
                                                                     |     if (r3 == 3) {
    0x0000ae9e beq.w 0xb130                                          |         goto label_101;
                                                                     |     }
    0x0000aea2 ldr.w r7, [pc, 0x56c]                                 |     
    0x0000aea6 ldr.w r8, [pc, 0x56c]                                 |     
    0x0000aeaa add r7, pc                                            |     r7 = 0x162c0;
    0x0000aeac add r8, pc                                            |     r8 = 0x162c6;
    0x0000aeae b 0xa9f4                                              |     goto label_9;
                                                                     | label_70:
    0x0000aeb0 ldr r2, [sp, 0x18]                                    |     r2 = var_18h;
    0x0000aeb2 ldr r1, [r6]                                          |     r1 = *(r6);
    0x0000aeb4 ldrb r2, [r2]                                         |     r2 = *(r2);
    0x0000aeb6 cmp r2, 0                                             |     
                                                                     |     if (r2 != 0) {
    0x0000aeb8 bne.w 0xaac0                                          |         goto label_20;
                                                                     |     }
    0x0000aebc cmp r1, 1                                             |     
                                                                     |     if (r1 != 1) {
    0x0000aebe bne.w 0xaac2                                          |         goto label_21;
                                                                     |     }
    0x0000aec2 b 0xaac0                                              |     goto label_20;
                                                                     | label_45:
    0x0000aec4 ldr.w r1, [pc, 0x550]                                 |     
    0x0000aec8 mov r0, r7                                            |     r0 = r7;
    0x0000aeca add r1, pc                                            |     r1 = 0x162e6;
    0x0000aecc blx 0x2f70                                            |     r0 = vdprintf_chk ();
                                                                     |     if (r0 != 0) {
    0x0000aed0 cbz r0, 0xaee4                                        |         
    0x0000aed2 ldrb r3, [r7]                                         |         r3 = *(r7);
                                                                     |         if (r3 == 0) {
    0x0000aed4 cbz r3, 0xaee4                                        |             goto label_102;
                                                                     |         }
    0x0000aed6 ldr.w r1, [pc, 0x544]                                 |         
    0x0000aeda mov r2, r7                                            |         r2 = r7;
    0x0000aedc movs r0, 4                                            |         r0 = 4;
    0x0000aede add r1, pc                                            |         r1 = 0x16300;
    0x0000aee0 bl 0xfcdc                                             |         fcn_0000fcdc (r0);
                                                                     |     }
                                                                     | label_102:
    0x0000aee4 movs r3, 1                                            |     r3 = 1;
    0x0000aee6 movs r7, 0                                            |     r7 = 0;
    0x0000aee8 str r3, [r6]                                          |     *(r6) = r3;
    0x0000aeea b 0xa7f4                                              |     goto label_7;
                                                                     | label_61:
    0x0000aeec ldr.w r7, [pc, 0x530]                                 |     
    0x0000aef0 add r7, pc                                            |     r7 = "Downgrade is only allowed if factoryDefault=hard is set.";
    0x0000aef2 b 0xa9ae                                              |     goto label_22;
                                                                     | label_77:
    0x0000aef4 ldr.w r1, [pc, 0x52c]                                 |     
    0x0000aef8 movs r0, 4                                            |     r0 = 4;
    0x0000aefa ldr.w r7, [pc, 0x52c]                                 |     
    0x0000aefe add r1, pc                                            |     r1 = 0x16326;
    0x0000af00 bl 0xfcdc                                             |     fcn_0000fcdc (r0);
    0x0000af04 movs r3, 1                                            |     r3 = 1;
    0x0000af06 add r7, pc                                            |     r7 = 0x16334;
    0x0000af08 str r3, [r6]                                          |     *(r6) = r3;
    0x0000af0a b 0xaa6a                                              |     goto label_23;
                                                                     | label_96:
    0x0000af0c ldr.w r1, [pc, 0x51c]                                 |     
    0x0000af10 movs r0, 7                                            |     r0 = 7;
    0x0000af12 add r1, pc                                            |     r1 = 0x16342;
    0x0000af14 bl 0xfcdc                                             |     fcn_0000fcdc (r0);
    0x0000af16 mcr2 p8, 7, pc, c2, c15, 6                            |     __asm ("mcr2 p8, 7, pc, c2, c15, 6");
    0x0000af1a lsls r4, r2, 0x14                                     |     r4 = r2 << 0x14;
    0x0000af1c add r0, pc                                            |     r0 += pc;
    0x0000af1e blx 0x29a4                                            |     r0 = fcn_000029a4 ();
    0x0000af22 cmp r0, 0                                             |     
                                                                     |     if (r0 >= 0) {
    0x0000af24 bge.w 0xae1e                                          |         goto label_24;
                                                                     |     }
    0x0000af28 ldr.w r1, [pc, 0x508]                                 |     
    0x0000af2c movs r0, 2                                            |     r0 = 2;
    0x0000af2e add r1, pc                                            |     r1 = 0x16366;
    0x0000af30 bl 0xfcdc                                             |     r0 = fcn_0000fcdc (r0);
    0x0000af34 blx 0x2f88                                            |     r0 = cxa_finalize ();
    0x0000af38 ldr r5, [r0]                                          |     r5 = *(r0);
    0x0000af3a b 0xab7c                                              |     goto label_4;
                                                                     | label_100:
    0x0000af3c movs r7, 0                                            |     r7 = 0;
    0x0000af3e str r7, [sp, 0x10]                                    |     var_10h = r7;
    0x0000af40 b 0xa9e2                                              |     goto label_13;
                                                                     | label_51:
    0x0000af42 ldr.w r1, [pc, 0x4f4]                                 |     
    0x0000af46 movs r0, 4                                            |     r0 = 4;
    0x0000af48 add r1, pc                                            |     r1 = 0x16386;
    0x0000af4a bl 0xfcdc                                             |     r0 = fcn_0000fcdc (r0);
    0x0000af4e blx 0x2f88                                            |     r0 = cxa_finalize ();
    0x0000af52 ldr r3, [r0]                                          |     r3 = *(r0);
    0x0000af54 cmp r3, 0x3d                                          |     
    0x0000af56 it ne                                                 |     
                                                                     |     if (r3 != 0x3d) {
    0x0000af58 cmpne r3, 0x7e                                        |         __asm ("cmpne r3, 0x7e");
                                                                     |     }
                                                                     |     if (r3 == 0x3d) {
    0x0000af5a beq.w 0xb1e0                                          |         goto label_103;
                                                                     |     }
    0x0000af5e ldr.w r7, [pc, 0x4dc]                                 |     
    0x0000af62 add r7, pc                                            |     r7 = 0x163a4;
    0x0000af64 b 0xa9ae                                              |     goto label_22;
                                                                     | label_72:
    0x0000af66 ldr.w r1, [pc, 0x4d8]                                 |     
    0x0000af6a movs r0, 4                                            |     r0 = 4;
    0x0000af6c add r1, pc                                            |     r1 = 0x163b2;
    0x0000af6e bl 0xfcdc                                             |     fcn_0000fcdc (r0);
    0x0000af72 b 0xab12                                              |     goto label_25;
                                                                     | label_99:
    0x0000af74 ldr.w r3, [pc, 0x430]                                 |     r3 = *(0xb3a8);
    0x0000af78 movs r0, 1                                            |     r0 = 1;
    0x0000af7a ldr r3, [r4, r3]                                      |     r3 = *((r4 + r3));
    0x0000af7c strb r0, [r3]                                         |     *(r3) = r0;
    0x0000af7e bl 0x9b00                                             |     r0 = fcn_00009b00 (r0);
    0x0000af82 cmp r0, 0                                             |     
                                                                     |     if (r0 == 0) {
    0x0000af84 beq.w 0xaa94                                          |         goto label_26;
                                                                     |     }
    0x0000af86 add r5, sp, 0x218                                     |     r5 = sp + 0x218;
    0x0000af88 b 0xab76                                              |     goto label_6;
                                                                     | label_83:
    0x0000af8a ldr.w r1, [pc, 0x4b8]                                 |     
    0x0000af8e movs r0, 7                                            |     r0 = 7;
    0x0000af90 add r1, pc                                            |     r1 = 0x163da;
    0x0000af92 bl 0xfcdc                                             |     fcn_0000fcdc (r0);
    0x0000af96 ldr r3, [r6]                                          |     r3 = *(r6);
    0x0000af98 cmp r3, 4                                             |     
                                                                     |     if (r3 != 4) {
    0x0000af9a bne.w 0xb21e                                          |         goto label_104;
                                                                     |     }
    0x0000af9e ldr.w r3, [r8]                                        |     r3 = *(r8);
    0x0000afa2 movw r2, 0x8001                                       |     r2 = 0x8001;
    0x0000afa6 ldr.w r1, [pc, 0x4a0]                                 |     
    0x0000afaa movs r0, 0x41                                         |     r0 = 0x41;
    0x0000afac ldr r3, [r3, 0x14]                                    |     r3 = *((r3 + 0x14));
    0x0000afae add r1, pc                                            |     r1 = 0x163fc;
    0x0000afb0 blx r3                                                |     r0 = uint32_t (*r3)(uint32_t, uint32_t, uint32_t, uint32_t) (r0, r1, r2, r3);
    0x0000afb2 cmp r0, 0                                             |     
                                                                     |     if (r0 != 0) {
    0x0000afb4 bne.w 0xb230                                          |         goto label_105;
                                                                     |     }
                                                                     | label_34:
    0x0000afb8 ldr r3, [r6]                                          |     r3 = *(r6);
    0x0000afba cmp r3, 4                                             |     
    0x0000afbc str r3, [sp, 0x18]                                    |     var_18h = r3;
                                                                     |     if (r3 == 4) {
    0x0000afbe bne 0xafd0                                            |         
    0x0000afc0 ldr.w r3, [r8]                                        |         r3 = *(r8);
    0x0000afc4 movs r0, 0x4b                                         |         r0 = 0x4b;
    0x0000afc6 ldr r3, [r3, 0xc]                                     |         r3 = *((r3 + 0xc));
    0x0000afc8 blx r3                                                |         r0 = uint32_t (*r3)(uint32_t, uint32_t) (r0, r3);
    0x0000afca cmp r0, 0                                             |         
                                                                     |         if (r0 != 0) {
    0x0000afcc bne.w 0xb2c2                                          |             goto label_106;
                                                                     |         }
    0x0000afce strh r1, [r7, 0xa]                                    |         *((r7 + 0xa)) = r1;
                                                                     |     }
                                                                     | label_39:
    0x0000afd0 ldr.w r1, [pc, 0x478]                                 |     
    0x0000afd4 movs r0, 7                                            |     r0 = 7;
    0x0000afd6 add r1, pc                                            |     r1 = 0x16426;
    0x0000afd8 bl 0xfcdc                                             |     fcn_0000fcdc (r0);
    0x0000afdc ldr.w r0, [pc, 0x470]                                 |     
    0x0000afe0 add r0, pc                                            |     r0 = 0x16434;
    0x0000afe2 bl 0xa4c8                                             |     fcn_0000a4c8 (r0);
    0x0000afe6 ldr.w r0, [pc, 0x46c]                                 |     
    0x0000afea add r0, pc                                            |     r0 = 0x16444;
    0x0000afec bl 0xa4c8                                             |     fcn_0000a4c8 (r0);
    0x0000aff0 ldr.w r0, [pc, 0x464]                                 |     
    0x0000aff4 add r0, pc                                            |     r0 = 0x16450;
    0x0000aff6 bl 0xa4c8                                             |     fcn_0000a4c8 (r0);
    0x0000affa ldr.w r3, [r8]                                        |     r3 = *(r8);
    0x0000affe movs r0, 0x4b                                         |     r0 = 0x4b;
    0x0000b000 ldr r3, [r3, 0xc]                                     |     r3 = *((r3 + 0xc));
    0x0000b002 blx r3                                                |     r0 = uint32_t (*r3)(uint32_t, uint32_t) (r0, r3);
                                                                     |     if (r0 == 0) {
    0x0000b004 cbnz r0, 0xb01a                                       |         
    0x0000b006 ldr.w r0, [pc, 0x454]                                 |         
    0x0000b00a add r0, pc                                            |         r0 = 0x1646c;
    0x0000b00c bl 0xa4c8                                             |         fcn_0000a4c8 (r0);
    0x0000b010 ldr.w r0, [pc, 0x44c]                                 |         
    0x0000b014 add r0, pc                                            |         r0 = 0x16478;
    0x0000b016 bl 0xa4c8                                             |         fcn_0000a4c8 (r0);
                                                                     |     }
    0x0000b01a ldr.w r1, [pc, 0x448]                                 |     
    0x0000b01e movs r0, 7                                            |     r0 = 7;
    0x0000b020 add r1, pc                                            |     r1 = 0x1648a;
    0x0000b022 bl 0xfcdc                                             |     fcn_0000fcdc (r0);
    0x0000b026 ldr r3, [r6]                                          |     r3 = *(r6);
    0x0000b028 cmp r3, 4                                             |     
                                                                     |     if (r3 == 4) {
    0x0000b02a beq.w 0xb2aa                                          |         goto label_107;
                                                                     |     }
    0x0000b02e cmp r3, 3                                             |     
                                                                     |     if (r3 == 3) {
    0x0000b030 beq.w 0xb2b6                                          |         goto label_108;
                                                                     |     }
    0x0000b034 cmp r3, 2                                             |     
                                                                     |     if (r3 != 2) {
    0x0000b036 bne.w 0xb2bc                                          |         goto label_109;
                                                                     |     }
    0x0000b03a ldr.w r3, [pc, 0x42c]                                 |     
    0x0000b03e add r3, pc                                            |     r3 = 0x164ac;
                                                                     | label_37:
    0x0000b040 str r3, [sp, 4]                                       |     var_4h = r3;
    0x0000b042 mov.w r2, 0x100                                       |     r2 = 0x100;
    0x0000b046 ldr.w r3, [pc, 0x424]                                 |     
    0x0000b04a movs r1, 1                                            |     r1 = 1;
    0x0000b04c add r0, sp, 0x16c                                     |     r0 += s1;
    0x0000b04e str r0, [sp, 0x18]                                    |     var_18h = r0;
    0x0000b050 add r3, pc                                            |     r3 = 0x164c2;
    0x0000b052 str r3, [sp, 0x1c]                                    |     var_1ch = r3;
    0x0000b054 str r3, [sp, 8]                                       |     var_8h = r3;
    0x0000b056 ldr.w r3, [pc, 0x418]                                 |     
    0x0000b05a add r3, pc                                            |     r3 = 0x164d0;
    0x0000b05c str r3, [sp, 0xc]                                     |     var_ch = r3;
    0x0000b05e ldr.w r3, [pc, 0x414]                                 |     
    0x0000b062 add r3, pc                                            |     r3 = 0x164dc;
    0x0000b064 str r3, [sp]                                          |     *(sp) = r3;
    0x0000b066 ldr.w r3, [pc, 0x410]                                 |     
    0x0000b06a add r3, pc                                            |     r3 = 0x164e8;
    0x0000b06c blx 0x2e80                                            |     strncmp (r0, r1, r2);
    0x0000b070 ldr r0, [sp, 0x18]                                    |     r0 = var_18h;
    0x0000b072 blx 0x28d8                                            |     fcn_000028d8 ();
    0x0000b076 ldr.w r1, [pc, 0x404]                                 |     
    0x0000b07a str r0, [sp, 0x18]                                    |     var_18h = r0;
    0x0000b07c movs r0, 7                                            |     r0 = 7;
    0x0000b07e add r1, pc                                            |     r1 = 0x16500;
    0x0000b080 bl 0xfcdc                                             |     fcn_0000fcdc (r0);
    0x0000b084 ldr r0, [pc, 0x3f8]                                   |     
    0x0000b086 add r0, pc                                            |     r0 = 0x1650a;
    0x0000b088 blx 0x29a4                                            |     fcn_000029a4 ();
    0x0000b08c ldr r0, [pc, 0x3f4]                                   |     
    0x0000b08e add r0, pc                                            |     r0 = 0x16516;
    0x0000b090 blx 0x29a4                                            |     fcn_000029a4 ();
    0x0000b094 ldr r0, [pc, 0x3f0]                                   |     
    0x0000b096 add r0, pc                                            |     r0 = 0x16522;
    0x0000b098 blx 0x29a4                                            |     fcn_000029a4 ();
    0x0000b09c ldr r0, [pc, 0x3ec]                                   |     
    0x0000b09e add r0, pc                                            |     
    0x0000b0a0 blx 0x29a4                                            |     r0 = fcn_000029a4 ();
    0x0000b0a2 stc p8, c4, [r0], {0xfa}                              |     __asm ("stc p8, c4, [r0], {0xfa}");
    0x0000b0a6 add r0, pc                                            |     r0 = 0x215d8;
    0x0000b0a8 blx 0x29a4                                            |     fcn_000029a4 ();
    0x0000b0ac ldr.w r2, [r8]                                        |     r2 = *(r8);
    0x0000b0b0 movs r0, 0x41                                         |     r0 = 0x41;
    0x0000b0b2 ldr r1, [sp, 0x1c]                                    |     r1 = var_1ch;
    0x0000b0b4 ldr r2, [r2, 0x18]                                    |     r2 = *((r2 + 0x18));
    0x0000b0b6 blx r2                                                |     r0 = uint32_t (*r2)(uint32_t, uint32_t, uint32_t) (r0, r1, r2);
    0x0000b0b8 cmp r0, 0                                             |     
    0x0000b0ba ldr r3, [sp, 0x18]                                    |     r3 = var_18h;
                                                                     |     if (r0 < 0) {
    0x0000b0bc blt.w 0xb318                                          |         goto label_110;
                                                                     |     }
                                                                     | label_35:
    0x0000b0c0 ubfx r2, r3, 8, 8                                     |     r2 = (r3 >> 8) & ((1 << 8) - 1);
    0x0000b0c4 lsls r3, r3, 0x19                                     |     r3 <<= 0x19;
                                                                     |     if (r3 != r3) {
    0x0000b0c6 bne 0xb0d4                                            |         goto label_111;
                                                                     |     }
    0x0000b0c8 cmp r2, 0x7f                                          |     
                                                                     |     if (r2 == 0x7f) {
    0x0000b0ca beq.w 0xb306                                          |         goto label_112;
                                                                     |     }
    0x0000b0ce cmp r2, 0                                             |     
                                                                     |     if (r2 == 0) {
    0x0000b0d0 beq.w 0xac8a                                          |         goto label_27;
                                                                     |     }
                                                                     | label_111:
    0x0000b0d4 ldr r1, [pc, 0x3bc]                                   |     
    0x0000b0d6 movs r0, 2                                            |     r0 = 2;
    0x0000b0d8 add r1, pc                                            |     r1 = 0x16570;
    0x0000b0da bl 0xfcdc                                             |     fcn_0000fcdc (r0);
    0x0000b0de ldr r3, [r6]                                          |     r3 = *(r6);
    0x0000b0e0 cmp r3, 4                                             |     
                                                                     |     if (r3 != 4) {
    0x0000b0e2 bne.w 0xac8a                                          |         goto label_27;
                                                                     |     }
    0x0000b0e6 ldr.w r3, [fp]                                        |     r3 = *(fp);
    0x0000b0ea cmp r3, 1                                             |     
                                                                     |     if (r3 == 1) {
    0x0000b0ec beq.w 0xac8a                                          |         goto label_27;
                                                                     |     }
    0x0000b0f0 blx 0x2f88                                            |     cxa_finalize ();
    0x0000b0f4 movs r3, 0x34                                         |     r3 = 0x34;
    0x0000b0f6 mov r5, r3                                            |     r5 = r3;
    0x0000b0f8 str r3, [r0]                                          |     *(r0) = r3;
    0x0000b0fa b 0xab7c                                              |     goto label_4;
                                                                     | label_98:
    0x0000b0fc ldr r3, [pc, 0x26c]                                   |     r3 = *(0xb36c);
    0x0000b0fe mov sb, r5                                            |     sb = r5;
    0x0000b100 ldr.w r8, [r4, r3]                                    |     r8 = *((r4 + r3));
    0x0000b104 b 0xaa9c                                              |     goto label_11;
                                                                     | label_94:
    0x0000b106 ldr r1, [pc, 0x390]                                   |     
    0x0000b108 movs r0, 4                                            |     r0 = 4;
    0x0000b10a add r1, pc                                            |     r1 = 0x165a8;
    0x0000b10c bl 0xfcdc                                             |     fcn_0000fcdc (r0);
    0x0000b110 ldr r3, [r6]                                          |     r3 = *(r6);
    0x0000b112 b 0xaa1e                                              |     goto label_17;
                                                                     | label_95:
    0x0000b114 ldr r1, [pc, 0x384]                                   |     
    0x0000b116 lsrs r2, r2, 0xa                                      |     r2 >>= 0xa;
    0x0000b118 ldr r7, [pc, 0x384]                                   |     
    0x0000b11a movs r0, 3                                            |     r0 = 3;
    0x0000b11c add r1, pc                                            |     r1 = 0x165bc;
    0x0000b11e bl 0xfcdc                                             |     fcn_0000fcdc (r0);
    0x0000b122 movs r3, 3                                            |     r3 = 3;
    0x0000b124 add r7, pc                                            |     r7 = "Invalid value for autoCommit";
    0x0000b126 str r3, [r6]                                          |     *(r6) = r3;
    0x0000b128 b 0xaa1e                                              |     goto label_17;
                                                                     | label_49:
    0x0000b12a mov r8, r1                                            |     r8 = r1;
    0x0000b12c str r3, [sp, 0x10]                                    |     var_10h = r3;
    0x0000b12e b 0xa9f4                                              |     goto label_9;
                                                                     | label_101:
    0x0000b130 ldr r7, [pc, 0x370]                                   |     
    0x0000b132 ldr.w r8, [pc, 0x374]                                 |     
    0x0000b136 add r7, pc                                            |     r7 = 0x165de;
    0x0000b138 add r8, pc                                            |     r8 = 0x165e6;
    0x0000b13a b 0xa9f4                                              |     goto label_9;
                                                                     | label_97:
    0x0000b13c ldr r1, [pc, 0x36c]                                   |     
    0x0000b13e movs r0, 7                                            |     r0 = 7;
    0x0000b140 add r1, pc                                            |     r1 = 0x165f0;
    0x0000b142 bl 0xfcdc                                             |     fcn_0000fcdc (r0);
    0x0000b146 ldr r0, [pc, 0x368]                                   |     
    0x0000b148 add r0, pc                                            |     r0 = 0x165fe;
    0x0000b14a blx 0x29a4                                            |     r0 = fcn_000029a4 ();
    0x0000b14e cmp r0, 0                                             |     
                                                                     |     if (r0 >= 0) {
    0x0000b150 bge.w 0xae24                                          |         goto label_28;
                                                                     |     }
    0x0000b154 ldr r1, [pc, 0x35c]                                   |     
    0x0000b156 movs r0, 2                                            |     r0 = 2;
    0x0000b158 add r1, pc                                            |     r1 = 0x16610;
    0x0000b15a bl 0xfcdc                                             |     r0 = fcn_0000fcdc (r0);
    0x0000b15e blx 0x2f88                                            |     r0 = cxa_finalize ();
    0x0000b162 ldr r5, [r0]                                          |     r5 = *(r0);
    0x0000b164 b 0xab7c                                              |     goto label_4;
                                                                     | label_85:
    0x0000b166 ldr r3, [sp, 0x14]                                    |     r3 = var_14h;
    0x0000b168 ldrb r3, [r3]                                         |     r3 = *(r3);
    0x0000b16a cmp r3, 0                                             |     
                                                                     |     if (r3 == 0) {
    0x0000b16c beq.w 0xacb8                                          |         goto label_29;
                                                                     |     }
    0x0000b170 b 0xacaa                                              |     goto label_30;
                                                                     | label_91:
    0x0000b172 ldr r3, [r6]                                          |     r3 = *(r6);
    0x0000b174 cmp r3, 4                                             |     
                                                                     |     if (r3 == 4) {
    0x0000b176 beq 0xb212                                            |         goto label_113;
                                                                     |     }
    0x0000b178 cmp r3, 3                                             |     
                                                                     |     if (r3 == 3) {
    0x0000b17a beq.w 0xb284                                          |         goto label_114;
                                                                     |     }
    0x0000b17e ldr r7, [pc, 0x338]                                   |     
    0x0000b180 ldr.w r8, [pc, 0x338]                                 |     
    0x0000b184 add r7, pc                                            |     r7 = 0x16642;
    0x0000b186 add r8, pc                                            |     r8 = 0x16646;
    0x0000b188 b 0xa9f4                                              |     goto label_9;
                                                                     | label_60:
    0x0000b18a ldr r1, [pc, 0x334]                                   |     
    0x0000b18c movs r0, 4                                            |     r0 = 4;
    0x0000b18e movs r5, 0                                            |     r5 = 0;
    0x0000b190 add r1, pc                                            |     r1 = 0x16656;
    0x0000b192 bl 0xfcdc                                             |     fcn_0000fcdc (r0);
    0x0000b194 stc2 p4, c14, [r3, 0x3c4]!                            |     __asm ("stc2 p4, c14, [r3, 0x3c4]!");
                                                                     | label_76:
    0x0000b198 ldr r1, [pc, 0x328]                                   |     
    0x0000b19a movs r0, 2                                            |     r0 = 2;
    0x0000b19c add r1, pc                                            |     r1 = 0x16664;
    0x0000b19e bl 0xfcdc                                             |     r0 = fcn_0000fcdc (r0);
    0x0000b1a2 blx 0x2f88                                            |     r0 = cxa_finalize ();
    0x0000b1a6 ldr r5, [r0]                                          |     r5 = *(r0);
    0x0000b1a8 b 0xab7c                                              |     goto label_4;
                                                                     | label_71:
    0x0000b1aa ldr r1, [pc, 0x31c]                                   |     
    0x0000b1ac movs r0, 4                                            |     r0 = 4;
    0x0000b1ae add r1, pc                                            |     r1 = 0x1667c;
    0x0000b1b0 bl 0xfcdc                                             |     fcn_0000fcdc (r0);
    0x0000b1b4 b 0xab56                                              |     goto label_31;
                                                                     | label_84:
    0x0000b1b6 ldr r1, [pc, 0x314]                                   |     
    0x0000b1b8 movs r0, 7                                            |     r0 = 7;
    0x0000b1ba add r1, pc                                            |     r1 = "Invalid value for FactoryDefaultMode.";
    0x0000b1bc bl 0xfcdc                                             |     fcn_0000fcdc (r0);
    0x0000b1c0 ldr r0, [pc, 0x30c]                                   |     
    0x0000b1c2 add r0, pc                                            |     r0 = 0x16696;
    0x0000b1c4 blx 0x29a4                                            |     r0 = fcn_000029a4 ();
    0x0000b1c8 cmp r0, 0                                             |     
                                                                     |     if (r0 >= 0) {
    0x0000b1ca bge.w 0xac92                                          |         goto label_32;
                                                                     |     }
    0x0000b1ce ldr r1, [pc, 0x304]                                   |     
    0x0000b1d0 movs r0, 2                                            |     r0 = 2;
    0x0000b1d2 add r1, pc                                            |     r1 = 0x166ac;
    0x0000b1d4 bl 0xfcdc                                             |     r0 = fcn_0000fcdc (r0);
    0x0000b1d8 blx 0x2f88                                            |     r0 = cxa_finalize ();
    0x0000b1dc ldr r5, [r0]                                          |     r5 = *(r0);
    0x0000b1de b 0xab7c                                              |     goto label_4;
                                                                     | label_103:
    0x0000b1e0 ldr r7, [pc, 0x2f4]                                   |     
    0x0000b1e2 add r7, pc                                            |     r7 = 0x166be;
    0x0000b1e4 b.w 0xa9ae                                            |     goto label_22;
                                                                     | label_73:
    0x0000b1e8 ldr r1, [pc, 0x2f0]                                   |     
    0x0000b1ea movs r0, 4                                            |     r0 = 4;
    0x0000b1ec add r1, pc                                            |     r1 = 0x166cc;
    0x0000b1ee bl 0xfcdc                                             |     fcn_0000fcdc (r0);
    0x0000b1f2 b 0xab12                                              |     goto label_25;
                                                                     | label_86:
    0x0000b1f4 ldr r0, [pc, 0x2e8]                                   |     
    0x0000b1f6 add r0, pc                                            |     r0 = 0x166da;
    0x0000b1f8 bl 0x102dc                                            |     r0 = fcn_000102dc (r0);
    0x0000b1fc cmp r0, 0                                             |     
                                                                     |     if (r0 != 0) {
    0x0000b1fe bne.w 0xab76                                          |         goto label_6;
                                                                     |     }
    0x0000b202 ldr r0, [pc, 0x2e0]                                   |     
    0x0000b204 add r0, pc                                            |     r0 = 0x166ee;
    0x0000b206 bl 0x102dc                                            |     r0 = fcn_000102dc (r0);
    0x0000b20a cmp r0, 0                                             |     
                                                                     |     if (r0 == 0) {
    0x0000b20c beq.w 0xacc0                                          |         goto label_33;
                                                                     |     }
    0x0000b210 b 0xab76                                              |     goto label_6;
                                                                     | label_113:
    0x0000b212 ldr.w r8, [pc, 0x2d4]                                 |     
    0x0000b216 movs r7, 0                                            |     r7 = 0;
    0x0000b218 add r8, pc                                            |     r8 = 0x16706;
    0x0000b21a b.w 0xa9f4                                            |     goto label_9;
                                                                     | label_104:
    0x0000b21e ldr r1, [pc, 0x2cc]                                   |     
    0x0000b220 ldr r0, [pc, 0x2cc]                                   |     
    0x0000b222 add r1, pc                                            |     r1 = 0x16714;
    0x0000b224 add r0, pc                                            |     r0 = 0x16718;
    0x0000b226 bl 0xa324                                             |     r0 = fcn_0000a324 (r0, r1);
    0x0000b22a cmp r0, 0                                             |     
                                                                     |     if (r0 == 0) {
    0x0000b22c beq.w 0xafb8                                          |         goto label_34;
                                                                     |     }
                                                                     | label_105:
    0x0000b230 ldr r1, [pc, 0x2c0]                                   |     
    0x0000b232 movs r0, 4                                            |     r0 = 4;
    0x0000b234 add r1, pc                                            |     r1 = 0x1672c;
    0x0000b236 bl 0xfcdc                                             |     fcn_0000fcdc (r0);
    0x0000b23a ldr r1, [pc, 0x2bc]                                   |     
    0x0000b23c movs r0, 7                                            |     r0 = 7;
    0x0000b23e add r1, pc                                            |     r1 = 0x1673c;
    0x0000b240 bl 0xfcdc                                             |     fcn_0000fcdc (r0);
    0x0000b244 ldr r3, [r6]                                          |     r3 = *(r6);
    0x0000b246 cmp r3, 4                                             |     
                                                                     |     if (r3 == 4) {
    0x0000b248 beq 0xb300                                            |         goto label_115;
                                                                     |     }
    0x0000b24a cmp r3, 3                                             |     
                                                                     |     if (r3 == 3) {
    0x0000b24c beq 0xb312                                            |         goto label_116;
                                                                     |     }
    0x0000b24e cmp r3, 2                                             |     
                                                                     |     if (r3 == 2) {
    0x0000b250 beq.w 0xb568                                          |         goto label_117;
                                                                     |     }
    0x0000b254 ldr r3, [pc, 0x2a4]                                   |     
    0x0000b256 add r3, pc                                            |     r3 = 0x16756;
                                                                     | label_40:
    0x0000b258 str r3, [sp, 4]                                       |     var_4h = r3;
    0x0000b25a mov.w r2, 0x100                                       |     r2 = 0x100;
    0x0000b25e ldr r3, [pc, 0x2a0]                                   |     
    0x0000b260 movs r1, 1                                            |     r1 = 1;
    0x0000b262 add r0, sp, 0x16c                                     |     r0 += s1;
    0x0000b264 str r0, [sp, 0x18]                                    |     var_18h = r0;
    0x0000b266 add r3, pc                                            |     r3 = 0x1676c;
    0x0000b268 strd r3, r3, [sp, 8]                                  |     __asm ("strd r3, r3, [var_8h]");
    0x0000b26c ldr r3, [pc, 0x294]                                   |     
    0x0000b26e add r3, pc                                            |     r3 = 0x16776;
    0x0000b270 str r3, [sp]                                          |     *(sp) = r3;
    0x0000b272 ldr r3, [pc, 0x294]                                   |     
    0x0000b274 add r3, pc                                            |     r3 = 0x16782;
    0x0000b276 blx 0x2e80                                            |     strncmp (r0, r1, r2);
    0x0000b27a ldr r0, [sp, 0x18]                                    |     r0 = var_18h;
    0x0000b27c blx 0x28d8                                            |     r0 = fcn_000028d8 ();
    0x0000b280 mov r3, r0                                            |     r3 = r0;
    0x0000b282 b 0xb0c0                                              |     goto label_35;
                                                                     | label_114:
    0x0000b284 ldr r7, [pc, 0x284]                                   |     
    0x0000b286 ldr.w r8, [pc, 0x288]                                 |     
    0x0000b28a add r7, pc                                            |     r7 = 0x1679a;
    0x0000b28c add r8, pc                                            |     r8 = 0x167a2;
    0x0000b28e b.w 0xa9f4                                            |     goto label_9;
                                                                     | label_90:
    0x0000b292 ldr r0, [pc, 0x280]                                   |     
    0x0000b294 movs r1, 0                                            |     r1 = 0;
    0x0000b296 add r0, pc                                            |     r0 = 0x167b0;
    0x0000b298 bl 0x70c8                                             |     fcn_000070c8 (r0, r1, r2);
    0x0000b29a vqrshl.u16 d14, d23, d6                               |     __asm ("vqrshl.u16 d14, d23, d6");
                                                                     | label_87:
    0x0000b29e bl 0x9b00                                             |     r0 = fcn_00009b00 (r0);
    0x0000b2a2 cmp r0, 0                                             |     
                                                                     |     if (r0 == 0) {
    0x0000b2a4 beq.w 0xacca                                          |         goto label_36;
                                                                     |     }
    0x0000b2a8 b 0xab76                                              |     goto label_6;
                                                                     | label_107:
    0x0000b2aa ldr r3, [pc, 0x26c]                                   |     
    0x0000b2ac add r3, pc                                            |     r3 = 0x167ca;
    0x0000b2ae b 0xb040                                              |     goto label_37;
                                                                     | label_88:
    0x0000b2b0 bl 0x3d2c                                             |     fcn_00003d2c ();
    0x0000b2b4 b 0xacde                                              |     goto label_38;
                                                                     | label_108:
    0x0000b2b6 ldr r3, [pc, 0x264]                                   |     
    0x0000b2b8 add r3, pc                                            |     r3 = 0x167da;
    0x0000b2ba b 0xb040                                              |     goto label_37;
                                                                     | label_109:
    0x0000b2bc ldr r3, [pc, 0x260]                                   |     
    0x0000b2be add r3, pc                                            |     r3 = 0x167e2;
    0x0000b2c0 b 0xb040                                              |     goto label_37;
                                                                     | label_106:
    0x0000b2c2 ldr r1, [pc, 0x260]                                   |     
    0x0000b2c4 movs r0, 7                                            |     r0 = 7;
    0x0000b2c6 add r1, pc                                            |     r1 = 0x167f0;
    0x0000b2c8 bl 0xfcdc                                             |     fcn_0000fcdc (r0);
    0x0000b2cc ldr.w r3, [r8]                                        |     r3 = *(r8);
    0x0000b2d0 movs r2, 1                                            |     r2 = 1;
    0x0000b2d2 ldr r1, [pc, 0x254]                                   |     
    0x0000b2d4 movs r0, 0x4b                                         |     r0 = 0x4b;
    0x0000b2d6 ldr r3, [r3, 0x14]                                    |     r3 = *((r3 + 0x14));
    0x0000b2d8 add r1, pc                                            |     r1 = 0x16806;
    0x0000b2da blx r3                                                |     r0 = uint32_t (*r3)(uint32_t, uint32_t, uint32_t, uint32_t) (r0, r1, r2, r3);
    0x0000b2dc cmp r0, 0                                             |     
                                                                     |     if (r0 != 0) {
    0x0000b2de bne.w 0xb548                                          |         goto label_118;
                                                                     |     }
    0x0000b2e2 ldr r1, [pc, 0x248]                                   |     
    0x0000b2e4 ldr r0, [pc, 0x248]                                   |     
    0x0000b2e6 add r1, pc                                            |     r1 = 0x16818;
    0x0000b2e8 add r0, pc                                            |     r0 = 0x1681c;
    0x0000b2ea bl 0xa324                                             |     r0 = fcn_0000a324 (r0, r1);
    0x0000b2ee cmp r0, 0                                             |     
                                                                     |     if (r0 == 0) {
    0x0000b2f0 beq.w 0xafd0                                          |         goto label_39;
                                                                     |     }
    0x0000b2f4 ldr r1, [pc, 0x23c]                                   |     
    0x0000b2f6 ldr r0, [sp, 0x18]                                    |     r0 = var_18h;
    0x0000b2f8 add r1, pc                                            |     r1 = 0x16830;
    0x0000b2fa bl 0xfcdc                                             |     fcn_0000fcdc (r0);
    0x0000b2fe b 0xafd0                                              |     goto label_39;
                                                                     | label_115:
    0x0000b300 ldr r3, [pc, 0x234]                                   |     
    0x0000b302 add r3, pc                                            |     r3 = 0x1683e;
    0x0000b304 b 0xb258                                              |     goto label_40;
                                                                     | label_112:
    0x0000b306 ldr r1, [pc, 0x234]                                   |     
    0x0000b308 movs r0, 5                                            |     r0 = 5;
    0x0000b30a add r1, pc                                            |     r1 = 0x1684c;
    0x0000b30c bl 0xfcdc                                             |     fcn_0000fcdc (r0);
    0x0000b310 b 0xac8a                                              |     goto label_27;
                                                                     | label_116:
    0x0000b312 ldr r3, [pc, 0x22c]                                   |     
    0x0000b314 add r3, pc                                            |     r3 = 0x1685a;
    0x0000b316 b 0xb258                                              |     goto label_40;
                                                                     | label_110:
    0x0000b318 ldr r1, [pc, 0x228]                                   |     
    0x0000b31a movs r0, 2                                            |     r0 = 2;
    0x0000b31c add r1, pc                                            |     r1 = 0x16864;
    0x0000b31e bl 0xfcdc                                             |     r0 = fcn_0000fcdc (r0);
    0x0000b322 blx 0x2f88                                            |     r0 = cxa_finalize ();
    0x0000b326 ldr r5, [r0]                                          |     r5 = *(r0);
    0x0000b328 b 0xab7c                                              |     goto label_4;
                                                                     | label_118:
    0x0000b548 ldr r1, [pc, 0x24]                                    |     
    0x0000b54a movs r0, 2                                            |     r0 = 2;
    0x0000b54c add r1, pc                                            |     r1 = "Name";
    0x0000b54e bl 0xfcdc                                             |     r0 = fcn_0000fcdc (r0);
    0x0000b552 blx 0x2f88                                            |     r0 = cxa_finalize ();
    0x0000b556 ldr r5, [r0]                                          |     r5 = *(r0);
    0x0000b558 b.w 0xab7c                                            |     goto label_4;
                                                                     | label_75:
    0x0000b55c blx 0x2cdc                                            |     fprintf_chk ()
                                                                     | label_78:
    0x0000b560 mov sb, r5                                            |     sb = r5;
    0x0000b562 mov r5, r0                                            |     r5 = r0;
    0x0000b564 b.w 0xaa6c                                            |     goto label_3;
                                                                     | label_117:
    0x0000b568 ldr r3, [pc, 8]                                       |     
    0x0000b56a add r3, pc                                            |     r3 = 0x16ae2;
    0x0000b56c b 0xb258                                              |     goto label_40;
                                                                     | }
    ; assembly                           | /* r2dec pseudo code output */
                                         | /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/sbin/fwmgr @ 0xb708 */
                                         | #include <stdint.h>
                                         |  
    ; (fcn) fcn.0000b708 ()              | void fcn_0000b708 () {
                                         |     int16_t var_0h;
                                         |     int16_t var_8h;
                                         |     int16_t var_64h;
    0x0000b708 ldr r1, [pc, 0xc8]        |     
    0x0000b70a ldr r2, [pc, 0xcc]        |     r2 = *(0xb7da);
    0x0000b70c push {r4, r5, lr}         |     
    0x0000b70e sub sp, 0x6c              |     
    0x0000b710 add r1, pc                |     r1 = "List";
    0x0000b712 ldr r4, [pc, 0xc8]        |     
    0x0000b714 ldr r2, [r1, r2]          |     
    0x0000b716 ldr r3, [pc, 0xc8]        |     r3 = *(0xb7e2);
    0x0000b718 add r4, pc                |     r4 = 0x16efa;
    0x0000b71a ldr r2, [r2]              |     r2 = "List";
    0x0000b71c str r2, [sp, 0x64]        |     var_64h = r2;
    0x0000b71e mov.w r2, 0               |     r2 = 0;
    0x0000b720 lsls r0, r0, 8            |     r0 <<= 8;
    0x0000b722 ldr r3, [r4, r3]          |     
    0x0000b724 ldr r3, [r3]              |     r3 = *(0x16efa);
    0x0000b726 cmp r3, 1                 |     
                                         |     if (r3 <= 1) {
    0x0000b728 bhi 0xb76c                |         
    0x0000b72a ldr r3, [pc, 0xb8]        |         
    0x0000b72c movs r2, 8                |         r2 = 8;
    0x0000b72e ldr r1, [pc, 0xb8]        |         
    0x0000b730 mov.w r0, 0x102           |         r0 = 0x102;
    0x0000b734 ldr r3, [r4, r3]          |         r3 = *((r4 + r3));
    0x0000b736 add r1, pc                |         r1 = 0x16f24;
    0x0000b738 ldr r3, [r3]              |         
    0x0000b73a ldr r3, [r3, 0x14]        |         r3 = *(0xb7fa);
    0x0000b73c blx r3                    |         r0 = uint32_t (*r3)(uint32_t, uint32_t, uint32_t, uint32_t) (r0, r1, r2, r3);
                                         |         if (r0 != 0) {
    0x0000b73e cbz r0, 0xb756            |             
    0x0000b740 blx 0x2f88                |             r0 = cxa_finalize ();
    0x0000b744 ldr r3, [r0]              |             r3 = *(r0);
    0x0000b746 mov r5, r0                |             r5 = r0;
    0x0000b748 cmp r3, 0x10              |             
                                         |             if (r3 != 0x10) {
    0x0000b74a bne 0xb7aa                |                 goto label_1;
                                         |             }
    0x0000b74c ldr r1, [pc, 0x9c]        |             
    0x0000b74e movs r0, 4                |             r0 = 4;
    0x0000b750 add r1, pc                |             r1 = "StopAuto";
    0x0000b752 bl 0xfcdc                 |             fcn_0000fcdc (r0);
                                         |         }
    0x0000b756 ldr r0, [pc, 0x98]        |         
    0x0000b758 add r1, sp, 8             |         r1 += var_8h;
    0x0000b75a add r0, pc                |         r0 = 0x16f50;
    0x0000b75c blx 0x2f28                |         r0 = add_key ();
                                         |         if (r0 != 0) {
    0x0000b760 cbnz r0, 0xb7b8           |             goto label_2;
                                         |         }
    0x0000b762 ldr r3, [pc, 0x90]        |         r3 = *(0xb7f6);
    0x0000b764 movs r2, 1                |         r2 = 1;
    0x0000b766 ldr r3, [r4, r3]          |         r3 = *((r4 + r3));
    0x0000b768 strb r2, [r3]             |         *(r3) = r2;
    0x0000b76a b 0xb792                  |         
                                         |     } else {
    0x0000b76c ldr r2, [pc, 0x88]        |         
    0x0000b76e movs r3, 8                |         r3 = 8;
    0x0000b770 ldr r4, [pc, 0x88]        |         
    0x0000b772 ldr r1, [pc, 0x8c]        |         
    0x0000b774 add r2, pc                |         r2 = 0x16f70;
    0x0000b776 add r4, pc                |         r4 = 0x16f76;
    0x0000b778 mov r0, r2                |         r0 = r2;
    0x0000b77a add r1, pc                |         r1 = 0x16f80;
    0x0000b77c str r4, [sp]              |         *(sp) = r4;
    0x0000b77e blx 0x2c70                |         r0 = ctype_b_loc ();
    0x0000b782 cmp r0, 0                 |         
                                         |         if (r0 < 0) {
    0x0000b784 blt 0xb7bc                |             goto label_3;
                                         |         }
    0x0000b786 ldr r1, [pc, 0x7c]        |         
    0x0000b788 movs r0, 7                |         r0 = 7;
    0x0000b78a add r1, pc                |         r1 = "UpgradeRaw";
    0x0000b78c bl 0xfcdc                 |         fcn_0000fcdc (r0);
    0x0000b790 movs r0, 0                |         r0 = 0;
                                         |     }
                                         |     do {
                                         | label_0:
    0x0000b792 ldr r2, [pc, 0x74]        |         
    0x0000b794 ldr r3, [pc, 0x40]        |         r3 = *(0xb7d8);
    0x0000b796 add r2, pc                |         r2 = 0x16fa4;
    0x0000b798 ldr r3, [r2, r3]          |         r3 = *(0x16fa4);
    0x0000b79a ldr r2, [r3]              |         r2 = *(0x16fa4);
    0x0000b79c ldr r3, [sp, 0x64]        |         r3 = var_64h;
    0x0000b79e eors r2, r3               |         r2 ^= r3;
    0x0000b7a0 mov.w r3, 0               |         r3 = 0;
                                         |         if (r2 != r3) {
    0x0000b7a4 bne 0xb7ce                |             goto label_4;
                                         |         }
    0x0000b7a6 add sp, 0x6c              |         
    0x0000b7a8 pop {r4, r5, pc}          |         
                                         | label_1:
    0x0000b7aa ldr r1, [pc, 0x60]        |         
    0x0000b7ac movs r0, 2                |         r0 = 2;
    0x0000b7ae add r1, pc                |         r1 = 0x16fc0;
    0x0000b7b0 bl 0xfcdc                 |         fcn_0000fcdc (r0);
    0x0000b7b4 ldr r0, [r5]              |         r0 = *(r5);
    0x0000b7b6 b 0xb792                  |         
                                         |     } while (1);
                                         | label_2:
    0x0000b7b8 movs r0, 0                |     r0 = 0;
    0x0000b7ba b 0xb792                  |     goto label_0;
                                         | label_3:
    0x0000b7bc ldr r1, [pc, 0x50]        |     
    0x0000b7be movs r0, 2                |     r0 = 2;
    0x0000b7c0 add r1, pc                |     r1 = 0x16fd4;
    0x0000b7c2 bl 0xfcdc                 |     r0 = fcn_0000fcdc (r0);
    0x0000b7c6 blx 0x2f88                |     r0 = cxa_finalize ();
    0x0000b7ca ldr r0, [r0]              |     r0 = *(r0);
    0x0000b7cc b 0xb792                  |     goto label_0;
                                         | label_4:
    0x0000b7ce blx 0x2cdc                |     fprintf_chk ()
    0x0000b7d2 nop                       |     
    0x0000b7d4 adds r5, 0x2c             |     r5 += 0x2c;
    0x0000b7d6 movs r2, r0               |     r2 = r0;
    0x0000b7d8 lsls r4, r1, 0xd          |     r4 = r1 << 0xd;
    0x0000b7da movs r0, r0               |     
    0x0000b7dc adds r5, 0x24             |     r5 += 0x24;
    0x0000b7de movs r2, r0               |     r2 = r0;
    0x0000b7e0 lsls r4, r6, 0xb          |     r4 = r6 << 0xb;
    0x0000b7e2 movs r0, r0               |     
    0x0000b7e4 lsls r4, r6, 0xd          |     r4 = r6 << 0xd;
    0x0000b7e6 movs r0, r0               |     
    0x0000b7e8 bkpt 0x1e                 |     __asm ("bkpt 0x1e");
                                         | }
    ; assembly                                               | /* r2dec pseudo code output */
                                                             | /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/sbin/fwmgr @ 0xb92c */
                                                             | #include <stdint.h>
                                                             |  
    ; (fcn) fcn.0000b92c ()                                  | void fcn_0000b92c (int16_t arg_b0h, int16_t arg_b4h, char * arg1, int16_t arg2, int16_t arg3, int16_t arg4) {
                                                             |     int16_t var_0h;
                                                             |     int16_t var_4h;
                                                             |     int16_t var_ch;
                                                             |     int16_t var_8ch;
                                                             |     r0 = arg1;
                                                             |     r1 = arg2;
                                                             |     r2 = arg3;
                                                             |     r3 = arg4;
                                                             |     if (? >= ?) {
    0x0000b92c ldrbmi lr, [r0, sp, lsr 18]!                  |         
                                                             |     }
    0x0000b930 sub sp, 0x90                                  |     
    0x0000b932 strd r2, r3, [sp]                             |     __asm ("strd r2, r3, [sp]");
    0x0000b936 mov r7, r2                                    |     r7 = r2;
    0x0000b938 mov sl, r3                                    |     sl = r3;
    0x0000b93a add r4, sp, 0xc                               |     r4 += var_ch;
    0x0000b93c ldr r2, [pc, 0x1c4]                           |     
    0x0000b93e mov r6, r0                                    |     r6 = r0;
    0x0000b940 ldr r3, [pc, 0x1c4]                           |     r3 = *(0xbb08);
    0x0000b942 mov r8, r1                                    |     r8 = r1;
    0x0000b944 mov r0, r4                                    |     r0 = r4;
    0x0000b946 movs r1, 1                                    |     r1 = 1;
    0x0000b948 add r2, pc                                    |     r2 = 0x17450;
    0x0000b94a ldr.w sb, [sp, 0xb0]                          |     sb = *(arg_b0h);
    0x0000b94e ldr r3, [r2, r3]                              |     
    0x0000b950 movs r2, 0x80                                 |     r2 = 0x80;
    0x0000b952 ldr r3, [r3]                                  |     r3 = *(0x17450);
    0x0000b954 str r3, [sp, 0x8c]                            |     var_8ch = r3;
    0x0000b956 mov.w r3, 0                                   |     r3 = 0;
    0x0000b95a ldr r3, [pc, 0x1b0]                           |     
    0x0000b95c add r3, pc                                    |     r3 = 0x1746e;
    0x0000b95e blx 0x2e80                                    |     strncmp (r0, r1, r2);
    0x0000b962 ldr r1, [pc, 0x1ac]                           |     
    0x0000b964 mov r0, r4                                    |     r0 = r4;
    0x0000b966 add r1, pc                                    |     r1 = 0x1747c;
    0x0000b968 blx 0x2920                                    |     r0 = fcn_00002920 ();
    0x0000b96c cmp r0, 0                                     |     
                                                             |     if (r0 == 0) {
    0x0000b96e beq.w 0xbaf2                                  |         goto label_3;
                                                             |     }
    0x0000b972 movs r3, 0                                    |     r3 = 0;
    0x0000b974 mov r5, r0                                    |     r5 = r0;
    0x0000b976 mov r2, r3                                    |     r2 = r3;
    0x0000b978 mov r1, r3                                    |     r1 = r3;
    0x0000b97a invalid                                       |     
    0x0000b97c strd r4, r6, [lr, 0x10]                       |     __asm ("strd r4, r6, [lr, 0x10]");
    0x0000b980 mov r0, r5                                    |     r0 = r5;
    0x0000b982 blx 0x2894                                    |     fcn_00002894 ();
                                                             | label_2:
    0x0000b986 cmp r4, 0                                     |     
                                                             |     if (r4 == 0) {
    0x0000b988 beq 0xba3e                                    |         goto label_4;
                                                             |     }
    0x0000b98a movs r1, 0                                    |     r1 = 0;
    0x0000b98c mov r0, r4                                    |     r0 = r4;
    0x0000b98e blx 0x286c                                    |     r0 = fcn_0000286c ();
    0x0000b992 mov r7, r0                                    |     r7 = r0;
                                                             |     if (r0 != 0) {
    0x0000b994 cbz r0, 0xb99e                                |         
    0x0000b996 blx 0x2c10                                    |         r0 = sem_timedwait ();
    0x0000b99a cmp r0, 1                                     |         
                                                             |         if (r0 == 1) {
    0x0000b99c beq 0xba56                                    |             goto label_5;
                                                             |         }
                                                             |     }
                                                             | label_1:
    0x0000b99e ldr r1, [pc, 0x174]                           |     
    0x0000b9a0 movs r0, 2                                    |     r0 = 2;
    0x0000b9a2 add r1, pc                                    |     r1 = 0x174bc;
    0x0000b9a4 bl 0xfcdc                                     |     fcn_0000fcdc (r0);
    0x0000b9a8 movs r2, 0                                    |     r2 = 0;
    0x0000b9aa movs r1, 0                                    |     r1 = 0;
    0x0000b9ac movs r0, 2                                    |     r0 = 2;
    0x0000b9ae blx 0x2e50                                    |     EVP_sha256 ();
    0x0000b9b2 blx 0x27a8                                    |     r0 = ERR_get_error ();
    0x0000b9b6 mov r5, r0                                    |     r5 = r0;
    0x0000b9b8 cmp r0, 0                                     |     
                                                             |     if (r0 == 0) {
    0x0000b9ba beq 0xba24                                    |         goto label_6;
                                                             |     }
    0x0000b9bc ldr r6, [pc, 0x158]                           |     
    0x0000b9be add r6, pc                                    |     r6 = 0x174da;
                                                             |     do {
    0x0000b9c0 movs r1, 0                                    |         r1 = 0;
    0x0000b9c2 blx 0x2b80                                    |         snprintf_chk ();
    0x0000b9c6 mov r1, r6                                    |         r1 = r6;
    0x0000b9c8 mov r2, r0                                    |         r2 = r0;
    0x0000b9ca movs r0, 2                                    |         r0 = 2;
    0x0000b9cc bl 0xfcdc                                     |         r0 = fcn_0000fcdc (r0);
    0x0000b9d0 blx 0x27a8                                    |         r0 = ERR_get_error ();
    0x0000b9d4 cmp r0, 0                                     |         
    0x0000b9d6 bne 0xb9c0                                    |         
                                                             |     } while (r0 != 0);
    0x0000b9d8 mov r0, r7                                    |     r0 = r7;
    0x0000b9da blx 0x2b74                                    |     sd_bus_message_get_bus ();
    0x0000b9de mov r0, r4                                    |     r0 = r4;
    0x0000b9e0 blx 0x2dd4                                    |     fcn_00002dd4 ();
    0x0000b9e4 blx 0x2f88                                    |     cxa_finalize ();
    0x0000b9e8 cmp r5, 0x42                                  |     
    0x0000b9ea mov r3, r0                                    |     r3 = r0;
                                                             |     if (r5 == 0x42) {
    0x0000b9ec beq 0xba1c                                    |         goto label_7;
                                                             |     }
                                                             |     if (r5 > 0x42) {
    0x0000b9ee bhi 0xba16                                    |         goto label_8;
                                                             |     }
    0x0000b9f0 cmp r5, 0x41                                  |     
    0x0000b9f2 ittt eq                                       |     
                                                             |     if (r5 != 0x41) {
    0x0000b9f4 moveq r2, 0xc                                 |         r2 = 0xc;
                                                             |     }
                                                             |     if (r5 != 0x41) {
    0x0000b9f6 moveq r0, r2                                  |         r0 = r2;
                                                             |     }
                                                             |     if (r5 != 0x41) {
    0x0000b9f8 streq r2, [r3]                                |         *(r3) = r2;
                                                             |     }
                                                             |     if (r5 != 0x41) {
    0x0000b9fa bne 0xba30                                    |         goto label_9;
                                                             |     }
                                                             |     do {
                                                             | label_0:
    0x0000b9fc ldr r2, [pc, 0x11c]                           |         
    0x0000b9fe ldr r3, [pc, 0x108]                           |         r3 = *(0xbb0a);
    0x0000ba00 add r2, pc                                    |         r2 = 0x17520;
    0x0000ba02 ldr r3, [r2, r3]                              |         r3 = *(0x17520);
    0x0000ba04 ldr r2, [r3]                                  |         r2 = *(0x17520);
    0x0000ba06 ldr r3, [sp, 0x8c]                            |         r3 = var_8ch;
    0x0000ba08 eors r2, r3                                   |         r2 ^= r3;
    0x0000ba0a mov.w r3, 0                                   |         r3 = 0;
                                                             |         if (r2 != r3) {
    0x0000ba0e bne 0xbafe                                    |             goto label_10;
                                                             |         }
    0x0000ba10 add sp, 0x90                                  |         
    0x0000ba12 pop.w {r4, r5, r6, r7, r8, sb, sl, pc}        |         
                                                             | label_8:
    0x0000ba16 subs r5, 0x44                                 |         r5 -= 0x44;
    0x0000ba18 cmp r5, 1                                     |         
                                                             |         if (r5 > 1) {
    0x0000ba1a bhi 0xba30                                    |             goto label_9;
                                                             |         }
                                                             | label_7:
    0x0000ba1c movs r2, 0x5f                                 |         r2 = 0x5f;
    0x0000ba1e mov r0, r2                                    |         r0 = r2;
    0x0000ba20 str r2, [r3]                                  |         *(r3) = r2;
    0x0000ba22 b 0xb9fc                                      |         
                                                             |     } while (1);
                                                             | label_6:
    0x0000ba24 mov r0, r7                                    |     r0 = r7;
    0x0000ba26 blx 0x2b74                                    |     sd_bus_message_get_bus ();
    0x0000ba2a mov r0, r4                                    |     r0 = r4;
    0x0000ba2c blx 0x2dd4                                    |     fcn_00002dd4 ();
    0x0000ba2e invalid                                       |     
                                                             | label_9:
    0x0000ba30 blx 0x2f88                                    |     cxa_finalize ();
    0x0000ba34 movs r3, 0x16                                 |     r3 = 0x16;
    0x0000ba36 mov r2, r0                                    |     r2 = r0;
    0x0000ba38 str r3, [r2]                                  |     *(r2) = r3;
    0x0000ba3a mov r0, r3                                    |     r0 = r3;
    0x0000ba3c b 0xb9fc                                      |     goto label_0;
                                                             | label_4:
    0x0000ba3e bl 0xc1d0                                     |     r0 = fcn_0000c1d0 ();
    0x0000ba42 cmp r0, 0                                     |     
                                                             |     if (r0 == 0) {
    0x0000ba44 beq 0xbad8                                    |         goto label_11;
                                                             |     }
    0x0000ba46 ldr r1, [pc, 0xd8]                            |     
    0x0000ba48 movs r0, 5                                    |     r0 = 5;
    0x0000ba4a mov r2, r7                                    |     r2 = r7;
    0x0000ba4c add r1, pc                                    |     r1 = 0x17572;
    0x0000ba4e bl 0xfcdc                                     |     fcn_0000fcdc (r0);
    0x0000ba52 mov r0, r4                                    |     r0 = r4;
    0x0000ba54 b 0xb9fc                                      |     goto label_0;
                                                             | label_5:
    0x0000ba56 movs r5, 0                                    |     r5 = 0;
    0x0000ba58 movs r3, 6                                    |     r3 = 6;
    0x0000ba5a movw r2, 0x1001                               |     r2 = 0x1001;
    0x0000ba5e mov.w r1, -1                                  |     r1 = -1;
    0x0000ba62 mov r0, r7                                    |     r0 = r7;
    0x0000ba64 str r5, [sp]                                  |     *(sp) = r5;
    0x0000ba66 blx 0x27c0                                    |     r0 = RSA_pkey_ctx_ctrl ();
    0x0000ba6a cmp r0, 1                                     |     
                                                             |     if (r0 != 1) {
    0x0000ba6c bne 0xb99e                                    |         goto label_1;
                                                             |     }
    0x0000ba6e mov.w r3, -1                                  |     r3 = -1;
    0x0000ba72 movw r2, 0x1002                               |     r2 = 0x1002;
    0x0000ba76 movs r1, 0x18                                 |     r1 = 0x18;
    0x0000ba78 mov r0, r7                                    |     r0 = r7;
    0x0000ba7a str r5, [sp]                                  |     *(sp) = r5;
    0x0000ba7c blx 0x27c0                                    |     r0 = RSA_pkey_ctx_ctrl ();
    0x0000ba80 cmp r0, 1                                     |     
    0x0000ba82 mov sl, r0                                    |     sl = r0;
                                                             |     if (r0 != 1) {
    0x0000ba84 bne 0xb99e                                    |         goto label_1;
                                                             |     }
    0x0000ba86 blx 0x2e74                                    |     fcntl ();
    0x0000ba8a mov r3, sl                                    |     r3 = sl;
    0x0000ba8c str r0, [sp, 4]                               |     var_4h = r0;
    0x0000ba8e movs r2, 0xf8                                 |     r2 = 0xf8;
    0x0000ba90 mov.w r1, -1                                  |     r1 = -1;
    0x0000ba94 mov r0, r7                                    |     r0 = r7;
    0x0000ba96 str r5, [sp]                                  |     *(sp) = r5;
    0x0000ba98 blx 0x2f64                                    |     r0 = errno_location ();
    0x0000ba9c cmp r0, r5                                    |     
                                                             |     if (r0 <= r5) {
    0x0000ba9e ble.w 0xb99e                                  |         goto label_1;
                                                             |     }
    0x0000baa2 mov r3, r6                                    |     r3 = r6;
    0x0000baa4 ldr r2, [sp, 0xb4]                            |     r2 = *(arg_b4h);
    0x0000baa6 mov r1, sb                                    |     r1 = sb;
    0x0000baa8 mov r0, r7                                    |     r0 = r7;
    0x0000baaa str.w r8, [sp]                                |     __asm ("str.w r8, [sp]");
    0x0000baae blx 0x2f34                                    |     r0 = sd_bus_wait ();
    0x0000bab2 subs r6, r0, 0                                |     r6 = r0 - 0;
                                                             |     if (r6 < r0) {
    0x0000bab4 blt.w 0xb99e                                  |         goto label_1;
                                                             |     }
    0x0000bab8 mov r0, r7                                    |     r0 = r7;
    0x0000baba blx 0x2b74                                    |     sd_bus_message_get_bus ();
    0x0000babe mov r0, r4                                    |     r0 = r4;
    0x0000bac0 blx 0x2dd4                                    |     fcn_00002dd4 ();
    0x0000bac4 mov r0, r5                                    |     r0 = r5;
    0x0000bac6 cmp r6, 0                                     |     
                                                             |     if (r6 != 0) {
    0x0000bac8 bne 0xb9fc                                    |         goto label_0;
                                                             |     }
    0x0000baca blx 0x2f88                                    |     cxa_finalize ();
    0x0000bace movs r3, 0x47                                 |     r3 = 0x47;
    0x0000bad0 mov r2, r0                                    |     r2 = r0;
    0x0000bad2 str r3, [r2]                                  |     *(r2) = r3;
    0x0000bad4 mov r0, r3                                    |     r0 = r3;
    0x0000bad6 b 0xb9fc                                      |     goto label_0;
                                                             | label_11:
    0x0000bad8 ldr r1, [pc, 0x48]                            |     
    0x0000bada mov r2, r7                                    |     r2 = r7;
    0x0000badc movs r0, 3                                    |     r0 = 3;
    0x0000bade add r1, pc                                    |     r1 = 0x17606;
    0x0000bae0 bl 0xfcdc                                     |     r0 = fcn_0000fcdc (r0);
    0x0000bae4 blx 0x2f88                                    |     cxa_finalize ();
    0x0000bae8 movs r3, 0x7e                                 |     r3 = 0x7e;
    0x0000baea mov r2, r0                                    |     r2 = r0;
    0x0000baec str r3, [r2]                                  |     *(r2) = r3;
    0x0000baee mov r0, r3                                    |     r0 = r3;
    0x0000baf0 b 0xb9fc                                      |     goto label_0;
                                                             | label_3:
    0x0000baf2 mov r1, sl                                    |     r1 = sl;
    0x0000baf4 mov r0, r7                                    |     r0 = r7;
    0x0000baf6 bl 0xbda0                                     |     r0 = fcn_0000bda0 (r0, r1);
    0x0000bafa mov r4, r0                                    |     r4 = r0;
    0x0000bafc b 0xb986                                      |     goto label_2;
                                                             | label_10:
    0x0000bafe blx 0x2cdc                                    |     fprintf_chk ()
    0x0000bb02 nop                                           |     
    0x0000bb04 adds r2, 0xf4                                 |     r2 += 0xf4;
    0x0000bb06 movs r2, r0                                   |     r2 = r0;
    0x0000bb08 lsls r4, r1, 0xd                              |     r4 = r1 << 0xd;
    0x0000bb0a movs r0, r0                                   |     
    0x0000bb0c invalid                                       |     
                                                             | }
    ; assembly                                   | /* r2dec pseudo code output */
                                                 | /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/sbin/fwmgr @ 0xbd24 */
                                                 | #include <stdint.h>
                                                 |  
    ; (fcn) fcn.0000bd24 ()                      | void fcn_0000bd24 (int16_t arg1, int16_t arg2) {
                                                 |     int16_t var_4h;
                                                 |     int16_t var_8h;
                                                 |     int16_t var_ch;
                                                 |     int16_t var_1ch;
                                                 |     r0 = arg1;
                                                 |     r1 = arg2;
    0x0000bd24 blmi 0x6de594                     |     __asm ("blmi 0x6de594");
    0x0000bd28 push {r4, r5, lr}                 |     
    0x0000bd2a sub sp, 0x24                      |     
    0x0000bd2c add r2, pc                        |     r2 += pc;
    0x0000bd2e mov r5, r0                        |     r5 = r0;
    0x0000bd30 ldr r3, [r2, r3]                  |     r3 = *((r2 + r3));
    0x0000bd32 ldr r3, [r3]                      |     r3 = *(r3);
    0x0000bd34 str r3, [sp, 0x1c]                |     var_1ch = r3;
    0x0000bd36 mov.w r3, 0                       |     r3 = 0;
    0x0000bd3a bl 0xbc00                         |     r0 = fcn_0000bc00 (r0, r1);
    0x0000bd3e mov r4, r0                        |     r4 = r0;
    0x0000bd40 cbnz r0, 0xbd5c                   |     
                                                 |     while (r0 != 0) {
                                                 | label_0:
    0x0000bd42 ldr r2, [pc, 0x54]                |         
    0x0000bd44 ldr r3, [pc, 0x4c]                |         r3 = *(0xbd94);
    0x0000bd46 add r2, pc                        |         r2 = 0x17ae4;
    0x0000bd48 ldr r3, [r2, r3]                  |         r3 = *(0x17ae4);
    0x0000bd4a ldr r2, [r3]                      |         r2 = *(0x17ae4);
    0x0000bd4c ldr r3, [sp, 0x1c]                |         r3 = var_1ch;
    0x0000bd4e eors r2, r3                       |         r2 ^= r3;
    0x0000bd50 mov.w r3, 0                       |         r3 = 0;
    0x0000bd52 lsls r0, r0, 0xc                  |         r0 <<= 0xc;
                                                 |         if (r0 != r0) {
    0x0000bd54 bne 0xbd8a                        |             goto label_1;
                                                 |         }
    0x0000bd56 mov r0, r4                        |         r0 = r4;
    0x0000bd58 add sp, 0x24                      |         
    0x0000bd5a pop {r4, r5, pc}                  |         
    0x0000bd5c ldr r0, [r5, 0xc]                 |         r0 = *((r5 + 0xc));
    0x0000bd5e add r4, sp, 0xc                   |         r4 += var_ch;
    0x0000bd60 ldrh r3, [r5, 0x10]               |         r3 = *((r5 + 0x10));
    0x0000bd62 ldr r1, [r5, 0x18]                |         r1 = *((r5 + 0x18));
    0x0000bd64 ldr r2, [r5, 0x1c]                |         r2 = *((r5 + 0x1c));
    0x0000bd66 strh.w r3, [sp, 8]                |         var_8h = r3;
    0x0000bd6a str r0, [sp, 4]                   |         var_4h = r0;
    0x0000bd6c ldr r3, [r5, 0x20]                |         r3 = *((r5 + 0x20));
    0x0000bd6e ldr r0, [r5, 0x14]                |         r0 = *((r5 + 0x14));
    0x0000bd70 stm r4!, {r0, r1, r2, r3}         |         *(r4!) = r0;
                                                 |         *((r4! + 4)) = r1;
                                                 |         *((r4! + 8)) = r2;
                                                 |         *((r4! + 12)) = r3;
    0x0000bd72 add r0, sp, 4                     |         r0 += var_4h;
    0x0000bd74 bl 0xc098                         |         r0 = fcn_0000c098 (r0);
    0x0000bd78 mov r4, r0                        |         r4 = r0;
    0x0000bd7a cmp r0, 0                         |         
    0x0000bd7c bne 0xbd42                        |         
                                                 |     }
    0x0000bd7e ldr r1, [pc, 0x1c]                |     
    0x0000bd80 movs r0, 3                        |     r0 = 3;
    0x0000bd82 add r1, pc                        |     r1 = 0x17b24;
    0x0000bd84 bl 0xfcdc                         |     fcn_0000fcdc (r0);
    0x0000bd88 b 0xbd42                          |     goto label_0;
                                                 | label_1:
    0x0000bd8a blx 0x2cdc                        |     fprintf_chk ()
    0x0000bd8e nop                               |     
    0x0000bd90 cmp r7, 0x10                      |     
    0x0000bd92 movs r2, r0                       |     r2 = r0;
    0x0000bd94 lsls r4, r1, 0xd                  |     r4 = r1 << 0xd;
    0x0000bd96 movs r0, r0                       |     
    0x0000bd98 cmp r6, 0xf6                      |     
    0x0000bd9a movs r2, r0                       |     r2 = r0;
    0x0000bd9c b 0xb954                          |     return void (*0xb954)() ();
                                                 | }
    ; assembly                           | /* r2dec pseudo code output */
                                         | /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/sbin/fwmgr @ 0xbe08 */
                                         | #include <stdint.h>
                                         |  
    ; (fcn) fcn.0000be08 ()              | void fcn_0000be08 (int16_t arg1) {
                                         |     int32_t var_0h;
                                         |     int32_t var_0h_2;
                                         |     int16_t var_ch;
                                         |     int16_t var_8ch;
                                         |     r0 = arg1;
    0x0000be08 ldr r2, [pc, 0x74]        |     
    0x0000be0a ldr r3, [pc, 0x78]        |     r3 = *(0xbe86);
    0x0000be0c push {r4, lr}             |     
    0x0000be0e sub sp, 0x90              |     
    0x0000be10 add r2, pc                |     r2 = 0x17c94;
    0x0000be12 mov r4, r0                |     r4 = r0;
    0x0000be14 ldr r3, [r2, r3]          |     
    0x0000be16 ldr r3, [r3]              |     r3 = *(0x17c94);
    0x0000be18 str r3, [sp, 0x8c]        |     var_8ch = r3;
    0x0000be1a mov.w r3, 0               |     r3 = 0;
    0x0000be1e bl 0xce0c                 |     r0 = fcn_0000ce0c ();
                                         |     if (r0 == 0) {
    0x0000be22 cbz r0, 0xbe76            |         goto label_0;
                                         |     }
    0x0000be24 ldr r0, [pc, 0x60]        |     
    0x0000be26 movs r3, 0x80             |     r3 = 0x80;
    0x0000be28 mov r1, r3                |     r1 = r3;
    0x0000be2a movs r2, 1                |     r2 = 1;
    0x0000be2c add r0, pc                |     r0 = 0x17cb8;
    0x0000be2e strd r0, r4, [sp]         |     __asm ("strd r0, r4, [sp]");
    0x0000be32 add r4, sp, 0xc           |     r4 += var_ch;
    0x0000be34 mov r0, r4                |     r0 = r4;
    0x0000be36 blx 0x2b98                |     shutdown ();
    0x0000be3a ldr r1, [pc, 0x50]        |     
    0x0000be3c mov r0, r4                |     r0 = r4;
    0x0000be3e add r1, pc                |     r1 = 0x17cd0;
    0x0000be40 blx 0x2920                |     r0 = fcn_00002920 ();
    0x0000be44 mov r4, r0                |     r4 = r0;
                                         |     if (r0 == 0) {
    0x0000be46 cbz r0, 0xbe76            |         goto label_0;
                                         |     }
    0x0000be48 movs r3, 0                |     r3 = 0;
    0x0000be4a mov r2, r3                |     r2 = r3;
    0x0000be4c mov r1, r3                |     r1 = r3;
    0x0000be4e blx 0x2d18                |     r0 = strtok (r0, r1);
    0x0000be52 mov r3, r0                |     r3 = r0;
    0x0000be54 mov r0, r4                |     r0 = r4;
    0x0000be56 mov r4, r3                |     r4 = r3;
    0x0000be58 blx 0x2894                |     fcn_00002894 ();
                                         |     do {
    0x0000be5c ldr r2, [pc, 0x30]        |         
    0x0000be5e ldr r3, [pc, 0x24]        |         r3 = *(0xbe86);
    0x0000be60 add r2, pc                |         r2 = 0x17cf4;
    0x0000be62 ldr r3, [r2, r3]          |         r3 = *(0x17cf4);
    0x0000be64 ldr r2, [r3]              |         r2 = *(0x17cf4);
    0x0000be66 ldr r3, [sp, 0x8c]        |         r3 = var_8ch;
    0x0000be68 eors r2, r3               |         r2 ^= r3;
    0x0000be6a mov.w r3, 0               |         r3 = 0;
                                         |         if (r2 != r3) {
    0x0000be6e bne 0xbe7a                |             goto label_1;
                                         |         }
    0x0000be70 mov r0, r4                |         r0 = r4;
    0x0000be72 add sp, 0x90              |         
    0x0000be74 pop {r4, pc}              |         
                                         | label_0:
    0x0000be76 movs r4, 0                |         r4 = 0;
    0x0000be78 b 0xbe5c                  |         
                                         |     } while (1);
                                         | label_1:
    0x0000be7a blx 0x2cdc                |     fprintf_chk ()
    0x0000be7e nop                       |     
    0x0000be80 cmp r6, 0x2c              |     
    0x0000be82 movs r2, r0               |     r2 = r0;
    0x0000be84 lsls r4, r1, 0xd          |     r4 = r1 << 0xd;
    0x0000be86 movs r0, r0               |     
    0x0000be88 b 0xb97c                  |     return void (*0xb97c)() ();
                                         | }
    ; assembly                                           | /* r2dec pseudo code output */
                                                         | /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/sbin/fwmgr @ 0xbeb0 */
                                                         | #include <stdint.h>
                                                         |  
    ; (fcn) fcn.0000beb0 ()                              | void fcn_0000beb0 (size_t nitems, int16_t arg1, int16_t arg2, int16_t arg3, int16_t arg4) {
                                                         |     int16_t var_114h;
                                                         |     int16_t var_0h;
                                                         |     int16_t var_8h;
                                                         |     int16_t var_ch;
                                                         |     r0 = arg1;
                                                         |     r1 = arg2;
                                                         |     r2 = arg3;
                                                         |     r3 = arg4;
    0x0000beb0 push.w {r4, r5, r6, r7, r8, lr}           |     
    0x0000beb4 mov r7, r2                                |     r7 = r2;
    0x0000beb6 ldr r2, [pc, 0xb4]                        |     
    0x0000beb8 mov r6, r3                                |     r6 = r3;
    0x0000beba sub sp, 0x10                              |     
    0x0000bebc mov r5, r0                                |     r5 = r0;
    0x0000bebe ldr r3, [pc, 0xb0]                        |     r3 = *(0xbf72);
    0x0000bec0 mov r8, r1                                |     r8 = r1;
    0x0000bec2 add r2, pc                                |     r2 = 0x17e34;
    0x0000bec4 ldr r3, [r2, r3]                          |     
    0x0000bec6 ldr r3, [r3]                              |     r3 = *(0x17e34);
    0x0000bec8 str r3, [sp, 0xc]                         |     var_ch = r3;
    0x0000beca mov.w r3, 0                               |     r3 = 0;
    0x0000bece blx 0x2b20                                |     r0 = strtol (r0, r1, r2);
    0x0000bed2 mov r4, r0                                |     r4 = r0;
    0x0000bed4 cmp r0, 0                                 |     
                                                         |     if (r0 == 0) {
    0x0000bed6 beq 0xbf62                                |         goto label_0;
                                                         |     }
    0x0000bed8 blx 0x2e74                                |     fcntl ();
    0x0000bedc movs r3, 0                                |     r3 = 0;
    0x0000bede mov r2, r0                                |     r2 = r0;
    0x0000bee0 add r1, sp, 8                             |     r1 += var_8h;
    0x0000bee2 mov r0, r4                                |     r0 = r4;
    0x0000bee4 str r5, [sp]                              |     *(sp) = r5;
    0x0000bee6 blx 0x2a50                                |     r0 = fcn_00002a50 ();
    0x0000beea cmp r0, 0                                 |     
                                                         |     if (r0 > 0) {
    0x0000beec ble 0xbf3e                                |         
    0x0000beee movs r5, 0                                |         r5 = 0;
    0x0000bef0 ldr r0, [sp, 8]                           |         r0 = var_8h;
    0x0000bef2 movs r3, 6                                |         r3 = 6;
    0x0000bef4 movw r2, 0x1001                           |         r2 = 0x1001;
    0x0000bef8 mov.w r1, -1                              |         r1 = -1;
    0x0000befc str r5, [sp]                              |         *(sp) = r5;
    0x0000befe blx 0x27c0                                |         r0 = RSA_pkey_ctx_ctrl ();
    0x0000bf02 cmp r0, r5                                |         
                                                         |         if (r0 > r5) {
    0x0000bf04 ble 0xbf3e                                |             
    0x0000bf06 ldr r0, [sp, 8]                           |             r0 = var_8h;
    0x0000bf08 mov.w r3, -1                              |             r3 = -1;
    0x0000bf0c movw r2, 0x1002                           |             r2 = 0x1002;
    0x0000bf10 movs r1, 0x18                             |             r1 = 0x18;
    0x0000bf12 str r5, [sp]                              |             *(sp) = r5;
    0x0000bf14 blx 0x27c0                                |             r0 = RSA_pkey_ctx_ctrl ();
    0x0000bf18 cmp r0, r5                                |             
                                                         |             if (r0 <= r5) {
    0x0000bf1a ble 0xbf3e                                |                 goto label_1;
                                                         |             }
    0x0000bf1c mov r2, r7                                |             r2 = r7;
    0x0000bf1e mov r1, r8                                |             r1 = r8;
    0x0000bf20 mov r0, r4                                |             r0 = r4;
    0x0000bf22 blx 0x298c                                |             r0 = fcn_0000298c ();
    0x0000bf26 cmp r0, r5                                |             
                                                         |             if (r0 <= r5) {
    0x0000bf28 ble 0xbf3e                                |                 goto label_1;
                                                         |             }
    0x0000bf2a ldr r2, [sp, 0x28]                        |             r2 = *(nitems);
    0x0000bf2c mov r1, r6                                |             r1 = r6;
    0x0000bf2e mov r0, r4                                |             r0 = r4;
    0x0000bf30 blx 0x2c04                                |             r0 = fwrite (r0, r1, r2, r3);
    0x0000bf34 cmp r0, r5                                |             
    0x0000bf36 ite le                                    |             
                                                         |             if (r0 > r5) {
    0x0000bf38 movle r5, 0                               |                 r5 = 0;
                                                         |             }
                                                         |             if (r0 <= r5) {
    0x0000bf3a movgt r5, 1                               |                 r5 = 1;
                                                         |             }
    0x0000bf3c b 0xbf40                                  |             
                                                         |         }
                                                         |     } else {
                                                         | label_1:
    0x0000bf3e movs r5, 0                                |         r5 = 0;
                                                         |     }
    0x0000bf40 mov r0, r4                                |     r0 = r4;
    0x0000bf42 blx 0x2da0                                |     fcn_00002da0 ();
                                                         |     do {
    0x0000bf46 ldr r2, [pc, 0x2c]                        |         
    0x0000bf48 ldr r3, [pc, 0x24]                        |         r3 = *(0xbf70);
    0x0000bf4a add r2, pc                                |         r2 = 0x17ec4;
    0x0000bf4c ldr r3, [r2, r3]                          |         r3 = *(0x17ec4);
    0x0000bf4e ldr r2, [r3]                              |         r2 = *(0x17ec4);
    0x0000bf50 ldr r3, [sp, 0xc]                         |         r3 = var_ch;
    0x0000bf52 eors r2, r3                               |         r2 ^= r3;
    0x0000bf54 mov.w r3, 0                               |         r3 = 0;
                                                         |         if (r2 != r3) {
    0x0000bf58 bne 0xbf66                                |             goto label_2;
                                                         |         }
    0x0000bf5a mov r0, r5                                |         r0 = r5;
    0x0000bf5c add sp, 0x10                              |         
    0x0000bf5e pop.w {r4, r5, r6, r7, r8, pc}            |         
                                                         | label_0:
    0x0000bf62 mov r5, r0                                |         r5 = r0;
    0x0000bf64 b 0xbf46                                  |         
                                                         |     } while (1);
                                                         | label_2:
    0x0000bf66 blx 0x2cdc                                |     fprintf_chk ()
    0x0000bf6a nop                                       |     
    0x0000bf6c cmp r5, 0x7a                              |     
    0x0000bf6e movs r2, r0                               |     r2 = r0;
    0x0000bf70 lsls r4, r1, 0xd                          |     r4 = r1 << 0xd;
    0x0000bf72 movs r0, r0                               |     
    0x0000bf74 cmp r4, 0xf2                              |     
    0x0000bf76 movs r2, r0                               |     r2 = r0;
                                                         | }
    ; assembly                                   | /* r2dec pseudo code output */
                                                 | /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/sbin/fwmgr @ 0xbf78 */
                                                 | #include <stdint.h>
                                                 |  
    ; (fcn) fcn.0000bf78 ()                      | void fcn_0000bf78 () {
                                                 |     int32_t var_0h;
                                                 |     int32_t var_0h_2;
                                                 |     int32_t var_8h;
                                                 |     int32_t var_8h_2;
                                                 |     int16_t var_2h;
                                                 |     int16_t var_14h;
                                                 |     int16_t var_114h;
    0x0000bf78 sbclt fp, r6, r0, ror r5          |     __asm ("sbclt fp, r6, r0, ror r5");
    0x0000bf7c ldr r4, [pc, 0xe8]                |     
    0x0000bf7e ldr r2, [pc, 0xec]                |     
    0x0000bf80 ldr r3, [pc, 0xec]                |     r3 = *(0xc070);
    0x0000bf82 add r4, pc                        |     r4 = 0x17fee;
    0x0000bf84 ldrb r5, [r4]                     |     r5 = *(r4);
    0x0000bf86 add r2, pc                        |     r2 = 0x17ff8;
    0x0000bf88 ldr r3, [r2, r3]                  |     
    0x0000bf8a ldr r3, [r3]                      |     r3 = *(0x17ff8);
    0x0000bf8c str r3, [sp, 0x114]               |     var_114h = r3;
    0x0000bf8e mov.w r3, 0                       |     r3 = 0;
    0x0000bf92 cbz r5, 0xbfae                    |     
                                                 |     while (r0 == 0) {
                                                 | label_0:
    0x0000bf94 ldr r2, [pc, 0xdc]                |         
    0x0000bf96 ldr r3, [pc, 0xd8]                |         r3 = *(0xc072);
    0x0000bf98 add r2, pc                        |         r2 = 0x18010;
    0x0000bf9a ldr r3, [r2, r3]                  |         r3 = *(0x18010);
    0x0000bf9c ldr r2, [r3]                      |         r2 = *(0x18010);
    0x0000bf9e ldr r3, [sp, 0x114]               |         r3 = var_114h;
    0x0000bfa0 eors r2, r3                       |         r2 ^= r3;
    0x0000bfa2 mov.w r3, 0                       |         r3 = 0;
                                                 |         if (r2 != r3) {
    0x0000bfa6 bne 0xc064                        |             goto label_2;
                                                 |         }
    0x0000bfa8 mov r0, r5                        |         r0 = r5;
    0x0000bfaa add sp, 0x118                     |         
    0x0000bfac pop {r4, r5, r6, pc}              |         
    0x0000bfae ldr r0, [pc, 0xc8]                |         
    0x0000bfb0 add r0, pc                        |         r0 = 0x1802e;
    0x0000bfb2 blx 0x2ce8                        |         r0 = poll ();
    0x0000bfb6 cmp r0, 0                         |         
    0x0000bfb8 beq 0xbf94                        |         
                                                 |     }
    0x0000bfba ldr r1, [pc, 0xc0]                |     
    0x0000bfbc add.w r2, r4, 9                   |     r2 = r4 + 9;
    0x0000bfc0 add.w r3, r4, 8                   |     r3 = r4 + 8;
    0x0000bfc4 strd r3, r2, [sp, 8]              |     __asm ("strd r3, r2, [var_8h]");
    0x0000bfc8 adds r2, r4, 7                    |     r2 = r4 + 7;
    0x0000bfca adds r3, r4, 6                    |     r3 = r4 + 6;
    0x0000bfcc add r1, pc                        |     r1 = 0x1804e;
    0x0000bfce strd r3, r2, [sp]                 |     __asm ("strd r3, r2, [sp]");
    0x0000bfd2 adds r3, r4, 5                    |     r3 = r4 + 5;
    0x0000bfd4 adds r2, r4, 4                    |     r2 = r4 + 4;
    0x0000bfd6 blx 0x2848                        |     r0 = fcn_00002848 ();
    0x0000bfda cmp r0, 6                         |     
                                                 |     if (r0 != 6) {
    0x0000bfdc bne 0xbf94                        |         goto label_0;
                                                 |     }
    0x0000bfde vmov.i32 d16, 0                   |     __asm ("vmov.i32 d16, 0");
    0x0000bfe2 add r6, sp, 0x14                  |     r6 += var_14h;
    0x0000bfe4 ldr r0, [pc, 0x98]                |     
    0x0000bfe6 movs r3, 1                        |     r3 = 1;
    0x0000bfe8 mov.w r2, 0x100                   |     r2 = 0x100;
    0x0000bfea strb r0, [r0, 0xa]                |     *((r0 + 0xa)) = r0;
    0x0000bfec mov r1, r6                        |     r1 = r6;
    0x0000bfee vstr d16, [r4, 0x10]              |     __asm ("vstr d16, [r4, 0x10]");
    0x0000bff2 add r0, pc                        |     r0 = 0x18076;
    0x0000bff4 vstr d16, [r4, 0x18]              |     __asm ("vstr d16, [r4, 0x18]");
    0x0000bff8 strb.w r5, [r4, 0x20]             |     *((r4 + 0x20)) = r5;
    0x0000bffc bl 0x103f4                        |     r0 = fcn_000103f4 (r0, r1, r2, r3);
                                                 |     if (r0 != 0) {
    0x0000c000 cbz r0, 0xc00e                    |         
                                                 | label_1:
    0x0000c002 ldr r3, [pc, 0x80]                |         
    0x0000c004 movs r2, 1                        |         r2 = 1;
    0x0000c006 mov r5, r2                        |         r5 = r2;
    0x0000c008 add r3, pc                        |         r3 = 0x18092;
    0x0000c00a strb r2, [r3]                     |         *(r3) = r2;
    0x0000c00c b 0xbf94                          |         goto label_0;
                                                 |     }
    0x0000c00e bl 0x105d0                        |     fcn_000105d0 ();
    0x0000c012 ldr r1, [pc, 0x74]                |     
    0x0000c014 movs r2, 4                        |     r2 = 4;
    0x0000c016 add r1, pc                        |     r1 = 0x180a4;
    0x0000c018 blx 0x2ea4                        |     r0 = realloc (r0, r1);
                                                 |     if (r0 != 0) {
    0x0000c01c cbnz r0, 0xc03c                   |         goto label_3;
                                                 |     }
    0x0000c01e ldr r1, [pc, 0x6c]                |     
    0x0000c020 add.w r2, r4, 0x10                |     r2 = r4 + 0x10;
    0x0000c024 mov r0, r6                        |     r0 = r6;
    0x0000c026 add r1, pc                        |     r1 = 0x180b8;
    0x0000c028 blx 0x2848                        |     fcn_00002848 ();
    0x0000c02a invalid                           |     
                                                 |     if (r0 != 0) {
    0x0000c02e bne 0xbf94                        |         goto label_0;
                                                 |     }
                                                 |     do {
    0x0000c030 ldr r3, [pc, 0x5c]                |         
    0x0000c032 movs r2, 1                        |         r2 = 1;
    0x0000c034 add r3, pc                        |         r3 = 0x180c8;
    0x0000c036 strb.w r2, [r3, 0x20]             |         *((r3 + 0x20)) = r2;
    0x0000c03a b 0xc002                          |         goto label_1;
                                                 | label_3:
    0x0000c03c ldr r1, [pc, 0x54]                |         
    0x0000c03e add.w r2, r4, 0x1c                |         r2 = r4 + 0x1c;
    0x0000c042 add.w r3, r4, 0x18                |         r3 = r4 + 0x18;
    0x0000c046 mov r0, r6                        |         r0 = r6;
    0x0000c048 strd r3, r2, [sp]                 |         __asm ("strd r3, r2, [sp]");
    0x0000c04c add.w r3, r4, 0x14                |         r3 = r4 + 0x14;
    0x0000c050 add.w r2, r4, 0x10                |         r2 = r4 + 0x10;
    0x0000c054 add r1, pc                        |         r1 = 0x180ec;
    0x0000c056 blx 0x2848                        |         fcn_00002848 ();
    0x0000c05a subs r0, 2                        |         r0 -= 2;
    0x0000c05c bics r3, r0, 2                    |         __asm ("bics r3, var_2h");
    0x0000c060 beq 0xc030                        |         
                                                 |     } while (r0 == 2);
    0x0000c062 b 0xbf94                          |     goto label_0;
                                                 | label_2:
    0x0000c064 blx 0x2cdc                        |     fprintf_chk ()
    0x0000c068 adcs r2, r3                       |     __asm ("adcs r2, r3");
    0x0000c06a movs r2, r0                       |     r2 = r0;
    0x0000c06c cmp r4, 0xb6                      |     
    0x0000c06e movs r2, r0                       |     r2 = r0;
    0x0000c070 lsls r4, r1, 0xd                  |     r4 = r1 << 0xd;
    0x0000c072 movs r0, r0                       |     
    0x0000c074 cmp r4, 0xa4                      |     
    0x0000c076 movs r2, r0                       |     r2 = r0;
    0x0000c078 b 0xb8d4                          |     return void (*0xb8d4)() ();
                                                 | }


r2dec has crashed (info: /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/sbin/fwmgr @ 0xc208).
Please report the bug at https://github.com/radareorg/r2dec-js/issues
Use the option '--issue' or the command 'pddi' to generate 
the needed data for the issue.
    ; assembly                               | /* r2dec pseudo code output */
                                             | /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/sbin/fwmgr @ 0xc578 */
                                             | #include <stdint.h>
                                             |  
    ; (fcn) fcn.0000c578 ()                  | void fcn_0000c578 () {
                                             |     int16_t var_4h;
                                             |     int16_t var_ch;
    0x0000c578 push {r4, r5, r6, lr}         |     
    0x0000c57a sub sp, 0x10                  |     
    0x0000c57c ldr r5, [pc, 0xa8]            |     
    0x0000c57e ldr r2, [pc, 0xac]            |     
    0x0000c580 ldr r3, [pc, 0xac]            |     r3 = *(0xc630);
    0x0000c582 add r5, pc                    |     r5 = 0x18bae;
    0x0000c584 ldr r4, [r5]                  |     r4 = *(0x18bae);
    0x0000c586 add r2, pc                    |     r2 = 0x18bb8;
    0x0000c588 ldr r3, [r2, r3]              |     
    0x0000c58a ldr r3, [r3]                  |     r3 = *(0x18bb8);
    0x0000c58c str r3, [sp, 0xc]             |     var_ch = r3;
    0x0000c58e mov.w r3, 0                   |     r3 = 0;
                                             |     if (r4 == 0) {
    0x0000c592 cbz r4, 0xc5e4                |         goto label_2;
                                             |     }
                                             | label_0:
    0x0000c594 add r5, sp, 4                 |     r5 += var_4h;
    0x0000c596 movs r0, 0                    |     r0 = 0;
    0x0000c598 mov r1, r5                    |     r1 = r5;
    0x0000c59a ldr r6, [pc, 0x98]            |     
    0x0000c59c blx 0x2814                    |     clock_gettime ();
    0x0000c5a0 ldr r3, [sp, 4]               |     r3 = var_4h;
    0x0000c5a2 add r6, pc                    |     r6 = 0x18bdc;
    0x0000c5a4 adds r3, 0xa                  |     r3 += 0xa;
    0x0000c5a6 str r3, [sp, 4]               |     var_4h = r3;
    0x0000c5a8 b 0xc5b8                      |     
                                             |     while (r3 == r0) {
    0x0000c5aa blx 0x2f88                    |         r0 = cxa_finalize ();
    0x0000c5ae ldr r3, [r0]                  |         r3 = *(r0);
    0x0000c5b0 mov r4, r0                    |         r4 = r0;
    0x0000c5b2 cmp r3, 4                     |         
                                             |         if (r3 != 4) {
    0x0000c5b4 bne 0xc614                    |             goto label_3;
                                             |         }
    0x0000c5b6 ldr r4, [r6]                  |         r4 = *(r6);
    0x0000c5b8 mov r1, r5                    |         r1 = r5;
    0x0000c5ba mov r0, r4                    |         r0 = r4;
    0x0000c5bc blx 0x2c28                    |         r0 = closedir ();
    0x0000c5c0 adds r3, r0, 1                |         r3 = r0 + 1;
    0x0000c5c2 beq 0xc5aa                    |         
                                             |     }
    0x0000c5c4 cmp r0, 0                     |     
    0x0000c5c6 it ge                         |     
                                             |     if (r0 < 0) {
    0x0000c5c8 movge r0, 0                   |         r0 = 0;
                                             |     }
                                             |     if (r0 < 0) {
    0x0000c5ca blt 0xc60e                    |         goto label_4;
                                             |     }
                                             | label_1:
    0x0000c5cc ldr r2, [pc, 0x68]            |     
    0x0000c5ce ldr r3, [pc, 0x60]            |     r3 = *(0xc632);
    0x0000c5d0 add r2, pc                    |     r2 = 0x18c0c;
    0x0000c5d2 ldr r3, [r2, r3]              |     r3 = *(0x18c0c);
    0x0000c5d4 ldr r2, [r3]                  |     r2 = *(0x18c0c);
    0x0000c5d6 ldr r3, [sp, 0xc]             |     r3 = var_ch;
    0x0000c5d8 eors r2, r3                   |     r2 ^= r3;
    0x0000c5da mov.w r3, 0                   |     r3 = 0;
                                             |     if (r2 != r3) {
    0x0000c5de bne 0xc622                    |         goto label_5;
                                             |     }
    0x0000c5e0 add sp, 0x10                  |     
    0x0000c5e2 pop {r4, r5, r6, pc}          |     
                                             | label_2:
    0x0000c5e4 ldr r0, [pc, 0x54]            |     
    0x0000c5e6 movs r3, 1                    |     r3 = 1;
    0x0000c5e8 mov.w r2, 0x180               |     r2 = 0x180;
    0x0000c5ec movs r1, 0x40                 |     r1 = 0x40;
    0x0000c5ee add r0, pc                    |     r0 = 0x18c2e;
    0x0000c5f0 blx 0x2a98                    |     r0 = fcn_00002a98 ();
    0x0000c5f4 mov r4, r0                    |     r4 = r0;
    0x0000c5f6 str r0, [r5]                  |     *(r5) = r0;
    0x0000c5f8 cmp r0, 0                     |     
                                             |     if (r0 != 0) {
    0x0000c5fa bne 0xc594                    |         goto label_0;
                                             |     }
    0x0000c5fc ldr r1, [pc, 0x40]            |     
    0x0000c5fe movs r0, 2                    |     r0 = 2;
    0x0000c600 add r1, pc                    |     r1 = 0x18c44;
    0x0000c602 bl 0xfcdc                     |     r0 = fcn_0000fcdc (r0);
    0x0000c606 blx 0x2f88                    |     r0 = cxa_finalize ();
    0x0000c60a ldr r0, [r0]                  |     r0 = *(r0);
    0x0000c60c b 0xc5cc                      |     goto label_1;
                                             | label_4:
    0x0000c60e blx 0x2f88                    |     r0 = cxa_finalize ();
    0x0000c612 mov r4, r0                    |     r4 = r0;
                                             | label_3:
    0x0000c614 ldr r1, [pc, 0x2c]            |     
    0x0000c616 movs r0, 2                    |     r0 = 2;
    0x0000c618 add r1, pc                    |     r1 = 0x18c60;
    0x0000c61a bl 0xfcdc                     |     fcn_0000fcdc (r0);
    0x0000c61e ldr r0, [r4]                  |     r0 = *(r4);
    0x0000c620 b 0xc5cc                      |     goto label_1;
                                             | label_5:
    0x0000c622 blx 0x2cdc                    |     fprintf_chk ()
    0x0000c626 nop                           |     
    0x0000c628 subs r3, 0x7e                 |     r3 -= 0x7e;
    0x0000c62a movs r2, r0                   |     r2 = r0;
    0x0000c62c movs r6, 0xb6                 |     r6 = 0xb6;
    0x0000c62e movs r2, r0                   |     r2 = r0;
    0x0000c630 lsls r4, r1, 0xd              |     r4 = r1 << 0xd;
    0x0000c632 movs r0, r0                   |     
    0x0000c634 subs r3, 0x5e                 |     r3 -= 0x5e;
    0x0000c636 movs r2, r0                   |     r2 = r0;
    0x0000c638 movs r6, 0x6c                 |     r6 = 0x6c;
    0x0000c63a movs r2, r0                   |     r2 = r0;
    0x0000c63c b 0xbf34                      |     return void (*0xbf34)() ();
                                             | }
    ; assembly                                                   | /* r2dec pseudo code output */
                                                                 | /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/sbin/fwmgr @ 0xc958 */
                                                                 | #include <stdint.h>
                                                                 |  
    ; (fcn) fcn.0000c958 ()                                      | void fcn_0000c958 (int16_t arg1) {
                                                                 |     int16_t var_0h;
                                                                 |     int16_t var_4h;
                                                                 |     int16_t var_8h;
                                                                 |     int16_t var_ch;
                                                                 |     r0 = arg1;
    0x0000c958 ldr r1, [pc, 0x104]                               |     
    0x0000c95a movs r3, 0                                        |     r3 = 0;
    0x0000c95c ldr r2, [pc, 0x104]                               |     r2 = *(0xca64);
    0x0000c95e push.w {r4, r5, r6, r7, r8, sb, sl, lr}           |     
    0x0000c962 sub sp, 0x10                                      |     
    0x0000c964 add r1, pc                                        |     r1 = 0x193c8;
    0x0000c966 ldr.w sb, [pc, 0x100]                             |     sb = *(0x0000ca68);
    0x0000c96a mov r6, r0                                        |     r6 = r0;
    0x0000c96c ldr r2, [r1, r2]                                  |     
    0x0000c96e add sb, pc                                        |     sb += pc;
    0x0000c970 ldr r2, [r2]                                      |     r2 = *(0x193c8);
    0x0000c972 str r2, [sp, 0xc]                                 |     var_ch = r2;
    0x0000c974 mov.w r2, 0                                       |     r2 = 0;
    0x0000c978 strd r3, r3, [sp]                                 |     __asm ("strd r3, r3, [sp]");
    0x0000c97c str r3, [sp, 8]                                   |     var_8h = r3;
    0x0000c97e bl 0xc578                                         |     r0 = fcn_0000c578 ();
    0x0000c982 mov r5, r0                                        |     r5 = r0;
    0x0000c984 blx 0x2f88                                        |     r0 = cxa_finalize ();
    0x0000c988 mov r8, r0                                        |     r8 = r0;
                                                                 |     if (r5 != 0) {
    0x0000c98a cbz r5, 0xc9aa                                    |         
    0x0000c98c ldr r4, [r0]                                      |         r4 = *(r0);
                                                                 | label_0:
    0x0000c98e ldr r2, [pc, 0xdc]                                |         
    0x0000c990 ldr r3, [pc, 0xd0]                                |         r3 = *(0xca64);
    0x0000c992 add r2, pc                                        |         r2 = 0x19404;
    0x0000c994 ldr r3, [r2, r3]                                  |         r3 = *(0x19404);
    0x0000c996 ldr r2, [r3]                                      |         r2 = *(0x19404);
    0x0000c998 ldr r3, [sp, 0xc]                                 |         r3 = var_ch;
    0x0000c99a eors r2, r3                                       |         r2 ^= r3;
    0x0000c99c mov.w r3, 0                                       |         r3 = 0;
                                                                 |         if (r2 != r3) {
    0x0000c9a0 bne 0xca5a                                        |             goto label_3;
                                                                 |         }
    0x0000c9a2 mov r0, r4                                        |         r0 = r4;
    0x0000c9a4 add sp, 0x10                                      |         
    0x0000c9a6 pop.w {r4, r5, r6, r7, r8, sb, sl, pc}            |         
                                                                 |     }
    0x0000c9aa bl 0xce4c                                         |     fcn_0000ce4c ();
    0x0000c9ae mov sl, sp                                        |     sl = sp;
    0x0000c9b0 mov r7, r0                                        |     r7 = r0;
                                                                 |     if (r0 != 0) {
    0x0000c9b2 cbnz r0, 0xc9cc                                   |         goto label_1;
                                                                 |     }
    0x0000c9b4 b 0xca46                                          |     goto label_4;
                                                                 |     do {
    0x0000c9b6 bl 0xbb28                                         |         r0 = fcn_0000bb28 (r0);
                                                                 |         if (r0 != 0) {
    0x0000c9ba cbnz r0, 0xc9d6                                   |             goto label_5;
                                                                 |         }
    0x0000c9bc movs r2, 0x40                                     |         r2 = 0x40;
    0x0000c9be add.w r1, r4, 0x24                                |         r1 = r4 + 0x24;
    0x0000c9c2 mov r0, r6                                        |         r0 = r6;
    0x0000c9c4 blx 0x2ea4                                        |         r0 = realloc (r0, r1);
                                                                 |         if (r0 != 0) {
    0x0000c9c8 cbnz r0, 0xca30                                   |             goto label_6;
                                                                 |         }
    0x0000c9ca mov r5, r7                                        |         r5 = r7;
                                                                 | label_1:
    0x0000c9cc bl 0xce70                                         |         r0 = fcn_0000ce70 ();
    0x0000c9d0 mov r4, r0                                        |         r4 = r0;
    0x0000c9d2 cmp r0, 0                                         |         
    0x0000c9d4 bne 0xc9b6                                        |         
                                                                 |     } while (r0 != 0);
                                                                 | label_5:
    0x0000c9d6 ldr r7, [sp]                                      |     r7 = *(sp);
    0x0000c9d8 movs r4, 2                                        |     r4 = 2;
                                                                 |     if (r5 == 0) {
    0x0000c9da cbz r5, 0xca08                                    |         goto label_7;
                                                                 |     }
    0x0000c9dc bl 0xce9c                                         |     fcn_0000ce9c ();
    0x0000c9e0 ldr r3, [pc, 0x8c]                                |     
    0x0000c9e2 mov r1, r7                                        |     r1 = r7;
    0x0000c9e4 ldr r2, [sp, 4]                                   |     r2 = var_4h;
    0x0000c9e6 mov.w r0, 0x104                                   |     r0 = 0x104;
    0x0000c9ea ldr.w r3, [sb, r3]                                |     r3 = *((sb + r3));
    0x0000c9ec adds r0, 3                                        |     r0 += 3;
    0x0000c9ee ldr r3, [r3]                                      |     
    0x0000c9f0 ldr r3, [r3, 0x34]                                |     r3 = *(0xcaa4);
    0x0000c9f2 blx r3                                            |     r0 = uint32_t (*r3)(uint32_t, uint32_t, uint32_t, uint32_t) (r0, r1, r2, r3);
    0x0000c9f4 mov r4, r0                                        |     r4 = r0;
                                                                 |     if (r0 == 0) {
    0x0000c9f6 cbz r0, 0xca22                                    |         goto label_8;
                                                                 |     }
    0x0000c9f8 movs r4, 5                                        |     r4 = 5;
                                                                 | label_2:
    0x0000c9fa ldr r1, [pc, 0x78]                                |     
    0x0000c9fc mov r3, r4                                        |     r3 = r4;
    0x0000c9fe mov r2, r6                                        |     r2 = r6;
    0x0000ca00 movs r0, 3                                        |     r0 = 3;
    0x0000ca02 add r1, pc                                        |     r1 = 0x1947c;
    0x0000ca04 bl 0xfcdc                                         |     fcn_0000fcdc (r0);
                                                                 |     do {
                                                                 | label_7:
    0x0000ca08 mov r0, r7                                        |         r0 = r7;
    0x0000ca0a blx 0x29cc                                        |         fcn_000029cc ();
    0x0000ca0c invalid                                           |         
    0x0000ca10 invalid                                           |         
    0x0000ca14 add r3, pc                                        |         r3 += pc;
    0x0000ca16 ldr r0, [r3]                                      |         r0 = *(r3);
    0x0000ca18 blx 0x2c64                                        |         time (r0);
    0x0000ca1c str.w r4, [r8]                                    |         __asm ("str.w r4, [r8]");
    0x0000ca20 b 0xc98e                                          |         goto label_0;
                                                                 | label_8:
    0x0000ca22 ldr r1, [pc, 0x58]                                |         
    0x0000ca24 mov r2, r6                                        |         r2 = r6;
    0x0000ca26 movs r0, 6                                        |         r0 = 6;
    0x0000ca28 add r1, pc                                        |         r1 = 0x194aa;
    0x0000ca2a bl 0xfcdc                                         |         fcn_0000fcdc (r0);
    0x0000ca2e b 0xca08                                          |         
                                                                 |     } while (1);
                                                                 | label_6:
    0x0000ca30 mov r1, r4                                        |     r1 = r4;
    0x0000ca32 mov.w r2, 0x800                                   |     r2 = 0x800;
    0x0000ca36 mov r0, sl                                        |     r0 = sl;
    0x0000ca38 bl 0xc648                                         |     r0 = fcn_0000c648 (r0, r1, r2);
    0x0000ca3c cmp r0, 0                                         |     
                                                                 |     if (r0 >= 0) {
    0x0000ca3e bge 0xc9cc                                        |         goto label_1;
                                                                 |     }
    0x0000ca40 ldr r7, [sp]                                      |     r7 = *(sp);
    0x0000ca42 movs r4, 0xc                                      |     r4 = 0xc;
    0x0000ca44 b 0xc9fa                                          |     goto label_2;
                                                                 | label_4:
    0x0000ca46 ldr r3, [pc, 0x38]                                |     
    0x0000ca48 add r3, pc                                        |     r3 = 0x194ce;
    0x0000ca4a ldr r0, [r3]                                      |     r0 = *(0x194ce);
    0x0000ca4c blx 0x2c64                                        |     time (r0);
    0x0000ca50 movs r3, 5                                        |     r3 = 5;
    0x0000ca52 mov r4, r3                                        |     r4 = r3;
    0x0000ca54 str.w r3, [r8]                                    |     __asm ("str.w r3, [r8]");
    0x0000ca58 b 0xc98e                                          |     goto label_0;
                                                                 | label_3:
    0x0000ca5a blx 0x2cdc                                        |     fprintf_chk ()
    0x0000ca5e nop                                               |     
    0x0000ca60 movs r2, 0xd8                                     |     r2 = 0xd8;
    0x0000ca62 movs r2, r0                                       |     r2 = r0;
    0x0000ca64 lsls r4, r1, 0xd                                  |     r4 = r1 << 0xd;
    0x0000ca66 movs r0, r0                                       |     
    0x0000ca68 movs r2, 0xce                                     |     r2 = 0xce;
    0x0000ca6a movs r2, r0                                       |     r2 = r0;
    0x0000ca6c movs r2, 0xaa                                     |     r2 = 0xaa;
    0x0000ca6e movs r2, r0                                       |     r2 = r0;
    0x0000ca70 lsls r4, r6, 0xd                                  |     r4 = r6 << 0xd;
    0x0000ca72 movs r0, r0                                       |     
    0x0000ca74 svc 6                                             |     __asm ("svc 6");
    0x0000ca76 movs r0, r0                                       |     
    0x0000ca78 adds r6, 0xec                                     |     r6 += 0xec;
    0x0000ca7a movs r2, r0                                       |     r2 = r0;
    0x0000ca7c udf 0xbc                                          |     __asm ("udf 0xbc");
                                                                 | }
    ; assembly                                   | /* r2dec pseudo code output */
                                                 | /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/sbin/fwmgr @ 0xd4a4 */
                                                 | #include <stdint.h>
                                                 |  
    ; (fcn) fcn.0000d4a4 ()                      | void fcn_0000d4a4 (int16_t arg_50h) {
                                                 |     int16_t var_0h;
                                                 |     int16_t var_4h;
                                                 |     int16_t var_8h;
                                                 |     int16_t var_ch;
                                                 |     int32_t var_10h;
                                                 |     int16_t var_14h;
                                                 |     int16_t var_18h;
                                                 |     int16_t var_19h;
                                                 |     int16_t var_1ch;
                                                 |     int16_t var_20h;
                                                 |     int16_t var_24h;
                                                 |     int16_t var_28h;
                                                 |     int16_t var_2ch;
    0x0000d4a4 blmi 0xc9fd70                     |     __asm ("blmi 0xc9fd70");
    0x0000d4a8 push {r4, lr}                     |     
    0x0000d4aa sub sp, 0x30                      |     
    0x0000d4ac add r2, pc                        |     r2 += pc;
    0x0000d4ae ldr r4, [pc, 0xc4]                |     
    0x0000d4b0 ldr r0, [pc, 0xc4]                |     
    0x0000d4b2 ldr r3, [r2, r3]                  |     r3 = *((r2 + r3));
    0x0000d4b4 add r4, pc                        |     r4 = 0x1aa2e;
    0x0000d4b6 add r0, pc                        |     r0 = 0x1aa32;
    0x0000d4b8 ldr r3, [r3]                      |     r3 = *(r3);
    0x0000d4ba str r3, [sp, 0x2c]                |     var_2ch = r3;
    0x0000d4bc mov.w r3, 0                       |     r3 = 0;
    0x0000d4c0 blx 0x2acc                        |     strtoul (r0, r1, r2);
    0x0000d4c4 ldr r0, [r4]                      |     r0 = *(0x1aa2e);
    0x0000d4c6 cmp r0, 0                         |     
    0x0000d4c8 beq 0xd532                        |     
                                                 |     while (1) {
    0x0000d4ca ldr r1, [pc, 0xb0]                |         
    0x0000d4cc add r2, sp, 0x1c                  |         r2 += var_1ch;
    0x0000d4ce ldr r3, [pc, 0xb0]                |         
    0x0000d4d0 add r4, sp, 0x20                  |         r4 += var_20h;
    0x0000d4d2 str r2, [sp, 8]                   |         var_8h = r2;
    0x0000d4d4 movs r2, 0                        |         r2 = 0;
    0x0000d4d6 add r1, pc                        |         r1 = "axis-console-unlock";
    0x0000d4d8 ldr.w lr, [pc, 0xa8]              |         
    0x0000d4dc add r3, pc                        |         r3 = 0x1aa62;
    0x0000d4de ldr.w ip, [pc, 0xa8]              |         
    0x0000d4e2 str r3, [sp]                      |         *(sp) = r3;
    0x0000d4e4 str r1, [sp, 0xc]                 |         var_ch = r1;
    0x0000d4e6 add lr, pc                        |         lr = 0x1aa6e;
    0x0000d4e8 strd r2, r2, [sp, 0x20]           |         __asm ("strd r2, r2, [var_24h]");
    0x0000d4ec add ip, pc                        |         ip = 0x1aa7a;
    0x0000d4ee str r2, [sp, 0x28]                |         var_28h = r2;
    0x0000d4f0 str r2, [sp, 0x1c]                |         var_1ch = r2;
    0x0000d4f2 ldr r3, [pc, 0x98]                |         
    0x0000d4f4 ldr r2, [pc, 0x98]                |         
    0x0000d4f6 ldr r1, [pc, 0x9c]                |         
    0x0000d4f8 add r3, pc                        |         r3 = 0x1aa8a;
    0x0000d4fa strd ip, lr, [sp, 0x10]           |         __asm ("strd ip, lr, [var_14h]");
    0x0000d4fe add r2, pc                        |         r2 = 0x1aa92;
    0x0000d500 str r4, [sp, 4]                   |         var_4h = r4;
    0x0000d502 add r1, pc                        |         r1 = 0x1aa9c;
    0x0000d504 blx 0x2d0c                        |         r0 = sd_bus_request_name ();
    0x0000d508 cmp r0, 0                         |         
                                                 |         if (r0 < 0) {
    0x0000d50a blt 0xd540                        |             goto label_5;
                                                 |         }
                                                 | label_0:
    0x0000d50c ldr r0, [sp, 0x1c]                |         r0 = var_1ch;
                                                 |         if (r0 != 0) {
    0x0000d50e cbz r0, 0xd514                    |             
    0x0000d510 blx 0x2a5c                        |             fcn_00002a5c ();
                                                 |         }
                                                 | label_1:
    0x0000d514 ldr r2, [pc, 0x80]                |         
    0x0000d516 ldr r3, [pc, 0x58]                |         r3 = *(0xd572);
    0x0000d518 add r2, pc                        |         r2 = "/etc/fwmgr.rebootsource.tmp";
    0x0000d51a ldr r3, [r2, r3]                  |         r3 = "/etc/fwmgr.rebootsource.tmp";
    0x0000d51c ldr r2, [r3]                      |         r2 = "/etc/fwmgr.rebootsource.tmp";
    0x0000d51e ldr r3, [sp, 0x2c]                |         r3 = var_2ch;
    0x0000d520 eors r2, r3                       |         r2 ^= r3;
    0x0000d522 mov.w r3, 0                       |         r3 = 0;
                                                 |         if (r2 != r3) {
    0x0000d526 bne 0xd568                        |             goto label_6;
                                                 |         }
                                                 | label_2:
    0x0000d528 add sp, 0x30                      |         
    0x0000d52a pop.w {r4, lr}                    |         
    0x0000d52e b.w 0xd110                        |         void (*0xd110)() ();
    0x0000d532 mov r0, r4                        |         r0 = r4;
    0x0000d534 blx 0x2b14                        |         r0 = explicit_bzero_chk ();
    0x0000d538 cmp r0, 0                         |         
                                                 |         if (r0 < 0) {
    0x0000d53a blt 0xd554                        |             goto label_7;
                                                 |         }
    0x0000d53c ldr r0, [r4]                      |         r0 = *(r4);
    0x0000d53e b 0xd4ca                          |         
                                                 |     }
                                                 | label_5:
    0x0000d540 ldr r1, [pc, 0x58]                |     
    0x0000d542 movs r0, 4                        |     r0 = 4;
    0x0000d544 ldr r2, [sp, 0x24]                |     r2 = var_24h;
    0x0000d546 add r1, pc                        |     r1 = 0x1aae6;
    0x0000d548 bl 0xfcdc                         |     fcn_0000fcdc (r0);
    0x0000d54c mov r0, r4                        |     r0 = r4;
    0x0000d54e blx 0x2dc4                        |     fcn_00002dc4 ();
    0x0000d552 b 0xd50c                          |     goto label_0;
                                                 | label_7:
    0x0000d554 rsbs r0, r0, 0                    |     r0 -= ;
    0x0000d556 blx 0x273c                        |     strerror (r0);
    0x0000d55a ldr r1, [pc, 0x44]                |     
    0x0000d55c mov r2, r0                        |     r2 = r0;
    0x0000d55e movs r0, 4                        |     r0 = 4;
    0x0000d560 add r1, pc                        |     r1 = 0x1ab06;
    0x0000d562 bl 0xfcdc                         |     fcn_0000fcdc (r0);
    0x0000d566 b 0xd514                          |     goto label_1;
                                                 | label_6:
    0x0000d568 blx 0x2cdc                        |     fprintf_chk ()
    0x0000d56c asrs r0, r2, 0x1e                 |     r0 = r2 >> 0x1e;
    0x0000d56e movs r2, r0                       |     r2 = r0;
    0x0000d570 lsls r4, r1, 0xd                  |     r4 = r1 << 0xd;
    0x0000d572 movs r0, r0                       |     
    0x0000d574 adds r4, 0x50                     |     r4 += 0x50;
    0x0000d576 movs r2, r0                       |     r2 = r0;
                                                 |     if (r2 < r0) {
    0x0000d578 bls 0xd528                        |         goto label_2;
                                                 |     }
    0x0000d57a movs r0, r0                       |     
    0x0000d57c str r3, [sp, 8]                   |     var_8h = r3;
    0x0000d57e movs r0, r0                       |     
                                                 |     if (r0 >= r0) {
    0x0000d580 bge 0xd65c                        |         goto label_8;
                                                 |     }
    0x0000d582 movs r0, r0                       |     
                                                 |     if (r0 >= r0) {
                                                 |         do {
    0x0000d584 bge 0xd63c                        |             goto label_9;
                                                 |         }
    0x0000d586 movs r0, r0                       |         
    0x0000d588 bls 0xd584                        |         
                                                 |     } while (r0 < r0);
    0x0000d58a movs r0, r0                       |     
    0x0000d58c bvc 0xd678                        |     __asm ("bvc 0xd678");
    0x0000d58e movs r0, r0                       |     
    0x0000d590 bvc 0xd5f0                        |     __asm ("bvc aav.0x0000d5f0");
    0x0000d592 movs r0, r0                       |     
    0x0000d594 bvc 0xd624                        |     __asm ("bvc aav.0x0000d624");
    0x0000d596 movs r0, r0                       |     
    0x0000d598 asrs r4, r4, 0x1c                 |     r4 >>= 0x1c;
    0x0000d59a movs r2, r0                       |     r2 = r0;
                                                 |     if (r2 >= r0) {
    0x0000d59c bge 0xd5bc                        |         void (*0xd5bc)() ();
                                                 |     }
    0x0000d59e movs r0, r0                       |     
    0x0000d5a0 str r7, [sp, 0x50]                |     *(arg_50h) = r7;
    0x0000d5a2 movs r0, r0                       |     
    0x0000d624 mov r5, r1                        |     r5 = r1;
    0x0000d626 movs r3, 1                        |     r3 = 1;
    0x0000d628 ldr r0, [pc, 0x94]                |     
    0x0000d62a movs r2, 0x18                     |     r2 = 0x18;
    0x0000d62c add r4, pc                        |     r4 += pc;
    0x0000d62e add r1, sp, 0xc                   |     r1 += var_ch;
    0x0000d630 ldr r0, [r4, r0]                  |     r0 = *((r4 + r0));
    0x0000d632 ldr r0, [r0]                      |     r0 = *(0xd6c0);
    0x0000d634 str r0, [sp, 0x24]                |     var_24h = r0;
    0x0000d636 mov.w r0, 0                       |     r0 = 0;
    0x0000d63a mov r0, r5                        |     r0 = r5;
                                                 | label_9:
    0x0000d63c bl 0x10338                        |     r0 = fcn_00010338 (r0, r1, r2, r3);
                                                 |     if (r0 != 0) {
    0x0000d640 cbnz r0, 0xd6aa                   |         goto label_10;
                                                 |     }
    0x0000d642 ldr r2, [sp, 0x14]                |     r2 = var_14h;
    0x0000d644 movw r3, 0x5a9d                   |     
    0x0000d648 movt r3, 0x2d9f                   |     r3 = 0x2d9f5a9d;
    0x0000d64c cmp r2, r3                        |     
                                                 |     if (r2 != r3) {
    0x0000d64e bne 0xd692                        |         goto label_11;
                                                 |     }
    0x0000d650 ldrb.w r1, [sp, 0x19]             |     r1 = var_19h;
    0x0000d654 mov r2, r5                        |     r2 = r5;
    0x0000d656 ldrb.w r3, [sp, 0x18]             |     r3 = var_18h;
    0x0000d65a mov r4, r0                        |     r4 = r0;
                                                 | label_8:
    0x0000d65c movs r0, 7                        |     r0 = 7;
    0x0000d65e str r1, [sp]                      |     *(sp) = r1;
    0x0000d660 ldr r1, [pc, 0x60]                |     
    0x0000d662 add r1, pc                        |     r1 = 0x1ad2a;
    0x0000d664 bl 0xfcdc                         |     fcn_0000fcdc (r0);
    0x0000d668 ldrb.w r2, [sp, 0x18]             |     r2 = var_18h;
    0x0000d66c movs r1, 1                        |     r1 = 1;
    0x0000d66e ldrb.w r3, [sp, 0x19]             |     r3 = var_19h;
    0x0000d672 strb r1, [r6, 8]                  |     *((r6 + 8)) = r1;
    0x0000d674 strd r2, r3, [r6]                 |     __asm ("strd r2, r3, [r6]");
                                                 |     do {
                                                 | label_3:
    0x0000d678 ldr r2, [pc, 0x4c]                |         
    0x0000d67a ldr r3, [pc, 0x44]                |         r3 = *(0xd6c2);
    0x0000d67c add r2, pc                        |         r2 = 0x1ad48;
    0x0000d67e ldr r3, [r2, r3]                  |         r3 = *(0x1ad48);
    0x0000d680 ldr r2, [r3]                      |         r2 = *(0x1ad48);
    0x0000d682 ldr r3, [sp, 0x24]                |         r3 = var_24h;
    0x0000d684 eors r2, r3                       |         r2 ^= r3;
    0x0000d686 mov.w r3, 0                       |         r3 = 0;
                                                 |         if (r2 != r3) {
    0x0000d68a bne 0xd6b8                        |             goto label_12;
                                                 |         }
    0x0000d68c mov r0, r4                        |         r0 = r4;
    0x0000d68e add sp, 0x28                      |         
    0x0000d690 pop {r4, r5, r6, pc}              |         
                                                 | label_11:
    0x0000d692 ldr r1, [pc, 0x38]                |         
    0x0000d694 mov r2, r5                        |         r2 = r5;
    0x0000d696 movs r0, 2                        |         r0 = 2;
    0x0000d698 add r1, pc                        |         r1 = 0x1ad6a;
    0x0000d69a bl 0xfcdc                         |         r0 = fcn_0000fcdc (r0);
    0x0000d69e blx 0x2f88                        |         cxa_finalize ();
    0x0000d6a2 movs r3, 0x16                     |         r3 = 0x16;
    0x0000d6a4 mov r4, r3                        |         r4 = r3;
    0x0000d6a6 str r3, [r0]                      |         *(r0) = r3;
                                                 | label_4:
    0x0000d6a8 b 0xd678                          |         
                                                 |     } while (1);
                                                 | label_10:
    0x0000d6aa blx 0x2f88                        |     r0 = cxa_finalize ();
    0x0000d6ae ldr r4, [r0]                      |     r4 = *(r0);
    0x0000d6b0 cmp r4, 2                         |     
    0x0000d6b2 it eq                             |     
                                                 |     if (r4 != 2) {
    0x0000d6b4 moveq r4, 0                       |         r4 = 0;
                                                 |     }
    0x0000d6b6 b 0xd678                          |     goto label_3;
                                                 | label_12:
    0x0000d6b8 blx 0x2cdc                        |     fprintf_chk ()
    0x0000d6bc asrs r0, r2, 0x18                 |     r0 = r2 >> 0x18;
    0x0000d6be movs r2, r0                       |     r2 = r0;
    0x0000d6c0 lsls r4, r1, 0xd                  |     r4 = r1 << 0xd;
    0x0000d6c2 movs r0, r0                       |     
                                                 |     if (r0 < r0) {
    0x0000d6c4 bls 0xd75c                        |         void (*0xd75c)() ();
                                                 |     }
    0x0000d6c6 movs r0, r0                       |     
    0x0000d6c8 asrs r0, r0, 0x17                 |     r0 >>= 0x17;
    0x0000d6ca movs r2, r0                       |     r2 = r0;
                                                 |     if (r2 > r0) {
    0x0000d6cc bhi 0xd6a8                        |         goto label_4;
                                                 |     }
    0x0000d6ce movs r0, r0                       |     
                                                 | }
    ; assembly                                               | /* r2dec pseudo code output */
                                                             | /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/sbin/fwmgr @ 0xd6d0 */
                                                             | #include <stdint.h>
                                                             |  
    ; (fcn) fcn.0000d6d0 ()                                  | void fcn_0000d6d0 (int16_t arg_38h, char * s1, int16_t arg_454h_2, int16_t arg_454h) {
                                                             |     int16_t var_0h;
                                                             |     int16_t var_4h;
                                                             |     int16_t var_8h;
                                                             |     int16_t var_14h;
                                                             |     int16_t var_2ch;
    0x0000d6d0 ldr r3, [pc, 0x224]                           |     
    0x0000d6d2 ldr r1, [pc, 0x228]                           |     
    0x0000d6d4 ldr r2, [pc, 0x228]                           |     r2 = *(0xd900);
    0x0000d6d6 add r3, pc                                    |     r3 = 0x1afd2;
    0x0000d6d8 push.w {r4, r5, r6, r7, r8, sb, lr}           |     
    0x0000d6dc add r1, pc                                    |     r1 = 0x1afde;
    0x0000d6de ldrb r3, [r3]                                 |     r3 = *(r3);
    0x0000d6e0 subw sp, sp, 0x45c                            |     __asm ("subw sp, sp, 0x45c");
    0x0000d6e4 ldr r4, [pc, 0x21c]                           |     
    0x0000d6e6 ldr r2, [r1, r2]                              |     
    0x0000d6e8 add r4, pc                                    |     r4 = 0x1aff0;
    0x0000d6ea ldr r2, [r2]                                  |     r2 = *(0x1afde);
    0x0000d6ec str.w r2, [sp, 0x454]                         |     __asm ("str.w r2, [arg_454h_2]");
    0x0000d6f0 mov.w r2, 0                                   |     r2 = 0;
    0x0000d6f4 cmp r3, 0                                     |     
                                                             |     if (r3 != 0) {
    0x0000d6f6 beq 0xd75c                                    |         
    0x0000d6f8 ldr r3, [pc, 0x20c]                           |         
    0x0000d6fa movs r0, 0x44                                 |         r0 = 0x44;
    0x0000d6fc ldr r5, [r4, r3]                              |         r5 = *((r4 + r3));
    0x0000d6fe ldr r3, [r5]                                  |         r3 = *(r5);
    0x0000d700 ldr r3, [r3, 0xc]                             |         r3 = *(0xd914);
    0x0000d702 blx r3                                        |         r0 = uint32_t (*r3)(uint32_t, uint32_t) (r0, r3);
    0x0000d704 cmp r0, 0                                     |         
                                                             |         if (r0 != 0) {
    0x0000d706 bne 0xd800                                    |             goto label_7;
                                                             |         }
                                                             | label_2:
    0x0000d708 ldr r3, [r5]                                  |         r3 = *(r5);
    0x0000d70a movs r0, 0x45                                 |         r0 = 0x45;
    0x0000d70c ldr r3, [r3, 0xc]                             |         r3 = *((r3 + 0xc));
    0x0000d70e blx r3                                        |         r0 = uint32_t (*r3)(uint32_t, uint32_t) (r0, r3);
                                                             |         if (r0 != 0) {
    0x0000d710 cbz r0, 0xd724                                |             
    0x0000d712 ldr r3, [r5]                                  |             r3 = *(r5);
    0x0000d714 movs r0, 0x25                                 |             r0 = 0x25;
    0x0000d716 ldr r1, [pc, 0x1f4]                           |             
    0x0000d718 ldr.w r3, [r3, 0x84]                          |             r3 = *((r3 + 0x84));
    0x0000d71c add r1, pc                                    |             r1 = 0x1b02e;
    0x0000d71e blx r3                                        |             r0 = uint32_t (*r3)(uint32_t, uint32_t, uint32_t) (r0, r1, r3);
    0x0000d720 cmp r0, 0                                     |             
                                                             |             if (r0 != 0) {
    0x0000d722 bne 0xd814                                    |                 goto label_4;
                                                             |             }
                                                             |         }
    0x0000d724 ldr r3, [r5]                                  |         r3 = *(r5);
    0x0000d726 movs r0, 0x46                                 |         r0 = 0x46;
    0x0000d728 ldr r3, [r3, 0xc]                             |         r3 = *((r3 + 0xc));
    0x0000d72a blx r3                                        |         r0 = uint32_t (*r3)(uint32_t, uint32_t) (r0, r3);
                                                             |         if (r0 != 0) {
    0x0000d72c cbz r0, 0xd740                                |             
    0x0000d72e ldr r3, [r5]                                  |             r3 = *(r5);
    0x0000d730 movs r0, 0x26                                 |             r0 = 0x26;
    0x0000d732 ldr r1, [pc, 0x1dc]                           |             
    0x0000d734 ldr.w r3, [r3, 0x84]                          |             r3 = *((r3 + 0x84));
    0x0000d738 add r1, pc                                    |             r1 = 0x1b04e;
    0x0000d73a blx r3                                        |             r0 = uint32_t (*r3)(uint32_t, uint32_t, uint32_t) (r0, r1, r3);
    0x0000d73c cmp r0, 0                                     |             
                                                             |             if (r0 != 0) {
    0x0000d73e bne 0xd814                                    |                 goto label_4;
                                                             |             }
                                                             |         }
    0x0000d740 ldr r3, [r5]                                  |         r3 = *(r5);
    0x0000d742 movs r0, 0x47                                 |         r0 = 0x47;
    0x0000d744 ldr r3, [r3, 0xc]                             |         r3 = *((r3 + 0xc));
    0x0000d746 blx r3                                        |         r0 = uint32_t (*r3)(uint32_t, uint32_t) (r0, r3);
                                                             |         if (r0 == 0) {
    0x0000d748 cbz r0, 0xd75c                                |             goto label_8;
                                                             |         }
    0x0000d74a ldr r3, [r5]                                  |         r3 = *(r5);
    0x0000d74c movs r0, 0x27                                 |         r0 = 0x27;
    0x0000d74e ldr r1, [pc, 0x1c4]                           |         
    0x0000d750 ldr.w r3, [r3, 0x84]                          |         r3 = *((r3 + 0x84));
    0x0000d754 add r1, pc                                    |         r1 = 0x1b06e;
    0x0000d756 blx r3                                        |         r0 = uint32_t (*r3)(uint32_t, uint32_t, uint32_t) (r0, r1, r3);
    0x0000d758 cmp r0, 0                                     |         
                                                             |         if (r0 != 0) {
    0x0000d75a bne 0xd814                                    |             goto label_4;
                                                             |         }
                                                             |     }
                                                             | label_8:
    0x0000d75c ldr r3, [pc, 0x1b8]                           |     
    0x0000d75e ldr r3, [r4, r3]                              |     r3 = *((r4 + r3));
    0x0000d760 ldr r3, [r3]                                  |     r3 = *(0xd918);
    0x0000d762 cmp r3, 0                                     |     
                                                             |     if (r3 != 0) {
    0x0000d764 bne 0xd7da                                    |         goto label_9;
                                                             |     }
    0x0000d766 ldr r1, [pc, 0x1b4]                           |     r1 = *(0xd91e);
    0x0000d768 add r5, sp, 0x44                              |     r5 += s1;
    0x0000d76a ldr r3, [pc, 0x1b4]                           |     
    0x0000d76c mov.w r2, 0x410                               |     r2 = 0x410;
    0x0000d770 mov r0, r5                                    |     r0 = r5;
    0x0000d772 ldr r1, [r4, r1]                              |     r1 = *((r4 + r1));
    0x0000d774 add r3, pc                                    |     r3 = 0x1b09a;
    0x0000d776 str r1, [sp]                                  |     *(sp) = r1;
    0x0000d778 movs r1, 1                                    |     r1 = 1;
    0x0000d77a blx 0x2e80                                    |     strncmp (r0, r1, r2);
    0x0000d77e ldr r0, [pc, 0x1a4]                           |     
    0x0000d780 movs r2, 1                                    |     r2 = 1;
    0x0000d782 mov r1, r5                                    |     r1 = r5;
    0x0000d784 add r0, pc                                    |     r0 = 0x1b0ae;
    0x0000d786 bl 0x10554                                    |     r0 = fcn_00010554 (r0, r1, r2);
    0x0000d78a cmp r0, 0                                     |     
                                                             |     if (r0 != 0) {
    0x0000d78c bne 0xd814                                    |         goto label_4;
                                                             |     }
                                                             |     do {
                                                             | label_0:
    0x0000d78e add r5, sp, 0x14                              |         r5 += var_14h;
    0x0000d790 movs r2, 0x30                                 |         r2 = 0x30;
    0x0000d792 movs r1, 0                                    |         r1 = 0;
    0x0000d794 mov r0, r5                                    |         r0 = r5;
    0x0000d796 blx 0x2938                                    |         fcn_00002938 ();
    0x0000d79a mov r0, r5                                    |         r0 = r5;
    0x0000d79c bl 0xfa88                                     |         r0 = fcn_0000fa88 (r0, r1, r2, r3, r4);
                                                             |         if (r0 == 0) {
    0x0000d7a0 cbnz r0, 0xd7b0                               |             
    0x0000d7a2 ldr r1, [pc, 0x184]                           |             
    0x0000d7a4 add r0, sp, 0x2c                              |             r0 += var_2ch;
    0x0000d7a6 add r1, pc                                    |             r1 = 0x1b0d4;
    0x0000d7a8 bl 0xd61c                                     |             r0 = fcn_0000d61c (r0, r1);
    0x0000d7ac cmp r0, 0                                     |             
                                                             |             if (r0 == 0) {
    0x0000d7ae beq 0xd81c                                    |                 goto label_10;
                                                             |             }
                                                             |         }
                                                             | label_3:
    0x0000d7b0 blx 0x2f88                                    |         r0 = cxa_finalize ();
    0x0000d7b4 ldr r0, [r0]                                  |         r0 = *(r0);
    0x0000d7b6 cmp r0, 0                                     |         
                                                             |         if (r0 == 0) {
    0x0000d7b8 beq 0xd86a                                    |             goto label_11;
                                                             |         }
                                                             | label_1:
    0x0000d7ba ldr r2, [pc, 0x170]                           |         
    0x0000d7bc ldr r3, [pc, 0x140]                           |         r3 = *(0xd900);
    0x0000d7be add r2, pc                                    |         r2 = "isdowngrade=yes\n";
    0x0000d7c0 ldr r3, [r2, r3]                              |         r3 = "isdowngrade=yes\n";
    0x0000d7c2 ldr r2, [r3]                                  |         r2 = "isdowngrade=yes\n";
    0x0000d7c4 ldr.w r3, [sp, 0x454]                         |         r3 = *(arg_454h);
    0x0000d7c8 eors r2, r3                                   |         r2 ^= r3;
    0x0000d7ca mov.w r3, 0                                   |         r3 = 0;
                                                             |         if (r2 != r3) {
    0x0000d7ce bne.w 0xd8f4                                  |             goto label_12;
                                                             |         }
    0x0000d7d2 addw sp, sp, 0x45c                            |         __asm ("addw sp, sp, 0x45c");
    0x0000d7d6 pop.w {r4, r5, r6, r7, r8, sb, pc}            |         
                                                             | label_9:
    0x0000d7da ldr r0, [pc, 0x154]                           |         
    0x0000d7dc add r0, pc                                    |         r0 = 0x1b112;
    0x0000d7de blx 0x2acc                                    |         r0 = strtoul (r0, r1, r2);
    0x0000d7e2 cmp r0, 0                                     |         
    0x0000d7e4 bge 0xd78e                                    |         
                                                             |     } while (r0 >= 0);
    0x0000d7e6 blx 0x2f88                                    |     r0 = cxa_finalize ();
    0x0000d7ea ldr r3, [r0]                                  |     r3 = *(r0);
    0x0000d7ec mov r5, r0                                    |     r5 = r0;
    0x0000d7ee cmp r3, 2                                     |     
                                                             |     if (r3 == 2) {
    0x0000d7f0 beq 0xd78e                                    |         goto label_0;
                                                             |     }
    0x0000d7f2 ldr r1, [pc, 0x140]                           |     
    0x0000d7f4 movs r0, 2                                    |     r0 = 2;
    0x0000d7f6 add r1, pc                                    |     r1 = 0x1b130;
    0x0000d7f8 bl 0xfcdc                                     |     fcn_0000fcdc (r0);
    0x0000d7fc ldr r0, [r5]                                  |     r0 = *(r5);
    0x0000d7fe b 0xd7ba                                      |     goto label_1;
                                                             | label_7:
    0x0000d800 ldr r3, [r5]                                  |     r3 = *(r5);
    0x0000d802 movs r0, 0x24                                 |     r0 = 0x24;
    0x0000d804 ldr r1, [pc, 0x130]                           |     
    0x0000d806 ldr.w r3, [r3, 0x84]                          |     r3 = *((r3 + 0x84));
    0x0000d808 adds r0, 0x84                                 |     r0 += 0x84;
    0x0000d80a add r1, pc                                    |     r1 = 0x1b146;
    0x0000d80c blx r3                                        |     r0 = uint32_t (*r3)(uint32_t, uint32_t, uint32_t) (r0, r1, r3);
    0x0000d80e cmp r0, 0                                     |     
                                                             |     if (r0 == 0) {
    0x0000d810 beq.w 0xd708                                  |         goto label_2;
                                                             |     }
                                                             | label_4:
    0x0000d814 blx 0x2f88                                    |     r0 = cxa_finalize ();
    0x0000d818 ldr r0, [r0]                                  |     r0 = *(r0);
    0x0000d81a b 0xd7ba                                      |     goto label_1;
                                                             | label_10:
    0x0000d81c ldr r1, [pc, 0x11c]                           |     
    0x0000d81e add r0, sp, 0x38                              |     r0 += arg_38h;
    0x0000d820 add r1, pc                                    |     r1 = 0x1b160;
    0x0000d822 bl 0xd61c                                     |     r0 = fcn_0000d61c (r0, r1);
    0x0000d826 cmp r0, 0                                     |     
                                                             |     if (r0 != 0) {
    0x0000d828 bne 0xd7b0                                    |         goto label_3;
                                                             |     }
    0x0000d82a ldr r3, [pc, 0x114]                           |     r3 = *(0xd942);
    0x0000d82c add.w r8, sp, 0x44                            |     r8 += s1;
    0x0000d830 ldr r6, [pc, 0x110]                           |     
    0x0000d832 ldr.w sb, [pc, 0x114]                         |     
    0x0000d836 ldr r7, [r4, r3]                              |     r7 = *((r4 + r3));
    0x0000d838 add r6, pc                                    |     r6 = 0x1b180;
    0x0000d83a add sb, pc                                    |     sb = 0x1b188;
    0x0000d83c strb r0, [r7]                                 |     *(r7) = r0;
                                                             |     do {
    0x0000d83e ldrb r3, [r5, 8]                              |         r3 = *((r5 + 8));
    0x0000d840 cmp r3, 0                                     |         
                                                             |         if (r3 != 0) {
    0x0000d842 bne 0xd8c4                                    |             goto label_13;
                                                             |         }
                                                             | label_5:
    0x0000d844 adds r5, 0xc                                  |         r5 += 0xc;
    0x0000d846 adds r6, 5                                    |         r6 += 5;
    0x0000d848 cmp r5, r8                                    |         
    0x0000d84a bne 0xd83e                                    |         
                                                             |     } while (r5 != r8);
    0x0000d84c ldrb r3, [r7]                                 |     r3 = *(r7);
                                                             |     if (r3 != 0) {
    0x0000d84e cbz r3, 0xd85e                                |         
    0x0000d850 mov r0, r7                                    |         r0 = r7;
    0x0000d852 blx 0x2ab0                                    |         fcn_00002ab0 ();
    0x0000d856 movs r3, 0                                    |         r3 = 0;
    0x0000d858 add r0, r7                                    |         r0 += r7;
    0x0000d85a strb r3, [r0, -0x1]                           |         *((r0 - 0x1)) = r3;
                                                             |     }
    0x0000d85e ldr r1, [pc, 0xec]                            |     
    0x0000d860 mov r2, r7                                    |     r2 = r7;
    0x0000d862 movs r0, 7                                    |     r0 = 7;
    0x0000d864 add r1, pc                                    |     r1 = 0x1b1b6;
    0x0000d866 bl 0xfcdc                                     |     fcn_0000fcdc (r0);
                                                             | label_11:
    0x0000d86a ldr r3, [pc, 0xe4]                            |     r3 = *(0xd952);
    0x0000d86c movs r2, 1                                    |     r2 = 1;
    0x0000d86e movs r0, 0                                    |     r0 = 0;
    0x0000d870 mov r1, r2                                    |     r1 = r2;
    0x0000d872 ldr r3, [r4, r3]                              |     r3 = *((r4 + r3));
    0x0000d874 strb r0, [r3]                                 |     *(r3) = r0;
    0x0000d876 mov r0, r2                                    |     r0 = r2;
    0x0000d878 bl 0x9554                                     |     r0 = fcn_00009554 (r0, r1, r2);
    0x0000d87c cmp r0, 0                                     |     
                                                             |     if (r0 != 0) {
    0x0000d87e bne 0xd814                                    |         goto label_4;
                                                             |     }
    0x0000d880 ldr r0, [pc, 0xd0]                            |     
    0x0000d882 add r0, pc                                    |     r0 = 0x1b1da;
    0x0000d884 bl 0x102dc                                    |     r0 = fcn_000102dc (r0);
    0x0000d888 cmp r0, 0                                     |     
                                                             |     if (r0 != 0) {
    0x0000d88a bne 0xd814                                    |         goto label_4;
                                                             |     }
    0x0000d88c ldr r0, [pc, 0xc8]                            |     
    0x0000d88e add r0, pc                                    |     r0 = 0x1b1ea;
    0x0000d890 bl 0x102dc                                    |     r0 = fcn_000102dc (r0);
    0x0000d894 cmp r0, 0                                     |     
                                                             |     if (r0 != 0) {
    0x0000d896 bne 0xd814                                    |         goto label_4;
                                                             |     }
    0x0000d898 ldr r1, [pc, 0xc0]                            |     
    0x0000d89a ldr r0, [pc, 0xc4]                            |     
    0x0000d89c add r1, pc                                    |     r1 = 0x1b1fc;
    0x0000d89e add r0, pc                                    |     r0 = 0x1b204;
    0x0000d8a0 adds r1, 4                                    |     r1 += 4;
    0x0000d8a2 bl 0x70c8                                     |     fcn_000070c8 (r0, r1, r2);
    0x0000d8a4 invalid                                       |     
    0x0000d8a8 ldr r3, [r4, r3]                              |     r3 = *((r4 + r3));
    0x0000d8aa ldr r3, [r3]                                  |     r3 = *(r3);
    0x0000d8ac cmp r3, 3                                     |     
    0x0000d8ae ldr r3, [pc, 0x58]                            |     r3 = *(0xd90a);
                                                             |     if (r3 == 3) {
    0x0000d8b0 beq 0xd8e4                                    |         goto label_14;
                                                             |     }
    0x0000d8b2 ldr r5, [r4, r3]                              |     r5 = *((r4 + r3));
                                                             | label_6:
    0x0000d8b4 ldr r3, [r5]                                  |     r3 = *(r5);
    0x0000d8b6 movs r0, 0x40                                 |     r0 = 0x40;
    0x0000d8b8 ldr r3, [r3, 0x1c]                            |     r3 = *((r3 + 0x1c));
    0x0000d8ba blx r3                                        |     r0 = uint32_t (*r3)(uint32_t, uint32_t) (r0, r3);
    0x0000d8bc cmp r0, 0                                     |     
                                                             |     if (r0 == 0) {
    0x0000d8be beq.w 0xd7ba                                  |         goto label_1;
                                                             |     }
    0x0000d8c2 b 0xd814                                      |     goto label_4;
                                                             | label_13:
    0x0000d8c4 mov r0, r7                                    |     r0 = r7;
    0x0000d8c6 blx 0x2ab0                                    |     fcn_00002ab0 ();
    0x0000d8ca str r6, [sp]                                  |     *(sp) = r6;
    0x0000d8cc add r0, r7                                    |     r0 += r7;
    0x0000d8ce ldr r3, [r5, 4]                               |     r3 = *((r5 + 4));
    0x0000d8d0 mov.w r2, -1                                  |     r2 = -1;
    0x0000d8d4 movs r1, 1                                    |     r1 = 1;
    0x0000d8d6 str r3, [sp, 8]                               |     var_8h = r3;
    0x0000d8d8 ldr r3, [r5]                                  |     r3 = *(r5);
    0x0000d8da str r3, [sp, 4]                               |     var_4h = r3;
    0x0000d8dc mov r3, sb                                    |     r3 = sb;
    0x0000d8de blx 0x2e80                                    |     strncmp (r0, r1, r2);
    0x0000d8e2 b 0xd844                                      |     goto label_5;
                                                             | label_14:
    0x0000d8e4 ldr r5, [r4, r3]                              |     r5 = *((r4 + r3));
    0x0000d8e6 movs r0, 0x40                                 |     r0 = 0x40;
    0x0000d8e8 ldr r3, [r5]                                  |     r3 = *(r5);
    0x0000d8ea ldr r3, [r3, 0x20]                            |     r3 = *((r3 + 0x20));
    0x0000d8ec blx r3                                        |     r0 = uint32_t (*r3)(uint32_t, uint32_t) (r0, r3);
    0x0000d8ee cmp r0, 0                                     |     
                                                             |     if (r0 == 0) {
    0x0000d8f0 beq 0xd8b4                                    |         goto label_6;
                                                             |     }
    0x0000d8f2 b 0xd814                                      |     goto label_4;
                                                             | label_12:
    0x0000d8f4 blx 0x2cdc                                    |     fprintf_chk ()
    0x0000d8f8 adds r2, 0x32                                 |     r2 += 0x32;
    0x0000d8fa movs r2, r0                                   |     r2 = r0;
    0x0000d8fc asrs r0, r4, 0x15                             |     r0 = r4 >> 0x15;
    0x0000d8fe movs r2, r0                                   |     r2 = r0;
    0x0000d900 lsls r4, r1, 0xd                              |     r4 = r1 << 0xd;
    0x0000d902 movs r0, r0                                   |     
    0x0000d904 asrs r4, r2, 0x15                             |     r4 = r2 >> 0x15;
    0x0000d906 movs r2, r0                                   |     r2 = r0;
    0x0000d908 lsls r4, r6, 0xd                              |     r4 = r6 << 0xd;
    0x0000d90a movs r0, r0                                   |     
    0x0000d90c invalid                                       |     
                                                             | }
    ; assembly                                       | /* r2dec pseudo code output */
                                                     | /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/sbin/fwmgr @ 0xd968 */
                                                     | #include <stdint.h>
                                                     |  
    ; (fcn) fcn.0000d968 ()                          | void fcn_0000d968 () {
                                                     |     int16_t var_2ch;
                                                     |     int16_t var_0h;
                                                     |     int32_t var_0h_2;
                                                     |     time_t * timer;
                                                     |     char * s1;
                                                     |     int16_t var_20h;
                                                     |     int32_t var_28h;
                                                     |     int16_t var_60h;
                                                     |     int16_t var_f0h;
                                                     |     int16_t var_1c8h;
                                                     |     int16_t var_1e0h;
                                                     |     int16_t var_358h;
                                                     |     int16_t var_380h;
                                                     |     int16_t var_3e0h;
                                                     |     int16_t var_40ch;
                                                     |     int16_t var_410h;
                                                     |     if (? < ?) {
    0x0000d968 mulhs r0, r4, sl                      |         r0 = r4 * sl;
                                                     |     }
    0x0000d96c ldr r3, [pc, 0x250]                   |     
    0x0000d96e push {r4, r5, r6, lr}                 |     
    0x0000d970 sub.w sp, sp, 0x410                   |     
    0x0000d974 add r2, pc                            |     r2 += pc;
    0x0000d976 ldr r4, [pc, 0x24c]                   |     
    0x0000d978 ldr r3, [r2, r3]                      |     r3 = *((r2 + r3));
    0x0000d97a ldr r5, [pc, 0x24c]                   |     r5 = *(0xdbca);
    0x0000d97c add r4, pc                            |     r4 = 0x1b546;
    0x0000d97e ldr r3, [r3]                          |     r3 = *(0xdbc0);
    0x0000d980 str.w r3, [sp, 0x40c]                 |     __asm ("str.w r3, [var_40ch]");
    0x0000d984 mov.w r3, 0                           |     r3 = 0;
    0x0000d988 blx 0x2c7c                            |     r0 = accept4 ();
    0x0000d98c mov r3, r0                            |     r3 = r0;
    0x0000d98e add r0, sp, 8                         |     r0 += timer;
    0x0000d990 str r3, [r0]                          |     *(r0) = r3;
    0x0000d992 blx 0x27b4                            |     localtime (r0);
    0x0000d996 ldr r6, [r4, r5]                      |     r6 = *(0x1b546);
    0x0000d998 mov r3, r0                            |     r3 = r0;
    0x0000d99a ldr r2, [pc, 0x230]                   |     
    0x0000d99c movs r1, 0x40                         |     r1 = 0x40;
    0x0000d99e add r5, sp, 0xc                       |     r5 += s1;
    0x0000d9a0 mov r0, r6                            |     r0 = r6;
    0x0000d9a2 add r2, pc                            |     r2 = 0x1b574;
    0x0000d9a4 blx 0x2d94                            |     r0 = fcn_00002d94 ();
    0x0000d9a8 adds r3, r0, r6                       |     r3 = r0 + r6;
    0x0000d9aa mov.w ip, 0                           |     
    0x0000d9ae ldrb r1, [r3, -0x1]                   |     r1 = *((r3 - 0x1));
    0x0000d9b2 strb.w ip, [r3, 1]                    |     *((r3 + 1)) = ip;
    0x0000d9b6 ldr r2, [pc, 0x218]                   |     
    0x0000d9b8 strb r1, [r6, r0]                     |     *((r6 + r0)) = r1;
    0x0000d9ba mov r0, r5                            |     r0 = r5;
    0x0000d9bc ldrb r1, [r3, -0x2]                   |     r1 = *((r3 - 0x2));
    0x0000d9be adds r2, r0, 0                        |     r2 = r0 + 0;
    0x0000d9c0 add r2, pc                            |     r2 = 0x1b596;
    0x0000d9c2 adds r2, 4                            |     r2 += 4;
    0x0000d9c4 strb r1, [r3, -0x1]                   |     *((r3 - 0x1)) = r1;
    0x0000d9c8 movs r1, 0x3a                         |     r1 = 0x3a;
    0x0000d9ca strb r1, [r3, -0x2]                   |     *((r3 - 0x2)) = r1;
    0x0000d9ce movs r1, 1                            |     r1 = 1;
    0x0000d9d0 ldr r3, [pc, 0x200]                   |     
    0x0000d9d2 strd r2, r6, [sp]                     |     __asm ("strd r2, r6, [sp]");
    0x0000d9d6 mov.w r2, 0x400                       |     r2 = 0x400;
    0x0000d9d8 str r0, [r0, 0x28]                    |     *((r0 + 0x28)) = r0;
    0x0000d9da add r3, pc                            |     r3 = 0x1b5b2;
    0x0000d9dc blx 0x2e80                            |     strncmp (r0, r1, r2);
    0x0000d9e0 ldr r3, [pc, 0x1f4]                   |     r3 = *(0xdbd8);
    0x0000d9e2 ldr r3, [r4, r3]                      |     
    0x0000d9e4 ldr r3, [r3]                          |     r3 = *(0x1b546);
    0x0000d9e6 cmp r3, 2                             |     
                                                     |     if (r3 == 2) {
    0x0000d9e8 beq.w 0xdba8                          |         goto label_14;
                                                     |     }
    0x0000d9ec cmp r3, 3                             |     
                                                     |     if (r3 == 3) {
    0x0000d9ee beq.w 0xdb98                          |         goto label_15;
                                                     |     }
    0x0000d9f2 cmp r3, 1                             |     
                                                     |     if (r3 == 1) {
    0x0000d9f4 beq.w 0xdb88                          |         goto label_16;
                                                     |     }
                                                     | label_10:
    0x0000d9f8 ldr r3, [pc, 0x1e0]                   |     
    0x0000d9fa ldr r3, [r4, r3]                      |     r3 = *((r4 + r3));
    0x0000d9fc ldr r3, [r3]                          |     r3 = *(0xdbdc);
    0x0000d9fe cmp r3, 3                             |     
                                                     |     if (r3 <= 3) {
    0x0000da00 bhi 0xda18                            |         
                                                     |         /* switch table (4 cases) at 0xda06 */
    0x0000da02 tbb [pc, r3]                          |         __asm ("tbb [0x0000da08]");
    0x0000da0a ldr r1, [pc, 0x1d4]                   |         
    0x0000da0c mov.w r2, 0x400                       |         r2 = 0x400;
    0x0000da0e str r0, [r0, 0x28]                    |         *((r0 + 0x28)) = r0;
    0x0000da10 mov r0, r5                            |         r0 = r5;
    0x0000da12 add r1, pc                            |         r1 = 0x1b5f8;
    0x0000da14 blx 0x2860                            |         fcn_00002860 ();
                                                     |     }
                                                     | label_2:
    0x0000da18 ldr r3, [pc, 0x1c8]                   |     r3 = *(0xdbe4);
    0x0000da1a ldr r3, [r4, r3]                      |     r3 = *((r4 + r3));
    0x0000da1c ldr r6, [r3]                          |     r6 = *(0xdbe4);
    0x0000da1e cmp r6, 0                             |     
                                                     |     if (r6 == 0) {
    0x0000da20 beq 0xdacc                            |         goto label_17;
                                                     |     }
                                                     | label_0:
    0x0000da22 bgt 0xda9a                            |     
                                                     |     while (1) {
                                                     | label_1:
    0x0000da24 ldr r3, [pc, 0x1c0]                   |         
    0x0000da26 add r3, pc                            |         r3 = 0x1b612;
    0x0000da28 ldrb.w r3, [r3, 0x105]                |         r3 = *((r3 + 0x105));
    0x0000da2c cmp r3, 0                             |         
                                                     |         if (r3 != 0) {
    0x0000da2e bne.w 0xdb78                          |             goto label_18;
                                                     |         }
    0x0000da30 strh r3, [r4, 4]                      |         *((r4 + 4)) = r3;
                                                     | label_9:
    0x0000da32 ldr r3, [pc, 0x1b8]                   |         r3 = *(0xdbee);
    0x0000da34 ldr r3, [r4, r3]                      |         r3 = *((r4 + r3));
    0x0000da36 ldrb r3, [r3]                         |         r3 = *(r3);
    0x0000da38 cmp r3, 0                             |         
                                                     |         if (r3 != 0) {
    0x0000da3a bne.w 0xdb68                          |             goto label_13;
                                                     |         }
                                                     | label_8:
    0x0000da3e ldr r3, [pc, 0x1b0]                   |         
    0x0000da40 add r3, pc                            |         r3 = 0x1b636;
    0x0000da42 ldrb.w r3, [r3, 0x106]                |         r3 = *((r3 + 0x106));
    0x0000da44 adds r1, 6                            |         r1 += 6;
    0x0000da46 cmp r3, 0                             |         
                                                     |         if (r3 != 0) {
    0x0000da48 bne.w 0xdb58                          |             goto label_11;
                                                     |         }
                                                     | label_7:
    0x0000da4c ldr r3, [pc, 0x1a4]                   |         
    0x0000da4e add r3, pc                            |         r3 = 0x1b646;
    0x0000da50 ldrb.w r3, [r3, 0x107]                |         r3 = *((r3 + 0x107));
    0x0000da54 cmp r3, 0                             |         
                                                     |         if (r3 != 0) {
    0x0000da56 bne 0xdb48                            |             goto label_19;
                                                     |         }
                                                     | label_6:
    0x0000da58 ldr r3, [pc, 0x19c]                   |         
    0x0000da5a add r3, pc                            |         r3 = 0x1b656;
    0x0000da5c ldrb r3, [r3]                         |         r3 = *(r3);
    0x0000da5e cmp r3, 0                             |         
                                                     |         if (r3 != 0) {
    0x0000da60 bne 0xdb38                            |             goto label_20;
                                                     |         }
                                                     | label_5:
    0x0000da62 ldr r0, [pc, 0x198]                   |         
    0x0000da64 mov.w r1, 0x1c0                       |         r1 = 0x1c0;
    0x0000da68 add r0, pc                            |         r0 = 0x1b66a;
    0x0000da6a bl 0x10804                            |         fcn_00010804 (r0, r1);
    0x0000da6c cdp2 p6, 0xc, c4, c11, c2, 0          |         __asm ("cdp2 p6, 0xc, c4, c11, c2, 0");
    0x0000da70 cmp r0, 0                             |         
                                                     |         if (r0 == 0) {
    0x0000da72 beq 0xdafc                            |             goto label_21;
                                                     |         }
                                                     | label_3:
    0x0000da74 blx 0x2f88                            |         r0 = cxa_finalize ();
    0x0000da78 ldr r4, [r0]                          |         r4 = *(r0);
                                                     | label_4:
    0x0000da7a ldr r2, [pc, 0x184]                   |         
    0x0000da7c ldr r3, [pc, 0x140]                   |         r3 = *(0xdbc0);
    0x0000da7e add r2, pc                            |         r2 = "HWID";
    0x0000da80 ldr r3, [r2, r3]                      |         r3 = "HWID";
    0x0000da82 ldr r2, [r3]                          |         r2 = "HWID";
    0x0000da84 ldr.w r3, [sp, 0x40c]                 |         r3 = var_40ch;
    0x0000da88 eors r2, r3                           |         r2 ^= r3;
    0x0000da8a mov.w r3, 0                           |         r3 = 0;
    0x0000da8c lsls r0, r0, 0xc                      |         r0 <<= 0xc;
                                                     |         if (r0 != r0) {
    0x0000da8e bne.w 0xdbb8                          |             goto label_22;
                                                     |         }
    0x0000da92 mov r0, r4                            |         r0 = r4;
    0x0000da94 add.w sp, sp, 0x410                   |         
    0x0000da98 pop {r4, r5, r6, pc}                  |         
    0x0000da9a mov r0, r5                            |         r0 = r5;
    0x0000da9c blx 0x2ab0                            |         fcn_00002ab0 ();
    0x0000daa0 ldr r3, [pc, 0x160]                   |         
    0x0000daa2 add r0, r5                            |         r0 += r5;
    0x0000daa4 mov.w r2, -1                          |         r2 = -1;
    0x0000daa8 movs r1, 1                            |         r1 = 1;
    0x0000daaa str r6, [sp]                          |         *(sp) = r6;
    0x0000daac add r3, pc                            |         r3 = 0x1b6b4;
    0x0000daae blx 0x2e80                            |         strncmp (r0, r1, r2);
    0x0000dab2 b 0xda24                              |         
                                                     |     }
    0x0000dab4 ldr r1, [pc, 0x150]                   |     
    0x0000dab6 mov.w r2, 0x400                       |     r2 = 0x400;
    0x0000daba mov r0, r5                            |     r0 = r5;
    0x0000dabc add r1, pc                            |     r1 = 0x1b6c8;
    0x0000dabe blx 0x2860                            |     fcn_00002860 ();
    0x0000dac2 ldr r3, [pc, 0x120]                   |     r3 = *(0xdbe6);
    0x0000dac4 ldr r3, [r4, r3]                      |     r3 = *((r4 + r3));
    0x0000dac6 ldr r6, [r3]                          |     r6 = *(0xdbe6);
    0x0000dac8 cmp r6, 0                             |     
                                                     |     if (r6 != 0) {
    0x0000daca bne 0xda22                            |         goto label_0;
                                                     |     }
                                                     | label_17:
    0x0000dacc ldr r1, [pc, 0x13c]                   |     
    0x0000dace mov.w r2, 0x400                       |     r2 = 0x400;
    0x0000dad2 mov r0, r5                            |     r0 = r5;
    0x0000dad4 add r1, pc                            |     r1 = 0x1b6e4;
    0x0000dad6 blx 0x2860                            |     fcn_00002860 ();
    0x0000dada b 0xda24                              |     goto label_1;
    0x0000dadc ldr r1, [pc, 0x130]                   |     
    0x0000dade mov.w r2, 0x400                       |     r2 = 0x400;
    0x0000dae2 mov r0, r5                            |     r0 = r5;
    0x0000dae4 add r1, pc                            |     r1 = 0x1b6f8;
    0x0000dae6 blx 0x2860                            |     fcn_00002860 ();
    0x0000daea b 0xda18                              |     goto label_2;
    0x0000daec ldr r1, [pc, 0x124]                   |     
    0x0000daee mov.w r2, 0x400                       |     r2 = 0x400;
    0x0000daf2 mov r0, r5                            |     r0 = r5;
    0x0000daf4 add r1, pc                            |     r1 = 0x1b70c;
    0x0000daf6 blx 0x2860                            |     fcn_00002860 ();
    0x0000daf8 cdp p7, 0xb, c14, c4, c13, 4          |     __asm ("cdp p7, 0xb, c14, c4, c13, 4");
                                                     | label_21:
    0x0000dafc ldr r0, [pc, 0x118]                   |     
    0x0000dafe mov r1, r5                            |     r1 = r5;
    0x0000db00 add r0, pc                            |     r0 = 0x1b71c;
    0x0000db02 bl 0x10554                            |     fcn_00010554 (r0, r1, r2);
    0x0000db04 stc2 p8, c2, [r7, -0]!                |     __asm ("stc2 p8, c2, [r7, -0]!");
                                                     |     if (r6 != 0) {
    0x0000db08 bne 0xda74                            |         goto label_3;
                                                     |     }
    0x0000db0a ldr r0, [pc, 0x110]                   |     
    0x0000db0c add r0, pc                            |     r0 = 0x1b72e;
    0x0000db0e bl 0xfa74                             |     r0 = fcn_0000fa74 (r0);
    0x0000db12 mov r4, r0                            |     r4 = r0;
    0x0000db14 cmp r0, 0                             |     
                                                     |     if (r0 != 0) {
    0x0000db16 bne 0xda74                            |         goto label_3;
                                                     |     }
    0x0000db18 ldr r3, [pc, 0x104]                   |     
    0x0000db1a add r3, pc                            |     r3 = 0x1b73e;
    0x0000db1c ldr.w r1, [r3, 0x108]                 |     r1 = *(0x1b846);
    0x0000db20 cmp r1, 0                             |     
                                                     |     if (r1 == 0) {
    0x0000db22 beq 0xda7a                            |         goto label_4;
                                                     |     }
    0x0000db24 ldr r0, [pc, 0xfc]                    |     
    0x0000db26 ldr.w r2, [r3, 0x10c]                 |     r2 = *((r3 + 0x10c));
    0x0000db2a mov r3, r4                            |     r3 = r4;
    0x0000db2c add r0, pc                            |     r0 = 0x1b754;
    0x0000db2e bl 0x10488                            |     fcn_00010488 (r0, r1, r2, r3);
    0x0000db30 stc2 p8, c2, [fp], 0                  |     __asm ("stc2 p8, c2, [fp], 0");
    0x0000db32 cmp r0, 0                             |     
                                                     |     if (r0 == 0) {
    0x0000db34 beq 0xda7a                            |         goto label_4;
                                                     |     }
    0x0000db36 b 0xda74                              |     goto label_3;
                                                     | label_20:
    0x0000db38 ldr r1, [pc, 0xec]                    |     r1 = *(0xdc28);
    0x0000db3a invalid                               |     
                                                     |     do {
    0x0000db3c str r0, [r0, 0x28]                    |         var_28h = r0;
    0x0000db3e mov r0, r5                            |         r0 = r5;
    0x0000db40 add r1, pc                            |         r1 += pc;
    0x0000db42 blx 0x2860                            |         fcn_00002860 ();
    0x0000db46 b 0xda62                              |         goto label_5;
                                                     | label_19:
    0x0000db48 ldr r1, [pc, 0xe0]                    |         
    0x0000db4a mov.w r2, 0x400                       |         r2 = 0x400;
    0x0000db4e mov r0, r5                            |         r0 = r5;
    0x0000db50 add r1, pc                            |         r1 = 0x1b780;
    0x0000db52 blx 0x2860                            |         fcn_00002860 ();
    0x0000db56 b 0xda58                              |         goto label_6;
                                                     | label_11:
    0x0000db58 ldr r1, [pc, 0xd4]                    |         
    0x0000db5a mov.w r2, 0x400                       |         r2 = 0x400;
    0x0000db5e mov r0, r5                            |         r0 = r5;
    0x0000db60 add r1, pc                            |         r1 = 0x1b794;
    0x0000db62 blx 0x2860                            |         fcn_00002860 ();
    0x0000db66 b 0xda4c                              |         goto label_7;
                                                     | label_13:
    0x0000db68 ldr r1, [pc, 0xc8]                    |         
    0x0000db6a mov.w r2, 0x400                       |         r2 = 0x400;
    0x0000db6e mov r0, r5                            |         r0 = r5;
    0x0000db70 add r1, pc                            |         r1 = 0x1b7a8;
    0x0000db72 blx 0x2860                            |         fcn_00002860 ();
    0x0000db76 b 0xda3e                              |         goto label_8;
                                                     | label_18:
    0x0000db78 ldr r1, [pc, 0xbc]                    |         
    0x0000db7a mov.w r2, 0x400                       |         r2 = 0x400;
    0x0000db7e mov r0, r5                            |         r0 = r5;
    0x0000db80 add r1, pc                            |         r1 = 0x1b7bc;
    0x0000db82 blx 0x2860                            |         fcn_00002860 ();
    0x0000db86 b 0xda32                              |         goto label_9;
                                                     | label_16:
    0x0000db88 ldr r1, [pc, 0xb0]                    |         
    0x0000db8a mov.w r2, 0x400                       |         r2 = 0x400;
    0x0000db8e mov r0, r5                            |         r0 = r5;
    0x0000db90 add r1, pc                            |         r1 = 0x1b7d0;
    0x0000db92 blx 0x2860                            |         fcn_00002860 ();
    0x0000db96 b 0xd9f8                              |         goto label_10;
                                                     | label_15:
    0x0000db98 ldr r1, [pc, 0xa4]                    |         
    0x0000db9a mov.w r2, 0x400                       |         r2 = 0x400;
    0x0000db9e mov r0, r5                            |         r0 = r5;
    0x0000dba0 add r1, pc                            |         r1 = 0x1b7e4;
    0x0000dba2 blx 0x2860                            |         fcn_00002860 ();
    0x0000dba6 b 0xd9f8                              |         goto label_10;
                                                     | label_14:
    0x0000dba8 ldr r1, [pc, 0x98]                    |         r1 = *(0xdc44);
    0x0000dbaa invalid                               |         
                                                     | label_12:
    0x0000dbac str r0, [r0, 0x28]                    |         var_28h = r0;
    0x0000dbae mov r0, r5                            |         r0 = r5;
    0x0000dbb0 add r1, pc                            |         r1 += pc;
    0x0000dbb2 blx 0x2860                            |         fcn_00002860 ();
    0x0000dbb6 b 0xd9f8                              |         goto label_10;
                                                     | label_22:
    0x0000dbb8 blx 0x2cdc                            |         fprintf_chk ()
    0x0000dbbc asrs r0, r1, 0xb                      |         r0 = r1 >> 0xb;
    0x0000dbbe movs r2, r0                           |         r2 = r0;
    0x0000dbc0 lsls r4, r1, 0xd                      |         r4 = r1 << 0xd;
    0x0000dbc2 movs r0, r0                           |         
    0x0000dbc4 asrs r0, r0, 0xb                      |         r0 >>= 0xb;
    0x0000dbc6 movs r2, r0                           |         r2 = r0;
    0x0000dbc8 lsls r0, r4, 0xd                      |         r0 = r4 << 0xd;
    0x0000dbca movs r0, r0                           |         
    0x0000dbcc add r5, sp, 0x1c8                     |         r5 += var_1c8h;
    0x0000dbce movs r0, r0                           |         
    0x0000dbd0 cmp r7, 0x48                          |         
    0x0000dbd2 movs r2, r0                           |         r2 = r0;
    0x0000dbd4 bvs 0xdb3c                            |         __asm ("bvs 0xdb3c");
                                                     |     } while (1);
    0x0000dbd6 movs r0, r0                           |     
    0x0000dbd8 lsls r4, r1, 0xc                      |     r4 = r1 << 0xc;
    0x0000dbda movs r0, r0                           |     
    0x0000dbdc lsls r0, r1, 0xc                      |     r0 = r1 << 0xc;
    0x0000dbde movs r0, r0                           |     
    0x0000dbe0 add r5, sp, 0x358                     |     r5 += var_358h;
    0x0000dbe2 movs r0, r0                           |     
    0x0000dbe4 lsls r0, r1, 0xe                      |     r0 = r1 << 0xe;
    0x0000dbe6 movs r0, r0                           |     
    0x0000dbe8 cmp r6, 0xe2                          |     
    0x0000dbea movs r2, r0                           |     r2 = r0;
                                                     |     do {
    0x0000dbec lsls r0, r7, 0xc                      |         r0 = r7 << 0xc;
    0x0000dbee movs r0, r0                           |         
    0x0000dbf0 cmp r6, 0xc8                          |         
    0x0000dbf2 movs r2, r0                           |         r2 = r0;
    0x0000dbf4 cmp r6, 0xba                          |         
    0x0000dbf6 movs r2, r0                           |         r2 = r0;
    0x0000dbf8 cmp r6, 0xae                          |         
    0x0000dbfa movs r2, r0                           |         r2 = r0;
    0x0000dbfc bvs 0xdb58                            |         __asm ("bvs 0xdb58");
                                                     |         goto label_11;
    0x0000dbfe movs r0, r0                           |         
    0x0000dc00 asrs r6, r7, 6                        |         r6 = r7 >> 6;
    0x0000dc02 movs r2, r0                           |         r2 = r0;
    0x0000dc04 add r5, sp, 0x1e0                     |         r5 += var_1e0h;
    0x0000dc06 movs r0, r0                           |         
    0x0000dc08 bpl 0xdbec                            |         
                                                     |     } while (r0 >= r0);
    0x0000dc0a movs r0, r0                           |     
    0x0000dc0c add r5, sp, 0xf0                      |     r5 += var_f0h;
    0x0000dc0e movs r0, r0                           |     
    0x0000dc10 add r5, sp, 0x60                      |     r5 += var_60h;
    0x0000dc12 movs r0, r0                           |     
    0x0000dc14 add r4, sp, 0x380                     |     r4 += var_380h;
    0x0000dc16 movs r0, r0                           |     
    0x0000dc18 bvs 0xdc64                            |     __asm ("bvs 0xdc64");
    0x0000dc1a movs r0, r0                           |     
    0x0000dc1c bvs 0xdc78                            |     __asm ("bvs 0xdc78");
    0x0000dc1e movs r0, r0                           |     
    0x0000dc20 cmp r5, 0xee                          |     
    0x0000dc22 movs r2, r0                           |     r2 = r0;
    0x0000dc24 bvs 0xdc70                            |     __asm ("bvs 0xdc70");
    0x0000dc26 movs r0, r0                           |     
                                                     |     if (r0 >= r0) {
    0x0000dc28 bpl 0xdbac                            |         goto label_12;
                                                     |     }
    0x0000dc2a movs r0, r0                           |     
                                                     |     if (r0 >= r0) {
    0x0000dc2c bpl 0xdb68                            |         goto label_13;
                                                     |     }
    0x0000dc2e movs r0, r0                           |     
                                                     |     if (r0 >= r0) {
    0x0000dc30 bpl 0xdd24                            |         void (*0xdd24)() ();
                                                     |     }
    0x0000dc32 movs r0, r0                           |     
                                                     |     if (r0 >= r0) {
    0x0000dc34 bpl 0xdcf0                            |         void (*0xdcf0)() ();
                                                     |     }
    0x0000dc36 movs r0, r0                           |     
                                                     |     if (r0 >= r0) {
    0x0000dc38 bpl 0xdcb4                            |         void (*0xdcb4)() ();
                                                     |     }
    0x0000dc3a movs r0, r0                           |     
    0x0000dc3c add r3, sp, 0x3e0                     |     r3 += var_3e0h;
    0x0000dc3e movs r0, r0                           |     
    0x0000dc40 add r4, sp, 0                         |     r4 += var_0h;
    0x0000dc42 movs r0, r0                           |     
    0x0000dc44 add r4, sp, 0x20                      |     r4 += var_20h;
    0x0000dc46 movs r0, r0                           |     
                                                     | }
    ; assembly                                   | /* r2dec pseudo code output */
                                                 | /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/sbin/fwmgr @ 0xdc48 */
                                                 | #include <stdint.h>
                                                 |  
    ; (fcn) fcn.0000dc48 ()                      | void fcn_0000dc48 () {
                                                 |     int16_t var_21ch;
                                                 |     int16_t var_4h;
                                                 |     int32_t var_8h;
                                                 |     int32_t var_8h_2;
                                                 |     int32_t var_10h;
                                                 |     int32_t var_10h_2;
                                                 |     int16_t var_18h;
                                                 |     int32_t var_1ch;
                                                 |     int32_t var_1ch_2;
                                                 |     int32_t var_24h;
                                                 |     int32_t var_24h_2;
                                                 |     int16_t var_2ch;
    0x0000dc48 push {r4, r5, r6, lr}             |     
    0x0000dc4a sub sp, 0x30                      |     
    0x0000dc4c ldr r4, [pc, 0xd4]                |     
    0x0000dc4e ldr r1, [pc, 0xd8]                |     
    0x0000dc50 ldr r2, [pc, 0xd8]                |     r2 = *(0xdd2c);
    0x0000dc52 add r4, pc                        |     r4 = 0x1b97a;
    0x0000dc54 ldrb.w r0, [r4, 0x106]            |     r0 = *((r4 + 0x106));
    0x0000dc58 add r1, pc                        |     r1 = 0x1b986;
    0x0000dc5a ldr r3, [pc, 0xd4]                |     
    0x0000dc5c ldr r2, [r1, r2]                  |     
    0x0000dc5e add r3, pc                        |     r3 = 0x1b994;
    0x0000dc60 ldr r2, [r2]                      |     r2 = *(0x1b986);
    0x0000dc62 str r2, [sp, 0x2c]                |     var_2ch = r2;
    0x0000dc64 mov.w r2, 0                       |     r2 = 0;
                                                 |     if (r0 != 0) {
    0x0000dc68 cbnz r0, 0xdcca                   |         goto label_2;
                                                 |     }
    0x0000dc6a ldrb.w r2, [r4, 0x110]            |     r2 = *((r4 + 0x110));
                                                 |     if (r2 != 0) {
    0x0000dc6e cbnz r2, 0xdccc                   |         goto label_0;
                                                 |     }
    0x0000dc70 ldr r1, [pc, 0xc0]                |     r1 = *(0xdd34);
    0x0000dc72 ldr r1, [r3, r1]                  |     r1 = *((r3 + r1));
    0x0000dc74 ldr r0, [r1]                      |     r0 = *(0xdd34);
    0x0000dc76 cmp r0, 0                         |     
                                                 |     if (r0 != 0) {
    0x0000dc78 bne 0xdce4                        |         goto label_3;
                                                 |     }
    0x0000dc7a ldr r2, [pc, 0xbc]                |     
    0x0000dc7c ldr r2, [r3, r2]                  |     r2 = *((r3 + r2));
    0x0000dc7e ldr r2, [r2]                      |     r2 = *(0xdd3a);
    0x0000dc80 cmp r2, 1                         |     
                                                 |     if (r2 == 1) {
    0x0000dc82 beq 0xdccc                        |         goto label_0;
                                                 |     }
    0x0000dc84 ldr r2, [pc, 0xb4]                |     r2 = *(0xdd3c);
    0x0000dc86 add r6, sp, 4                     |     r6 += var_4h;
    0x0000dc88 str r0, [sp, 4]                   |     var_4h = r0;
    0x0000dc8a add r5, sp, 0x18                  |     r5 += var_18h;
    0x0000dc8c str r0, [sp, 0x18]                |     var_18h = r0;
    0x0000dc8e strd r0, r0, [sp, 8]              |     __asm ("strd r0, r0, [var_8h]");
    0x0000dc92 strd r0, r0, [sp, 0x10]           |     __asm ("strd r0, r0, [var_10h]");
    0x0000dc96 strd r0, r0, [sp, 0x1c]           |     __asm ("strd r0, r0, [var_1ch]");
    0x0000dc9a strd r0, r0, [sp, 0x24]           |     __asm ("strd r0, r0, [var_24h]");
    0x0000dc9e mov r0, r6                        |     r0 = r6;
    0x0000dca0 ldr r1, [r3, r2]                  |     r1 = *((r3 + r2));
    0x0000dca2 bl 0xd5a4                         |     r0 = fcn_0000d5a4 (r0);
                                                 |     if (r0 == 0) {
    0x0000dca6 cbz r0, 0xdcca                    |         goto label_2;
                                                 |     }
    0x0000dca8 adds r1, r4, 4                    |     r1 = r4 + 4;
    0x0000dcaa mov r0, r5                        |     r0 = r5;
    0x0000dcac bl 0xd5a4                         |     r0 = fcn_0000d5a4 (r0);
                                                 |     if (r0 == 0) {
    0x0000dcb0 cbz r0, 0xdcca                    |         goto label_2;
                                                 |     }
    0x0000dcb2 mov r3, r5                        |     r3 = r5;
                                                 | label_1:
    0x0000dcb4 mov r0, r6                        |     r0 = r6;
    0x0000dcb6 add r4, sp, 0x2c                  |     r4 += var_2ch;
                                                 |     do {
    0x0000dcb8 ldr r1, [r3], 4                   |         r1 = *(r3);
                                                 |         r3 += 4;
    0x0000dcbc ldr r2, [r0], 4                   |         r2 = *(r0);
                                                 |         r0 += 4;
    0x0000dcbe cmp r3, 4                         |         
    0x0000dcc0 cmp r1, r2                        |         
                                                 |         if (r1 > r2) {
    0x0000dcc2 bhi 0xdcca                        |             goto label_2;
                                                 |         }
                                                 |         if (r1 <= r2) {
    0x0000dcc4 blo 0xdce8                        |             goto label_4;
                                                 |         }
    0x0000dcc6 cmp r3, r4                        |         
    0x0000dcc8 bne 0xdcb8                        |         
                                                 |     } while (r3 != r4);
                                                 | label_2:
    0x0000dcca movs r0, 0                        |     r0 = 0;
                                                 |     do {
                                                 | label_0:
    0x0000dccc ldr r2, [pc, 0x70]                |         
    0x0000dcce ldr r3, [pc, 0x5c]                |         r3 = *(0xdd2e);
    0x0000dcd0 add r2, pc                        |         r2 = 0x1ba14;
    0x0000dcd2 ldr r3, [r2, r3]                  |         r3 = *(0x1ba14);
    0x0000dcd4 ldr r2, [r3]                      |         r2 = *(0x1ba14);
    0x0000dcd6 ldr r3, [sp, 0x2c]                |         r3 = var_2ch;
    0x0000dcd8 eors r2, r3                       |         r2 ^= r3;
    0x0000dcda mov.w r3, 0                       |         r3 = 0;
                                                 |         if (r2 != r3) {
    0x0000dcde bne 0xdd20                        |             goto label_5;
                                                 |         }
    0x0000dce0 add sp, 0x30                      |         
    0x0000dce2 pop {r4, r5, r6, pc}              |         
                                                 | label_3:
    0x0000dce4 mov r0, r2                        |         r0 = r2;
    0x0000dce6 b 0xdccc                          |         
                                                 |     } while (1);
                                                 | label_4:
    0x0000dce8 ldr r3, [pc, 0x58]                |     
    0x0000dcea add r3, pc                        |     r3 = 0x1ba32;
    0x0000dcec ldrb r4, [r3]                     |     r4 = *(r3);
                                                 |     if (r4 == 0) {
    0x0000dcee cbnz r4, 0xdd08                   |         
    0x0000dcf0 ldr r3, [pc, 0x54]                |         
    0x0000dcf2 movs r2, 1                        |         r2 = 1;
    0x0000dcf4 ldr r1, [pc, 0x54]                |         
    0x0000dcf6 movs r0, 5                        |         r0 = 5;
    0x0000dcf8 add r3, pc                        |         r3 = 0x1ba44;
    0x0000dcfa add r1, pc                        |         r1 = 0x1ba4a;
    0x0000dcfc strb.w r2, [r3, 0x107]            |         *((r3 + 0x107)) = r2;
    0x0000dd00 bl 0xfcdc                         |         fcn_0000fcdc (r0);
    0x0000dd04 mov r0, r4                        |         r0 = r4;
    0x0000dd06 b 0xdccc                          |         goto label_0;
                                                 |     }
    0x0000dd08 ldr r1, [pc, 0x44]                |     
    0x0000dd0a movs r0, 3                        |     r0 = 3;
    0x0000dd0c add r1, pc                        |     r1 = 0x1ba60;
    0x0000dd0e bl 0xfcdc                         |     r0 = fcn_0000fcdc (r0);
    0x0000dd12 blx 0x2f88                        |     cxa_finalize ();
    0x0000dd16 movs r3, 0x54                     |     r3 = 0x54;
    0x0000dd18 mov r2, r0                        |     r2 = r0;
    0x0000dd1a str r3, [r2]                      |     *(r2) = r3;
    0x0000dd1c mov r0, r3                        |     r0 = r3;
    0x0000dd1e b 0xdccc                          |     goto label_0;
                                                 | label_5:
    0x0000dd20 blx 0x2cdc                        |     fprintf_chk ()
    0x0000dd24 cmp r4, 0xb6                      |     
    0x0000dd26 movs r2, r0                       |     r2 = r0;
    0x0000dd28 lsrs r4, r4, 0x1f                 |     r4 >>= 0x1f;
    0x0000dd2a movs r2, r0                       |     r2 = r0;
    0x0000dd2c lsls r4, r1, 0xd                  |     r4 = r1 << 0xd;
    0x0000dd2e movs r0, r0                       |     
    0x0000dd30 lsrs r6, r3, 0x1f                 |     r6 = r3 >> 0x1f;
    0x0000dd32 movs r2, r0                       |     r2 = r0;
    0x0000dd34 lsls r4, r6, 0xb                  |     r4 = r6 << 0xb;
    0x0000dd36 movs r0, r0                       |     
    0x0000dd38 lsls r4, r1, 0xc                  |     r4 = r1 << 0xc;
    0x0000dd3a movs r0, r0                       |     
    0x0000dd3c lsls r0, r7, 0xe                  |     r0 = r7 << 0xe;
    0x0000dd3e movs r0, r0                       |     
    0x0000dd40 lsrs r4, r5, 0x1d                 |     r4 = r5 >> 0x1d;
    0x0000dd42 movs r2, r0                       |     r2 = r0;
    0x0000dd44 asrs r2, r0, 0x13                 |     r2 = r0 >> 0x13;
    0x0000dd46 movs r2, r0                       |     r2 = r0;
    0x0000dd48 cmp r4, 0x10                      |     
    0x0000dd4a movs r2, r0                       |     r2 = r0;
                                                 |     if (r2 < r0) {
    0x0000dd4c bmi 0xde34                        |         void (*0xde34)() ();
                                                 |     }
    0x0000dd4e movs r0, r0                       |     
                                                 |     if (r0 < r0) {
    0x0000dd50 bmi 0xdcb4                        |         goto label_1;
                                                 |     }
    0x0000dd52 movs r0, r0                       |     
                                                 | }
    ; assembly                                                       | /* r2dec pseudo code output */
                                                                     | /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/sbin/fwmgr @ 0xdd54 */
                                                                     | #include <stdint.h>
                                                                     |  
    ; (fcn) fcn.0000dd54 ()                                          | void fcn_0000dd54 (char * arg1, int16_t arg2, int16_t arg3) {
                                                                     |     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_1ch;
                                                                     |     int16_t var_20h;
                                                                     |     int16_t var_24h;
                                                                     |     int16_t var_28h;
                                                                     |     int16_t var_98h;
                                                                     |     int16_t var_1h;
                                                                     |     int16_t var_a4h;
                                                                     |     int16_t var_21ch;
                                                                     |     int16_t var_224h;
                                                                     |     r0 = arg1;
                                                                     |     r1 = arg2;
                                                                     |     r2 = arg3;
    0x0000dd54 ldr r3, [pc, 0x224]                                   |     
    0x0000dd56 push.w {r4, r5, r6, r7, r8, sb, sl, fp, lr}           |     
    0x0000dd5a sub.w sp, sp, 0x224                                   |     
    0x0000dd5e ldr r5, [pc, 0x220]                                   |     
    0x0000dd60 add r3, pc                                            |     
    0x0000dd62 ldr r4, [pc, 0x220]                                   |     r4 = *(0xdf86);
    0x0000dd64 ldr.w r3, [r3, 0x114]                                 |     r3 = *(0x1bdf4);
    0x0000dd68 add r5, pc                                            |     r5 = 0x1bcee;
    0x0000dd6a ldr r4, [r5, r4]                                      |     
    0x0000dd6c cmp r3, 0x7f                                          |     
    0x0000dd6e ldr r4, [r4]                                          |     r4 = *(0x1bcee);
    0x0000dd70 str r4, [sp, 0x21c]                                   |     var_21ch = r4;
    0x0000dd72 mov.w r4, 0                                           |     r4 = 0;
    0x0000dd76 strd r1, r2, [sp, 0x10]                               |     __asm ("strd r1, r2, [var_10h]");
                                                                     |     if (r3 > 0x7f) {
    0x0000dd7a bhi.w 0xde98                                          |         goto label_10;
                                                                     |     }
    0x0000dd7c strh r5, [r1, 4]                                      |     *((r1 + 4)) = r5;
    0x0000dd7e ldr r3, [pc, 0x208]                                   |     
    0x0000dd80 movw sl, 0x6e69                                       |     
    0x0000dd84 movw fp, 0x6572                                       |     
    0x0000dd86 ldrh r2, [r6, r5]                                     |     r2 = *((r6 + r5));
    0x0000dd88 mov sb, r0                                            |     sb = r0;
    0x0000dd8a add r5, sp, 0x1c                                      |     r5 += var_1ch;
    0x0000dd8c movt sl, 0x6f66                                       |     sl = 0x6f666e69;
    0x0000dd90 add r3, pc                                            |     r3 = 0x1bd1e;
    0x0000dd92 movt fp, 0x6e6c                                       |     fp = 0x6e6c6572;
    0x0000dd96 str r3, [sp]                                          |     *(sp) = r3;
    0x0000dd98 movw r3, 0x746f                                       |     
    0x0000dd9c movt r3, 0x7365                                       |     r3 = 0x7365746f;
    0x0000dda0 str r3, [sp, 8]                                       |     var_8h = r3;
    0x0000dda2 movw r3, 0x742e                                       |     
    0x0000dda6 movt r3, 0x7478                                       |     r3 = 0x7478742e;
    0x0000ddaa str r3, [sp, 0xc]                                     |     var_ch = r3;
    0x0000ddac movw r3, 0x6a2e                                       |     
    0x0000ddb0 movt r3, 0x6f73                                       |     r3 = 0x6f736a2e;
    0x0000ddb2 strb r3, [r6, 0xd]                                    |     *((r6 + 0xd)) = r3;
    0x0000ddb4 str r3, [sp, 4]                                       |     var_4h = r3;
                                                                     | label_0:
    0x0000ddb6 movs r2, 0                                            |     r2 = 0;
    0x0000ddb8 mov.w r1, 0x200                                       |     r1 = 0x200;
    0x0000ddba strb r0, [r0, 4]                                      |     *((r0 + 4)) = r0;
    0x0000ddbc mov r0, r5                                            |     r0 = r5;
    0x0000ddbe bl 0x7cd8                                             |     r0 = fcn_00007cd8 (r0, r1, r2);
    0x0000ddc2 mov r4, r0                                            |     r4 = r0;
    0x0000ddc4 cmp r0, 0                                             |     
                                                                     |     if (r0 != 0) {
    0x0000ddc6 bne.w 0xdf16                                          |         goto label_11;
                                                                     |     }
    0x0000ddca ldrb r3, [r5]                                         |     r3 = *(r5);
    0x0000ddcc cmp r3, 0                                             |     
                                                                     |     if (r3 == 0) {
    0x0000ddce beq.w 0xdf38                                          |         goto label_12;
                                                                     |     }
    0x0000ddd2 add r2, sp, 0x98                                      |     r2 += var_98h;
    0x0000ddd4 add r0, sp, 0xa4                                      |     r0 += var_a4h;
    0x0000ddd6 b 0xddea                                              |     
                                                                     |     while ((r3 & 0xdf) != 0) {
    0x0000ddd8 subs r3, 0x30                                         |         r3 -= 0x30;
    0x0000ddda uxtb r1, r3                                           |         r1 = (int8_t) r3;
    0x0000dddc cmp r1, 7                                             |         
                                                                     |         if (r1 > 7) {
    0x0000ddde bhi.w 0xdf50                                          |             goto label_13;
                                                                     |         }
    0x0000dde2 cmp r2, r0                                            |         
    0x0000dde4 add.w r4, r3, r4, lsl 3                               |         r4 = r3 + (r4 << 3);
                                                                     |         if (r2 == r0) {
    0x0000dde8 beq 0xddf4                                            |             goto label_14;
                                                                     |         }
    0x0000ddea ldrb r3, [r2], 1                                      |         r3 = *(r2);
                                                                     |         r2++;
    0x0000ddee tst.w r3, 0xdf                                        |         
    0x0000ddf2 bne 0xddd8                                            |         
                                                                     |     }
                                                                     | label_14:
    0x0000ddf4 ldr r3, [sp]                                          |     r3 = *(sp);
    0x0000ddf6 add.w r0, r3, 0x118                                   |     r0 = r3 + 0x118;
    0x0000ddfa blx 0x2e38                                            |     timerfd_create ();
    0x0000ddfe movs r2, 0x64                                         |     r2 = 0x64;
    0x0000de00 mov r1, sb                                            |     r1 = sb;
    0x0000de02 mov r0, r5                                            |     r0 = r5;
    0x0000de04 blx 0x2ea4                                            |     r0 = realloc (r0, r1);
    0x0000de08 cmp r0, 0                                             |     
                                                                     |     if (r0 == 0) {
    0x0000de0a beq.w 0xdf4a                                          |         goto label_15;
                                                                     |     }
    0x0000de0e movs r3, 0                                            |     r3 = 0;
    0x0000de10 strb.w r3, [r5, 0x63]                                 |     *((r5 + 0x63)) = r3;
    0x0000de14 ldr r3, [r5]                                          |     r3 = *(r5);
    0x0000de16 cmp r3, sl                                            |     
                                                                     |     if (r3 == sl) {
    0x0000de18 beq 0xdeb0                                            |         goto label_16;
                                                                     |     }
                                                                     | label_1:
    0x0000de1a ldr r3, [r5]                                          |     r3 = *(r5);
    0x0000de1c cmp r3, fp                                            |     
                                                                     |     if (r3 == fp) {
    0x0000de1e beq 0xdec6                                            |         goto label_17;
                                                                     |     }
                                                                     | label_3:
    0x0000de20 ldr r1, [pc, 0x168]                                   |     
    0x0000de22 mov r2, r5                                            |     r2 = r5;
    0x0000de24 movs r0, 6                                            |     r0 = 6;
    0x0000de26 add r1, pc                                            |     r1 = 0x1bdb6;
    0x0000de28 bl 0xfcdc                                             |     fcn_0000fcdc (r0);
                                                                     | label_2:
    0x0000de2c mov r0, r4                                            |     r0 = r4;
    0x0000de2e bl 0x7ff0                                             |     r0 = fcn_00007ff0 (r0, r1);
    0x0000de32 cmp r0, 0                                             |     
                                                                     |     if (r0 != 0) {
    0x0000de34 bne 0xdf16                                            |         goto label_11;
                                                                     |     }
                                                                     | label_4:
    0x0000de36 ldr r7, [pc, 0x158]                                   |     
    0x0000de38 movs r2, 0x20                                         |     r2 = 0x20;
    0x0000de3a ldr.w r8, [pc, 0x158]                                 |     r8 = *(0x0000df94);
    0x0000de3e mov r1, r5                                            |     r1 = r5;
    0x0000de40 add r7, pc                                            |     r7 = 0x1bdd6;
    0x0000de42 ldr.w r6, [r7, 0x114]                                 |     r6 = *(0x1beea);
    0x0000de46 add r8, pc                                            |     r8 += pc;
    0x0000de48 lsls r6, r6, 6                                        |     r6 <<= 6;
    0x0000de4a add.w r3, r6, r8                                      |     r3 = r6 + r8;
    0x0000de4e mov r0, r3                                            |     r0 = r3;
    0x0000de50 blx 0x2884                                            |     fcn_00002884 ();
    0x0000de54 movs r2, 0                                            |     r2 = 0;
    0x0000de56 mov r3, r0                                            |     r3 = r0;
    0x0000de58 add.w r0, r6, 0x20                                    |     r0 = r6 + 0x20;
    0x0000de5c strb r2, [r3, 0x1f]                                   |     *((r3 + 0x1f)) = r2;
    0x0000de5e add.w r1, r7, 0x118                                   |     r1 = r7 + 0x118;
    0x0000de62 add r0, r8                                            |     r0 += r8;
    0x0000de64 blx 0x2a68                                            |     fcn_00002a68 ();
    0x0000de68 ldr.w r3, [r7, 0x114]                                 |     r3 = *(0x1beea);
    0x0000de6c movs r1, 1                                            |     r1 = 1;
    0x0000de6e ubfx r0, r4, 0, 9                                     |     r0 = (r4 >> 0) & ((1 << 9) - 1);
    0x0000de72 adds r2, r7, r3                                       |     r2 = r7 + r3;
    0x0000de74 add r3, r1                                            |     r3 += r1;
    0x0000de76 strb.w r1, [r2, 0x188]                                |     *((r2 + 0x188)) = r1;
    0x0000de7a str.w r3, [r7, 0x114]                                 |     __asm ("str.w r3, [r7, 0x114]");
                                                                     |     if (r0 != 0) {
    0x0000de7e cbz r0, 0xde84                                        |         
    0x0000de80 rsb.w r0, r0, 0x200                                   |         r0 = 0x200 - r0;
                                                                     |     }
    0x0000de84 bl 0x7ff0                                             |     r0 = fcn_00007ff0 (r0, r1);
    0x0000de88 cmp r0, 0                                             |     
                                                                     |     if (r0 != 0) {
    0x0000de8a bne 0xdf16                                            |         goto label_11;
                                                                     |     }
    0x0000de8c ldr r3, [pc, 0x108]                                   |     
    0x0000de8e add r3, pc                                            |     
    0x0000de90 ldr.w r3, [r3, 0x114]                                 |     r3 = *(0x1bf3e);
    0x0000de94 cmp r3, 0x7f                                          |     
                                                                     |     if (r3 < 0x7f) {
    0x0000de96 bls 0xddb6                                            |         goto label_0;
                                                                     |     }
                                                                     | label_10:
    0x0000de98 ldr r1, [pc, 0x100]                                   |     
    0x0000de9a add r1, pc                                            |     r1 = 0x1be3a;
                                                                     | label_6:
    0x0000de9c movs r0, 3                                            |     r0 = 3;
    0x0000de9e bl 0xfcdc                                             |     r0 = fcn_0000fcdc (r0);
                                                                     | label_7:
    0x0000dea2 blx 0x2f88                                            |     cxa_finalize ();
    0x0000dea6 movs r3, 0x47                                         |     r3 = 0x47;
    0x0000dea8 mov r2, r0                                            |     r2 = r0;
    0x0000deaa str r3, [r2]                                          |     *(r2) = r3;
    0x0000deac mov r0, r3                                            |     r0 = r3;
    0x0000deae b 0xdf1c                                              |     goto label_5;
                                                                     | label_16:
    0x0000deb0 ldr r3, [sp, 0x20]                                    |     r3 = var_20h;
    0x0000deb2 ldr r2, [sp, 4]                                       |     r2 = var_4h;
    0x0000deb4 cmp r3, r2                                            |     
                                                                     |     if (r3 != r2) {
    0x0000deb6 bne 0xde1a                                            |         goto label_1;
                                                                     |     }
    0x0000deb8 ldrh.w r3, [sp, 0x24]                                 |     r3 = var_24h;
    0x0000debc cmp r3, 0x6e                                          |     
                                                                     |     if (r3 == 0x6e) {
    0x0000debe beq 0xde2c                                            |         goto label_2;
                                                                     |     }
    0x0000dec0 ldr r3, [r5]                                          |     r3 = *(r5);
    0x0000dec2 cmp r3, fp                                            |     
                                                                     |     if (r3 != fp) {
    0x0000dec4 bne 0xde20                                            |         goto label_3;
                                                                     |     }
                                                                     | label_17:
    0x0000dec6 ldr r3, [sp, 0x20]                                    |     r3 = var_20h;
    0x0000dec8 ldr r2, [sp, 8]                                       |     r2 = var_8h;
    0x0000deca cmp r3, r2                                            |     
                                                                     |     if (r3 != r2) {
    0x0000decc bne 0xde20                                            |         goto label_3;
                                                                     |     }
    0x0000dece ldr r3, [sp, 0x24]                                    |     r3 = var_24h;
    0x0000ded0 ldr r2, [sp, 0xc]                                     |     r2 = var_ch;
    0x0000ded2 cmp r3, r2                                            |     
                                                                     |     if (r3 != r2) {
    0x0000ded4 bne 0xde20                                            |         goto label_3;
                                                                     |     }
    0x0000ded6 ldrb.w r3, [sp, 0x28]                                 |     r3 = var_28h;
    0x0000deda cmp r3, 0                                             |     
                                                                     |     if (r3 != 0) {
    0x0000dedc bne 0xde20                                            |         goto label_3;
                                                                     |     }
    0x0000dede ldr r7, [pc, 0xc0]                                    |     
    0x0000dee0 add r7, pc                                            |     r7 = 0x1be86;
    0x0000dee2 ldr.w r3, [r7, 0x108]                                 |     r3 = *(0x1bf8e);
    0x0000dee6 cmp r3, 0                                             |     
                                                                     |     if (r3 != 0) {
    0x0000dee8 bne 0xde20                                            |         goto label_3;
                                                                     |     }
    0x0000deea cmp.w r4, 0x100000                                    |     
                                                                     |     if (r4 > 0x100000) {
    0x0000deee bgt 0xdf6a                                            |         goto label_18;
                                                                     |     }
    0x0000def0 ldr r3, [pc, 0xb0]                                    |     
    0x0000def2 add r3, pc                                            |     r3 = 0x1be9a;
    0x0000def4 ldrb r6, [r3]                                         |     r6 = *(r3);
    0x0000def6 cmp r6, 0                                             |     
                                                                     |     if (r6 != 0) {
    0x0000def8 bne 0xde2c                                            |         goto label_2;
                                                                     |     }
    0x0000defa mov r0, r4                                            |     r0 = r4;
    0x0000defc str.w r4, [r7, 0x10c]                                 |     __asm ("str.w r4, [r7, 0x10c]");
    0x0000df00 bl 0x107d4                                            |     fcn_000107d4 ();
    0x0000df04 ldr.w r1, [r7, 0x10c]                                 |     r1 = *((r7 + 0x10c));
    0x0000df06 asrs r4, r1, 4                                        |     r4 = r1 >> 4;
    0x0000df08 mov r2, r6                                            |     r2 = r6;
    0x0000df0a str.w r0, [r7, 0x108]                                 |     __asm ("str.w r0, [r7, 0x108]");
    0x0000df0e bl 0x7cd8                                             |     fcn_00007cd8 (r0, r1, r2);
    0x0000df10 cdp2 p8, 0xe, c2, c3, c0, 0                           |     __asm ("cdp2 p8, 0xe, c2, c3, c0, 0");
                                                                     |     if (r6 == 0) {
                                                                     | label_8:
    0x0000df14 beq 0xde36                                            |         goto label_4;
                                                                     |     }
                                                                     | label_11:
    0x0000df16 blx 0x2f88                                            |     r0 = cxa_finalize ();
    0x0000df1a ldr r0, [r0]                                          |     r0 = *(r0);
                                                                     |     do {
                                                                     | label_5:
    0x0000df1c ldr r2, [pc, 0x88]                                    |         
    0x0000df1e ldr r3, [pc, 0x64]                                    |         r3 = *(0xdf86);
    0x0000df20 add r2, pc                                            |         r2 = 0x1becc;
    0x0000df22 ldr r3, [r2, r3]                                      |         r3 = *(0x1becc);
    0x0000df24 ldr r2, [r3]                                          |         r2 = *(0x1becc);
    0x0000df26 ldr r3, [sp, 0x21c]                                   |         r3 = var_21ch;
    0x0000df28 eors r2, r3                                           |         r2 ^= r3;
    0x0000df2a mov.w r3, 0                                           |         r3 = 0;
                                                                     |         if (r2 != r3) {
    0x0000df2e bne 0xdf78                                            |             goto label_19;
                                                                     |         }
    0x0000df30 add.w sp, sp, 0x224                                   |         
    0x0000df34 pop.w {r4, r5, r6, r7, r8, sb, sl, fp, pc}            |         
                                                                     | label_12:
    0x0000df38 blx 0x2f88                                            |         cxa_finalize ();
    0x0000df3c ldr r3, [sp, 0x14]                                    |         r3 = var_14h;
    0x0000df3e mov r4, r0                                            |         r4 = r0;
                                                                     |         if (r3 == 0) {
    0x0000df40 cbz r3, 0xdf56                                        |             goto label_20;
                                                                     |         }
    0x0000df42 movs r3, 2                                            |         r3 = 2;
    0x0000df44 mov r0, r3                                            |         r0 = r3;
    0x0000df46 str r3, [r4]                                          |         *(r4) = r3;
    0x0000df48 b 0xdf1c                                              |         
                                                                     |     } while (1);
                                                                     | label_15:
    0x0000df4a ldr r3, [sp, 0x10]                                    |     r3 = var_10h;
    0x0000df4c str r4, [r3]                                          |     *(r3) = r4;
    0x0000df4e b 0xdf1c                                              |     goto label_5;
                                                                     | label_13:
    0x0000df50 ldr r1, [pc, 0x58]                                    |     
    0x0000df52 add r1, pc                                            |     r1 = 0x1bf02;
    0x0000df54 b 0xde9c                                              |     goto label_6;
                                                                     | label_20:
    0x0000df56 ldr r1, [pc, 0x58]                                    |     
    0x0000df58 movs r0, 3                                            |     r0 = 3;
    0x0000df5a mov r2, sb                                            |     r2 = sb;
    0x0000df5c add r1, pc                                            |     r1 = 0x1bf12;
    0x0000df5e bl 0xfcdc                                             |     fcn_0000fcdc (r0);
    0x0000df62 movs r3, 0x47                                         |     r3 = 0x47;
    0x0000df64 mov r0, r3                                            |     r0 = r3;
    0x0000df66 str r3, [r4]                                          |     *(r4) = r3;
                                                                     | label_9:
    0x0000df68 b 0xdf1c                                              |     goto label_5;
                                                                     | label_18:
    0x0000df6a ldr r1, [pc, 0x48]                                    |     
    0x0000df6c mov r2, r4                                            |     r2 = r4;
    0x0000df6e movs r0, 3                                            |     r0 = 3;
    0x0000df70 add r1, pc                                            |     r1 = 0x1bf2a;
    0x0000df72 bl 0xfcdc                                             |     fcn_0000fcdc (r0);
    0x0000df76 b 0xdea2                                              |     goto label_7;
                                                                     | label_19:
    0x0000df78 blx 0x2cdc                                            |     fprintf_chk ()
    0x0000df7c cmp r3, 0xa8                                          |     
    0x0000df7e movs r2, r0                                           |     r2 = r0;
    0x0000df80 lsrs r4, r2, 0x1b                                     |     r4 = r2 >> 0x1b;
    0x0000df82 movs r2, r0                                           |     r2 = r0;
    0x0000df84 lsls r4, r1, 0xd                                      |     r4 = r1 << 0xd;
    0x0000df86 movs r0, r0                                           |     
    0x0000df88 cmp r3, 0x78                                          |     
    0x0000df8a movs r2, r0                                           |     r2 = r0;
                                                                     |     if (r2 < r0) {
    0x0000df8c bmi 0xe024                                            |         void (*0xe024)() ();
                                                                     |     }
    0x0000df8e movs r0, r0                                           |     
    0x0000df90 cmp r2, 0xc8                                          |     
    0x0000df92 movs r2, r0                                           |     r2 = r0;
    0x0000df94 adds r5, 0x4e                                         |     r5 += 0x4e;
    0x0000df96 movs r2, r0                                           |     r2 = r0;
    0x0000df98 cmp r2, 0x7a                                          |     
    0x0000df9a movs r2, r0                                           |     r2 = r0;
                                                                     |     if (r2 <= r0) {
    0x0000df9c blo 0xe04c                                            |         void (*0xe04c)() ();
                                                                     |     }
    0x0000df9e movs r0, r0                                           |     
    0x0000dfa0 cmp r2, 0x28                                          |     
    0x0000dfa2 movs r2, r0                                           |     r2 = r0;
    0x0000dfa4 asrs r2, r7, 0xa                                      |     r2 = r7 >> 0xa;
    0x0000dfa6 movs r2, r0                                           |     r2 = r0;
    0x0000dfa8 lsrs r4, r3, 0x14                                     |     r4 = r3 >> 0x14;
    0x0000dfaa movs r2, r0                                           |     r2 = r0;
                                                                     |     if (r2 <= r0) {
    0x0000dfac blo 0xe03c                                            |         void (*0xe03c)() ();
                                                                     |     }
    0x0000dfae movs r0, r0                                           |     
                                                                     |     if (r0 >= r0) {
    0x0000dfb0 bhs 0xdf14                                            |         goto label_8;
                                                                     |     }
    0x0000dfb2 movs r0, r0                                           |     
                                                                     |     if (r0 >= r0) {
    0x0000dfb4 bhs 0xdf68                                            |         goto label_9;
                                                                     |     }
    0x0000dfb6 movs r0, r0                                           |     
                                                                     | }
    ; assembly                                                       | /* r2dec pseudo code output */
                                                                     | /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/sbin/fwmgr @ 0xdfb8 */
                                                                     | #include <stdint.h>
                                                                     |  
    ; (fcn) fcn.0000dfb8 ()                                          | void fcn_0000dfb8 (int16_t arg_518h, int16_t arg_20c0h, int16_t arg_2100h, int16_t arg_2500h_2, int16_t arg_2500h) {
                                                                     |     int16_t var_8h_2;
                                                                     |     int16_t var_ch_2;
                                                                     |     int16_t var_10h_2;
                                                                     |     int16_t var_14h_2;
                                                                     |     int16_t var_24h_2;
                                                                     |     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_74h;
                                                                     |     int16_t var_f4h;
    0x0000dfb8 push.w {r4, r5, r6, r7, r8, sb, sl, fp, lr}           |     
    0x0000dfbc sub.w sp, sp, 0x2500                                  |     
    0x0000dfc0 sub sp, 0x1c                                          |     
    0x0000dfc2 ldr r4, [pc, 0x2e8]                                   |     
    0x0000dfc4 add r3, sp, 0x58                                      |     r3 += var_18h;
    0x0000dfc6 add.w r5, sp, 0x2500                                  |     r5 += arg_2500h_2;
    0x0000dfca str r3, [sp, 0x10]                                    |     var_10h_2 = r3;
    0x0000dfcc adds r5, 0x14                                         |     r5 += 0x14;
    0x0000dfce ldr r3, [pc, 0x2e0]                                   |     r3 = *(0xe2b2);
    0x0000dfd0 add r4, pc                                            |     r4 = 0x1c282;
    0x0000dfd2 ldr r0, [pc, 0x2e0]                                   |     
    0x0000dfd4 movs r2, 0                                            |     r2 = 0;
    0x0000dfd6 add r1, sp, 0x24                                      |     r1 += var_24h_2;
    0x0000dfd8 ldr r3, [r4, r3]                                      |     
    0x0000dfda add r0, pc                                            |     r0 = "Current";
    0x0000dfdc ldr r3, [r3]                                          |     r3 = *(0x1c282);
    0x0000dfde str r3, [r5]                                          |     *(r5) = r3;
    0x0000dfe0 mov.w r3, 0                                           |     r3 = 0;
    0x0000dfe4 bl 0xdd54                                             |     r0 = fcn_0000dd54 (r0, r1, r2);
    0x0000dfe8 cmp r0, 0                                             |     
                                                                     |     if (r0 != 0) {
    0x0000dfea bne 0xe0e0                                            |         goto label_6;
                                                                     |     }
    0x0000dfec add.w r3, sp, 0x518                                   |     r3 += arg_518h;
    0x0000dff0 str r3, [sp, 0x14]                                    |     var_14h_2 = r3;
    0x0000dff2 add r3, sp, 0x24                                      |     r3 += var_24h_2;
    0x0000dff4 ldr r3, [r3]                                          |     r3 = *(r3);
    0x0000dff6 cmp.w r3, 0x2000                                      |     
    0x0000dffa str r3, [sp, 0xc]                                     |     var_ch_2 = r3;
                                                                     |     if (r3 > 0x2000) {
    0x0000dffc bhi.w 0xe158                                          |         goto label_10;
                                                                     |     }
    0x0000e000 add r7, sp, 0xf4                                      |     r7 += var_f4h;
    0x0000e002 mov r2, r0                                            |     r2 = r0;
    0x0000e004 ldr r1, [sp, 0xc]                                     |     r1 = var_ch_2;
    0x0000e006 mov r0, r7                                            |     r0 = r7;
    0x0000e008 bl 0x7cd8                                             |     r0 = fcn_00007cd8 (r0, r1, r2);
    0x0000e00c mov sb, r0                                            |     sb = r0;
    0x0000e00e cmp r0, 0                                             |     
                                                                     |     if (r0 != 0) {
    0x0000e010 bne 0xe0e0                                            |         goto label_6;
                                                                     |     }
    0x0000e012 ldr r3, [sp, 0x14]                                    |     r3 = var_14h_2;
    0x0000e014 movs r2, 0x80                                         |     r2 = 0x80;
    0x0000e016 mov r1, r0                                            |     r1 = r0;
    0x0000e018 subw r3, r3, 0x4a4                                    |     __asm ("subw r3, r3, 0x4a4");
    0x0000e01c mov r0, r3                                            |     r0 = r3;
    0x0000e01e str r3, [sp, 8]                                       |     var_8h_2 = r3;
    0x0000e020 blx 0x2938                                            |     fcn_00002938 ();
    0x0000e024 ldr r3, [pc, 0x290]                                   |     
    0x0000e026 add r3, pc                                            |     r3 = 0x1c2e2;
    0x0000e028 ldr.w r2, [r3, 0x114]                                 |     r2 = *(0x1c3f6);
    0x0000e02c ldr r3, [sp, 0xc]                                     |     r3 = var_ch_2;
    0x0000e02e lsr.w r8, r3, 6                                       |     r8 = r3 >> 6;
    0x0000e032 cmp r2, 0                                             |     
                                                                     |     if (r2 == 0) {
    0x0000e034 beq 0xe112                                            |         goto label_11;
                                                                     |     }
    0x0000e036 ldr r3, [pc, 0x284]                                   |     r3 = *(0xe2be);
    0x0000e038 mov r6, sb                                            |     r6 = sb;
    0x0000e03a invalid                                               |     
    0x0000e03c adr r2, 0x210                                         |     r2 = 0x210;
    0x0000e03e mov fp, r2                                            |     
    0x0000e040 str.w sb, [sp, 0x1c]                                  |     __asm ("str.w sb, [sp, 0x1c]");
    0x0000e044 add r3, pc                                            |     r3 += pc;
    0x0000e046 add.w r3, r3, 0x188                                   |     r3 += 0x188;
    0x0000e04a add sl, pc                                            |     sl += pc;
    0x0000e04c mov sb, sl                                            |     sb = sl;
    0x0000e04e str r3, [sp, 0x18]                                    |     var_18h = r3;
    0x0000e050 b 0xe078                                              |     
                                                                     |     while (r0 == 0) {
    0x0000e052 add.w r1, r2, 0x20                                    |         r1 = r2 + 0x20;
    0x0000e056 movs r2, 0x20                                         |         r2 = 0x20;
    0x0000e058 add r1, r7                                            |         r1 += r7;
    0x0000e05a add.w r0, sb, r2                                      |         r0 = sb + r2;
    0x0000e05e blx 0x27e4                                            |         r0 = memcmp (r0, r1, r2);
    0x0000e062 cmp r0, 0                                             |         
                                                                     |         if (r0 != 0) {
    0x0000e064 bne 0xe146                                            |             goto label_12;
                                                                     |         }
    0x0000e066 ldr r3, [sp, 8]                                       |         r3 = var_8h;
    0x0000e068 mov.w r2, 1                                           |         r2 = 1;
    0x0000e06c strb r2, [r3, r5]                                     |         *((r3 + r5)) = r2;
                                                                     | label_1:
    0x0000e06e adds r6, 1                                            |         r6++;
    0x0000e070 add.w sb, sb, 0x40                                    |         sb += 0x40;
    0x0000e074 cmp r6, fp                                            |         
                                                                     |         if (r6 == fp) {
    0x0000e076 beq 0xe10e                                            |             goto label_13;
                                                                     |         }
    0x0000e078 mov sl, r7                                            |         sl = r7;
    0x0000e07a movs r5, 0                                            |         r5 = 0;
    0x0000e07c cmp.w r8, 0                                           |         
                                                                     |         if (r8 == 0) {
    0x0000e080 beq 0xe09e                                            |             goto label_14;
                                                                     |         }
                                                                     | label_0:
    0x0000e082 movs r2, 0x20                                         |         r2 = 0x20;
    0x0000e084 mov r1, sl                                            |         r1 = sl;
    0x0000e086 mov r0, sb                                            |         r0 = sb;
    0x0000e088 blx 0x2ea4                                            |         realloc (r0, r1);
    0x0000e08c lsls r2, r5, 6                                        |         r2 = r5 << 6;
    0x0000e08e mov r4, r0                                            |         r4 = r0;
    0x0000e090 cmp r0, 0                                             |         
    0x0000e092 beq 0xe052                                            |         
                                                                     |     }
    0x0000e094 adds r5, 1                                            |     r5++;
    0x0000e096 add.w sl, sl, 0x40                                    |     sl += 0x40;
    0x0000e09a cmp r8, r5                                            |     
                                                                     |     if (r8 != r5) {
    0x0000e09c bne 0xe082                                            |         goto label_0;
                                                                     |     }
                                                                     | label_14:
    0x0000e09e ldr r3, [sp, 0x18]                                    |     r3 = var_18h;
    0x0000e0a0 ldrb r4, [r6, r3]                                     |     r4 = *((r6 + r3));
    0x0000e0a2 cmp r4, 0                                             |     
                                                                     |     if (r4 != 0) {
    0x0000e0a4 bne 0xe06e                                            |         goto label_1;
                                                                     |     }
    0x0000e0a6 ldr r2, [pc, 0x21c]                                   |     
    0x0000e0a8 movs r0, 3                                            |     r0 = 3;
    0x0000e0aa ldr r1, [pc, 0x21c]                                   |     
    0x0000e0ac add r2, pc                                            |     r2 = 0x1c376;
    0x0000e0ae add.w r2, r2, r6, lsl 6                               |     r2 += (r6 << 6);
    0x0000e0b2 add r1, pc                                            |     r1 = 0x1c380;
    0x0000e0b4 strb r4, [r2, 0x1f]                                   |     *((r2 + 0x1f)) = r4;
    0x0000e0b6 b 0xe136                                              |     goto label_15;
                                                                     |     do {
                                                                     | label_2:
    0x0000e0b8 ldr r1, [pc, 0x210]                                   |         
    0x0000e0ba add.w r5, sp, 0x20c0                                  |         r5 += arg_20c0h;
    0x0000e0be adds r5, 0x34                                         |         r5 += 0x34;
    0x0000e0c0 mov r0, r5                                            |         r0 = r5;
    0x0000e0c2 add r1, pc                                            |         
    0x0000e0c4 add.w r1, r1, 0x118                                   |         r1 = 0x1c4aa;
    0x0000e0c8 blx 0x2a68                                            |         fcn_00002a68 ();
    0x0000e0cc ldr r3, [sp, 0xc]                                     |         r3 = var_ch;
    0x0000e0ce ubfx r0, r3, 0, 9                                     |         r0 = (r3 >> 0) & ((1 << 9) - 1);
                                                                     |         if (r0 != 0) {
    0x0000e0d2 cbz r0, 0xe0d8                                        |             
    0x0000e0d4 rsb.w r0, r0, 0x200                                   |             r0 = 0x200 - r0;
                                                                     |         }
    0x0000e0d8 bl 0x7ff0                                             |         r0 = fcn_00007ff0 (r0, r1);
    0x0000e0dc cmp r0, 0                                             |         
                                                                     |         if (r0 == 0) {
    0x0000e0de beq 0xe160                                            |             goto label_16;
                                                                     |         }
                                                                     | label_6:
    0x0000e0e0 blx 0x2f88                                            |         r0 = cxa_finalize ();
    0x0000e0e4 ldr r4, [r0]                                          |         r4 = *(r0);
                                                                     | label_4:
    0x0000e0e6 ldr r2, [pc, 0x1e8]                                   |         
    0x0000e0e8 add.w r1, sp, 0x2500                                  |         r1 += arg_2500h;
    0x0000e0ec ldr r3, [pc, 0x1c0]                                   |         r3 = *(0xe2b0);
    0x0000e0ee adds r1, 0x14                                         |         r1 += 0x14;
    0x0000e0f0 add r2, pc                                            |         r2 = 0x1c3c6;
    0x0000e0f2 ldr r3, [r2, r3]                                      |         r3 = *(0x1c3c6);
    0x0000e0f4 ldr r2, [r3]                                          |         r2 = *(0x1c3c6);
    0x0000e0f6 ldr r3, [r1]                                          |         r3 = *(r1);
    0x0000e0f8 eors r2, r3                                           |         r2 ^= r3;
    0x0000e0fa mov.w r3, 0                                           |         r3 = 0;
                                                                     |         if (r2 != r3) {
    0x0000e0fe bne.w 0xe294                                          |             goto label_17;
                                                                     |         }
    0x0000e102 mov r0, r4                                            |         r0 = r4;
    0x0000e104 add.w sp, sp, 0x2500                                  |         
    0x0000e108 add sp, 0x1c                                          |         
    0x0000e10a pop.w {r4, r5, r6, r7, r8, sb, sl, fp, pc}            |         
                                                                     | label_13:
    0x0000e10e ldr.w sb, [sp, 0x1c]                                  |         sb = var_1ch;
                                                                     | label_11:
    0x0000e112 cmp.w r8, 0                                           |         
    0x0000e116 beq 0xe0b8                                            |         
                                                                     |     } while (r8 == 0);
    0x0000e118 add r3, sp, 0x74                                      |     r3 += var_74h;
    0x0000e11a b 0xe124                                              |     goto label_18;
                                                                     | label_3:
    0x0000e11c add.w sb, sb, 1                                       |     sb++;
    0x0000e120 cmp r8, sb                                            |     
                                                                     |     if (r8 == sb) {
    0x0000e122 beq 0xe0b8                                            |         goto label_2;
                                                                     |     }
                                                                     | label_18:
    0x0000e124 ldrb r2, [r3], 1                                      |     r2 = *(r3);
                                                                     |     r3++;
    0x0000e128 cmp r2, 0                                             |     
                                                                     |     if (r2 != 0) {
    0x0000e12a bne 0xe11c                                            |         goto label_3;
                                                                     |     }
    0x0000e12c ldr r1, [pc, 0x1a4]                                   |     
    0x0000e12e add.w r2, r7, sb, lsl 6                               |     r2 = r7 + (sb << 6);
    0x0000e132 add r1, pc                                            |     r1 = 0x1c40a;
                                                                     |     do {
                                                                     | label_5:
    0x0000e134 movs r0, 3                                            |         r0 = 3;
                                                                     | label_15:
    0x0000e136 bl 0xfcdc                                             |         r0 = fcn_0000fcdc (r0);
    0x0000e13a blx 0x2f88                                            |         cxa_finalize ();
    0x0000e13e movs r3, 0x47                                         |         r3 = 0x47;
    0x0000e140 mov r4, r3                                            |         r4 = r3;
    0x0000e142 str r3, [r0]                                          |         *(r0) = r3;
    0x0000e144 b 0xe0e6                                              |         goto label_4;
                                                                     | label_12:
    0x0000e146 ldr r0, [pc, 0x190]                                   |         
    0x0000e148 mov r2, sb                                            |         r2 = sb;
    0x0000e14a ldr r1, [pc, 0x190]                                   |         
    0x0000e14c add r0, pc                                            |         r0 = 0x1c42a;
    0x0000e14e add.w r3, r0, r6, lsl 6                               |         r3 = r0 + (r6 << 6);
    0x0000e152 add r1, pc                                            |         r1 = 0x1c434;
    0x0000e154 strb r4, [r3, 0x1f]                                   |         *((r3 + 0x1f)) = r4;
    0x0000e156 b 0xe134                                              |         
                                                                     |     } while (1);
                                                                     | label_10:
    0x0000e158 ldr r1, [pc, 0x184]                                   |     
    0x0000e15a mov r2, r3                                            |     r2 = r3;
    0x0000e15c add r1, pc                                            |     r1 = 0x1c440;
    0x0000e15e b 0xe134                                              |     goto label_5;
                                                                     | label_16:
    0x0000e160 ldr r3, [sp, 0x10]                                    |     r3 = var_10h;
    0x0000e162 movs r2, 1                                            |     r2 = 1;
    0x0000e164 ldr r0, [pc, 0x17c]                                   |     
    0x0000e166 sub.w r1, r3, 0x30                                    |     r1 = r3 - 0x30;
    0x0000e16a add r0, pc                                            |     r0 = 0x1c452;
    0x0000e16c bl 0xdd54                                             |     r0 = fcn_0000dd54 (r0, r1, r2);
                                                                     |     if (r0 == 0) {
    0x0000e170 cbz r0, 0xe1a4                                        |         goto label_19;
                                                                     |     }
    0x0000e172 blx 0x2f88                                            |     r0 = cxa_finalize ();
    0x0000e176 ldr r4, [r0]                                          |     r4 = *(r0);
    0x0000e178 mov r5, r0                                            |     r5 = r0;
    0x0000e17a cmp r4, 2                                             |     
                                                                     |     if (r4 != 2) {
    0x0000e17c bne 0xe0e6                                            |         goto label_4;
                                                                     |     }
    0x0000e17e ldr r3, [pc, 0x168]                                   |     
    0x0000e180 add r3, pc                                            |     r3 = 0x1c46e;
    0x0000e182 ldrb.w r2, [r3, 0x208]                                |     r2 = *((r3 + 0x208));
    0x0000e186 cmp r2, 0                                             |     
                                                                     |     if (r2 != 0) {
    0x0000e188 bne 0xe21c                                            |         goto label_20;
                                                                     |     }
    0x0000e18a ldrb.w r3, [r3, 0x209]                                |     r3 = *((r3 + 0x209));
    0x0000e18e cmp r3, 0                                             |     
                                                                     |     if (r3 != 0) {
    0x0000e190 bne 0xe206                                            |         goto label_21;
                                                                     |     }
                                                                     | label_7:
    0x0000e192 ldr r1, [pc, 0x158]                                   |     
    0x0000e194 movs r0, 3                                            |     r0 = 3;
    0x0000e196 add r1, pc                                            |     r1 = "Failed to erase volume %s: %m";
    0x0000e198 bl 0xfcdc                                             |     fcn_0000fcdc (r0);
    0x0000e19a stc2 p3, c2, [r0, 0xa8]!                              |     __asm ("stc2 p3, c2, [r0, 0xa8]!");
    0x0000e19e mov r4, r3                                            |     r4 = r3;
    0x0000e1a0 str r3, [r5]                                          |     *(r5) = r3;
    0x0000e1a2 b 0xe0e6                                              |     goto label_4;
                                                                     | label_19:
    0x0000e1a4 ldr r3, [sp, 0x14]                                    |     r3 = var_14h;
    0x0000e1a6 sub.w r3, r3, 0x4f0                                   |     r3 -= 0x4f0;
    0x0000e1aa ldr r2, [r3]                                          |     r2 = *(r3);
    0x0000e1ac cmp r2, 0x47                                          |     
                                                                     |     if (r2 < 0x47) {
    0x0000e1ae bls 0xe280                                            |         goto label_22;
                                                                     |     }
    0x0000e1b0 ldr r3, [sp, 0x10]                                    |     r3 = var_10h;
    0x0000e1b2 mov r2, r0                                            |     r2 = r0;
    0x0000e1b4 movs r1, 0x48                                         |     r1 = 0x48;
    0x0000e1b6 sub.w r0, r3, 0x2c                                    |     r0 = r3 - 0x2c;
    0x0000e1ba bl 0x7cd8                                             |     r0 = fcn_00007cd8 (r0, r1, r2);
    0x0000e1be cmp r0, 0                                             |     
                                                                     |     if (r0 != 0) {
    0x0000e1c0 bne 0xe0e0                                            |         goto label_6;
                                                                     |     }
    0x0000e1c2 ldr r3, [sp, 0x14]                                    |     r3 = var_14h;
    0x0000e1c4 movw r2, 0x6770                                       |     
    0x0000e1c8 movt r2, 0x666e                                       |     r2 = 0x666e6770;
    0x0000e1cc subw r3, r3, 0x4ec                                    |     __asm ("subw r3, r3, 0x4ec");
    0x0000e1d0 ldr r1, [r3]                                          |     r1 = *(r3);
    0x0000e1d2 cmp r1, r2                                            |     
                                                                     |     if (r1 != r2) {
    0x0000e1d4 bne 0xe28c                                            |         goto label_23;
                                                                     |     }
    0x0000e1d6 ldr r2, [r3, 4]                                       |     r2 = *((r3 + 4));
    0x0000e1d8 movw r3, 0x13df                                       |     
    0x0000e1da adds r3, 0xdf                                         |     
    0x0000e1dc movt r3, 0x3c20                                       |     r3 = 0x13df;
    0x0000e1e0 cmp r2, r3                                            |     
                                                                     |     if (r2 == r3) {
    0x0000e1e2 beq 0xe286                                            |         goto label_24;
                                                                     |     }
    0x0000e1e4 movw r3, 0x9124                                       |     
    0x0000e1e8 movt r3, 0x6cd9                                       |     r3 = 0x6cd99124;
    0x0000e1ea mvns r1, r3                                           |     r1 = ~r3;
    0x0000e1ec cmp r2, r3                                            |     
                                                                     |     if (r2 == r3) {
    0x0000e1ee beq 0xe22a                                            |         goto label_25;
                                                                     |     }
    0x0000e1f0 ldr r1, [pc, 0xfc]                                    |     
    0x0000e1f2 movs r0, 3                                            |     r0 = 3;
    0x0000e1f4 add r1, pc                                            |     r1 = 0x1c4e8;
                                                                     | label_9:
    0x0000e1f6 bl 0xfcdc                                             |     r0 = fcn_0000fcdc (r0);
    0x0000e1fa blx 0x2f88                                            |     cxa_finalize ();
    0x0000e1fe movs r3, 0x47                                         |     r3 = 0x47;
    0x0000e200 mov r4, r3                                            |     r4 = r3;
    0x0000e202 str r3, [r0]                                          |     *(r0) = r3;
    0x0000e204 b 0xe0e6                                              |     goto label_4;
                                                                     | label_21:
    0x0000e206 ldr r1, [pc, 0xec]                                    |     
    0x0000e208 ldr r0, [pc, 0xec]                                    |     
    0x0000e20a add r1, pc                                            |     r1 = 0x1c504;
    0x0000e20c add r0, pc                                            |     r0 = 0x1c508;
    0x0000e20e bl 0xbda0                                             |     r0 = fcn_0000bda0 (r0, r1);
    0x0000e212 mov r4, r0                                            |     r4 = r0;
    0x0000e214 blx 0x2dd4                                            |     fcn_00002dd4 ();
    0x0000e218 cmp r4, 0                                             |     
                                                                     |     if (r4 == 0) {
    0x0000e21a beq 0xe192                                            |         goto label_7;
                                                                     |     }
                                                                     | label_20:
    0x0000e21c ldr r1, [pc, 0xdc]                                    |     
    0x0000e21e movs r0, 6                                            |     r0 = 6;
    0x0000e220 movs r4, 0                                            |     r4 = 0;
    0x0000e222 add r1, pc                                            |     r1 = 0x1c522;
    0x0000e224 bl 0xfcdc                                             |     fcn_0000fcdc (r0);
    0x0000e228 b 0xe0e6                                              |     goto label_4;
                                                                     | label_25:
    0x0000e22a mov.w r6, 0x100                                       |     r6 = 0x100;
                                                                     | label_8:
    0x0000e22e add.w r7, sp, 0x2100                                  |     r7 += arg_2100h;
    0x0000e232 movs r2, 0                                            |     r2 = 0;
    0x0000e234 adds r7, 0x14                                         |     r7 += 0x14;
    0x0000e236 mov r1, r6                                            |     r1 = r6;
    0x0000e238 mov r0, r7                                            |     r0 = r7;
    0x0000e23a bl 0x7cd8                                             |     r0 = fcn_00007cd8 (r0, r1, r2);
    0x0000e23e cmp r0, 0                                             |     
                                                                     |     if (r0 != 0) {
    0x0000e240 bne.w 0xe0e0                                          |         goto label_6;
                                                                     |     }
    0x0000e244 ldr r3, [sp, 0x10]                                    |     r3 = var_10h;
    0x0000e246 sub.w r4, r3, 0x24                                    |     r4 = r3 - 0x24;
    0x0000e24a mov r0, r4                                            |     r0 = r4;
    0x0000e24c bl 0xce0c                                             |     fcn_0000ce0c ();
    0x0000e24e ldc2l p3, c11, [lr, 0x100]                            |     __asm ("ldc2l p3, c11, [lr, 0x100]");
                                                                     |     if (r0 != 0) {
    0x0000e250 cbz r0, 0xe2a4                                        |         
    0x0000e252 ldr r1, [pc, 0xac]                                    |         
    0x0000e254 mov r2, r4                                            |         r2 = r4;
    0x0000e256 movs r0, 6                                            |         r0 = 6;
    0x0000e258 add r1, pc                                            |         r1 = 0x1c55e;
    0x0000e25a bl 0xfcdc                                             |         fcn_0000fcdc (r0);
    0x0000e25e ldr r3, [pc, 0xa4]                                    |         
    0x0000e260 mov r2, r4                                            |         r2 = r4;
    0x0000e262 mov r0, r5                                            |         r0 = r5;
    0x0000e264 movs r1, 0x20                                         |         r1 = 0x20;
    0x0000e266 strd r7, r6, [sp]                                     |         __asm ("strd r7, r6, [sp]");
    0x0000e26a add r3, pc                                            |         r3 = 0x1c574;
    0x0000e26c bl 0xb92c                                             |         r0 = fcn_0000b92c (r0, r1, r2, r3, r4, r5);
    0x0000e270 mov r4, r0                                            |         r4 = r0;
                                                                     |         if (r0 == 0) {
    0x0000e272 cbnz r0, 0xe298                                       |             
    0x0000e274 ldr r1, [pc, 0x90]                                    |             
    0x0000e276 movs r0, 6                                            |             r0 = 6;
    0x0000e278 add r1, pc                                            |             r1 = 0x1c584;
    0x0000e27a bl 0xfcdc                                             |             fcn_0000fcdc (r0);
    0x0000e27e b 0xe0e6                                              |             goto label_4;
                                                                     | label_22:
    0x0000e280 ldr r1, [pc, 0x88]                                    |             
    0x0000e282 add r1, pc                                            |             r1 = 0x1c592;
    0x0000e284 b 0xe134                                              |             goto label_5;
                                                                     | label_24:
    0x0000e286 mov.w r6, 0x180                                       |             r6 = 0x180;
    0x0000e28a b 0xe22e                                              |             goto label_8;
                                                                     | label_23:
    0x0000e28c ldr r1, [pc, 0x80]                                    |             
    0x0000e28e movs r0, 3                                            |             r0 = 3;
    0x0000e290 add r1, pc                                            |             r1 = 0x1c5a4;
    0x0000e292 b 0xe1f6                                              |             goto label_9;
                                                                     | label_17:
    0x0000e294 blx 0x2cdc                                            |             fprintf_chk ()
                                                                     |         }
    0x0000e298 ldr r1, [pc, 0x78]                                    |         
    0x0000e29a movs r0, 3                                            |         r0 = 3;
    0x0000e29c add r1, pc                                            |         r1 = 0x1c5b4;
    0x0000e29e bl 0xfcdc                                             |         fcn_0000fcdc (r0);
    0x0000e2a2 b 0xe0e0                                              |         goto label_6;
                                                                     |     }
    0x0000e2a4 ldr r1, [pc, 0x70]                                    |     
    0x0000e2a6 movs r0, 6                                            |     r0 = 6;
    0x0000e2a8 add r1, pc                                            |     r1 = "Tried to select invalid firmware for booting.";
    0x0000e2aa b 0xe1f6                                              |     goto label_9;
                                                                     | }
    ; assembly                                                       | /* r2dec pseudo code output */
                                                                     | /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/sbin/fwmgr @ 0xe354 */
                                                                     | #include <stdint.h>
                                                                     |  
    ; (fcn) fcn.0000e354 ()                                          | void fcn_0000e354 (int16_t arg_9h, int16_t arg_ch, int16_t arg_dh, int16_t arg_40ch, int16_t arg1) {
                                                                     |     int16_t var_414h;
                                                                     |     int16_t var_4h;
                                                                     |     int16_t var_8h;
                                                                     |     int16_t var_ch;
                                                                     |     r0 = arg1;
    0x0000e354 push.w {r4, r5, r6, r7, r8, sb, sl, fp, lr}           |     
    0x0000e358 mov r5, r0                                            |     r5 = r0;
    0x0000e35a ldr r4, [pc, 0x3c0]                                   |     
    0x0000e35c subw sp, sp, 0x414                                    |     __asm ("subw sp, sp, 0x414");
    0x0000e35e ldr r5, [pc, 0x50]                                    |     r5 = *(0xe3b2);
    0x0000e360 add r6, sp, 0xc                                       |     r6 += var_ch;
    0x0000e362 mov.w r2, 0x400                                       |     r2 = 0x400;
    0x0000e366 ldr r1, [pc, 0x3b8]                                   |     r1 = *(0xe722);
    0x0000e368 eor r3, r5, 1                                         |     r3 = r5 ^ 1;
    0x0000e36c add r4, pc                                            |     r4 = 0x1ca8e;
    0x0000e36e ldr r0, [pc, 0x3b4]                                   |     
    0x0000e370 ldr r7, [pc, 0x3b4]                                   |     
    0x0000e372 ldr r1, [r4, r1]                                      |     
    0x0000e374 add r0, pc                                            |     r0 = 0x1ca9e;
    0x0000e376 add r7, pc                                            |     r7 = 0x1caa2;
    0x0000e378 ldr r1, [r1]                                          |     r1 = *(0x1ca8e);
    0x0000e37a str.w r1, [sp, 0x40c]                                 |     __asm ("str.w r1, [arg_40ch]");
    0x0000e37e mov.w r1, 0                                           |     r1 = 0;
    0x0000e382 mov r1, r6                                            |     r1 = r6;
    0x0000e384 bl 0x10338                                            |     r0 = fcn_00010338 (r0, r1, r2, r3);
                                                                     |     if (r0 != 0) {
    0x0000e388 cbz r0, 0xe3b2                                        |         
    0x0000e38a blx 0x2f88                                            |         r0 = cxa_finalize ();
    0x0000e38e ldr r4, [r0]                                          |         r4 = *(r0);
                                                                     | label_2:
    0x0000e390 ldr r2, [pc, 0x398]                                   |         
    0x0000e392 ldr r3, [pc, 0x38c]                                   |         r3 = *(0xe722);
    0x0000e394 add r2, pc                                            |         r2 = 0x1cac4;
    0x0000e396 ldr r3, [r2, r3]                                      |         r3 = *(0x1cac4);
    0x0000e398 ldr r2, [r3]                                          |         r2 = *(0x1cac4);
    0x0000e39a ldr.w r3, [sp, 0x40c]                                 |         r3 = *(arg_40ch);
    0x0000e39e eors r2, r3                                           |         r2 ^= r3;
    0x0000e3a0 mov.w r3, 0                                           |         r3 = 0;
                                                                     |         if (r2 != r3) {
    0x0000e3a4 bne.w 0xe624                                          |             goto label_10;
                                                                     |         }
    0x0000e3a8 mov r0, r4                                            |         r0 = r4;
    0x0000e3aa addw sp, sp, 0x414                                    |         __asm ("addw sp, var_414h");
    0x0000e3ac ldr r5, [pc, 0x50]                                    |         r5 = *(0xe400);
    0x0000e3ae pop.w {r4, r5, r6, r7, r8, sb, sl, fp, pc}            |         
                                                                     |     }
    0x0000e3b2 ldr r3, [pc, 0x37c]                                   |     
    0x0000e3b4 mov r4, r0                                            |     r4 = r0;
    0x0000e3b6 ldr r1, [pc, 0x37c]                                   |     
    0x0000e3b8 mov r0, r6                                            |     r0 = r6;
    0x0000e3ba add r3, pc                                            |     r3 = 0x1caf0;
    0x0000e3bc strb r4, [r3, 4]                                      |     *((r3 + 4)) = r4;
    0x0000e3be add r1, pc                                            |     r1 = "Could not erase '%s' at address 0x%zx: %m";
    0x0000e3c0 ldr r3, [pc, 0x374]                                   |     r3 = *(0xe738);
    0x0000e3c2 ldr.w r8, [r7, r3]                                    |     r8 = *((r7 + r3));
    0x0000e3c6 strb.w r4, [r8]                                       |     *(r8) = r4;
    0x0000e3ca blx 0x2d30                                            |     r0 = ftruncate ();
    0x0000e3ce mov fp, r0                                            |     
    0x0000e3d0 cmp r0, 0                                             |     
                                                                     |     if (r0 == 0) {
    0x0000e3d2 beq 0xe478                                            |         goto label_11;
                                                                     |     }
    0x0000e3d4 ldr.w sb, [pc, 0x364]                                 |     sb = *(0x0000e73c);
    0x0000e3d8 ldr r6, [pc, 0x364]                                   |     
    0x0000e3da add sb, pc                                            |     sb += pc;
    0x0000e3dc add r6, pc                                            |     r6 = 0x1cb20;
    0x0000e3de add.w sl, sb, 4                                       |     sl = sb + 4;
    0x0000e3e0 lsrs r4, r0, 8                                        |     r4 = r0 >> 8;
    0x0000e3e2 b 0xe402                                              |     goto label_12;
                                                                     |     if (r5 == 0) {
                                                                     | label_1:
    0x0000e3e4 cbz r5, 0xe3f2                                        |         goto label_0;
                                                                     |     }
    0x0000e3e6 ldr r3, [pc, 0x35c]                                   |     r3 = *(0xe746);
    0x0000e3e8 ldr r3, [r7, r3]                                      |     r3 = *((r7 + r3));
    0x0000e3ea ldr r2, [r3]                                          |     r2 = *(0xe746);
                                                                     |     if (r2 != 0) {
    0x0000e3ec cbnz r2, 0xe3f2                                       |         goto label_0;
                                                                     |     }
                                                                     | label_3:
    0x0000e3ee movs r2, 1                                            |     r2 = 1;
    0x0000e3f0 str r2, [r3]                                          |     *(r3) = r2;
                                                                     |     do {
                                                                     | label_0:
    0x0000e3f2 ldr r1, [pc, 0x354]                                   |         
    0x0000e3f4 movs r0, 0                                            |         r0 = 0;
    0x0000e3f6 add r1, pc                                            |         r1 = 0x1cb44;
    0x0000e3f8 blx 0x2d30                                            |         r0 = ftruncate ();
    0x0000e3fc mov fp, r0                                            |         
    0x0000e3fe cmp r0, 0                                             |         
                                                                     |         if (r0 == 0) {
    0x0000e400 beq 0xe478                                            |             goto label_11;
                                                                     |         }
                                                                     | label_12:
    0x0000e402 ldrb.w r1, [fp]                                       |         r1 = *(fp);
    0x0000e406 cmp r1, 0x23                                          |         
    0x0000e408 it ne                                                 |         
                                                                     |         if (r1 != 0x23) {
    0x0000e40a cmpne r1, 0                                           |             __asm ("cmpne r1, 0");
                                                                     |         }
    0x0000e40c ite eq                                                |         
                                                                     |         if (r1 != 0x23) {
    0x0000e40e moveq r2, 1                                           |             r2 = 1;
                                                                     |         }
                                                                     |         if (r1 == 0x23) {
    0x0000e410 movne r2, 0                                           |             r2 = 0;
                                                                     |         }
    0x0000e412 cmp r1, 0x3b                                          |         
    0x0000e414 it eq                                                 |         
                                                                     |         if (r1 != 0x3b) {
    0x0000e416 orreq r2, r2, 1                                       |             r2 |= 1;
                                                                     |         }
    0x0000e418 lsls r1, r0, 8                                        |         r1 = r0 << 8;
    0x0000e41a cmp r2, 0                                             |         
    0x0000e41c bne 0xe3f2                                            |         
                                                                     |     } while (r2 != 0);
    0x0000e41e mov r1, r6                                            |     r1 = r6;
    0x0000e420 mov r0, fp                                            |     r0 = fp;
    0x0000e422 blx 0x2f70                                            |     r0 = vdprintf_chk ();
    0x0000e426 cmp r0, 0                                             |     
                                                                     |     if (r0 == 0) {
    0x0000e428 beq 0xe3f2                                            |         goto label_0;
                                                                     |     }
    0x0000e42a ldr r1, [pc, 0x320]                                   |     
    0x0000e42c mov r0, fp                                            |     r0 = fp;
    0x0000e42e add r1, pc                                            |     r1 = 0x1cb80;
    0x0000e430 blx 0x2f70                                            |     r0 = vdprintf_chk ();
    0x0000e434 cmp r0, 0                                             |     
                                                                     |     if (r0 == 0) {
    0x0000e436 beq 0xe3e4                                            |         goto label_1;
                                                                     |     }
    0x0000e438 ldr r1, [pc, 0x314]                                   |     
    0x0000e43a mov r0, fp                                            |     r0 = fp;
    0x0000e43c add r1, pc                                            |     r1 = 0x1cb90;
    0x0000e43e blx 0x2f70                                            |     vdprintf_chk ();
    0x0000e440 ldc p9, c11, [r8, 0x120]                              |     __asm ("ldc p9, c11, [r8, 0x120]");
    0x0000e444 cmp r5, 0                                             |     
                                                                     |     if (r5 == 0) {
    0x0000e446 beq 0xe3f2                                            |         goto label_0;
                                                                     |     }
    0x0000e448 ldr r3, [pc, 0x2f8]                                   |     r3 = *(0xe744);
    0x0000e44a ldr r3, [r7, r3]                                      |     r3 = *((r7 + r3));
    0x0000e44c ldr r2, [r3]                                          |     r2 = *(0xe744);
    0x0000e44e cmp r2, 0                                             |     
                                                                     |     if (r2 != 0) {
    0x0000e450 bne 0xe3f2                                            |         goto label_0;
                                                                     |     }
                                                                     | label_4:
    0x0000e452 movs r2, 3                                            |     r2 = 3;
    0x0000e454 str r2, [r3]                                          |     *(r3) = r2;
    0x0000e456 b 0xe3f2                                              |     goto label_0;
    0x0000e458 ldr r1, [pc, 0x2f8]                                   |     
    0x0000e45a mov r0, fp                                            |     r0 = fp;
    0x0000e45c add r1, pc                                            |     r1 = 0x1cbb4;
    0x0000e45e blx 0x2f70                                            |     r0 = vdprintf_chk ();
                                                                     |     if (r0 != 0) {
    0x0000e462 cbnz r0, 0xe4a4                                       |         goto label_13;
                                                                     |     }
    0x0000e464 cmp r5, 0                                             |     
                                                                     |     if (r5 == 0) {
    0x0000e466 beq 0xe3f2                                            |         goto label_0;
                                                                     |     }
    0x0000e468 ldr r3, [pc, 0x2d8]                                   |     r3 = *(0xe744);
    0x0000e46a ldr r3, [r7, r3]                                      |     r3 = *((r7 + r3));
    0x0000e46c ldr r2, [r3]                                          |     r2 = *(0xe744);
    0x0000e46e cmp r2, 0                                             |     
                                                                     |     if (r2 != 0) {
    0x0000e470 bne 0xe3f2                                            |         goto label_0;
                                                                     |     }
                                                                     | label_7:
    0x0000e472 movs r2, 2                                            |     r2 = 2;
    0x0000e474 str r2, [r3]                                          |     *(r3) = r2;
    0x0000e476 b 0xe3f2                                              |     goto label_0;
                                                                     | label_11:
    0x0000e478 ldr r3, [pc, 0x2dc]                                   |     
    0x0000e47a add r3, pc                                            |     r3 = 0x1cbd6;
    0x0000e47c ldrb r3, [r3, 4]                                      |     r3 = *((r3 + 4));
                                                                     |     if (r3 == 0) {
    0x0000e47e cbz r3, 0xe4d0                                        |         goto label_14;
                                                                     |     }
    0x0000e480 ldrb.w r3, [r8]                                       |     r3 = *(r8);
                                                                     |     if (r3 == 0) {
    0x0000e484 cbz r3, 0xe4d0                                        |         goto label_14;
                                                                     |     }
    0x0000e486 cmp r5, 0                                             |     
                                                                     |     if (r5 == 0) {
    0x0000e488 beq 0xe390                                            |         goto label_2;
                                                                     |     }
    0x0000e48a ldr r0, [pc, 0x2d0]                                   |     
    0x0000e48c mov.w r1, -1                                          |     r1 = -1;
    0x0000e490 add r0, pc                                            |     r0 = 0x1cbf2;
    0x0000e492 bl 0x7c1c                                             |     r0 = fcn_00007c1c (r0, r1);
    0x0000e496 mov r4, r0                                            |     r4 = r0;
    0x0000e498 blx 0x2f88                                            |     r0 = cxa_finalize ();
    0x0000e49c mov r5, r0                                            |     r5 = r0;
                                                                     |     if (r4 == 0) {
    0x0000e49e cbz r4, 0xe4e6                                        |         goto label_15;
                                                                     |     }
    0x0000e4a0 ldr r4, [r0]                                          |     r4 = *(r0);
    0x0000e4a2 b 0xe390                                              |     goto label_2;
                                                                     | label_13:
    0x0000e4a4 ldr r1, [pc, 0x2b8]                                   |     
    0x0000e4a6 mov r0, fp                                            |     r0 = fp;
    0x0000e4a8 add r1, pc                                            |     r1 = 0x1cc0c;
    0x0000e4aa blx 0x2f70                                            |     r0 = vdprintf_chk ();
    0x0000e4ae cmp r0, 0                                             |     
                                                                     |     if (r0 == 0) {
    0x0000e4b0 beq 0xe3f2                                            |         goto label_0;
                                                                     |     }
    0x0000e4b2 ldr r1, [pc, 0x2b0]                                   |     
    0x0000e4b4 mov r0, fp                                            |     r0 = fp;
    0x0000e4b6 add r1, pc                                            |     r1 = 0x1cc20;
    0x0000e4b8 blx 0x2f70                                            |     r0 = vdprintf_chk ();
                                                                     |     if (r0 != 0) {
    0x0000e4bc cbnz r0, 0xe4f6                                       |         goto label_16;
                                                                     |     }
    0x0000e4be cmp r5, 0                                             |     
                                                                     |     if (r5 == 0) {
    0x0000e4c0 beq 0xe3f2                                            |         goto label_0;
                                                                     |     }
    0x0000e4c2 ldr r3, [pc, 0x2a4]                                   |     r3 = *(0xe76a);
    0x0000e4c4 ldr r3, [r7, r3]                                      |     r3 = *((r7 + r3));
    0x0000e4c6 ldr r2, [r3]                                          |     r2 = *(0xe76a);
    0x0000e4c8 adds r2, 1                                            |     r2++;
                                                                     |     if (r2 != 1) {
    0x0000e4ca bne 0xe3f2                                            |         goto label_0;
                                                                     |     }
                                                                     | label_9:
    0x0000e4cc str r0, [r3]                                          |     *(r3) = r0;
    0x0000e4ce b 0xe3f2                                              |     goto label_0;
                                                                     | label_14:
    0x0000e4d0 ldr r1, [pc, 0x298]                                   |     
    0x0000e4d2 movs r0, 2                                            |     r0 = 2;
    0x0000e4d4 add r1, pc                                            |     r1 = 0x1cc44;
    0x0000e4d6 bl 0xfcdc                                             |     r0 = fcn_0000fcdc (r0);
    0x0000e4da blx 0x2f88                                            |     cxa_finalize ();
    0x0000e4de movs r3, 0x3d                                         |     r3 = 0x3d;
    0x0000e4e0 mov r4, r3                                            |     r4 = r3;
    0x0000e4e2 str r3, [r0]                                          |     *(r0) = r3;
    0x0000e4e4 b 0xe390                                              |     goto label_2;
                                                                     | label_15:
    0x0000e4e6 bl 0x8208                                             |     r0 = fcn_00008208 (r0);
                                                                     |     if (r0 == 0) {
    0x0000e4ea cbz r0, 0xe536                                        |         goto label_17;
                                                                     |     }
                                                                     | label_5:
    0x0000e4ec ldr r4, [r5]                                          |     r4 = *(r5);
                                                                     | label_6:
    0x0000e4ee bl 0x80e8                                             |     fcn_000080e8 (r0);
    0x0000e4f2 str r4, [r5]                                          |     *(r5) = r4;
    0x0000e4f4 b 0xe390                                              |     goto label_2;
                                                                     | label_16:
    0x0000e4f6 ldr r1, [pc, 0x278]                                   |     
    0x0000e4f8 mov r0, fp                                            |     r0 = fp;
    0x0000e4fa add r1, pc                                            |     r1 = 0x1cc70;
    0x0000e4fc blx 0x2f70                                            |     r0 = vdprintf_chk ();
                                                                     |     if (r0 == 0) {
    0x0000e500 cbz r0, 0xe522                                        |         goto label_18;
                                                                     |     }
    0x0000e502 ldr r1, [pc, 0x270]                                   |     
    0x0000e504 mov r0, fp                                            |     r0 = fp;
    0x0000e506 add r1, pc                                            |     r1 = 0x1cc80;
    0x0000e508 blx 0x2f70                                            |     r0 = vdprintf_chk ();
                                                                     |     if (r0 != 0) {
    0x0000e50c cbnz r0, 0xe542                                       |         goto label_19;
                                                                     |     }
    0x0000e50e cmp r5, 0                                             |     
                                                                     |     if (r5 == 0) {
    0x0000e510 beq.w 0xe3f2                                          |         goto label_0;
                                                                     |     }
    0x0000e514 ldr r3, [pc, 0x250]                                   |     r3 = *(0xe768);
    0x0000e516 ldr r3, [r7, r3]                                      |     r3 = *((r7 + r3));
    0x0000e518 ldr r2, [r3]                                          |     r2 = *(0xe768);
    0x0000e51a adds r2, 1                                            |     r2++;
                                                                     |     if (r2 != 1) {
    0x0000e51c bne.w 0xe3f2                                          |         goto label_0;
                                                                     |     }
    0x0000e520 b 0xe3ee                                              |     goto label_3;
                                                                     | label_18:
    0x0000e522 cmp r5, 0                                             |     
                                                                     |     if (r5 == 0) {
    0x0000e524 beq.w 0xe3f2                                          |         goto label_0;
                                                                     |     }
    0x0000e528 ldr r3, [pc, 0x23c]                                   |     r3 = *(0xe768);
    0x0000e52a ldr r3, [r7, r3]                                      |     r3 = *((r7 + r3));
    0x0000e52c ldr r2, [r3]                                          |     r2 = *(0xe768);
    0x0000e52e adds r2, 1                                            |     r2++;
                                                                     |     if (r2 != 1) {
    0x0000e530 bne.w 0xe3f2                                          |         goto label_0;
                                                                     |     }
    0x0000e534 b 0xe452                                              |     goto label_4;
                                                                     | label_17:
    0x0000e536 bl 0xf8f0                                             |     r0 = fcn_0000f8f0 ();
    0x0000e53a mov r4, r0                                            |     r4 = r0;
    0x0000e53c cmp r0, 0                                             |     
                                                                     |     if (r0 != 0) {
    0x0000e53e bne 0xe4ec                                            |         goto label_5;
                                                                     |     }
    0x0000e540 b 0xe4ee                                              |     goto label_6;
                                                                     | label_19:
    0x0000e542 ldr r1, [pc, 0x234]                                   |     
    0x0000e544 mov r0, fp                                            |     r0 = fp;
    0x0000e546 add r1, pc                                            |     r1 = 0x1ccc4;
    0x0000e548 blx 0x2f70                                            |     r0 = vdprintf_chk ();
                                                                     |     if (r0 != 0) {
    0x0000e54c cbnz r0, 0xe562                                       |         goto label_20;
                                                                     |     }
    0x0000e54e cmp r5, 0                                             |     
                                                                     |     if (r5 == 0) {
    0x0000e550 beq.w 0xe3f2                                          |         goto label_0;
                                                                     |     }
    0x0000e554 ldr r3, [pc, 0x210]                                   |     r3 = *(0xe768);
    0x0000e556 ldr r3, [r7, r3]                                      |     r3 = *((r7 + r3));
    0x0000e558 ldr r2, [r3]                                          |     r2 = *(0xe768);
    0x0000e55a adds r2, 1                                            |     r2++;
                                                                     |     if (r2 != 1) {
    0x0000e55c bne.w 0xe3f2                                          |         goto label_0;
                                                                     |     }
    0x0000e560 b 0xe472                                              |     goto label_7;
                                                                     | label_20:
    0x0000e562 ldr r1, [pc, 0x218]                                   |     
    0x0000e564 mov r0, fp                                            |     r0 = fp;
    0x0000e566 add r1, pc                                            |     r1 = 0x1cce8;
    0x0000e568 blx 0x2f70                                            |     r0 = vdprintf_chk ();
    0x0000e56c cmp r0, 0                                             |     
                                                                     |     if (r0 == 0) {
    0x0000e56e beq.w 0xe3f2                                          |         goto label_0;
                                                                     |     }
    0x0000e572 ldr r1, [pc, 0x20c]                                   |     
    0x0000e574 mov r0, fp                                            |     r0 = fp;
    0x0000e576 add r1, pc                                            |     r1 = "rwfs%s";
    0x0000e578 blx 0x2f70                                            |     r0 = vdprintf_chk ();
                                                                     |     if (r0 == 0) {
    0x0000e57c cbz r0, 0xe5e2                                        |         goto label_21;
                                                                     |     }
    0x0000e57e ldr r1, [pc, 0x204]                                   |     
    0x0000e580 movs r2, 0xd                                          |     r2 = 0xd;
    0x0000e582 mov r0, fp                                            |     r0 = fp;
    0x0000e584 add r1, pc                                            |     r1 = 0x1cd0e;
    0x0000e586 blx 0x2ea4                                            |     r0 = realloc (r0, r1);
                                                                     |     if (r0 == 0) {
    0x0000e58a cbnz r0, 0xe592                                       |         
    0x0000e58c ldrb.w r2, [fp, 0xd]                                  |         r2 = *(arg_dh);
                                                                     |         if (r2 != 0) {
    0x0000e590 cbnz r2, 0xe5c0                                       |             goto label_22;
                                                                     |         }
                                                                     |     }
                                                                     | label_8:
    0x0000e592 ldr r1, [pc, 0x1f4]                                   |     
    0x0000e594 mov r0, fp                                            |     r0 = fp;
    0x0000e596 add r1, pc                                            |     r1 = 0x1cd24;
    0x0000e598 blx 0x2f70                                            |     r0 = vdprintf_chk ();
    0x0000e59c cmp r0, 0                                             |     
                                                                     |     if (r0 == 0) {
    0x0000e59e beq.w 0xe3f2                                          |         goto label_0;
                                                                     |     }
    0x0000e5a2 ldr r1, [pc, 0x1e8]                                   |     
    0x0000e5a4 mov r0, fp                                            |     r0 = fp;
    0x0000e5a6 add r1, pc                                            |     r1 = 0x1cd38;
    0x0000e5a8 blx 0x2f70                                            |     r0 = vdprintf_chk ();
                                                                     |     if (r0 != 0) {
    0x0000e5ac cbnz r0, 0xe5f6                                       |         goto label_23;
                                                                     |     }
    0x0000e5ae cmp r5, 0                                             |     
                                                                     |     if (r5 == 0) {
    0x0000e5b0 beq.w 0xe3f2                                          |         goto label_0;
                                                                     |     }
    0x0000e5b4 ldr r3, [pc, 0x1d8]                                   |     
    0x0000e5b6 movs r2, 1                                            |     r2 = 1;
    0x0000e5b8 add r3, pc                                            |     r3 = 0x1cd4c;
    0x0000e5ba strb.w r2, [r3, 0x105]                                |     *((r3 + 0x105)) = r2;
    0x0000e5be b 0xe3f2                                              |     goto label_0;
                                                                     | label_22:
    0x0000e5c0 add r3, sp, 8                                         |     r3 += var_8h;
    0x0000e5c2 movs r2, 0xa                                          |     r2 = 0xa;
    0x0000e5c4 mov r1, r3                                            |     r1 = r3;
    0x0000e5c6 add.w r0, fp, 0xd                                     |     r0 += arg_dh;
    0x0000e5ca str r3, [sp, 4]                                       |     var_4h = r3;
    0x0000e5cc blx 0x2ae4                                            |     r0 = xpg_basename ();
    0x0000e5d0 subs r1, r0, 1                                        |     r1 = r0 - 1;
    0x0000e5d2 ldr r3, [sp, 4]                                       |     r3 = var_4h;
    0x0000e5d4 cmp.w r1, 0x5a0                                       |     
                                                                     |     if (r1 >= 0x5a0) {
    0x0000e5d8 bhs 0xe592                                            |         goto label_8;
                                                                     |     }
    0x0000e5da ldr r1, [r3]                                          |     r1 = *(r3);
    0x0000e5dc ldrb r1, [r1]                                         |     r1 = *(r1);
    0x0000e5de cmp r1, 0                                             |     
                                                                     |     if (r1 != 0) {
    0x0000e5e0 bne 0xe592                                            |         goto label_8;
                                                                     |     }
                                                                     | label_21:
    0x0000e5e2 cmp r5, 0                                             |     
                                                                     |     if (r5 == 0) {
    0x0000e5e4 beq.w 0xe3f2                                          |         goto label_0;
                                                                     |     }
    0x0000e5e8 ldr r3, [pc, 0x1a8]                                   |     r3 = *(0xe794);
    0x0000e5ea ldr r3, [r7, r3]                                      |     r3 = *((r7 + r3));
    0x0000e5ec ldr r1, [r3]                                          |     r1 = *(0xe794);
    0x0000e5ee adds r1, 1                                            |     r1++;
                                                                     |     if (r1 != 1) {
    0x0000e5f0 bne.w 0xe3f2                                          |         goto label_0;
                                                                     |     }
    0x0000e5f2 add r6, sp, 0x3fc                                     |     r6 = sp + 0x3fc;
    0x0000e5f4 b 0xe4cc                                              |     goto label_9;
                                                                     | label_23:
    0x0000e5f6 ldr r1, [pc, 0x1a0]                                   |     
    0x0000e5f8 mov r0, fp                                            |     r0 = fp;
    0x0000e5fa add r1, pc                                            |     r1 = 0x1cd98;
    0x0000e5fc blx 0x2f70                                            |     r0 = vdprintf_chk ();
    0x0000e600 cmp r0, 0                                             |     
                                                                     |     if (r0 == 0) {
    0x0000e602 beq.w 0xe3f2                                          |         goto label_0;
                                                                     |     }
    0x0000e606 ldr r1, [pc, 0x194]                                   |     
    0x0000e608 mov r0, fp                                            |     r0 = fp;
    0x0000e60a add r1, pc                                            |     r1 = "Creating %s volume.";
    0x0000e60c blx 0x2f70                                            |     r0 = vdprintf_chk ();
                                                                     |     if (r0 != 0) {
    0x0000e610 cbnz r0, 0xe628                                       |         goto label_24;
                                                                     |     }
    0x0000e612 cmp r5, 0                                             |     
                                                                     |     if (r5 == 0) {
    0x0000e614 beq.w 0xe3f2                                          |         goto label_0;
                                                                     |     }
    0x0000e618 ldr r3, [pc, 0x184]                                   |     
    0x0000e61a movs r2, 1                                            |     r2 = 1;
    0x0000e61c add r3, pc                                            |     r3 = "Could not create volume %i: %m";
    0x0000e61e strb.w r2, [r3, 0x106]                                |     *((r3 + 0x106)) = r2;
    0x0000e622 b 0xe3f2                                              |     goto label_0;
                                                                     | label_10:
    0x0000e624 blx 0x2cdc                                            |     fprintf_chk ()
                                                                     | label_24:
    0x0000e628 ldr r1, [pc, 0x178]                                   |     
    0x0000e62a mov r0, fp                                            |     r0 = fp;
    0x0000e62c add r1, pc                                            |     r1 = 0x1cdd4;
    0x0000e62e blx 0x2f70                                            |     r0 = vdprintf_chk ();
    0x0000e630 stc p8, c2, [r0], 0                                   |     __asm ("stc p8, c2, [r0], 0");
                                                                     |     if (r2 == 1) {
    0x0000e634 beq.w 0xe3f2                                          |         goto label_0;
                                                                     |     }
    0x0000e638 ldr r1, [pc, 0x16c]                                   |     
    0x0000e63a mov r0, fp                                            |     r0 = fp;
    0x0000e63c add r1, pc                                            |     r1 = 0x1cde8;
    0x0000e63e blx 0x2f70                                            |     r0 = vdprintf_chk ();
    0x0000e642 cmp r0, 0                                             |     
                                                                     |     if (r0 == 0) {
    0x0000e644 beq.w 0xe3f2                                          |         goto label_0;
                                                                     |     }
    0x0000e648 ldr r1, [pc, 0x160]                                   |     
    0x0000e64a mov r0, fp                                            |     r0 = fp;
    0x0000e64c add r1, pc                                            |     r1 = 0x1cdfc;
    0x0000e64e blx 0x2f70                                            |     r0 = vdprintf_chk ();
                                                                     |     if (r0 == 0) {
    0x0000e652 cbnz r0, 0xe65c                                       |         
    0x0000e654 ldr r3, [pc, 0x158]                                   |         
    0x0000e656 add r3, pc                                            |         r3 = 0x1ce0a;
    0x0000e658 strb r0, [r3]                                         |         *(r3) = r0;
    0x0000e65a b 0xe3f2                                              |         goto label_0;
                                                                     |     }
    0x0000e65c ldr r1, [pc, 0x154]                                   |     
    0x0000e65e mov r0, fp                                            |     r0 = fp;
    0x0000e660 add r1, pc                                            |     r1 = 0x1ce18;
    0x0000e662 blx 0x2f70                                            |     r0 = vdprintf_chk ();
                                                                     |     if (r0 == 0) {
    0x0000e666 cbnz r0, 0xe672                                       |         
    0x0000e668 ldr r3, [pc, 0x14c]                                   |         
    0x0000e66a movs r2, 1                                            |         r2 = 1;
    0x0000e66c add r3, pc                                            |         r3 = 0x1ce28;
    0x0000e66e strb r2, [r3]                                         |         *(r3) = r2;
    0x0000e670 b 0xe3f2                                              |         goto label_0;
                                                                     |     }
    0x0000e672 ldr r1, [pc, 0x148]                                   |     
    0x0000e674 mov r0, fp                                            |     r0 = fp;
    0x0000e676 add r1, pc                                            |     r1 = "bootblockpar";
    0x0000e678 blx 0x2f70                                            |     r0 = vdprintf_chk ();
    0x0000e67c cmp r0, 0                                             |     
                                                                     |     if (r0 == 0) {
    0x0000e67e beq.w 0xe3f2                                          |         goto label_0;
                                                                     |     }
    0x0000e682 ldr r1, [pc, 0x13c]                                   |     
    0x0000e684 mov r0, fp                                            |     r0 = fp;
    0x0000e686 add r1, pc                                            |     r1 = 0x1ce4c;
    0x0000e688 blx 0x2f70                                            |     vdprintf_chk ();
    0x0000e68a ldcl p9, c11, [r2], -0xe0                             |     __asm ("ldcl p9, c11, [r2], -0xe0");
    0x0000e68e cmp r5, 0                                             |     
                                                                     |     if (r5 == 0) {
    0x0000e690 beq.w 0xe3f2                                          |         goto label_0;
                                                                     |     }
    0x0000e694 ldr r3, [pc, 0x12c]                                   |     r3 = *(0xe7c4);
    0x0000e696 movs r2, 1                                            |     r2 = 1;
    0x0000e698 ldr r3, [r7, r3]                                      |     r3 = *((r7 + r3));
    0x0000e69a strb r2, [r3]                                         |     *(r3) = r2;
    0x0000e69c b 0xe3f2                                              |     goto label_0;
    0x0000e69e ldr r1, [pc, 0x128]                                   |     
    0x0000e6a0 movs r2, 9                                            |     r2 = 9;
    0x0000e6a2 mov r0, fp                                            |     r0 = fp;
    0x0000e6a4 add r1, pc                                            |     r1 = 0x1ce72;
    0x0000e6a6 blx 0x2ea4                                            |     realloc (r0, r1);
    0x0000e6aa str r0, [sp, 4]                                       |     var_4h = r0;
                                                                     |     if (r0 == 0) {
    0x0000e6ac cbnz r0, 0xe6c0                                       |         
    0x0000e6ae mov r0, fp                                            |         r0 = fp;
    0x0000e6b0 blx 0x2ab0                                            |         r0 = fcn_00002ab0 ();
    0x0000e6b4 add.w r2, fp, r0                                      |         r2 = fp + r0;
    0x0000e6b8 ldrb r2, [r2, -0x1]                                   |         r2 = *((r2 - 0x1));
    0x0000e6bc cmp r2, 0x22                                          |         
                                                                     |         if (r2 == 0x22) {
    0x0000e6be beq 0xe6e4                                            |             goto label_25;
                                                                     |         }
                                                                     |     }
    0x0000e6c0 ldr r1, [pc, 0x108]                                   |     
    0x0000e6c2 movs r2, 0xc                                          |     r2 = 0xc;
    0x0000e6c4 mov r0, fp                                            |     r0 = fp;
    0x0000e6c6 add r1, pc                                            |     r1 = 0x1ce96;
    0x0000e6c8 blx 0x2ea4                                            |     realloc (r0, r1);
    0x0000e6cc str r0, [sp, 4]                                       |     var_4h = r0;
                                                                     |     if (r0 == 0) {
    0x0000e6ce cbnz r0, 0xe702                                       |         
    0x0000e6d0 add.w r1, fp, 0xc                                     |         r1 += arg_ch;
    0x0000e6d4 movs r2, 0x3f                                         |         r2 = 0x3f;
    0x0000e6d6 mov r0, r8                                            |         r0 = r8;
    0x0000e6d8 blx 0x2884                                            |         fcn_00002884 ();
    0x0000e6dc ldr r3, [sp, 4]                                       |         r3 = var_4h;
    0x0000e6de strb.w r3, [r8, 0x3f]                                 |         *((r8 + 0x3f)) = r3;
    0x0000e6e2 b 0xe3f2                                              |         goto label_0;
                                                                     | label_25:
    0x0000e6e4 movw r2, 0x101                                        |         r2 = 0x101;
    0x0000e6e8 add.w r1, fp, 9                                       |         r1 += arg_9h;
    0x0000e6ec mov r0, sl                                            |         r0 = sl;
    0x0000e6ee blx 0x2884                                            |         fcn_00002884 ();
    0x0000e6f2 mov r0, sl                                            |         r0 = sl;
    0x0000e6f4 blx 0x2ab0                                            |         fcn_00002ab0 ();
    0x0000e6f8 ldr r2, [sp, 4]                                       |         r2 = var_4h;
    0x0000e6fa add.w r3, sb, r0                                      |         r3 = sb + r0;
    0x0000e6fe strb r2, [r3, 3]                                      |         *((r3 + 3)) = r2;
    0x0000e700 b 0xe3f2                                              |         goto label_0;
                                                                     |     }
    0x0000e702 ldr r1, [pc, 0xcc]                                    |     
    0x0000e704 mov r2, fp                                            |     r2 = fp;
    0x0000e706 movs r0, 2                                            |     r0 = 2;
    0x0000e708 add r1, pc                                            |     r1 = 0x1cede;
    0x0000e70a bl 0xfcdc                                             |     r0 = fcn_0000fcdc (r0);
    0x0000e70e blx 0x2f88                                            |     cxa_finalize ();
    0x0000e712 movs r3, 0x16                                         |     r3 = 0x16;
    0x0000e714 mov r4, r3                                            |     r4 = r3;
    0x0000e716 str r3, [r0]                                          |     *(r0) = r3;
    0x0000e718 b 0xe390                                              |     goto label_2;
                                                                     | }
    ; assembly                                                       | /* r2dec pseudo code output */
                                                                     | /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/sbin/fwmgr @ 0xe7d4 */
                                                                     | #include <stdint.h>
                                                                     |  
    ; (fcn) fcn.0000e7d4 ()                                          | void fcn_0000e7d4 (int16_t arg_29ch) {
                                                                     |     int16_t var_0h;
                                                                     |     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;
                                                                     |     int32_t var_20h_2;
                                                                     |     int16_t var_2ch;
                                                                     |     int16_t var_2fh;
                                                                     |     char * s1;
                                                                     |     int16_t var_4fh;
                                                                     |     char * var_50h;
                                                                     |     int32_t var_8h_2;
                                                                     |     int8_t var_ch_2;
                                                                     |     int8_t var_dh;
                                                                     |     int8_t var_100h;
                                                                     |     int16_t var_154h;
    0x0000e7d4 ldr.w r2, [pc, 0xb28]                                 |     r2 = *(0x0000f300);
    0x0000e7d8 ldr.w r3, [pc, 0xb28]                                 |     
    0x0000e7dc push.w {r4, r5, r6, r7, r8, sb, sl, fp, lr}           |     
    0x0000e7e0 sub sp, 0x15c                                         |     
    0x0000e7e2 add r2, pc                                            |     r2 += pc;
    0x0000e7e4 ldr.w r6, [pc, 0xb20]                                 |     r6 = *(0x0000f308);
    0x0000e7e8 ldr r3, [r2, r3]                                      |     r3 = *((r2 + r3));
    0x0000e7ea add r6, pc                                            |     r6 += pc;
    0x0000e7ec ldr r3, [r3]                                          |     r3 = *(0xf304);
    0x0000e7ee str r3, [sp, 0x154]                                   |     var_154h = r3;
    0x0000e7f0 mov.w r3, 0                                           |     r3 = 0;
    0x0000e7f4 bl 0x9028                                             |     r0 = fcn_00009028 ();
    0x0000e7f8 mov r4, r0                                            |     r4 = r0;
    0x0000e7fa blx 0x2f88                                            |     r0 = cxa_finalize ();
    0x0000e7fe mov r5, r0                                            |     r5 = r0;
                                                                     |     if (r4 != 0) {
    0x0000e800 cbnz r4, 0xe81a                                       |         goto label_1;
                                                                     |     }
    0x0000e802 ldr.w r3, [pc, 0xb08]                                 |     r3 = *(0x0000f30c);
    0x0000e806 add r3, pc                                            |     r3 += pc;
    0x0000e808 ldrb r3, [r3, 1]                                      |     r3 = *((r3 + 1));
    0x0000e80a cmp r3, 0                                             |     
                                                                     |     if (r3 != 0) {
    0x0000e80c bne.w 0xeaa8                                          |         goto label_33;
                                                                     |     }
    0x0000e810 bl 0x8208                                             |     r0 = fcn_00008208 (r0);
    0x0000e814 mov r4, r0                                            |     r4 = r0;
    0x0000e816 cmp r0, 0                                             |     
    0x0000e818 beq 0xe886                                            |     
                                                                     |     while (r0 != 0) {
                                                                     | label_1:
    0x0000e81a ldr r4, [r5]                                          |         r4 = *(r5);
    0x0000e81c cmp r4, 0                                             |         
                                                                     |         if (r4 != 0) {
    0x0000e81e bne.w 0xedbc                                          |             goto label_14;
                                                                     |         }
    0x0000e820 strh r5, [r1, 0x16]                                   |         *((r1 + 0x16)) = r5;
                                                                     | label_7:
    0x0000e822 ldr.w r7, [pc, 0xaec]                                 |         r7 = *(0x0000f310);
    0x0000e826 add r7, pc                                            |         r7 += pc;
    0x0000e828 ldr.w r0, [r7, 0x108]                                 |         r0 = *((r7 + 0x108));
    0x0000e82c blx 0x29cc                                            |         fcn_000029cc ();
    0x0000e830 movs r3, 0                                            |         r3 = 0;
    0x0000e832 str.w r3, [r7, 0x108]                                 |         __asm ("str.w r3, [r7, 0x108]");
    0x0000e836 bl 0xf72c                                             |         fcn_0000f72c ();
    0x0000e83a ldrb.w r3, [r7, 0xa85]                                |         r3 = *((r7 + 0xa85));
    0x0000e83e cmp r3, 0                                             |         
                                                                     |         if (r3 != 0) {
    0x0000e840 bne.w 0xeabc                                          |             goto label_34;
                                                                     |         }
                                                                     | label_3:
    0x0000e844 ldr.w r3, [pc, 0xacc]                                 |         r3 = *(0x0000f314);
    0x0000e848 add r3, pc                                            |         r3 += pc;
    0x0000e84a ldrb r3, [r3]                                         |         r3 = *(r3);
                                                                     |         if (r3 != 0) {
    0x0000e84c cbz r3, 0xe85c                                        |             
    0x0000e84e ldr.w r3, [pc, 0xac8]                                 |             r3 = *(0xf31a);
    0x0000e852 ldr r3, [r6, r3]                                      |             r3 = *((r6 + r3));
    0x0000e854 ldrb r3, [r3]                                         |             r3 = *(r3);
    0x0000e856 cmp r3, 0                                             |             
                                                                     |             if (r3 == 0) {
    0x0000e858 beq.w 0xea98                                          |                 goto label_35;
                                                                     |             }
                                                                     |         }
    0x0000e85c movs r0, 0                                            |         r0 = 0;
    0x0000e85e bl 0x10604                                            |         fcn_00010604 (r0);
                                                                     | label_0:
    0x0000e862 ldr.w r2, [pc, 0xab8]                                 |         r2 = *(0x0000f31c);
    0x0000e866 ldr.w r3, [pc, 0xa9c]                                 |         r3 = *(0xf306);
    0x0000e86a str r4, [r5]                                          |         *(r5) = r4;
    0x0000e86c add r2, pc                                            |         r2 += pc;
    0x0000e86e ldr r3, [r2, r3]                                      |         r3 = *((r2 + r3));
    0x0000e870 ldr r2, [r3]                                          |         r2 = *(0xf306);
    0x0000e872 ldr r3, [sp, 0x154]                                   |         r3 = var_154h;
    0x0000e874 eors r2, r3                                           |         r2 ^= r3;
    0x0000e876 mov.w r3, 0                                           |         r3 = 0;
                                                                     |         if (r2 != r3) {
    0x0000e87a bne.w 0xf2de                                          |             goto label_36;
                                                                     |         }
    0x0000e87c strh r0, [r6, 0x28]                                   |         *((r6 + 0x28)) = r0;
    0x0000e87e mov r0, r4                                            |         r0 = r4;
    0x0000e880 add sp, 0x15c                                         |         
    0x0000e882 pop.w {r4, r5, r6, r7, r8, sb, sl, fp, pc}            |         
                                                                     | label_2:
    0x0000e886 ldr.w r7, [pc, 0xa98]                                 |         r7 = *(0x0000f320);
    0x0000e88a movs r0, 6                                            |         r0 = 6;
    0x0000e88c ldr.w r3, [pc, 0xa94]                                 |         r3 = *(0xf324);
    0x0000e890 ldr.w r1, [pc, 0xa94]                                 |         
    0x0000e894 add r7, pc                                            |         r7 += pc;
    0x0000e896 ldr r2, [r6, r3]                                      |         r2 = *((r6 + r3));
    0x0000e898 add.w sb, r7, 0x20c                                   |         sb = r7 + 0x20c;
    0x0000e89c add r1, pc                                            |         r1 = 0x1dbc8;
    0x0000e89e bl 0xfcdc                                             |         fcn_0000fcdc (r0);
    0x0000e8a2 mov r2, r4                                            |         r2 = r4;
    0x0000e8a4 mov.w r1, 0x800                                       |         r1 = 0x800;
    0x0000e8a8 mov r0, sb                                            |         r0 = sb;
    0x0000e8aa strb.w r4, [r7, 0x107]                                |         *((r7 + 0x107)) = r4;
    0x0000e8ae bl 0x7cd8                                             |         r0 = fcn_00007cd8 (r0, r1, r2);
    0x0000e8b2 mov r8, r0                                            |         r8 = r0;
                                                                     |         if (r0 == 0) {
    0x0000e8b4 cbnz r0, 0xe8ea                                       |             
    0x0000e8b6 ldr.w r2, [r7, 0x40c]                                 |             r2 = *((r7 + 0x40c));
    0x0000e8ba movw r3, 0xebf3                                       |             
    0x0000e8bc adds r3, 0xf3                                         |             
    0x0000e8be movt r3, 0xa930                                       |             r3 = 0xa930ebf3;
    0x0000e8c2 addw r1, r7, 0x40c                                    |             __asm ("addw r1, r7, 0x40c");
    0x0000e8c6 str.w r1, [r7, 0xa0c]                                 |             __asm ("str.w r1, [r7, 0xa0c]");
    0x0000e8ca cmp r2, r3                                            |             
                                                                     |             if (r2 == r3) {
    0x0000e8cc beq.w 0xeada                                          |                 goto label_37;
                                                                     |             }
    0x0000e8ce strh r5, [r0, 8]                                      |             *((r0 + 8)) = r5;
    0x0000e8d0 ldrb.w r3, [r7, 0x110]                                |             r3 = *((r7 + 0x110));
    0x0000e8d4 cmp r3, 0                                             |             
                                                                     |             if (r3 == 0) {
    0x0000e8d6 beq.w 0xef12                                          |                 goto label_38;
                                                                     |             }
    0x0000e8da mov.w r1, 0x800                                       |             r1 = 0x800;
    0x0000e8de mov r0, sb                                            |             r0 = sb;
    0x0000e8e0 bl 0x8074                                             |             fcn_00008074 (r0, r1);
    0x0000e8e2 smlal r2, r8, r8, r0                                  |             __asm ("smlal r2, r8, r8, r0");
                                                                     |             if (r3 == 0) {
    0x0000e8e6 beq.w 0xef0c                                          |                 goto label_39;
                                                                     |             }
                                                                     |         }
                                                                     | label_4:
    0x0000e8ea ldr r0, [r5]                                          |         r0 = *(r5);
                                                                     | label_12:
    0x0000e8ec cmp r0, 0                                             |         
    0x0000e8ee bne 0xe81a                                            |         
                                                                     |     }
                                                                     | label_6:
    0x0000e8f0 ldr.w r2, [pc, 0xa38]                                 |     r2 = *(0x0000f32c);
    0x0000e8f4 ldr.w r3, [pc, 0xa38]                                 |     r3 = *(0x0000f330);
    0x0000e8f8 add r2, pc                                            |     r2 += pc;
    0x0000e8fa ldrb r2, [r2]                                         |     r2 = *(r2);
    0x0000e8fc add r3, pc                                            |     r3 += pc;
    0x0000e8fe ldrb.w r3, [r3, 0x110]                                |     r3 = *((r3 + 0x110));
    0x0000e900 adds r1, 0x10                                         |     r1 += 0x10;
    0x0000e902 cmp r2, 0                                             |     
                                                                     |     if (r2 != 0) {
    0x0000e904 bne.w 0xedd8                                          |         goto label_40;
                                                                     |     }
    0x0000e908 cmp r3, 0                                             |     
                                                                     |     if (r3 != 0) {
    0x0000e90a bne.w 0xef1a                                          |         goto label_41;
                                                                     |     }
                                                                     | label_8:
    0x0000e90e ldr.w r3, [pc, 0xa24]                                 |     
    0x0000e912 ldr.w sl, [r6, r3]                                    |     sl = *((r6 + r3));
    0x0000e916 ldr.w r3, [sl]                                        |     r3 = *(sl);
    0x0000e91a ldr r3, [r3]                                          |     r3 = *(0xf336);
    0x0000e91c blx r3                                                |     r0 = uint32_t (*r3)(uint32_t) (r3);
    0x0000e91e mov r7, r0                                            |     r7 = r0;
    0x0000e920 cmp r0, 0                                             |     
                                                                     |     if (r0 != 0) {
    0x0000e922 bne.w 0xef06                                          |         goto label_42;
                                                                     |     }
    0x0000e926 ldr.w r3, [sl]                                        |     r3 = *(sl);
    0x0000e92a ldr r3, [r3, 8]                                       |     r3 = *((r3 + 8));
    0x0000e92c blx r3                                                |     r0 = uint32_t (*r3)(uint32_t) (r3);
    0x0000e92e cmp r0, 0                                             |     
                                                                     |     if (r0 != 0) {
    0x0000e930 bne.w 0xee6a                                          |         goto label_9;
                                                                     |     }
    0x0000e934 ldr.w r3, [pc, 0xa00]                                 |     r3 = *(0xf338);
    0x0000e938 ldr r3, [r6, r3]                                      |     r3 = *((r6 + r3));
    0x0000e93a ldrb r7, [r3]                                         |     r7 = *(r3);
    0x0000e93c cmp r7, 0                                             |     
                                                                     |     if (r7 != 0) {
    0x0000e93e bne.w 0xeed8                                          |         goto label_43;
                                                                     |     }
    0x0000e940 strh r3, [r1, 0x16]                                   |     *((r1 + 0x16)) = r3;
    0x0000e942 ldr.w r3, [pc, 0x9f8]                                 |     r3 = *(0x0000f33c);
    0x0000e946 add r3, pc                                            |     r3 += pc;
    0x0000e948 ldrb r3, [r3]                                         |     r3 = *(r3);
                                                                     |     if (r3 == 0) {
    0x0000e94a cbnz r3, 0xe95a                                       |         
    0x0000e94c ldr.w r3, [pc, 0x9f0]                                 |         
    0x0000e950 ldr r3, [r6, r3]                                      |         r3 = *((r6 + r3));
    0x0000e952 ldr r3, [r3]                                          |         r3 = *(0xf340);
    0x0000e954 cmp r3, 0                                             |         
                                                                     |         if (r3 != 0) {
    0x0000e956 bne.w 0xf1c2                                          |             goto label_44;
                                                                     |         }
                                                                     |     }
    0x0000e95a bl 0x9af4                                             |     fcn_00009af4 ();
    0x0000e95e ldr.w r3, [sl]                                        |     r3 = *(sl);
    0x0000e962 movs r0, 1                                            |     r0 = 1;
    0x0000e964 ldr r3, [r3, 0x28]                                    |     r3 = *((r3 + 0x28));
    0x0000e966 blx r3                                                |     r0 = uint32_t (*r3)(uint32_t, uint32_t) (r0, r3);
    0x0000e968 cmp r0, 0                                             |     
                                                                     |     if (r0 != 0) {
    0x0000e96a bne.w 0xee6a                                          |         goto label_9;
                                                                     |     }
    0x0000e96e ldr.w r3, [sl]                                        |     r3 = *(sl);
    0x0000e972 ldr r3, [r3, 0x7c]                                    |     r3 = *((r3 + 0x7c));
    0x0000e974 blx r3                                                |     r0 = uint32_t (*r3)(uint32_t) (r3);
    0x0000e976 mov sb, r0                                            |     sb = r0;
    0x0000e978 cmp r0, 0                                             |     
                                                                     |     if (r0 != 0) {
    0x0000e97a bne.w 0xee6a                                          |         goto label_9;
                                                                     |     }
    0x0000e97e ldr.w r3, [sl]                                        |     r3 = *(sl);
    0x0000e982 ldr r3, [r3, 0x70]                                    |     r3 = *((r3 + 0x70));
    0x0000e984 blx r3                                                |     uint32_t (*r3)(uint32_t) (r3);
    0x0000e986 ldr.w r3, [sl]                                        |     r3 = *(sl);
    0x0000e98a mov r8, r0                                            |     r8 = r0;
    0x0000e98c ldr r3, [r3, 0x74]                                    |     r3 = *((r3 + 0x74));
    0x0000e98e blx r3                                                |     uint32_t (*r3)(uint32_t) (r3);
    0x0000e990 ldr.w r3, [pc, 0x9b0]                                 |     r3 = *(0x0000f344);
    0x0000e994 str r0, [sp, 0xc]                                     |     var_ch = r0;
    0x0000e996 add r3, pc                                            |     r3 += pc;
    0x0000e998 ldr.w r2, [r3, 0xa10]                                 |     r2 = *((r3 + 0xa10));
    0x0000e99a cmp r2, 0x10                                          |     
    0x0000e99c ldr.w r3, [r3, 0xa0c]                                 |     r3 = *((r3 + 0xa0c));
    0x0000e9a0 str r3, [sp, 8]                                       |     var_8h = r3;
    0x0000e9a2 cmp r2, 0                                             |     
                                                                     |     if (r2 == 0) {
    0x0000e9a4 beq.w 0xf284                                          |         goto label_45;
                                                                     |     }
    0x0000e9a8 add.w r1, r8, -1                                      |     r1 = r8 + -1;
    0x0000e9ac mov fp, r3                                            |     
    0x0000e9ae mov r3, r6                                            |     r3 = r6;
    0x0000e9b0 str r5, [sp, 0x10]                                    |     var_10h = r5;
    0x0000e9b2 mov r6, r8                                            |     r6 = r8;
    0x0000e9b4 str r4, [sp, 0x14]                                    |     var_14h = r4;
    0x0000e9b6 mov r7, sb                                            |     r7 = sb;
    0x0000e9b8 mov r5, r1                                            |     r5 = r1;
    0x0000e9ba mov r4, r2                                            |     r4 = r2;
    0x0000e9bc mov r8, r3                                            |     r8 = r3;
                                                                     |     do {
    0x0000e9be ldr.w r0, [fp, 0x29c]                                 |         r0 = *(arg_29ch);
    0x0000e9c2 add.w sb, sb, 1                                       |         sb++;
    0x0000e9c4 lsrs r1, r0, 4                                        |         r1 = r0 >> 4;
    0x0000e9c6 mov r1, r6                                            |         r1 = r6;
    0x0000e9c8 add.w fp, fp, 0x20                                    |         
    0x0000e9cc add r0, r5                                            |         r0 += r5;
    0x0000e9ce bl 0x15290                                            |         fcn_00015290 (r0, r1, r2);
    0x0000e9d0 mrrc2 p5, 4, r4, pc, c12                              |         __asm ("mrrc2 p5, 4, r4, pc, c12");
    0x0000e9d4 add r7, r0                                            |         r7 += r0;
    0x0000e9d6 bne 0xe9be                                            |         
                                                                     |     } while (r1 != r0);
    0x0000e9d8 ldrd r5, r4, [sp, 0x10]                               |     __asm ("ldrd r5, r4, [var_14h]");
    0x0000e9dc mov r3, r8                                            |     r3 = r8;
    0x0000e9de mov r8, r6                                            |     r8 = r6;
    0x0000e9e0 mov r6, r3                                            |     r6 = r3;
                                                                     | label_29:
    0x0000e9e2 ldr r3, [sp, 8]                                       |     r3 = var_8h;
    0x0000e9e4 adds.w sb, r8, -1                                     |     sb = r8 + -1;
    0x0000e9e6 subs r1, 0xff                                         |     r1 -= 0xff;
    0x0000e9e8 ldrd r2, r1, [r3, 0x270]                              |     __asm ("ldrd r2, r1, [r3, 0x270]");
    0x0000e9ec mov.w r3, 0                                           |     r3 = 0;
    0x0000e9f0 adc fp, r3, -1                                        |     __asm ("adc fp, r3, -1");
    0x0000e9f4 adds.w r0, sb, r2                                     |     r0 = sb + r2;
    0x0000e9f8 mov r2, r8                                            |     r2 = r8;
    0x0000e9fa adc.w r1, fp, r1                                      |     __asm ("adc.w r1, fp, r1");
    0x0000e9fe bl 0x157b8                                            |     fcn_000157b8 (r0, r1, r2, r3);
    0x0000ea02 ldr r3, [sp, 8]                                       |     r3 = var_8h;
    0x0000ea04 add r7, r0                                            |     r7 += r0;
    0x0000ea06 ldrd r2, r1, [r3, 0x278]                              |     __asm ("ldrd r2, r1, [r3, 0x278]");
    0x0000ea0a orrs.w r0, r2, r1                                     |     r0 = r2 | r1;
                                                                     |     if (r0 != r2) {
    0x0000ea0e beq 0xea24                                            |         
    0x0000ea10 adds.w r0, r2, sb                                     |         r0 = r2 + sb;
    0x0000ea14 mov.w r3, 0                                           |         r3 = 0;
    0x0000ea18 adc.w r1, r1, fp                                      |         __asm ("adc.w r1, r1, fp");
    0x0000ea1a lsls r3, r1, 4                                        |         r3 = r1 << 4;
    0x0000ea1c mov r2, r8                                            |         r2 = r8;
    0x0000ea1e bl 0x157b8                                            |         fcn_000157b8 (r0, r1, r2, r3);
    0x0000ea20 cdp2 p4, 0xc, c4, c11, c7, 0                          |         __asm ("cdp2 p4, 0xc, c4, c11, c7, 0");
                                                                     |     }
    0x0000ea24 ldr r3, [sp, 0xc]                                     |     r3 = var_ch;
    0x0000ea26 add.w sb, r7, 5                                       |     sb = r7 + 5;
    0x0000ea2a cmp r3, sb                                            |     
                                                                     |     if (r3 >= sb) {
    0x0000ea2c bhs.w 0xefe8                                          |         goto label_46;
                                                                     |     }
    0x0000ea30 mov r1, r8                                            |     r1 = r8;
    0x0000ea32 mul r0, sb, r8                                        |     r0 = sb * r8;
    0x0000ea34 bl 0x416a3a                                           |     r0 = void (*0x416a3a)(uint32_t, uint32_t) (r0, r1);
    0x0000ea36 bl 0xff74                                             |     fcn_0000ff74 (r0, r1);
    0x0000ea3a ldr r3, [sp, 0xc]                                     |     r3 = var_ch;
    0x0000ea3c mov r7, r0                                            |     r7 = r0;
    0x0000ea3e mov r1, r8                                            |     r1 = r8;
    0x0000ea40 mul r0, r3, r8                                        |     r0 = r3 * r8;
    0x0000ea44 bl 0xff74                                             |     fcn_0000ff74 (r0, r1);
    0x0000ea48 ldr.w r1, [pc, 0x8fc]                                 |     
    0x0000ea4c mov r3, r0                                            |     r3 = r0;
    0x0000ea4e mov r2, r7                                            |     r2 = r7;
    0x0000ea50 movs r0, 2                                            |     r0 = 2;
    0x0000ea52 add r1, pc                                            |     r1 = 0x1dd9e;
    0x0000ea54 bl 0xfcdc                                             |     fcn_0000fcdc (r0);
    0x0000ea58 ldr.w r3, [sl]                                        |     r3 = *(sl);
    0x0000ea5c add r2, sp, 0x2c                                      |     r2 += var_2ch;
    0x0000ea5e mov r0, r2                                            |     r0 = r2;
    0x0000ea60 mov r7, r2                                            |     r7 = r2;
    0x0000ea62 str r2, [sp, 8]                                       |     var_8h = r2;
    0x0000ea64 ldr r3, [r3, 0x78]                                    |     r3 = *((r3 + 0x78));
    0x0000ea66 blx r3                                                |     r0 = uint32_t (*r3)(uint32_t, uint32_t, uint32_t) (r0, r2, r3);
    0x0000ea68 cmp r0, 0                                             |     
                                                                     |     if (r0 != 0) {
    0x0000ea6a bne.w 0xf1e4                                          |         goto label_47;
                                                                     |     }
    0x0000ea6e ldr r0, [r7]                                          |     r0 = *(r7);
    0x0000ea70 cmp r0, 0                                             |     
                                                                     |     if (r0 != 0) {
    0x0000ea72 bne.w 0xf24e                                          |         goto label_48;
                                                                     |     }
                                                                     | label_28:
    0x0000ea76 movs r3, 0x1c                                         |     r3 = 0x1c;
    0x0000ea78 mov r4, r3                                            |     r4 = r3;
    0x0000ea7a str r3, [r5]                                          |     *(r5) = r3;
                                                                     | label_31:
    0x0000ea7c ldr.w r1, [pc, 0x8cc]                                 |     
    0x0000ea80 movs r0, 6                                            |     r0 = 6;
    0x0000ea82 add r1, pc                                            |     r1 = 0x1ddd2;
    0x0000ea84 bl 0xfcdc                                             |     fcn_0000fcdc (r0);
    0x0000ea88 ldr.w r3, [pc, 0x88c]                                 |     r3 = *(0xf318);
    0x0000ea8c movs r2, 1                                            |     r2 = 1;
    0x0000ea8e ldr r3, [r6, r3]                                      |     r3 = *((r6 + r3));
    0x0000ea90 strb r2, [r3]                                         |     *(r3) = r2;
    0x0000ea92 bl 0x80e8                                             |     fcn_000080e8 (r0);
    0x0000ea96 b 0xee9a                                              |     goto label_49;
                                                                     | label_35:
    0x0000ea98 ldr.w r2, [pc, 0x8b4]                                 |     
    0x0000ea9c movs r1, 1                                            |     r1 = 1;
    0x0000ea9e mov r0, r1                                            |     r0 = r1;
    0x0000eaa0 add r2, pc                                            |     r2 = 0x1ddf4;
    0x0000eaa2 bl 0xced8                                             |     fcn_0000ced8 (r0, r1, r2);
    0x0000eaa6 b 0xe862                                              |     goto label_0;
                                                                     | label_33:
    0x0000eaa8 movs r0, 1                                            |     r0 = 1;
    0x0000eaaa bl 0x10604                                            |     r0 = fcn_00010604 (r0);
    0x0000eaae bl 0x8208                                             |     r0 = fcn_00008208 (r0);
    0x0000eab2 mov r4, r0                                            |     r4 = r0;
    0x0000eab4 cmp r0, 0                                             |     
                                                                     |     if (r0 != 0) {
    0x0000eab6 bne.w 0xe81a                                          |         goto label_1;
                                                                     |     }
    0x0000eaba b 0xe886                                              |     goto label_2;
                                                                     | label_34:
    0x0000eabc ldr.w r1, [pc, 0x894]                                 |     
    0x0000eac0 mov.w r0, -1                                          |     r0 = -1;
    0x0000eac4 add r1, pc                                            |     r1 = 0x1de1c;
    0x0000eac6 bl 0xfcdc                                             |     fcn_0000fcdc (r0);
    0x0000eaca movs r1, 2                                            |     r1 = 2;
    0x0000eacc movs r0, 1                                            |     r0 = 1;
    0x0000eace blx 0x2bb0                                            |     sd_bus_message_read ();
    0x0000ead2 movs r0, 1                                            |     r0 = 1;
    0x0000ead4 blx 0x2bf8                                            |     EVP_PKEY_verify_init ();
    0x0000ead8 b 0xe844                                              |     goto label_3;
                                                                     | label_37:
    0x0000eada ldr.w r2, [r7, 0x410]                                 |     r2 = *((r7 + 0x410));
    0x0000eade cmp r2, 4                                             |     
                                                                     |     if (r2 != 4) {
    0x0000eae0 bne.w 0xef7a                                          |         goto label_50;
                                                                     |     }
    0x0000eae4 ldr.w r1, [pc, 0x870]                                 |     r1 = *(0x0000f358);
    0x0000eae8 add.w r7, r7, 0x288                                   |     r7 += 0x288;
    0x0000eaec add r1, pc                                            |     r1 += pc;
    0x0000eaee add.w r1, r1, 0x294                                   |     r1 += 0x294;
    0x0000eaf2 b 0xeb06                                              |     
                                                                     |     while ((r3 & 0xdf) != 0) {
    0x0000eaf4 subs r3, 0x30                                         |         r3 -= 0x30;
    0x0000eaf6 uxtb r2, r3                                           |         r2 = (int8_t) r3;
    0x0000eaf8 cmp r2, 7                                             |         
                                                                     |         if (r2 > 7) {
    0x0000eafa bhi.w 0xefe0                                          |             goto label_51;
                                                                     |         }
    0x0000eafe cmp r7, r1                                            |         
    0x0000eb00 add.w r8, r3, r8, lsl 3                               |         r8 = r3 + (r8 << 3);
                                                                     |         if (r7 == r1) {
    0x0000eb04 beq 0xeb10                                            |             goto label_52;
                                                                     |         }
    0x0000eb06 ldrb r3, [r7], 1                                      |         r3 = *(r7);
                                                                     |         r7++;
    0x0000eb0a tst.w r3, 0xdf                                        |         
    0x0000eb0e bne 0xeaf4                                            |         
                                                                     |     }
                                                                     | label_52:
    0x0000eb10 cmp.w r8, 0x280                                       |     
                                                                     |     if (r8 < 0x280) {
    0x0000eb14 blt.w 0xefe0                                          |         goto label_51;
                                                                     |     }
    0x0000eb18 cmp.w r8, 0x600                                       |     
                                                                     |     if (r8 > 0x600) {
    0x0000eb1c bgt.w 0xeda8                                          |         goto label_53;
                                                                     |     }
    0x0000eb20 ldr.w r7, [pc, 0x838]                                 |     r7 = *(0x0000f35c);
    0x0000eb24 mov.w r2, 0x100                                       |     r2 = 0x100;
    0x0000eb28 mov.w sb, 0                                           |     sb = 0;
    0x0000eb2c add r7, pc                                            |     r7 += pc;
    0x0000eb2e adds r3, r7, 4                                        |     r3 = r7 + 4;
    0x0000eb30 addw r1, r7, 0x54c                                    |     __asm ("addw r1, r7, 0x54c");
    0x0000eb34 mov r0, r3                                            |     r0 = r3;
    0x0000eb36 blx 0x2b08                                            |     EVP_MD_CTX_new ();
    0x0000eb38 invalid                                               |     
    0x0000eb3c adds r4, r4, r0                                       |     r4 += r0;
    0x0000eb3e mov r2, r0                                            |     r2 = r0;
    0x0000eb40 strb.w sb, [r7, 0x104]                                |     *((r7 + 0x104)) = sb;
    0x0000eb44 movs r0, 6                                            |     r0 = 6;
    0x0000eb46 add r1, pc                                            |     r1 += pc;
    0x0000eb48 bl 0xfcdc                                             |     fcn_0000fcdc (r0);
    0x0000eb4c ldr.w r3, [r7, 0xa0c]                                 |     r3 = *((r7 + 0xa0c));
    0x0000eb50 movs r2, 4                                            |     r2 = 4;
    0x0000eb52 ldr.w r1, [pc, 0x810]                                 |     
    0x0000eb56 movs r0, 6                                            |     r0 = 6;
    0x0000eb58 add.w r3, r3, 0x240                                   |     r3 += 0x240;
    0x0000eb5c add r1, pc                                            |     r1 = 0x1dec6;
    0x0000eb5e bl 0xfcdc                                             |     fcn_0000fcdc (r0);
    0x0000eb62 ldr.w r3, [r7, 0xa0c]                                 |     r3 = *((r7 + 0xa0c));
    0x0000eb66 mov.w r2, 0x100                                       |     r2 = 0x100;
    0x0000eb6a ldr.w r1, [pc, 0x7fc]                                 |     
    0x0000eb6e movs r0, 6                                            |     r0 = 6;
    0x0000eb70 adds r3, 0x40                                         |     r3 += 0x40;
    0x0000eb72 add r1, pc                                            |     r1 = 0x1dee0;
    0x0000eb74 bl 0xfcdc                                             |     fcn_0000fcdc (r0);
    0x0000eb78 ldr.w r0, [pc, 0x7f0]                                 |     
    0x0000eb7c ldr.w r3, [r7, 0xa0c]                                 |     r3 = *((r7 + 0xa0c));
    0x0000eb80 add r0, pc                                            |     r0 = 0x1def0;
    0x0000eb82 add.w sl, r3, 0x40                                    |     sl = r3 + 0x40;
    0x0000eb84 lsrs r0, r0, 9                                        |     r0 >>= 9;
    0x0000eb86 blx 0x2ce8                                            |     r0 = poll ();
    0x0000eb8a mov r7, r0                                            |     r7 = r0;
    0x0000eb8c cmp r0, 0                                             |     
                                                                     |     if (r0 == 0) {
    0x0000eb8e beq.w 0xf1d8                                          |         goto label_54;
                                                                     |     }
    0x0000eb92 movs r1, 0x2e                                         |     r1 = 0x2e;
    0x0000eb94 blx 0x28e4                                            |     r0 = fcn_000028e4 ();
                                                                     |     if (r0 != 0) {
    0x0000eb98 cbz r0, 0xeb9e                                        |         
    0x0000eb9a strb.w sb, [r0]                                       |         *(r0) = sb;
                                                                     |     }
    0x0000eb9e add.w sb, sp, 0x50                                    |     sb += var_50h;
    0x0000eba2 mov r1, sl                                            |     r1 = sl;
    0x0000eba4 mov.w r2, 0x100                                       |     r2 = 0x100;
    0x0000eba8 mov r0, sb                                            |     r0 = sb;
    0x0000ebaa mov.w sl, 0                                           |     sl = 0;
    0x0000ebae blx 0x2b08                                            |     EVP_MD_CTX_new ();
    0x0000ebb2 movs r1, 0x20                                         |     r1 = 0x20;
    0x0000ebb4 mov r0, sb                                            |     r0 = sb;
    0x0000ebb6 strb.w sl, [sb, 0x100]                                |     var_100h = sl;
    0x0000ebba blx 0x28e4                                            |     r0 = fcn_000028e4 ();
                                                                     |     if (r0 != 0) {
    0x0000ebbe cbz r0, 0xebc4                                        |         
    0x0000ebc0 strb.w sl, [r0]                                       |         *(r0) = sl;
                                                                     |     }
    0x0000ebc4 ldr.w r1, [pc, 0x7a8]                                 |     
    0x0000ebc8 mov r0, sb                                            |     r0 = sb;
    0x0000ebca add r1, pc                                            |     r1 = 0x1df3e;
    0x0000ebcc blx 0x2d30                                            |     r0 = ftruncate ();
    0x0000ebd0 cmp r0, 0                                             |     
                                                                     |     if (r0 == 0) {
    0x0000ebd2 beq.w 0xef2e                                          |         goto label_55;
                                                                     |     }
    0x0000ebd6 ldr.w sb, [pc, 0x79c]                                 |     
    0x0000ebda add sb, pc                                            |     sb = 0x1df54;
    0x0000ebdc b 0xebec                                              |     
                                                                     |     while (r0 != 0) {
    0x0000ebde mov r1, sb                                            |         r1 = sb;
    0x0000ebe0 movs r0, 0                                            |         r0 = 0;
    0x0000ebe2 blx 0x2d30                                            |         r0 = ftruncate ();
    0x0000ebe6 cmp r0, 0                                             |         
                                                                     |         if (r0 == 0) {
    0x0000ebe8 beq.w 0xef2e                                          |             goto label_55;
                                                                     |         }
    0x0000ebec mov r1, r7                                            |         r1 = r7;
    0x0000ebee blx 0x28f0                                            |         r0 = fcn_000028f0 ();
    0x0000ebf2 cmp r0, 0                                             |         
    0x0000ebf4 bne 0xebde                                            |         
                                                                     |     }
                                                                     | label_25:
    0x0000ebf6 bl 0xdc48                                             |     r0 = fcn_0000dc48 ();
    0x0000ebfa cmp r0, 0                                             |     
                                                                     |     if (r0 != 0) {
    0x0000ebfc bne.w 0xe8ea                                          |         goto label_4;
                                                                     |     }
    0x0000ec00 ldr.w r0, [pc, 0x774]                                 |     r0 = *(0x0000f378);
    0x0000ec04 sub.w r1, r8, 0x280                                   |     r1 = r8 - 0x280;
    0x0000ec08 lsrs r1, r1, 5                                        |     r1 >>= 5;
    0x0000ec0a add r0, pc                                            |     r0 += pc;
    0x0000ec0c ldr.w r3, [r0, 0xa0c]                                 |     r3 = *((r0 + 0xa0c));
    0x0000ec10 ldr r2, [r3, 0xc]                                     |     r2 = *((r3 + 0xc));
    0x0000ec12 ldrb r7, [r3, 0x10]                                   |     r7 = *((r3 + 0x10));
    0x0000ec14 mvns r2, r2                                           |     r2 = ~r2;
    0x0000ec16 and r2, r2, 1                                         |     r2 &= 1;
    0x0000ec1a str.w r7, [r0, 0xa10]                                 |     __asm ("str.w r7, [r0, 0xa10]");
    0x0000ec1e strb r2, [r0]                                         |     *(r0) = r2;
    0x0000ec20 ldr r2, [r3, 8]                                       |     r2 = *((r3 + 8));
    0x0000ec22 cmp r2, 0                                             |     
                                                                     |     if (r2 != 0) {
    0x0000ec24 bne.w 0xefbe                                          |         goto label_56;
                                                                     |     }
    0x0000ec28 mov r7, r1                                            |     r7 = r1;
    0x0000ec2a str.w r1, [r0, 0xa10]                                 |     __asm ("str.w r1, [r0, 0xa10]");
                                                                     | label_20:
    0x0000ec2e cmp r7, 0                                             |     
                                                                     |     if (r7 == 0) {
    0x0000ec30 beq.w 0xf28a                                          |         goto label_57;
                                                                     |     }
    0x0000ec34 mov r1, r3                                            |     r1 = r3;
    0x0000ec36 movs r2, 0                                            |     r2 = 0;
    0x0000ec38 b 0xec4c                                              |     
                                                                     |     while (r0 != 0) {
    0x0000ec3a ldrb.w r0, [r1, 0x297]                                |         r0 = *((r1 + 0x297));
    0x0000ec3e cmp r0, 0                                             |         
                                                                     |         if (r0 != 0) {
    0x0000ec40 bne.w 0xf1d2                                          |             goto label_58;
                                                                     |         }
    0x0000ec44 adds r2, 1                                            |         r2++;
    0x0000ec46 adds r1, 0x20                                         |         r1 += 0x20;
    0x0000ec48 cmp r2, r7                                            |         
                                                                     |         if (r2 == r7) {
    0x0000ec4a beq 0xec6a                                            |             goto label_59;
                                                                     |         }
    0x0000ec4c ldrb.w r0, [r1, 0x280]                                |         r0 = *((r1 + 0x280));
    0x0000ec50 cmp r0, 0                                             |         
    0x0000ec52 bne 0xec3a                                            |         
                                                                     |     }
    0x0000ec54 ldr.w r1, [pc, 0x724]                                 |     r1 = *(0x0000f37c);
    0x0000ec58 add r1, pc                                            |     r1 += pc;
    0x0000ec5a str.w r2, [r1, 0xa10]                                 |     __asm ("str.w r2, [r1, 0xa10]");
    0x0000ec5e cmp r2, 0                                             |     
                                                                     |     if (r2 == 0) {
    0x0000ec60 beq.w 0xf28a                                          |         goto label_57;
                                                                     |     }
    0x0000ec64 cmp r2, 0x20                                          |     
                                                                     |     if (r2 > 0x20) {
    0x0000ec66 bhi.w 0xf290                                          |         goto label_60;
                                                                     |     }
                                                                     | label_59:
    0x0000ec6a ldrb r2, [r3, 0x11]                                   |     r2 = *((r3 + 0x11));
    0x0000ec6c cmp r2, 7                                             |     
                                                                     |     if (r2 > 7) {
    0x0000ec6e bhi.w 0xf2c2                                          |         goto label_61;
                                                                     |     }
                                                                     |     if (r2 == 0) {
    0x0000ec72 cbz r2, 0xeca6                                        |         goto label_62;
                                                                     |     }
    0x0000ec74 ldr.w r7, [pc, 0x708]                                 |     r7 = *(0x0000f380);
    0x0000ec78 mov.w sb, 0                                           |     sb = 0;
    0x0000ec7c add r7, pc                                            |     r7 += pc;
                                                                     | label_5:
    0x0000ec7e add.w r2, sb, 8                                       |     r2 = sb + 8;
    0x0000ec82 add.w r3, r3, r2, lsl 1                               |     r3 += (r2 << 1);
    0x0000ec86 ldrb r0, [r3, 2]                                      |     r0 = *((r3 + 2));
    0x0000ec88 ldrb r1, [r3, 3]                                      |     r1 = *((r3 + 3));
    0x0000ec8a and r0, r0, 0x1f                                      |     r0 &= 0x1f;
    0x0000ec8e bl 0x3ba4                                             |     r0 = fcn_00003ba4 (r0, r1);
    0x0000ec92 cmp r0, 0                                             |     
                                                                     |     if (r0 != 0) {
    0x0000ec94 bne.w 0xe8ea                                          |         goto label_4;
                                                                     |     }
    0x0000ec98 ldr.w r3, [r7, 0xa0c]                                 |     r3 = *((r7 + 0xa0c));
    0x0000ec9c add.w sb, sb, 1                                       |     sb++;
    0x0000eca0 ldrb r2, [r3, 0x11]                                   |     r2 = *((r3 + 0x11));
    0x0000eca2 cmp sb, r2                                            |     
                                                                     |     if (sb <= r2) {
    0x0000eca4 blo 0xec7e                                            |         goto label_5;
                                                                     |     }
                                                                     | label_62:
    0x0000eca6 ldr.w sb, [pc, 0x6dc]                                 |     sb = *(0x0000f384);
    0x0000ecaa mov.w r2, 0x2000                                      |     r2 = 0x2000;
    0x0000ecae ldr.w r7, [pc, 0x6d8]                                 |     r7 = *(0x0000f388);
    0x0000ecb2 movs r1, 0                                            |     r1 = 0;
    0x0000ecb4 add sb, pc                                            |     sb += pc;
    0x0000ecb6 add r7, pc                                            |     r7 += pc;
    0x0000ecb8 mov r0, sb                                            |     r0 = sb;
    0x0000ecba blx 0x2938                                            |     fcn_00002938 ();
    0x0000ecbe movs r2, 0x80                                         |     r2 = 0x80;
    0x0000ecc0 movs r1, 0                                            |     r1 = 0;
    0x0000ecc2 add.w r0, r7, 0x188                                   |     r0 = r7 + 0x188;
    0x0000ecc4 strb r4, [r0, 3]                                      |     *((r0 + 3)) = r4;
    0x0000ecc6 add.w sl, r7, 0x118                                   |     sl = r7 + 0x118;
    0x0000ecca blx 0x2938                                            |     fcn_00002938 ();
    0x0000ecce add.w r1, r7, 0x20c                                   |     r1 = r7 + 0x20c;
    0x0000ecd2 movs r2, 0x20                                         |     r2 = 0x20;
    0x0000ecd4 mov r0, sb                                            |     r0 = sb;
    0x0000ecd6 blx 0x2884                                            |     fcn_00002884 ();
    0x0000ecda mov r0, sl                                            |     r0 = sl;
    0x0000ecdc blx 0x2e38                                            |     timerfd_create ();
    0x0000ece0 mov r2, r8                                            |     r2 = r8;
    0x0000ece2 ldr.w r1, [r7, 0xa0c]                                 |     r1 = *((r7 + 0xa0c));
    0x0000ece6 mov r0, sl                                            |     r0 = sl;
    0x0000ece8 blx 0x2e1c                                            |     fcn_00002e1c ();
    0x0000ecec mov r1, sl                                            |     r1 = sl;
    0x0000ecee add.w r0, sb, 0x20                                    |     r0 = sb + 0x20;
    0x0000ecf2 blx 0x2a68                                            |     fcn_00002a68 ();
    0x0000ecf6 ubfx r3, r8, 0, 9                                     |     r3 = (r8 >> 0) & ((1 << 9) - 1);
    0x0000ecfa movs r2, 1                                            |     r2 = 1;
    0x0000ecfc add.w r1, r8, 0x200                                   |     r1 = r8 + 0x200;
    0x0000ed00 str.w r2, [r7, 0x114]                                 |     __asm ("str.w r2, [r7, 0x114]");
    0x0000ed02 movs r1, 0x14                                         |     r1 = 0x14;
                                                                     |     if (r3 != 0) {
    0x0000ed04 cbz r3, 0xed0e                                        |         
    0x0000ed06 add.w r8, r8, 0x400                                   |         r8 += 0x400;
    0x0000ed0a sub.w r1, r8, r3                                      |         r1 = r8 - r3;
                                                                     |     }
    0x0000ed0e cmp.w r1, 0x800                                       |     
                                                                     |     if (r1 >= 0x800) {
    0x0000ed12 bhs 0xed2e                                            |         goto label_63;
                                                                     |     }
    0x0000ed14 ldr.w r0, [pc, 0x674]                                 |     r0 = *(0x0000f38c);
    0x0000ed18 add r0, pc                                            |     r0 += pc;
    0x0000ed1a add.w r0, r0, 0x20c                                   |     r0 += 0x20c;
    0x0000ed1c strb r3, [r0]                                         |     *(r0) = r3;
    0x0000ed1e add r0, r1                                            |     r0 += r1;
    0x0000ed20 rsb.w r1, r1, 0x800                                   |     r1 = 0x800 - r1;
    0x0000ed24 bl 0x8074                                             |     r0 = fcn_00008074 (r0, r1);
    0x0000ed28 cmp r0, 0                                             |     
                                                                     |     if (r0 != 0) {
    0x0000ed2a bne.w 0xe8ea                                          |         goto label_4;
                                                                     |     }
                                                                     | label_63:
    0x0000ed2e ldr.w r7, [pc, 0x660]                                 |     
    0x0000ed32 add r3, sp, 0x2c                                      |     r3 += var_2ch;
    0x0000ed34 movs r2, 0                                            |     r2 = 0;
    0x0000ed36 mov r1, r3                                            |     r1 = r3;
    0x0000ed38 str r3, [sp, 8]                                       |     var_8h = r3;
    0x0000ed3a add r7, pc                                            |     r7 = 0x1e0d0;
    0x0000ed3c mov r0, r7                                            |     r0 = r7;
    0x0000ed3e bl 0xdd54                                             |     r0 = fcn_0000dd54 (r0, r1, r2);
    0x0000ed42 cmp r0, 0                                             |     
                                                                     |     if (r0 != 0) {
    0x0000ed44 bne.w 0xe8ea                                          |         goto label_4;
                                                                     |     }
    0x0000ed48 ldr r3, [sp, 8]                                       |     r3 = var_8h;
    0x0000ed4a ldr.w r8, [r3]                                        |     r8 = *(r3);
    0x0000ed4e mov r0, r8                                            |     r0 = r8;
    0x0000ed50 bl 0xfa0c                                             |     r0 = fcn_0000fa0c (r0);
    0x0000ed54 cmp r0, 0                                             |     
                                                                     |     if (r0 != 0) {
    0x0000ed56 bne.w 0xe8ea                                          |         goto label_4;
                                                                     |     }
    0x0000ed5a ldr.w sb, [pc, 0x638]                                 |     sb = *(0x0000f394);
    0x0000ed5e ldr.w r3, [pc, 0x638]                                 |     r3 = *(0x0000f398);
    0x0000ed62 add sb, pc                                            |     sb += pc;
    0x0000ed64 ldr.w r2, [sb, 0x114]                                 |     r2 = *((sb + 0x114));
    0x0000ed68 add r3, pc                                            |     r3 += pc;
    0x0000ed6a add.w ip, r3, r2, lsl 6                               |     
    0x0000ed6e ldm.w r7, {r0, r1, r2}                                |     r0 = *(r7);
                                                                     |     r1 = *((r7 + 4));
                                                                     |     r2 = *((r7 + 8));
    0x0000ed70 movs r7, r0                                           |     r7 = r0;
    0x0000ed72 mov r3, ip                                            |     r3 = ip;
    0x0000ed74 stm.w ip!, {r0, r1}                                   |     *(ip!) = r0;
                                                                     |     *((ip! + 4)) = r1;
    0x0000ed78 add.w r0, r3, 0x20                                    |     r0 = r3 + 0x20;
    0x0000ed7c add.w r1, sb, 0x118                                   |     r1 = sb + 0x118;
    0x0000ed80 strb.w r2, [ip]                                       |     *(ip) = r2;
    0x0000ed84 blx 0x2a68                                            |     fcn_00002a68 ();
    0x0000ed88 ldr.w r3, [sb, 0x114]                                 |     r3 = *((sb + 0x114));
    0x0000ed8a adds r1, 0x14                                         |     r1 += 0x14;
    0x0000ed8c ubfx r0, r8, 0, 9                                     |     r0 = (r8 >> 0) & ((1 << 9) - 1);
    0x0000ed90 adds r3, 1                                            |     r3++;
    0x0000ed92 str.w r3, [sb, 0x114]                                 |     __asm ("str.w r3, [sb, 0x114]");
                                                                     |     if (r0 != 0) {
    0x0000ed96 cbz r0, 0xed9c                                        |         
    0x0000ed98 rsb.w r0, r0, 0x200                                   |         r0 = 0x200 - r0;
                                                                     |     }
    0x0000ed9c bl 0x7ff0                                             |     r0 = fcn_00007ff0 (r0, r1);
    0x0000eda0 cmp r0, 0                                             |     
                                                                     |     if (r0 == 0) {
    0x0000eda2 beq.w 0xe8f0                                          |         goto label_6;
                                                                     |     }
    0x0000eda6 b 0xe8ea                                              |     goto label_4;
                                                                     | label_53:
    0x0000eda8 ldr.w r1, [pc, 0x5f0]                                 |     
    0x0000edac mov r2, r8                                            |     r2 = r8;
    0x0000edae add r1, pc                                            |     r1 = 0x1e14e;
                                                                     | label_13:
    0x0000edb0 movs r0, 3                                            |     r0 = 3;
    0x0000edb2 bl 0xfcdc                                             |     fcn_0000fcdc (r0);
    0x0000edb6 movs r3, 0x47                                         |     r3 = 0x47;
    0x0000edb8 mov r4, r3                                            |     r4 = r3;
    0x0000edba str r3, [r5]                                          |     *(r5) = r3;
                                                                     | label_14:
    0x0000edbc ldr.w r1, [pc, 0x5e0]                                 |     
    0x0000edc0 movs r0, 6                                            |     r0 = 6;
    0x0000edc2 add r1, pc                                            |     r1 = 0x1e166;
    0x0000edc4 bl 0xfcdc                                             |     fcn_0000fcdc (r0);
    0x0000edc8 ldr.w r3, [pc, 0x54c]                                 |     r3 = *(0xf318);
    0x0000edcc movs r2, 1                                            |     r2 = 1;
    0x0000edce ldr r3, [r6, r3]                                      |     r3 = *((r6 + r3));
    0x0000edd0 strb r2, [r3]                                         |     *(r3) = r2;
    0x0000edd2 bl 0x80e8                                             |     fcn_000080e8 (r0);
    0x0000edd6 b 0xe822                                              |     goto label_7;
                                                                     | label_40:
    0x0000edd8 movs r7, 0                                            |     r7 = 0;
    0x0000edda cmp r3, 0                                             |     
                                                                     |     if (r3 == 0) {
    0x0000eddc beq.w 0xe90e                                          |         goto label_8;
                                                                     |     }
                                                                     | label_27:
    0x0000ede0 bl 0x80e8                                             |     fcn_000080e8 (r0);
    0x0000ede4 ldr.w r3, [pc, 0x5bc]                                 |     r3 = *(0x0000f3a4);
    0x0000ede8 add r3, pc                                            |     r3 += pc;
    0x0000edea ldrb r3, [r3]                                         |     r3 = *(r3);
    0x0000edec cmp r3, 0                                             |     
                                                                     |     if (r3 != 0) {
    0x0000edee bne 0xeea6                                            |         goto label_64;
                                                                     |     }
    0x0000edf0 ldr.w r3, [pc, 0x5b4]                                 |     r3 = *(0x0000f3a8);
    0x0000edf4 add r3, pc                                            |     r3 += pc;
    0x0000edf6 ldrb.w r3, [r3, 0x110]                                |     r3 = *((r3 + 0x110));
    0x0000edfa cmp r3, 0                                             |     
                                                                     |     if (r3 != 0) {
    0x0000edfc bne 0xeea6                                            |         goto label_64;
                                                                     |     }
                                                                     | label_17:
    0x0000edfe bl 0xd968                                             |     r0 = fcn_0000d968 ();
                                                                     |     if (r0 == 0) {
    0x0000ee02 cbnz r0, 0xee6a                                       |         
    0x0000ee04 ldr.w r3, [pc, 0x5a4]                                 |         r3 = *(0x0000f3ac);
    0x0000ee08 add r3, pc                                            |         r3 += pc;
    0x0000ee0a ldrb.w r3, [r3, 0x110]                                |         r3 = *((r3 + 0x110));
                                                                     | label_18:
    0x0000ee0e ldr.w r7, [pc, 0x5a0]                                 |         r7 = *(0x0000f3b0);
    0x0000ee12 add r7, pc                                            |         r7 += pc;
    0x0000ee14 ldrb.w r2, [r7, 0xa84]                                |         r2 = *((r7 + 0xa84));
    0x0000ee18 cmp r2, 0                                             |         
                                                                     |         if (r2 == 0) {
    0x0000ee1a beq.w 0xefd8                                          |             goto label_65;
                                                                     |         }
    0x0000ee1e cmp r3, 0                                             |         
                                                                     |         if (r3 != 0) {
    0x0000ee20 bne.w 0xef52                                          |             goto label_66;
                                                                     |         }
    0x0000ee24 ldr.w r1, [pc, 0x58c]                                 |         
    0x0000ee28 mov.w r0, -1                                          |         r0 = -1;
    0x0000ee2c add r1, pc                                            |         r1 = 0x1e1e4;
    0x0000ee2e bl 0xfcdc                                             |         fcn_0000fcdc (r0);
    0x0000ee32 ldrb.w r3, [r7, 0x110]                                |         r3 = *((r7 + 0x110));
    0x0000ee36 cmp r3, 0                                             |         
                                                                     |         if (r3 != 0) {
    0x0000ee38 bne.w 0xf1fc                                          |             goto label_67;
                                                                     |         }
    0x0000ee3a strh r0, [r4, 0xe]                                    |         *((r4 + 0xe)) = r0;
                                                                     | label_21:
    0x0000ee3c ldr.w r3, [pc, 0x578]                                 |         r3 = *(0x0000f3b8);
    0x0000ee40 add r3, pc                                            |         r3 += pc;
    0x0000ee42 ldrb r3, [r3]                                         |         r3 = *(r3);
    0x0000ee44 cmp r3, 0                                             |         
                                                                     |         if (r3 == 0) {
    0x0000ee46 beq.w 0xefaa                                          |             goto label_68;
                                                                     |         }
    0x0000ee4a ldr.w r1, [pc, 0x570]                                 |         
    0x0000ee4e movs r0, 6                                            |         r0 = 6;
    0x0000ee50 add r1, pc                                            |         r1 = 0x1e212;
    0x0000ee52 bl 0xfcdc                                             |         fcn_0000fcdc (r0);
    0x0000ee56 ldr.w r3, [pc, 0x568]                                 |         r3 = *(0x0000f3c0);
    0x0000ee5a add r3, pc                                            |         r3 += pc;
    0x0000ee5c ldrb.w r3, [r3, 0xa84]                                |         r3 = *((r3 + 0xa84));
                                                                     | label_10:
    0x0000ee60 cmp r3, 0                                             |         
                                                                     |         if (r3 != 0) {
    0x0000ee62 bne 0xef52                                            |             goto label_66;
                                                                     |         }
                                                                     | label_15:
    0x0000ee64 movs r3, 0                                            |         r3 = 0;
    0x0000ee66 str r3, [r5]                                          |         *(r5) = r3;
    0x0000ee68 b 0xe822                                              |         goto label_7;
                                                                     |     }
                                                                     | label_9:
    0x0000ee6a ldr r4, [r5]                                          |     r4 = *(r5);
                                                                     | label_11:
    0x0000ee6c cmp r4, 0                                             |     
                                                                     |     if (r4 == 0) {
    0x0000ee6e beq.w 0xe822                                          |         goto label_7;
                                                                     |     }
    0x0000ee72 ldr.w r1, [pc, 0x550]                                 |     
    0x0000ee76 movs r0, 6                                            |     r0 = 6;
    0x0000ee78 add r1, pc                                            |     r1 = 0x1e242;
    0x0000ee7a bl 0xfcdc                                             |     fcn_0000fcdc (r0);
    0x0000ee7e ldr.w r3, [pc, 0x498]                                 |     r3 = *(0xf31a);
    0x0000ee82 movs r2, 1                                            |     r2 = 1;
    0x0000ee84 ldr r3, [r6, r3]                                      |     r3 = *((r6 + r3));
    0x0000ee86 strb r2, [r3]                                         |     *(r3) = r2;
    0x0000ee88 bl 0x80e8                                             |     fcn_000080e8 (r0);
    0x0000ee8c cmp r7, 0                                             |     
                                                                     |     if (r7 == 0) {
    0x0000ee8e beq.w 0xe822                                          |         goto label_7;
                                                                     |     }
    0x0000ee92 ldr.w r3, [pc, 0x4a0]                                 |     r3 = *(0xf336);
    0x0000ee96 ldr.w sl, [r6, r3]                                    |     sl = *((r6 + r3));
                                                                     | label_49:
    0x0000ee9a ldr.w r3, [sl]                                        |     r3 = *(sl);
    0x0000ee9e movs r0, 1                                            |     r0 = 1;
    0x0000eea0 ldr r3, [r3, 0x28]                                    |     r3 = *((r3 + 0x28));
    0x0000eea2 blx r3                                                |     uint32_t (*r3)(uint32_t, uint32_t) (r0, r3);
    0x0000eea4 b 0xe822                                              |     goto label_7;
                                                                     | label_64:
    0x0000eea6 ldr.w r3, [pc, 0x48c]                                 |     
    0x0000eeaa movs r0, 0                                            |     r0 = 0;
    0x0000eeac ldr.w sl, [r6, r3]                                    |     sl = *((r6 + r3));
    0x0000eeae adr r0, 0xc                                           |     r0 = 0xc;
    0x0000eeb0 ldr.w r3, [sl]                                        |     r3 = *(sl);
    0x0000eeb4 ldr.w r3, [r3, 0x8c]                                  |     r3 = *(0xf3c2);
    0x0000eeb8 blx r3                                                |     r0 = uint32_t (*r3)(uint32_t, uint32_t) (r0, r3);
    0x0000eeba cmp r0, 0                                             |     
                                                                     |     if (r0 > 0) {
    0x0000eebc bgt 0xee6a                                            |         goto label_9;
                                                                     |     }
    0x0000eebe ldr.w r3, [pc, 0x508]                                 |     r3 = *(0x0000f3c8);
    0x0000eec2 adds r0, 1                                            |     r0++;
    0x0000eec4 add r3, pc                                            |     r3 += pc;
    0x0000eec6 ldrb.w r2, [r3, 0x110]                                |     r2 = *((r3 + 0x110));
                                                                     |     if (r0 == 1) {
    0x0000eeca beq 0xef82                                            |         goto label_69;
                                                                     |     }
    0x0000eecc cmp r2, 0                                             |     
                                                                     |     if (r2 == 0) {
    0x0000eece beq.w 0xf296                                          |         goto label_70;
                                                                     |     }
                                                                     | label_19:
    0x0000eed2 ldrb.w r3, [r3, 0xa84]                                |     r3 = *((r3 + 0xa84));
    0x0000eed6 b 0xee60                                              |     goto label_10;
                                                                     | label_43:
    0x0000eed8 ldr.w r1, [pc, 0x4f0]                                 |     
    0x0000eedc movs r0, 3                                            |     r0 = 3;
    0x0000eede add r1, pc                                            |     r1 = 0x1e2ae;
    0x0000eee0 bl 0xfcdc                                             |     fcn_0000fcdc (r0);
    0x0000eee4 movs r3, 0x72                                         |     r3 = 0x72;
    0x0000eee6 str r3, [r5]                                          |     *(r5) = r3;
                                                                     | label_24:
    0x0000eee8 ldr.w r1, [pc, 0x4e4]                                 |     
    0x0000eeec movs r0, 6                                            |     r0 = 6;
    0x0000eeee movs r4, 0x72                                         |     r4 = 0x72;
    0x0000eef0 add r1, pc                                            |     r1 = 0x1e2c4;
    0x0000eef2 bl 0xfcdc                                             |     fcn_0000fcdc (r0);
    0x0000eef6 ldr.w r3, [pc, 0x420]                                 |     r3 = *(0xf31a);
    0x0000eef8 adds r4, 0x20                                         |     r4 += 0x20;
    0x0000eefa movs r2, 1                                            |     r2 = 1;
    0x0000eefc ldr r3, [r6, r3]                                      |     r3 = *((r6 + r3));
    0x0000eefe strb r2, [r3]                                         |     *(r3) = r2;
    0x0000ef00 bl 0x80e8                                             |     fcn_000080e8 (r0);
    0x0000ef04 b 0xe822                                              |     goto label_7;
                                                                     | label_42:
    0x0000ef06 ldr r4, [r5]                                          |     r4 = *(r5);
    0x0000ef08 movs r7, 0                                            |     r7 = 0;
    0x0000ef0a b 0xee6c                                              |     goto label_11;
                                                                     | label_39:
    0x0000ef0c bl 0xf8f0                                             |     fcn_0000f8f0 ();
    0x0000ef10 b 0xe8ec                                              |     goto label_12;
                                                                     | label_38:
    0x0000ef12 ldr.w r1, [pc, 0x4c0]                                 |     
    0x0000ef16 add r1, pc                                            |     r1 = 0x1e2f0;
    0x0000ef18 b 0xedb0                                              |     goto label_13;
                                                                     | label_41:
    0x0000ef1a ldr.w r1, [pc, 0x4bc]                                 |     
    0x0000ef1e movs r0, 3                                            |     r0 = 3;
    0x0000ef20 add r1, pc                                            |     r1 = 0x1e2fe;
    0x0000ef22 bl 0xfcdc                                             |     fcn_0000fcdc (r0);
    0x0000ef26 movs r3, 0x16                                         |     r3 = 0x16;
    0x0000ef28 mov r4, r3                                            |     r4 = r3;
    0x0000ef2a str r3, [r5]                                          |     *(r5) = r3;
    0x0000ef2c b 0xedbc                                              |     goto label_14;
                                                                     | label_55:
    0x0000ef2e ldr.w r1, [pc, 0x4ac]                                 |     
    0x0000ef32 movs r0, 3                                            |     r0 = 3;
    0x0000ef34 add r1, pc                                            |     r1 = 0x1e316;
    0x0000ef36 bl 0xfcdc                                             |     fcn_0000fcdc (r0);
    0x0000ef3a movs r3, 0x3d                                         |     r3 = 0x3d;
    0x0000ef3c mov r4, r3                                            |     r4 = r3;
    0x0000ef3e str r3, [r5]                                          |     *(r5) = r3;
    0x0000ef40 b 0xedbc                                              |     goto label_14;
                                                                     | label_16:
    0x0000ef42 ldr r2, [pc, 0x3d4]                                   |     r2 = *(0xf31a);
    0x0000ef44 ldrb.w r1, [r3, 0xa84]                                |     r1 = *((r3 + 0xa84));
    0x0000ef46 subs r4, r0, r2                                       |     r4 = r0 - r2;
    0x0000ef48 ldr r3, [r6, r2]                                      |     r3 = *((r6 + r2));
    0x0000ef4a movs r2, 1                                            |     r2 = 1;
    0x0000ef4c strb r2, [r3]                                         |     *(r3) = r2;
    0x0000ef4e cmp r1, 0                                             |     
                                                                     |     if (r1 == 0) {
    0x0000ef50 beq 0xee64                                            |         goto label_15;
                                                                     |     }
                                                                     | label_66:
    0x0000ef52 ldr.w r3, [pc, 0x48c]                                 |     r3 = *(0x0000f3e0);
    0x0000ef56 add r3, pc                                            |     r3 += pc;
    0x0000ef58 ldrb r3, [r3]                                         |     r3 = *(r3);
    0x0000ef5a cmp r3, 0                                             |     
                                                                     |     if (r3 == 0) {
    0x0000ef5c beq 0xee64                                            |         goto label_15;
                                                                     |     }
    0x0000ef5e ldr r3, [pc, 0x3b8]                                   |     r3 = *(0xf31a);
    0x0000ef60 ldr r3, [r6, r3]                                      |     r3 = *((r6 + r3));
    0x0000ef62 ldrb r3, [r3]                                         |     r3 = *(r3);
    0x0000ef64 cmp r3, 0                                             |     
                                                                     |     if (r3 != 0) {
    0x0000ef66 bne.w 0xee64                                          |         goto label_15;
                                                                     |     }
    0x0000ef6a ldr.w r1, [pc, 0x478]                                 |     
    0x0000ef6e mov.w r0, -1                                          |     r0 = -1;
    0x0000ef72 add r1, pc                                            |     r1 = 0x1e35c;
    0x0000ef74 bl 0xfcdc                                             |     fcn_0000fcdc (r0);
    0x0000ef78 b 0xee64                                              |     goto label_15;
                                                                     | label_50:
    0x0000ef7a ldr.w r1, [pc, 0x46c]                                 |     
    0x0000ef7e add r1, pc                                            |     r1 = 0x1e36c;
    0x0000ef80 b 0xedb0                                              |     goto label_13;
                                                                     | label_69:
    0x0000ef82 cmp r2, 0                                             |     
                                                                     |     if (r2 != 0) {
    0x0000ef84 bne 0xef42                                            |         goto label_16;
                                                                     |     }
    0x0000ef86 ldr.w r3, [pc, 0x464]                                 |     r3 = *(0x0000f3ec);
    0x0000ef8a add r3, pc                                            |     r3 += pc;
    0x0000ef8c ldrb r3, [r3]                                         |     r3 = *(r3);
                                                                     | label_30:
    0x0000ef8e cmp r3, 0                                             |     
                                                                     |     if (r3 == 0) {
    0x0000ef90 beq.w 0xedfe                                          |         goto label_17;
                                                                     |     }
    0x0000ef94 bl 0xd6d0                                             |     r0 = fcn_0000d6d0 (r0, r1, r2, r3);
    0x0000ef98 cmp r0, 0                                             |     
                                                                     |     if (r0 != 0) {
    0x0000ef9a bne.w 0xee6a                                          |         goto label_9;
                                                                     |     }
    0x0000ef9e ldr.w r3, [pc, 0x450]                                 |     r3 = *(0x0000f3f0);
    0x0000efa2 add r3, pc                                            |     r3 += pc;
    0x0000efa4 ldrb.w r3, [r3, 0x110]                                |     r3 = *((r3 + 0x110));
    0x0000efa8 b 0xee0e                                              |     goto label_18;
                                                                     | label_68:
    0x0000efaa ldr.w r1, [pc, 0x448]                                 |     
    0x0000efae movs r0, 6                                            |     r0 = 6;
    0x0000efb0 add r1, pc                                            |     r1 = 0x1e3aa;
    0x0000efb2 bl 0xfcdc                                             |     fcn_0000fcdc (r0);
    0x0000efb6 ldr.w r3, [pc, 0x440]                                 |     r3 = *(0x0000f3f8);
    0x0000efba add r3, pc                                            |     r3 += pc;
    0x0000efbc b 0xeed2                                              |     goto label_19;
                                                                     | label_56:
    0x0000efbe cmp r7, r1                                            |     
                                                                     |     if (r7 < r1) {
    0x0000efc0 bls.w 0xec2e                                          |         goto label_20;
                                                                     |     }
    0x0000efc4 ldr.w r1, [pc, 0x434]                                 |     
    0x0000efc8 add r1, pc                                            |     r1 = 0x1e3c8;
                                                                     | label_22:
    0x0000efca movs r0, 3                                            |     r0 = 3;
    0x0000efcc bl 0xfcdc                                             |     fcn_0000fcdc (r0);
    0x0000efd0 movs r3, 0x47                                         |     r3 = 0x47;
    0x0000efd2 mov r4, r3                                            |     r4 = r3;
    0x0000efd4 str r3, [r5]                                          |     *(r5) = r3;
    0x0000efd6 b 0xedbc                                              |     goto label_14;
                                                                     | label_65:
    0x0000efd8 cmp r3, 0                                             |     
                                                                     |     if (r3 == 0) {
    0x0000efda beq.w 0xee3c                                          |         goto label_21;
                                                                     |     }
    0x0000efde b 0xee64                                              |     goto label_15;
                                                                     | label_51:
    0x0000efe0 ldr.w r1, [pc, 0x41c]                                 |     
    0x0000efe4 add r1, pc                                            |     r1 = 0x1e3e8;
    0x0000efe6 b 0xefca                                              |     goto label_22;
                                                                     | label_46:
    0x0000efe8 mov r1, r8                                            |     r1 = r8;
    0x0000efea mul r0, r7, r8                                        |     r0 = r7 * r8;
    0x0000efee bl 0xff74                                             |     fcn_0000ff74 (r0, r1);
    0x0000eff0 invalid                                               |     
    0x0000eff2 ldr.w r1, [pc, 0x410]                                 |     
    0x0000eff6 mov r2, r0                                            |     r2 = r0;
    0x0000eff8 movs r0, 6                                            |     r0 = 6;
    0x0000effa add r1, pc                                            |     r1 = 0x1e404;
    0x0000effc bl 0xfcdc                                             |     fcn_0000fcdc (r0);
    0x0000effe invalid                                               |     
                                                                     | label_26:
    0x0000f000 ldr.w r3, [pc, 0x404]                                 |     r3 = *(0x0000f408);
    0x0000f004 add r3, pc                                            |     r3 += pc;
    0x0000f006 ldr.w r3, [r3, 0xa10]                                 |     r3 = *((r3 + 0xa10));
    0x0000f00a cmp r3, 0                                             |     
                                                                     |     if (r3 == 0) {
    0x0000f00c beq.w 0xf1b6                                          |         goto label_32;
                                                                     |     }
    0x0000f010 ldr r3, [pc, 0x3f8]                                   |     
    0x0000f012 movw r2, 0x5a9d                                       |     
    0x0000f016 movt r2, 0x2d9f                                       |     r2 = 0x2d9f5a9d;
    0x0000f01a mov.w r1, 0x280                                       |     r1 = 0x280;
    0x0000f01e str r2, [sp, 0x18]                                    |     var_18h = r2;
    0x0000f020 add r2, sp, 0x2c                                      |     r2 += var_2ch;
    0x0000f022 add r3, pc                                            |     r3 = 0x1e432;
    0x0000f024 str r2, [sp, 8]                                       |     var_8h = r2;
    0x0000f026 add.w r2, r3, 0x118                                   |     r2 = r3 + 0x118;
    0x0000f02a str.w sl, [sp, 0x14]                                  |     __asm ("str.w sl, [var_14h]");
    0x0000f02c adr r0, 0x50                                          |     r0 = 0x50;
    0x0000f02e movs r7, 0                                            |     r7 = 0;
    0x0000f030 add.w fp, sp, 0x30                                    |     
    0x0000f032 lsrs r0, r6, 0xc                                      |     r0 = r6 >> 0xc;
    0x0000f034 mov sl, r1                                            |     sl = r1;
    0x0000f036 mov sb, r3                                            |     sb = r3;
    0x0000f038 str r2, [sp, 0x10]                                    |     var_10h = r2;
    0x0000f03a str r5, [sp, 0x1c]                                    |     var_1ch = r5;
    0x0000f03c strd r6, r4, [sp, 0x20]                               |     __asm ("strd r6, r4, [var_20h]");
    0x0000f040 b 0xf0de                                              |     
                                                                     |     while (r3 < r3) {
    0x0000f042 ldr r1, [pc, 0x3cc]                                   |         
    0x0000f044 mov r0, r6                                            |         r0 = r6;
    0x0000f046 add r1, pc                                            |         r1 = 0x1e45c;
    0x0000f048 blx 0x2f70                                            |         vdprintf_chk ();
    0x0000f04a vsra.s64 d11, d8, 0x2e                                |         __asm ("vsra.s64 d11, d8, 0x2e");
    0x0000f04e ldr r1, [pc, 0x3c4]                                   |         
    0x0000f050 mov r0, r6                                            |         r0 = r6;
    0x0000f052 add r1, pc                                            |         r1 = 0x1e46c;
    0x0000f054 blx 0x2f70                                            |         r0 = vdprintf_chk ();
                                                                     |         if (r0 != 0) {
    0x0000f058 cbz r0, 0xf076                                        |             
    0x0000f05a ldr r1, [pc, 0x3bc]                                   |             
    0x0000f05c mov r0, r6                                            |             r0 = r6;
    0x0000f05e add r1, pc                                            |             r1 = 0x1e47c;
    0x0000f060 blx 0x2f70                                            |             r0 = vdprintf_chk ();
                                                                     |             if (r0 == 0) {
    0x0000f064 cbz r0, 0xf076                                        |                 goto label_71;
                                                                     |             }
    0x0000f066 ldr r1, [pc, 0x3b4]                                   |             
    0x0000f068 mov r0, r6                                            |             r0 = r6;
    0x0000f06a add r1, pc                                            |             r1 = 0x1e48c;
    0x0000f06c blx 0x2f70                                            |             r0 = vdprintf_chk ();
    0x0000f070 cmp r0, 0                                             |             
                                                                     |             if (r0 != 0) {
    0x0000f072 bne.w 0xf186                                          |                 goto label_72;
                                                                     |             }
                                                                     |         }
                                                                     | label_71:
    0x0000f076 ldr r1, [pc, 0x3a8]                                   |         
    0x0000f078 movs r0, 7                                            |         r0 = 7;
    0x0000f07a mov r2, r6                                            |         r2 = r6;
    0x0000f07c add r1, pc                                            |         r1 = 0x1e4a2;
    0x0000f07e bl 0xfcdc                                             |         fcn_0000fcdc (r0);
    0x0000f082 mov r0, r4                                            |         r0 = r4;
    0x0000f084 bl 0x7ff0                                             |         fcn_00007ff0 (r0, r1);
    0x0000f086 vtbl.8 d2, {d4}, d0                                   |         __asm ("vtbl.8 d2, {d4}, d0");
                                                                     |         if (r0 != 7) {
    0x0000f08a bne.w 0xf1ac                                          |             goto label_73;
                                                                     |         }
                                                                     | label_23:
    0x0000f08e ldr.w r5, [sb, 0x114]                                 |         r5 = *((sb + 0x114));
    0x0000f092 movs r2, 0x20                                         |         r2 = 0x20;
    0x0000f094 ldr r6, [pc, 0x38c]                                   |         
    0x0000f096 mov r1, fp                                            |         r1 = fp;
    0x0000f098 lsls r5, r5, 6                                        |         r5 <<= 6;
    0x0000f09a add r6, pc                                            |         r6 = 0x1e4c2;
    0x0000f09c adds r0, r6, r5                                       |         r0 = r6 + r5;
    0x0000f09e blx 0x2884                                            |         fcn_00002884 ();
    0x0000f0a2 add.w r0, r5, 0x20                                    |         r0 = r5 + 0x20;
    0x0000f0a6 ldr r1, [sp, 0x10]                                    |         r1 = var_10h;
    0x0000f0a8 add r0, r6                                            |         r0 += r6;
    0x0000f0aa blx 0x2a68                                            |         fcn_00002a68 ();
    0x0000f0ae ldr.w r3, [sb, 0x114]                                 |         r3 = *((sb + 0x114));
    0x0000f0b2 ubfx r0, r4, 0, 9                                     |         r0 = (r4 >> 0) & ((1 << 9) - 1);
    0x0000f0b6 adds r3, 1                                            |         r3++;
    0x0000f0b8 str.w r3, [sb, 0x114]                                 |         __asm ("str.w r3, [sb, 0x114]");
                                                                     |         if (r0 != 0) {
    0x0000f0bc cbz r0, 0xf0c2                                        |             
    0x0000f0be rsb.w r0, r0, 0x200                                   |             r0 = 0x200 - r0;
                                                                     |         }
    0x0000f0c2 bl 0x7ff0                                             |         r0 = fcn_00007ff0 (r0, r1);
    0x0000f0c6 cmp r0, 0                                             |         
                                                                     |         if (r0 != 0) {
    0x0000f0c8 bne 0xf1ac                                            |             goto label_73;
                                                                     |         }
    0x0000f0ca ldr r3, [pc, 0x35c]                                   |         
    0x0000f0cc adds r7, 1                                            |         r7++;
    0x0000f0ce add.w sl, sl, 0x20                                    |         sl += 0x20;
    0x0000f0d2 add r3, pc                                            |         
    0x0000f0d4 ldr.w r3, [r3, 0xa10]                                 |         r3 = *(0x1ef10);
    0x0000f0d6 subs r2, 0x10                                         |         r2 -= 0x10;
    0x0000f0d8 cmp r7, r3                                            |         
                                                                     |         if (r7 >= r3) {
    0x0000f0da bhs.w 0xf2c8                                          |             goto label_74;
                                                                     |         }
    0x0000f0de ldr.w r8, [pc, 0x34c]                                 |         r8 = *(0x0000f42c);
    0x0000f0e2 movs r2, 0x1c                                         |         r2 = 0x1c;
    0x0000f0e4 ldr r3, [pc, 0x348]                                   |         
    0x0000f0e6 movs r1, 1                                            |         r1 = 1;
    0x0000f0e8 mov r0, fp                                            |         r0 = fp;
    0x0000f0ea add r8, pc                                            |         r8 += pc;
    0x0000f0ec ldr.w r5, [r8, 0xa0c]                                 |         r5 = *((r8 + 0xa0c));
    0x0000f0f0 add r3, pc                                            |         r3 = 0x1e524;
    0x0000f0f2 add.w r6, r5, sl                                      |         r6 = r5 + sl;
    0x0000f0f6 str r6, [sp]                                          |         *(sp) = r6;
    0x0000f0f8 blx 0x2e80                                            |         strncmp (r0, r1, r2);
    0x0000f0fc ldr r1, [sp, 8]                                       |         r1 = var_8h;
    0x0000f0fe movs r2, 0                                            |         r2 = 0;
    0x0000f100 mov r0, fp                                            |         r0 = fp;
    0x0000f102 bl 0xdd54                                             |         fcn_0000dd54 (r0, r1, r2);
    0x0000f104 cdp2 p8, 2, c2, c7, c0, 0                             |         __asm ("cdp2 p8, 2, c2, c7, c0, 0");
                                                                     |         if (r2 != 0) {
    0x0000f108 bne 0xf1ac                                            |             goto label_73;
                                                                     |         }
    0x0000f10a lsls r3, r7, 5                                        |         r3 = r7 << 5;
    0x0000f10c ldr r2, [sp, 8]                                       |         r2 = var_8h;
    0x0000f10e str r3, [sp, 0xc]                                     |         var_ch = r3;
    0x0000f110 adds r3, r5, r3                                       |         r3 = r5 + r3;
    0x0000f112 ldr r4, [r2]                                          |         r4 = *(r2);
    0x0000f114 ldr.w r3, [r3, 0x29c]                                 |         r3 = *((r3 + 0x29c));
    0x0000f118 cmp r3, r4                                            |         
                                                                     |         if (r3 <= r4) {
    0x0000f11a blo.w 0xf29e                                          |             goto label_75;
                                                                     |         }
    0x0000f11c strh r0, [r0, 6]                                      |         *((r0 + 6)) = r0;
    0x0000f11e ldr.w r8, [r8, 0xa0c]                                 |         r8 = *((r8 + 0xa0c));
    0x0000f122 ldr.w r3, [r8, 8]                                     |         r3 = *((r8 + 8));
                                                                     |         if (r3 == 0) {
    0x0000f126 cbnz r3, 0xf17c                                       |             
    0x0000f128 ldr r1, [pc, 0x308]                                   |             
    0x0000f12a mov r0, r6                                            |             r0 = r6;
    0x0000f12c add r1, pc                                            |             r1 = 0x1e564;
    0x0000f12e blx 0x2f70                                            |             r0 = vdprintf_chk ();
                                                                     |             if (r0 != 0) {
    0x0000f132 cbz r0, 0xf140                                        |                 
    0x0000f134 ldr r1, [pc, 0x300]                                   |                 
    0x0000f136 mov r0, r6                                            |                 r0 = r6;
    0x0000f138 add r1, pc                                            |                 r1 = 0x1e574;
    0x0000f13a blx 0x2f70                                            |                 r0 = vdprintf_chk ();
                                                                     |                 if (r0 != 0) {
    0x0000f13e cbnz r0, 0xf17c                                       |                     goto label_76;
                                                                     |                 }
                                                                     |             }
    0x0000f140 add.w r8, sp, 0x50                                    |             r8 += var_50h;
    0x0000f144 movs r2, 0                                            |             r2 = 0;
    0x0000f146 movs r1, 0x40                                         |             r1 = 0x40;
    0x0000f148 mov r0, r8                                            |             r0 = r8;
    0x0000f14a bl 0x7cd8                                             |             fcn_00007cd8 (r0, r1, r2);
    0x0000f14c stc2l p11, c11, [r5, 0x1a0]                           |             __asm ("stc2l p11, c11, [r5, 0x1a0]");
                                                                     |             if (r0 != 0) {
    0x0000f14e cbnz r0, 0xf1ac                                       |                 goto label_73;
                                                                     |             }
    0x0000f150 movs r1, 0x40                                         |             r1 = 0x40;
    0x0000f152 mov r0, r8                                            |             r0 = r8;
    0x0000f154 bl 0x8074                                             |             fcn_00008074 (r0, r1);
    0x0000f156 invalid                                               |             
                                                                     |             if (r0 != 0) {
    0x0000f158 cbnz r0, 0xf1ac                                       |                 goto label_73;
                                                                     |             }
    0x0000f15a ldr.w r3, [r8, 8]                                     |             r3 = var_8h_2;
    0x0000f15e ldr r2, [sp, 0x18]                                    |             r2 = var_18h;
    0x0000f160 cmp r3, r2                                            |             
                                                                     |             if (r3 != r2) {
    0x0000f162 bne.w 0xf2e2                                          |                 goto label_77;
                                                                     |             }
    0x0000f166 ldrb.w r1, [r8, 0xd]                                  |             r1 = var_dh;
    0x0000f16a ldrb.w r0, [r8, 0xc]                                  |             r0 = var_ch_2;
    0x0000f16c movs r4, r1                                           |             r4 = r1;
    0x0000f16e bl 0x3ba4                                             |             r0 = fcn_00003ba4 (r0, r1);
                                                                     |             if (r0 != 0) {
    0x0000f172 cbnz r0, 0xf1ac                                       |                 goto label_73;
                                                                     |             }
    0x0000f174 ldr r3, [pc, 0x2c4]                                   |             
    0x0000f176 add r3, pc                                            |             r3 = 0x1e5b6;
    0x0000f178 ldr.w r8, [r3, 0xa0c]                                 |             r8 = *(0x1efc2);
    0x0000f17a ldrh r4, [r1, 0x10]                                   |             r4 = *((r1 + 0x10));
                                                                     |         }
                                                                     | label_76:
    0x0000f17c ldr.w r3, [r8, 0xc]                                   |         r3 = *((r8 + 0xc));
    0x0000f180 lsls r3, r3, 0x1f                                     |         r3 <<= 0x1f;
    0x0000f182 bmi.w 0xf042                                          |         
                                                                     |     }
                                                                     | label_72:
    0x0000f186 ldr r3, [sp, 0xc]                                     |     r3 = var_ch;
    0x0000f188 mov r1, r6                                            |     r1 = r6;
    0x0000f18a add r5, r3                                            |     r5 += r3;
    0x0000f18c ldr r3, [sp, 0x14]                                    |     r3 = var_14h;
    0x0000f18e ldr.w r2, [r5, 0x29c]                                 |     r2 = *((r5 + 0x29c));
    0x0000f192 ldrb.w r0, [r5, 0x298]                                |     r0 = *((r5 + 0x298));
    0x0000f196 ldr r3, [r3]                                          |     r3 = *(r3);
    0x0000f198 ldrb.w r5, [r5, 0x299]                                |     r5 = *((r5 + 0x299));
    0x0000f19c str r5, [sp]                                          |     *(sp) = r5;
    0x0000f19e ldr.w r5, [r3, 0x80]                                  |     r5 = *((r3 + 0x80));
    0x0000f1a2 mov r3, r4                                            |     r3 = r4;
    0x0000f1a4 blx r5                                                |     r0 = uint32_t (*r5)(uint32_t, uint32_t, uint32_t, uint32_t) (r0, r1, r2, r3);
    0x0000f1a6 cmp r0, 0                                             |     
                                                                     |     if (r0 == 0) {
    0x0000f1a8 beq.w 0xf08e                                          |         goto label_23;
                                                                     |     }
                                                                     | label_73:
    0x0000f1ac ldr r5, [sp, 0x1c]                                    |     r5 = var_1ch;
    0x0000f1ae ldrd r6, r4, [sp, 0x20]                               |     __asm ("ldrd r6, r4, [var_20h]");
    0x0000f1b2 ldr r3, [r5]                                          |     r3 = *(r5);
                                                                     |     if (r3 != 0) {
    0x0000f1b4 cbnz r3, 0xf1f6                                       |         goto label_78;
                                                                     |     }
                                                                     | label_32:
    0x0000f1b6 bl 0xdfb8                                             |     r0 = fcn_0000dfb8 (r0, r1, r2, r3, r4);
                                                                     |     if (r0 == 0) {
    0x0000f1ba cbz r0, 0xf202                                        |         goto label_79;
                                                                     |     }
    0x0000f1bc ldr r4, [r5]                                          |     r4 = *(r5);
    0x0000f1be movs r7, 1                                            |     r7 = 1;
    0x0000f1c0 b 0xee6c                                              |     goto label_11;
                                                                     | label_44:
    0x0000f1c2 ldr r1, [pc, 0x27c]                                   |     
    0x0000f1c4 movs r0, 3                                            |     r0 = 3;
    0x0000f1c6 add r1, pc                                            |     r1 = 0x1e60c;
    0x0000f1c8 bl 0xfcdc                                             |     fcn_0000fcdc (r0);
    0x0000f1ca stc2 p3, c2, [r8, 0x1c8]                              |     __asm ("stc2 p3, c2, [r8, 0x1c8]");
    0x0000f1ce str r3, [r5]                                          |     *(r5) = r3;
    0x0000f1d0 b 0xeee8                                              |     goto label_24;
                                                                     | label_58:
    0x0000f1d2 ldr r1, [pc, 0x270]                                   |     
    0x0000f1d4 add r1, pc                                            |     r1 = 0x1e61e;
    0x0000f1d6 b 0xefca                                              |     goto label_22;
                                                                     | label_54:
    0x0000f1d8 ldr r1, [pc, 0x26c]                                   |     
    0x0000f1da movs r0, 4                                            |     r0 = 4;
    0x0000f1dc add r1, pc                                            |     r1 = 0x1e628;
    0x0000f1de bl 0xfcdc                                             |     fcn_0000fcdc (r0);
    0x0000f1e2 b 0xebf6                                              |     goto label_25;
                                                                     | label_47:
    0x0000f1e4 ldr r1, [pc, 0x264]                                   |     
    0x0000f1e6 movs r0, 3                                            |     r0 = 3;
    0x0000f1e8 add r1, pc                                            |     r1 = 0x1e638;
    0x0000f1ea bl 0xfcdc                                             |     fcn_0000fcdc (r0);
    0x0000f1ec ldc2l p8, c6, [r7, -0xac]!                            |     __asm ("ldc2l p8, c6, [r7, -0xac]!");
    0x0000f1f0 cmp r3, 0                                             |     
                                                                     |     if (r3 == 0) {
    0x0000f1f2 beq.w 0xf000                                          |         goto label_26;
                                                                     |     }
                                                                     | label_78:
    0x0000f1f6 mov r4, r3                                            |     r4 = r3;
    0x0000f1f8 movs r7, 1                                            |     r7 = 1;
    0x0000f1fa b 0xee6c                                              |     goto label_11;
                                                                     | label_67:
    0x0000f1fc ldrb.w r3, [r7, 0xa84]                                |     r3 = *((r7 + 0xa84));
    0x0000f200 b 0xee60                                              |     goto label_10;
                                                                     | label_79:
    0x0000f202 ldr r1, [pc, 0x24c]                                   |     
    0x0000f204 add.w sb, sp, 0x50                                    |     sb += var_50h;
    0x0000f208 ldr.w fp, [pc, 0x248]                                 |     
    0x0000f20c add.w r8, sp, 0x2f                                    |     r8 += var_2fh;
    0x0000f210 mov r7, sb                                            |     r7 = sb;
    0x0000f212 add.w sl, sp, 0x4f                                    |     sl += var_4fh;
    0x0000f216 add r1, pc                                            |     r1 = 0x1e66c;
    0x0000f218 add r0, sp, 0x30                                      |     r0 += s1;
    0x0000f21a add fp, pc                                            |     fp = 0x1e672;
    0x0000f21c addw r1, r1, 0xa14                                    |     __asm ("addw r1, r1, 0xa14");
    0x0000f220 blx 0x2a68                                            |     fcn_00002a68 ();
                                                                     |     do {
    0x0000f224 ldrb r2, [r8, 1]!                                     |         r2 = s1;
    0x0000f228 mov r0, r7                                            |         r0 = r7;
    0x0000f22a mov r3, fp                                            |         r3 = fp;
    0x0000f22c movs r1, 1                                            |         r1 = 1;
    0x0000f22e adds r7, 2                                            |         r7 += 2;
    0x0000f230 str r2, [sp]                                          |         *(sp) = r2;
    0x0000f232 mov.w r2, -1                                          |         r2 = -1;
    0x0000f236 blx 0x2e80                                            |         strncmp (r0, r1, r2);
    0x0000f23a cmp r8, sl                                            |         
    0x0000f23c bne 0xf224                                            |         
                                                                     |     } while (r8 != sl);
    0x0000f23e ldr r1, [pc, 0x218]                                   |     
    0x0000f240 mov r2, sb                                            |     r2 = sb;
    0x0000f242 movs r0, 6                                            |     r0 = 6;
    0x0000f244 movs r7, 1                                            |     r7 = 1;
    0x0000f246 add r1, pc                                            |     r1 = 0x1e6a4;
    0x0000f248 bl 0xfcdc                                             |     fcn_0000fcdc (r0);
    0x0000f24c b 0xede0                                              |     goto label_27;
                                                                     | label_48:
    0x0000f24e mov r1, r8                                            |     r1 = r8;
    0x0000f250 mul r0, r0, r8                                        |     r0 *= r8;
    0x0000f254 bl 0xff74                                             |     fcn_0000ff74 (r0, r1);
    0x0000f258 ldr r1, [pc, 0x200]                                   |     
    0x0000f25a mov r2, r0                                            |     r2 = r0;
    0x0000f25c movs r0, 6                                            |     r0 = 6;
    0x0000f25e add r1, pc                                            |     r1 = 0x1e6be;
    0x0000f260 bl 0xfcdc                                             |     fcn_0000fcdc (r0);
    0x0000f264 ldr r3, [sp, 8]                                       |     r3 = var_8h;
    0x0000f266 ldr r2, [sp, 0xc]                                     |     r2 = var_ch;
    0x0000f268 ldr r3, [r3]                                          |     r3 = *(r3);
    0x0000f26a add r2, r3                                            |     r2 += r3;
    0x0000f26c cmp sb, r2                                            |     
                                                                     |     if (sb <= r2) {
    0x0000f26e bhi 0xf2d0                                            |         
    0x0000f270 ldr r3, [pc, 0x1ec]                                   |         r3 = *(0xf460);
    0x0000f272 movs r0, 6                                            |         r0 = 6;
    0x0000f274 ldr r1, [pc, 0x1ec]                                   |         
    0x0000f276 ldr r3, [r6, r3]                                      |         r3 = *((r6 + r3));
    0x0000f278 add r1, pc                                            |         r1 = 0x1e6e0;
    0x0000f27a ldr r2, [r3]                                          |         r2 = *(0xf460);
    0x0000f27c bl 0xfcdc                                             |         fcn_0000fcdc (r0);
    0x0000f280 b.w 0xea76                                            |         goto label_28;
                                                                     | label_45:
    0x0000f284 mov r7, r2                                            |         r7 = r2;
    0x0000f286 b.w 0xe9e2                                            |         goto label_29;
                                                                     | label_57:
    0x0000f28a ldr r1, [pc, 0x1dc]                                   |         
    0x0000f28c add r1, pc                                            |         r1 = 0x1e6fa;
    0x0000f28e b 0xefca                                              |         goto label_22;
                                                                     | label_60:
    0x0000f290 ldr r1, [pc, 0x1d8]                                   |         
    0x0000f292 add r1, pc                                            |         r1 = 0x1e702;
    0x0000f294 b 0xedb0                                              |         goto label_13;
                                                                     | label_70:
    0x0000f296 ldr r3, [pc, 0x1d8]                                   |         
    0x0000f298 add r3, pc                                            |         r3 = 0x1e70e;
    0x0000f29a ldrb r3, [r3]                                         |         r3 = *(r3);
    0x0000f29c b 0xef8e                                              |         goto label_30;
                                                                     | label_75:
    0x0000f29e ldr r1, [pc, 0x1d4]                                   |         
    0x0000f2a0 mov r8, r6                                            |         r8 = r6;
    0x0000f2a2 ldrd r5, r6, [sp, 0x1c]                               |         __asm ("ldrd r5, r6, [var_1ch]");
    0x0000f2a6 mov r2, r8                                            |         r2 = r8;
    0x0000f2a8 str r3, [sp]                                          |         *(sp) = r3;
    0x0000f2aa movs r0, 3                                            |         r0 = 3;
    0x0000f2ac mov r3, r4                                            |         r3 = r4;
    0x0000f2ae add r1, pc                                            |         r1 = 0x1e728;
    0x0000f2b0 ldr.w sl, [sp, 0x14]                                  |         sl = var_14h;
    0x0000f2b4 bl 0xfcdc                                             |         fcn_0000fcdc (r0);
    0x0000f2b8 movs r3, 0x47                                         |         r3 = 0x47;
    0x0000f2ba mov r4, r3                                            |         r4 = r3;
    0x0000f2bc str r3, [r5]                                          |         *(r5) = r3;
    0x0000f2be b.w 0xea7c                                            |         goto label_31;
                                                                     | label_61:
    0x0000f2c2 ldr r1, [pc, 0x1b4]                                   |         
    0x0000f2c4 add r1, pc                                            |         r1 = 0x1e742;
    0x0000f2c6 b 0xedb0                                              |         goto label_13;
                                                                     | label_74:
    0x0000f2c8 ldr r5, [sp, 0x1c]                                    |         r5 = var_1ch;
    0x0000f2ca ldrd r6, r4, [sp, 0x20]                               |         __asm ("ldrd r6, r4, [var_20h]");
    0x0000f2cc str r0, [r1, 0x40]                                    |         *((r1 + 0x40)) = r0;
    0x0000f2ce b 0xf1b6                                              |         goto label_32;
                                                                     |     }
    0x0000f2d0 ldr r1, [pc, 0x1a8]                                   |     
    0x0000f2d2 movs r0, 6                                            |     r0 = 6;
    0x0000f2d4 add r1, pc                                            |     r1 = 0x1e754;
    0x0000f2d6 bl 0xfcdc                                             |     fcn_0000fcdc (r0);
    0x0000f2da b.w 0xea76                                            |     goto label_28;
                                                                     | label_36:
    0x0000f2de blx 0x2cdc                                            |     fprintf_chk ()
                                                                     | label_77:
    0x0000f2e2 ldr r1, [pc, 0x19c]                                   |     
    0x0000f2e4 movs r0, 3                                            |     r0 = 3;
    0x0000f2e6 ldrd r5, r6, [sp, 0x1c]                               |     __asm ("ldrd r5, r6, [var_1ch]");
    0x0000f2ea ldr.w sl, [sp, 0x14]                                  |     sl = var_14h;
    0x0000f2ee add r1, pc                                            |     r1 = 0x1e774;
    0x0000f2f0 bl 0xfcdc                                             |     fcn_0000fcdc (r0);
    0x0000f2f4 movs r3, 0x47                                         |     r3 = 0x47;
    0x0000f2f6 mov r4, r3                                            |     r4 = r3;
    0x0000f2f8 str r3, [r5]                                          |     *(r5) = r3;
    0x0000f2fa b.w 0xea7c                                            |     goto label_31;
                                                                     | }
    ; assembly                                   | /* r2dec pseudo code output */
                                                 | /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/sbin/fwmgr @ 0xf8f0 */
                                                 | #include <stdint.h>
                                                 |  
    ; (fcn) fcn.0000f8f0 ()                      | void fcn_0000f8f0 () {
                                                 |     int16_t var_0h;
                                                 |     int16_t var_4h;
    0x0000f8f0 ldr r1, [pc, 0xf4]                |     
    0x0000f8f2 movs r3, 0                        |     r3 = 0;
    0x0000f8f4 ldr r2, [pc, 0xf4]                |     r2 = *(0xf9ec);
    0x0000f8f6 push {r4, r5, r6, r7, lr}         |     
    0x0000f8f8 movw r6, 0xb007                   |     
    0x0000f8fc add r1, pc                        |     r1 = 0x1f2e8;
    0x0000f8fe ldr r5, [pc, 0xf0]                |     
    0x0000f900 movw r7, 0x7189                   |     
    0x0000f904 mov r4, r3                        |     r4 = r3;
    0x0000f906 ldr r2, [r1, r2]                  |     
    0x0000f908 movt r6, 0xa815                   |     r6 = 0xa815b007;
    0x0000f90c movt r7, 0x4b5a                   |     r7 = 0x4b5a7189;
    0x0000f910 sub sp, 0xc                       |     
    0x0000f912 add r5, pc                        |     r5 = 0x1f308;
    0x0000f914 ldr r2, [r2]                      |     r2 = *(0x1f2e8);
    0x0000f916 str r2, [sp, 4]                   |     var_4h = r2;
    0x0000f918 mov.w r2, 0                       |     r2 = 0;
    0x0000f91c str r3, [r5]                      |     *(r5) = r3;
                                                 |     do {
    0x0000f91e add.w r4, r4, 0x100000            |         r4 += 0x100000;
    0x0000f922 ldr r0, [r5, 4]                   |         r0 = *((r5 + 4));
    0x0000f924 mov r1, r4                        |         r1 = r4;
    0x0000f926 blx 0x2ec8                        |         libc_start_main (r0, r1, r2, r3, r4, r5, r6);
    0x0000f92a str r0, [r5, 4]                   |         *((r5 + 4)) = r0;
    0x0000f92c cmp r0, 0                         |         
                                                 |         if (r0 == 0) {
    0x0000f92e beq 0xf9ca                        |             goto label_2;
                                                 |         }
    0x0000f930 ldr r3, [r5]                      |         r3 = *(r5);
    0x0000f932 movs r1, 0                        |         r1 = 0;
    0x0000f934 str r1, [sp]                      |         *(sp) = r1;
    0x0000f936 mov r2, sp                        |         r2 = sp;
    0x0000f938 subs r1, r4, r3                   |         r1 = r4 - r3;
    0x0000f93a add r0, r3                        |         r0 += r3;
    0x0000f93c bl 0x7cd8                         |         r0 = fcn_00007cd8 (r0, r1, r2);
                                                 |         if (r0 != 0) {
    0x0000f940 cbnz r0, 0xf9a0                   |             goto label_3;
                                                 |         }
    0x0000f942 ldr r3, [r5]                      |         r3 = *(r5);
                                                 |         if (r3 == 0) {
    0x0000f944 cbnz r3, 0xf95e                   |             
    0x0000f946 ldr r2, [r5, 4]                   |             r2 = *((r5 + 4));
    0x0000f948 ldr.w r1, [r2, 0x1f0]             |             r1 = *((r2 + 0x1f0));
    0x0000f94a asrs r0, r6, 7                    |             r0 = r6 >> 7;
    0x0000f94c cmp r1, r6                        |             
                                                 |             if (r1 == r6) {
    0x0000f94e beq 0xf95e                        |                 goto label_4;
                                                 |             }
    0x0000f950 ldr.w r1, [r2, 0x3f0]             |             r1 = *((r2 + 0x3f0));
    0x0000f954 cmp r1, r6                        |             
                                                 |             if (r1 == r6) {
    0x0000f956 beq 0xf95e                        |                 goto label_4;
                                                 |             }
    0x0000f958 ldr r2, [r2]                      |             r2 = *(r2);
    0x0000f95a cmp r2, r7                        |             
                                                 |             if (r2 != r7) {
    0x0000f95c bne 0xf9c4                        |                 goto label_5;
                                                 |             }
                                                 |         }
                                                 | label_4:
    0x0000f95e ldr r1, [sp]                      |         r1 = *(sp);
    0x0000f960 ldr r2, [pc, 0x90]                |         
    0x0000f962 add r3, r1                        |         r3 += r1;
    0x0000f964 cmp r3, r4                        |         
    0x0000f966 add r2, pc                        |         r2 = 0x1f35e;
    0x0000f968 str r3, [r2]                      |         *(r2) = r3;
                                                 |         if (r3 <= r4) {
    0x0000f96a blo 0xf9a8                        |             goto label_6;
                                                 |         }
    0x0000f96c cmp.w r4, 0x900000                |         
    0x0000f970 bne 0xf91e                        |         
                                                 |     } while (r4 != 0x900000);
    0x0000f972 ldr r1, [pc, 0x84]                |     
    0x0000f974 add r1, pc                        |     r1 = 0x1f372;
                                                 | label_0:
    0x0000f976 movs r0, 3                        |     r0 = 3;
    0x0000f978 bl 0xfcdc                         |     fcn_0000fcdc (r0);
    0x0000f97a invalid                           |     
    0x0000f97c blx 0x2f88                        |     cxa_finalize ();
    0x0000f980 movs r3, 0x47                     |     r3 = 0x47;
    0x0000f982 mov r2, r0                        |     r2 = r0;
    0x0000f984 mov r0, r3                        |     r0 = r3;
    0x0000f986 str r3, [r2]                      |     *(r2) = r3;
                                                 |     do {
                                                 | label_1:
    0x0000f988 ldr r2, [pc, 0x70]                |         
    0x0000f98a ldr r3, [pc, 0x60]                |         r3 = *(0xf9ee);
    0x0000f98c add r2, pc                        |         r2 = 0x1f38c;
    0x0000f98e ldr r3, [r2, r3]                  |         r3 = *(0x1f38c);
    0x0000f990 ldr r2, [r3]                      |         r2 = *(0x1f38c);
    0x0000f992 ldr r3, [sp, 4]                   |         r3 = var_4h;
    0x0000f994 eors r2, r3                       |         r2 ^= r3;
    0x0000f996 mov.w r3, 0                       |         r3 = 0;
                                                 |         if (r2 != r3) {
    0x0000f99a bne 0xf9e4                        |             goto label_7;
                                                 |         }
    0x0000f99c add sp, 0xc                       |         
    0x0000f99e pop {r4, r5, r6, r7, pc}          |         
                                                 | label_3:
    0x0000f9a0 blx 0x2f88                        |         r0 = cxa_finalize ();
    0x0000f9a4 ldr r0, [r0]                      |         r0 = *(r0);
    0x0000f9a6 b 0xf988                          |         
                                                 |     } while (1);
                                                 | label_6:
    0x0000f9a8 ldr r2, [pc, 0x54]                |     
    0x0000f9aa ldr r3, [pc, 0x40]                |     r3 = *(0xf9ee);
    0x0000f9ac add r2, pc                        |     r2 = 0x1f3b0;
    0x0000f9ae ldr r3, [r2, r3]                  |     r3 = *(0x1f3b0);
    0x0000f9b0 ldr r2, [r3]                      |     r2 = *(0x1f3b0);
    0x0000f9b2 ldr r3, [sp, 4]                   |     r3 = var_4h;
    0x0000f9b4 eors r2, r3                       |     r2 ^= r3;
    0x0000f9b6 mov.w r3, 0                       |     r3 = 0;
                                                 |     if (r2 == r3) {
    0x0000f9ba bne 0xf9e4                        |         
    0x0000f9bc add sp, 0xc                       |         
    0x0000f9be pop.w {r4, r5, r6, r7, lr}        |         
    0x0000f9c2 b 0xf6e8                          |         void (*0xf6e8)() ();
                                                 | label_5:
    0x0000f9c4 ldr r1, [pc, 0x3c]                |         
    0x0000f9c6 add r1, pc                        |         r1 = 0x1f3ce;
    0x0000f9c8 b 0xf976                          |         goto label_0;
                                                 | label_2:
    0x0000f9ca ldr r1, [pc, 0x3c]                |         
    0x0000f9cc mov r2, r4                        |         r2 = r4;
    0x0000f9ce movs r0, 2                        |         r0 = 2;
    0x0000f9d0 add r1, pc                        |         r1 = 0x1f3de;
    0x0000f9d2 bl 0xfcdc                         |         r0 = fcn_0000fcdc (r0);
    0x0000f9d6 blx 0x2f88                        |         cxa_finalize ();
    0x0000f9da movs r3, 0xc                      |         r3 = 0xc;
    0x0000f9dc mov r2, r0                        |         r2 = r0;
    0x0000f9de str r3, [r2]                      |         *(r2) = r3;
    0x0000f9e0 mov r0, r3                        |         r0 = r3;
    0x0000f9e2 b 0xf988                          |         goto label_1;
                                                 |     }
                                                 | label_7:
    0x0000f9e4 blx 0x2cdc                        |     r0 = fprintf_chk ()
    0x0000f9e8 sbfx r0, r0, 0, 2                 |     __asm ("sbfx r0, r0, 0, 2");
    0x0000f9ec lsls r4, r1, 0xd                  |     r4 = r1 << 0xd;
    0x0000f9ee movs r0, r0                       |     
    0x0000f9f0 subs r2, 0x82                     |     r2 -= 0x82;
    0x0000f9f2 movs r2, r0                       |     r2 = r0;
    0x0000f9f4 subs r2, 0x2e                     |     r2 -= 0x2e;
    0x0000f9f6 movs r2, r0                       |     r2 = r0;
    0x0000f9f8 stm r4!, {r5}                     |     *(r4!) = r5;
    0x0000f9fa movs r0, r0                       |     
    0x0000f9fc invalid                           |     
                                                 | }
    ; assembly                                                       | /* r2dec pseudo code output */
                                                                     | /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/sbin/fwmgr @ 0xfa88 */
                                                                     | #include <stdint.h>
                                                                     |  
    ; (fcn) fcn.0000fa88 ()                                          | void fcn_0000fa88 (int16_t arg_ch, int16_t arg_204h, int16_t arg_404h, int16_t arg_414h, int16_t arg1) {
                                                                     |     int16_t var_0h;
                                                                     |     int16_t var_8h;
                                                                     |     int16_t var_ch;
                                                                     |     int16_t var_14h;
                                                                     |     r0 = arg1;
    0x0000fa88 invalid                                               |     
    0x0000fa8c ldr r3, [pc, 0x1c0]                                   |     
    0x0000fa8e push.w {r4, r5, r6, r7, r8, sb, sl, fp, lr}           |     
    0x0000fa92 mov fp, r0                                            |     
    0x0000fa94 ldr r5, [pc, 0x1bc]                                   |     
    0x0000fa96 add r2, pc                                            |     r2 += pc;
    0x0000fa98 subw sp, sp, 0x41c                                    |     __asm ("subw sp, sp, 0x41c");
    0x0000fa9c ldr r3, [r2, r3]                                      |     r3 = *((r2 + r3));
    0x0000fa9e add r5, pc                                            |     r5 = 0x1f6f6;
    0x0000faa0 ldr r4, [pc, 0x1b4]                                   |     
    0x0000faa2 mov r0, r5                                            |     r0 = r5;
    0x0000faa4 ldr r3, [r3]                                          |     r3 = *(0xfc50);
    0x0000faa6 str.w r3, [sp, 0x414]                                 |     __asm ("str.w r3, [arg_414h]");
    0x0000faaa mov.w r3, 0                                           |     r3 = 0;
    0x0000faae blx 0x2730                                            |     r0 = open (r0, r1, r2);
    0x0000fab2 subs r6, r0, 0                                        |     r6 = r0 - 0;
    0x0000fab4 add r4, pc                                            |     r4 = 0x1f710;
                                                                     |     if (r6 < r0) {
    0x0000fab6 blt.w 0xfc34                                          |         goto label_5;
                                                                     |     }
    0x0000faba ldr r3, [pc, 0x1a0]                                   |     r3 = *(0xfc5e);
    0x0000fabc mov.w r7, 0x200                                       |     r7 = 0x200;
    0x0000fac0 ldr r1, [pc, 0x19c]                                   |     
    0x0000fac2 mov r8, r7                                            |     r8 = r7;
    0x0000fac4 ldr r0, [r4, r3]                                      |     r0 = *((r4 + r3));
    0x0000fac6 add r1, pc                                            |     r1 = 0x1f72a;
    0x0000fac8 blx 0x2f70                                            |     r0 = vdprintf_chk ();
    0x0000facc cmp r0, 0                                             |     
                                                                     |     if (r0 == 0) {
    0x0000face beq.w 0xfbd8                                          |         goto label_6;
                                                                     |     }
                                                                     | label_3:
    0x0000fad2 ldr r3, [pc, 0x190]                                   |     
    0x0000fad4 movs r4, 0                                            |     r4 = 0;
    0x0000fad6 movs r2, 0                                            |     r2 = 0;
    0x0000fad8 mov r1, r4                                            |     r1 = r4;
    0x0000fada mov r0, r6                                            |     r0 = r6;
    0x0000fadc movw sb, 0xb007                                       |     
    0x0000fae0 add r3, pc                                            |     r3 = 0x1f74a;
    0x0000fae2 movt sb, 0xa815                                       |     sb = 0xa815b007;
    0x0000fae6 str r3, [sp, 8]                                       |     var_8h = r3;
    0x0000fae8 mov sl, r4                                            |     sl = r4;
    0x0000faea ldr r3, [pc, 0x17c]                                   |     
    0x0000faec add r3, pc                                            |     r3 = 0x1f75a;
    0x0000faee str r3, [sp, 0xc]                                     |     var_ch = r3;
    0x0000faf0 blx 0x2e04                                            |     r0 = fcn_00002e04 ();
    0x0000faf4 cmp r4, r0                                            |     
                                                                     |     if (r4 != r0) {
    0x0000faf6 bne 0xfb3e                                            |         goto label_7;
                                                                     |     }
                                                                     |     do {
    0x0000faf8 add r5, sp, 0x14                                      |         r5 += var_14h;
    0x0000fafa mov.w r3, 0x400                                       |         r3 = 0x400;
    0x0000fafe mov r2, r7                                            |         r2 = r7;
    0x0000fb00 mov r1, r5                                            |         r1 = r5;
    0x0000fb02 mov r0, r6                                            |         r0 = r6;
    0x0000fb04 blx 0x2a80                                            |         r0 = fcn_00002a80 ();
    0x0000fb08 cmp r0, 0                                             |         
                                                                     |         if (r0 < 0) {
    0x0000fb0a blt.w 0xfc18                                          |             goto label_8;
                                                                     |         }
    0x0000fb0e cmp r0, r7                                            |         
                                                                     |         if (r0 <= r7) {
    0x0000fb10 blo 0xfbf2                                            |             goto label_9;
                                                                     |         }
    0x0000fb12 cmp.w r8, 0x400                                       |         
                                                                     |         if (r8 <= 0x400) {
    0x0000fb16 blo 0xfba0                                            |             goto label_10;
                                                                     |         }
                                                                     | label_1:
    0x0000fb18 ldr.w r3, [r5, 0x1f0]                                 |         r3 = *((r5 + 0x1f0));
    0x0000fb1c cmp r3, sb                                            |         
                                                                     |         if (r3 == sb) {
    0x0000fb1e beq 0xfb60                                            |             goto label_11;
                                                                     |         }
    0x0000fb20 ldr.w r3, [r5, 0x3f0]                                 |         r3 = *((r5 + 0x3f0));
    0x0000fb24 cmp r3, sb                                            |         
    0x0000fb26 it eq                                                 |         
                                                                     |         if (r3 == sb) {
    0x0000fb28 addweq r5, sp, 0x404                                  |             __asm ("addweq r5, arg_404h");
                                                                     |         }
                                                                     |         if (r3 == sb) {
    0x0000fb2c beq 0xfb62                                            |             goto label_12;
                                                                     |         }
    0x0000fb2e add r4, r8                                            |         r4 += r8;
                                                                     | label_0:
    0x0000fb30 movs r2, 0                                            |         r2 = 0;
    0x0000fb32 mov r1, r4                                            |         r1 = r4;
    0x0000fb34 mov r0, r6                                            |         r0 = r6;
    0x0000fb36 blx 0x2e04                                            |         r0 = fcn_00002e04 ();
    0x0000fb3a cmp r4, r0                                            |         
    0x0000fb3c beq 0xfaf8                                            |         
                                                                     |     } while (r4 == r0);
                                                                     | label_7:
    0x0000fb3e ldr r0, [pc, 0x12c]                                   |     
    0x0000fb40 mov r3, r4                                            |     r3 = r4;
    0x0000fb42 ldr r1, [pc, 0x12c]                                   |     
    0x0000fb44 mov r2, r4                                            |     r2 = r4;
    0x0000fb46 add r0, pc                                            |     r0 = 0x1f7b8;
    0x0000fb48 add r1, pc                                            |     r1 = 0x1f7be;
    0x0000fb4a str r0, [sp]                                          |     *(sp) = r0;
    0x0000fb4c movs r0, 2                                            |     r0 = 2;
    0x0000fb4e bl 0xfcdc                                             |     fcn_0000fcdc (r0);
    0x0000fb52 mov r0, r6                                            |     r0 = r6;
    0x0000fb54 bl 0x10978                                            |     r0 = fcn_00010978 (r0);
    0x0000fb58 blx 0x2f88                                            |     r0 = cxa_finalize ();
    0x0000fb5c ldr r0, [r0]                                          |     r0 = *(r0);
    0x0000fb5e b 0xfbfa                                              |     goto label_4;
                                                                     | label_11:
    0x0000fb60 add r5, sp, 0x204                                     |     r5 += arg_204h;
                                                                     | label_12:
    0x0000fb62 cmp.w sl, 0                                           |     
                                                                     |     if (sl != 0) {
    0x0000fb66 bne 0xfbb0                                            |         goto label_13;
                                                                     |     }
    0x0000fb68 ldrb r3, [r5, 8]                                      |     r3 = *((r5 + 8));
    0x0000fb6a movs r0, 7                                            |     r0 = 7;
    0x0000fb6c ldrb r2, [r5, 9]                                      |     r2 = *((r5 + 9));
    0x0000fb6e ldr r1, [sp, 8]                                       |     r1 = var_8h;
    0x0000fb70 and r3, r3, 0xf                                       |     r3 &= 0xf;
    0x0000fb74 str r2, [sp]                                          |     *(sp) = r2;
    0x0000fb76 movs r2, 1                                            |     r2 = 1;
    0x0000fb78 bl 0xfcdc                                             |     fcn_0000fcdc (r0);
    0x0000fb7c ldrb r2, [r5, 8]                                      |     r2 = *((r5 + 8));
    0x0000fb7e mov r3, fp                                            |     r3 = fp;
    0x0000fb80 and r2, r2, 0xf                                       |     r2 &= 0xf;
                                                                     | label_2:
    0x0000fb84 str r2, [r3]                                          |     *(r3) = r2;
    0x0000fb86 ldrsb.w r2, [r5, 8]                                   |     r2 = *((r5 + 8));
    0x0000fb8a ldrb r1, [r5, 9]                                      |     r1 = *((r5 + 9));
    0x0000fb8c cmp r2, 0                                             |     
    0x0000fb8e str r1, [r3, 4]                                       |     *((r3 + 4)) = r1;
    0x0000fb90 mov.w r1, 1                                           |     r1 = 1;
    0x0000fb94 strb r1, [r3, 8]                                      |     *((r3 + 8)) = r1;
                                                                     |     if (r2 >= 0) {
    0x0000fb96 bge 0xfbf2                                            |         goto label_9;
                                                                     |     }
                                                                     |     do {
    0x0000fb98 mov.w sl, 1                                           |         sl = 1;
    0x0000fb9c add r4, r8                                            |         r4 += r8;
    0x0000fb9e b 0xfb30                                              |         goto label_0;
                                                                     | label_10:
    0x0000fba0 mov.w r3, 0x400                                       |         r3 = 0x400;
    0x0000fba4 movs r1, 0                                            |         r1 = 0;
    0x0000fba6 subs r2, r3, r7                                       |         r2 = r3 - r7;
    0x0000fba8 mov r0, r5                                            |         r0 = r5;
    0x0000fbaa blx 0x2fa0                                            |         fdopendir ();
    0x0000fbae b 0xfb18                                              |         goto label_1;
                                                                     | label_13:
    0x0000fbb0 ldrsb.w r3, [r5, 8]                                   |         r3 = *((r5 + 8));
    0x0000fbb4 cmp r3, 0                                             |         
    0x0000fbb6 blt 0xfb98                                            |         
                                                                     |     } while (r3 < 0);
    0x0000fbb8 ldrb r3, [r5, 8]                                      |     r3 = *((r5 + 8));
    0x0000fbba movs r0, 7                                            |     r0 = 7;
    0x0000fbbc ldrb r2, [r5, 9]                                      |     r2 = *((r5 + 9));
    0x0000fbbe ldr r1, [sp, 0xc]                                     |     r1 = var_ch;
    0x0000fbc0 and r3, r3, 0xf                                       |     r3 &= 0xf;
    0x0000fbc4 str r2, [sp]                                          |     *(sp) = r2;
    0x0000fbc6 movs r2, 2                                            |     r2 = 2;
    0x0000fbc8 bl 0xfcdc                                             |     fcn_0000fcdc (r0);
    0x0000fbcc ldrb r2, [r5, 8]                                      |     r2 = *((r5 + 8));
    0x0000fbce add.w r3, fp, 0xc                                     |     r3 += arg_ch;
    0x0000fbd2 and r2, r2, 0xf                                       |     r2 &= 0xf;
    0x0000fbd4 lsls r7, r1, 8                                        |     r7 = r1 << 8;
    0x0000fbd6 b 0xfb84                                              |     goto label_2;
                                                                     | label_6:
    0x0000fbd8 ldr r3, [pc, 0x98]                                    |     
    0x0000fbda ldr r3, [r4, r3]                                      |     r3 = *((r4 + r3));
    0x0000fbdc ldr r3, [r3]                                          |     
    0x0000fbde ldr r3, [r3, 0x70]                                    |     r3 = *(0xfce4);
    0x0000fbe0 blx r3                                                |     r0 = uint32_t (*r3)(uint32_t) (r3);
    0x0000fbe2 cmp.w r0, 0x400                                       |     
    0x0000fbe6 mov r7, r0                                            |     r7 = r0;
    0x0000fbe8 mov r8, r0                                            |     r8 = r0;
    0x0000fbea it hs                                                 |     
                                                                     |     if (r0 < 0x400) {
    0x0000fbec movhs r7, 0x400                                       |         r7 = 0x400;
                                                                     |     }
    0x0000fbf0 b 0xfad2                                              |     goto label_3;
                                                                     | label_9:
    0x0000fbf2 mov r0, r6                                            |     r0 = r6;
    0x0000fbf4 blx 0x2bf8                                            |     EVP_PKEY_verify_init ();
    0x0000fbf6 invalid                                               |     
                                                                     |     do {
                                                                     | label_4:
    0x0000fbfa ldr r2, [pc, 0x7c]                                    |         
    0x0000fbfc ldr r3, [pc, 0x50]                                    |         r3 = *(0xfc50);
    0x0000fbfe add r2, pc                                            |         r2 = 0x1f87c;
    0x0000fc00 ldr r3, [r2, r3]                                      |         r3 = *(0x1f87c);
    0x0000fc02 ldr r2, [r3]                                          |         r2 = *(0x1f87c);
    0x0000fc04 ldr.w r3, [sp, 0x414]                                 |         r3 = *(arg_414h);
    0x0000fc08 eors r2, r3                                           |         r2 ^= r3;
    0x0000fc0a mov.w r3, 0                                           |         r3 = 0;
                                                                     |         if (r2 != r3) {
    0x0000fc0e bne 0xfc48                                            |             goto label_14;
                                                                     |         }
    0x0000fc10 addw sp, sp, 0x41c                                    |         __asm ("addw sp, var_0h");
    0x0000fc14 pop.w {r4, r5, r6, r7, r8, sb, sl, fp, pc}            |         
                                                                     | label_8:
    0x0000fc18 ldr r2, [pc, 0x60]                                    |         
    0x0000fc1a movs r0, 2                                            |         r0 = 2;
    0x0000fc1c ldr r1, [pc, 0x60]                                    |         
    0x0000fc1e add r2, pc                                            |         r2 = 0x1f89e;
    0x0000fc20 add r1, pc                                            |         r1 = 0x1f8a4;
    0x0000fc22 bl 0xfcdc                                             |         fcn_0000fcdc (r0);
    0x0000fc26 mov r0, r6                                            |         r0 = r6;
    0x0000fc28 bl 0x10978                                            |         r0 = fcn_00010978 (r0);
    0x0000fc2c blx 0x2f88                                            |         r0 = cxa_finalize ();
    0x0000fc30 ldr r0, [r0]                                          |         r0 = *(r0);
    0x0000fc32 b 0xfbfa                                              |         
                                                                     |     } while (1);
                                                                     | label_5:
    0x0000fc34 ldr r1, [pc, 0x4c]                                    |     
    0x0000fc36 mov r2, r5                                            |     r2 = r5;
    0x0000fc38 movs r0, 2                                            |     r0 = 2;
    0x0000fc3a add r1, pc                                            |     r1 = 0x1f8c2;
    0x0000fc3c bl 0xfcdc                                             |     r0 = fcn_0000fcdc (r0);
    0x0000fc40 blx 0x2f88                                            |     r0 = cxa_finalize ();
    0x0000fc44 ldr r0, [r0]                                          |     r0 = *(r0);
    0x0000fc46 b 0xfbfa                                              |     goto label_4;
                                                                     | label_14:
    0x0000fc48 blx 0x2cdc                                            |     fprintf_chk ()
    0x0000fc4c sub.w r0, r6, 1                                       |     r0 = r6 - 1;
    0x0000fc50 lsls r4, r1, 0xd                                      |     r4 = r1 << 0xd;
    0x0000fc52 movs r0, r0                                           |     
    0x0000fc54 stm r3!, {r1, r4}                                     |     *(r3!) = r1;
                                                                     |     *((r3! + 4)) = r4;
    0x0000fc56 movs r0, r0                                           |     
    0x0000fc58 invalid                                               |     
                                                                     | }


r2dec has crashed (info: /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/sbin/fwmgr @ 0xfcdc).
Please report the bug at https://github.com/radareorg/r2dec-js/issues
Use the option '--issue' or the command 'pddi' to generate 
the needed data for the issue.


r2dec has crashed (info: /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/sbin/fwmgr @ 0xfe74).
Please report the bug at https://github.com/radareorg/r2dec-js/issues
Use the option '--issue' or the command 'pddi' to generate 
the needed data for the issue.


r2dec has crashed (info: /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/sbin/fwmgr @ 0x10130).
Please report the bug at https://github.com/radareorg/r2dec-js/issues
Use the option '--issue' or the command 'pddi' to generate 
the needed data for the issue.
    ; assembly                           | /* r2dec pseudo code output */
                                         | /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/sbin/fwmgr @ 0x10420 */
                                         | #include <stdint.h>
                                         |  
    ; (fcn) fcn.00010420 ()              | void fcn_00010420 (int16_t arg1, int16_t arg2) {
                                         |     int16_t var_4h;
                                         |     int16_t var_44h;
                                         |     r0 = arg1;
                                         |     r1 = arg2;
    0x00010420 invalid                   |     
    0x00010424 ldr r4, [pc, 0x54]        |     
    0x00010426 mov r0, r1                |     r0 = r1;
    0x00010428 sub sp, 0x48              |     
    0x0001042a movs r3, 0                |     r3 = 0;
    0x0001042c ldr r1, [pc, 0x50]        |     r1 = *(0x10480);
    0x0001042e add r6, sp, 4             |     r6 += var_4h;
    0x00010430 add r4, pc                |     r4 = 0x208b0;
    0x00010432 movs r2, 0x40             |     r2 = 0x40;
    0x00010434 ldr r1, [r4, r1]          |     
    0x00010436 ldr r1, [r1]              |     r1 = *(0x208b0);
    0x00010438 str r1, [sp, 0x44]        |     var_44h = r1;
    0x0001043a mov.w r1, 0               |     r1 = 0;
    0x0001043c lsls r0, r0, 4            |     r0 <<= 4;
    0x0001043e mov r1, r6                |     r1 = r6;
    0x00010440 bl 0x103f4                |     r0 = fcn_000103f4 (r0, r1, r2, r3);
                                         |     if (r0 == 0) {
    0x00010444 cbz r0, 0x10466           |         goto label_0;
                                         |     }
    0x00010446 blx 0x2f88                |     r0 = cxa_finalize ();
    0x0001044a ldr r4, [r0]              |     r4 = *(r0);
                                         |     do {
    0x0001044c ldr r2, [pc, 0x34]        |         
    0x0001044e ldr r3, [pc, 0x30]        |         r3 = *(0x10482);
    0x00010450 add r2, pc                |         r2 = 0x208d8;
    0x00010452 ldr r3, [r2, r3]          |         r3 = *(0x208d8);
    0x00010454 ldr r2, [r3]              |         r2 = *(0x208d8);
    0x00010456 ldr r3, [sp, 0x44]        |         r3 = var_44h;
    0x00010458 eors r2, r3               |         r2 ^= r3;
    0x0001045a mov.w r3, 0               |         r3 = 0;
                                         |         if (r2 != r3) {
    0x0001045e bne 0x10476               |             goto label_1;
                                         |         }
    0x00010460 mov r0, r4                |         r0 = r4;
    0x00010462 add sp, 0x48              |         
    0x00010464 pop {r4, r5, r6, pc}      |         
                                         | label_0:
    0x00010466 mov r2, r0                |         r2 = r0;
    0x00010468 mov r1, r0                |         r1 = r0;
    0x0001046a mov r4, r0                |         r4 = r0;
    0x0001046c mov r0, r6                |         r0 = r6;
    0x0001046e blx 0x2ae4                |         xpg_basename ();
    0x00010472 str r0, [r5]              |         *(r5) = r0;
    0x00010474 b 0x1044c                 |         
                                         |     } while (1);
                                         | label_1:
    0x00010476 blx 0x2cdc                |     fprintf_chk ()
    0x0001047a nop                       |     
    0x0001047c invalid                   |     
                                         | }
    ; assembly                               | /* r2dec pseudo code output */
                                             | /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/sbin/fwmgr @ 0x10604 */
                                             | #include <stdint.h>
                                             |  
    ; (fcn) fcn.00010604 ()                  | void fcn_00010604 (uint32_t arg1) {
                                             |     int16_t var_0h;
                                             |     int16_t var_4h;
                                             |     int16_t var_8h;
                                             |     int16_t var_ch;
                                             |     int16_t var_10h;
                                             |     int16_t var_18h;
                                             |     int16_t var_1ch;
                                             |     int16_t var_20h;
                                             |     int16_t var_24h;
                                             |     int16_t var_28h;
                                             |     int16_t var_2ch;
                                             |     r0 = arg1;
                                             |     if (? != ?) {
                                             | label_3:
    0x00010334 andeq fp, r0, sl, lsr 25      |         
                                             |     }
    0x00010604 ldr r3, [pc, 0xd0]            |     
    0x00010606 ldr r1, [pc, 0xd4]            |     
    0x00010608 ldr r2, [pc, 0xd4]            |     r2 = *(0x106e0);
    0x0001060a add r3, pc                    |     r3 = 0x20ce6;
    0x0001060c push {r4, r5, lr}             |     
    0x0001060e ldrb.w r3, [r3, 0x14c]        |     r3 = *((r3 + 0x14c));
    0x00010612 add r1, pc                    |     r1 = 0x20cf4;
    0x00010614 sub sp, 0x34                  |     
    0x00010616 ldr r2, [r1, r2]              |     
    0x00010618 cmp r3, r0                    |     
    0x0001061a ldr r2, [r2]                  |     r2 = *(0x20cf4);
    0x0001061c str r2, [sp, 0x2c]            |     var_2ch = r2;
    0x0001061e mov.w r2, 0                   |     r2 = 0;
                                             |     if (r3 == r0) {
    0x00010622 beq 0x10686                   |         goto label_2;
                                             |     }
    0x00010624 mov r4, r0                    |     r4 = r0;
    0x00010626 movs r5, 0                    |     r5 = 0;
    0x00010628 add r0, sp, 0x18              |     r0 += var_18h;
    0x0001062a str r5, [sp, 0x18]            |     var_18h = r5;
    0x0001062c blx 0x2b14                    |     r0 = explicit_bzero_chk ();
    0x00010630 cmp r0, 0                     |     
                                             |     if (r0 < 0) {
    0x00010632 blt 0x106b8                   |         goto label_4;
                                             |     }
    0x00010634 ldr r0, [sp, 0x18]            |     r0 = var_18h;
    0x00010636 strd r5, r5, [sp, 0x20]       |     __asm ("strd r5, r5, [sp, 0x20]");
    0x0001063a str r5, [sp, 0x28]            |     var_28h = r5;
    0x0001063c str r5, [sp, 0x1c]            |     var_1ch = r5;
    0x0001063e cmp r4, 0                     |     
                                             |     if (r4 != 0) {
    0x00010640 bne 0x1069e                   |         goto label_5;
                                             |     }
    0x00010642 ldr r1, [pc, 0xa0]            |     
    0x00010644 add r1, pc                    |     r1 = 0x20d2e;
                                             |     do {
    0x00010646 ldr r2, [pc, 0xa0]            |         
    0x00010648 add r5, sp, 0x20              |         r5 += var_20h;
    0x0001064a ldr r3, [pc, 0xa0]            |         
    0x0001064c str r1, [sp]                  |         *(sp) = r1;
    0x0001064e add r2, pc                    |         r2 = 0x20d3c;
    0x00010650 str r5, [sp, 4]               |         var_4h = r5;
    0x00010652 str r2, [sp, 0x10]            |         var_10h = r2;
    0x00010654 add r3, pc                    |         r3 = 0x20d46;
    0x00010656 ldr r2, [pc, 0x98]            |         
    0x00010658 mov r1, r3                    |         r1 = r3;
    0x0001065a add r2, pc                    |         r2 = 0x20d50;
    0x0001065c str r2, [sp, 0xc]             |         var_ch = r2;
    0x0001065e add r2, sp, 0x1c              |         r2 += var_1ch;
    0x00010660 str r2, [sp, 8]               |         var_8h = r2;
    0x00010662 ldr r2, [pc, 0x90]            |         
    0x00010664 add r2, pc                    |         r2 = 0x20d5e;
    0x00010666 blx 0x2d0c                    |         r0 = sd_bus_request_name ();
    0x0001066a cmp r0, 0                     |         
                                             |         if (r0 < 0) {
    0x0001066c blt 0x106a4                   |             goto label_6;
                                             |         }
                                             | label_0:
    0x0001066e ldr r3, [pc, 0x88]            |         
    0x00010670 ldr r0, [sp, 0x1c]            |         r0 = var_1ch;
    0x00010672 add r3, pc                    |         r3 = 0x20d70;
    0x00010674 strb.w r4, [r3, 0x14c]        |         *((r3 + 0x14c)) = r4;
                                             |         if (r0 != 0) {
    0x00010678 cbz r0, 0x1067e               |             
    0x0001067a blx 0x2a5c                    |             fcn_00002a5c ();
                                             |         }
    0x0001067e ldr r0, [sp, 0x18]            |         r0 = var_18h;
                                             |         if (r0 != 0) {
    0x00010680 cbz r0, 0x10686               |             
                                             | label_1:
    0x00010682 blx 0x2ba4                    |             bind (r0, r1, r2);
                                             |         }
                                             | label_2:
    0x00010686 ldr r2, [pc, 0x74]            |         
    0x00010688 ldr r3, [pc, 0x54]            |         r3 = *(0x106e0);
    0x0001068a add r2, pc                    |         r2 = 0x20d8c;
    0x0001068c ldr r3, [r2, r3]              |         r3 = *(0x20d8c);
    0x0001068e ldr r2, [r3]                  |         r2 = *(0x20d8c);
    0x00010690 ldr r3, [sp, 0x2c]            |         r3 = var_2ch;
    0x00010692 eors r2, r3                   |         r2 ^= r3;
    0x00010694 mov.w r3, 0                   |         r3 = 0;
                                             |         if (r2 != r3) {
    0x00010698 bne 0x106d2                   |             goto label_7;
                                             |         }
    0x0001069a add sp, 0x34                  |         
    0x0001069c pop {r4, r5, pc}              |         
                                             | label_5:
    0x0001069e ldr r1, [pc, 0x60]            |         
    0x000106a0 add r1, pc                    |         r1 = 0x20da6;
    0x000106a2 b 0x10646                     |         
                                             |     } while (1);
                                             | label_6:
    0x000106a4 ldr r1, [pc, 0x5c]            |     
    0x000106a6 movs r0, 4                    |     r0 = 4;
    0x000106a8 ldr r2, [sp, 0x24]            |     r2 = var_24h;
    0x000106aa add r1, pc                    |     r1 = 0x20db2;
    0x000106ac bl 0xfcdc                     |     fcn_0000fcdc (r0);
    0x000106b0 mov r0, r5                    |     r0 = r5;
    0x000106b2 blx 0x2dc4                    |     fcn_00002dc4 ();
    0x000106b6 b 0x1066e                     |     goto label_0;
                                             | label_4:
    0x000106b8 rsbs r0, r0, 0                |     r0 -= ;
    0x000106ba blx 0x273c                    |     strerror (r0);
    0x000106be ldr r1, [pc, 0x48]            |     
    0x000106c0 mov r2, r0                    |     r2 = r0;
    0x000106c2 movs r0, 4                    |     r0 = 4;
    0x000106c4 add r1, pc                    |     r1 = 0x20dd2;
    0x000106c6 bl 0xfcdc                     |     fcn_0000fcdc (r0);
    0x000106ca ldr r0, [sp, 0x18]            |     r0 = var_18h;
    0x000106cc cmp r0, 0                     |     
                                             |     if (r0 != 0) {
    0x000106ce bne 0x10682                   |         goto label_1;
                                             |     }
    0x000106d0 b 0x10686                     |     goto label_2;
                                             | label_7:
    0x000106d2 blx 0x2cdc                    |     fprintf_chk ()
    0x000106d6 nop                           |     
    0x000106d8 cmp r5, 0x92                  |     
    0x000106da movs r2, r0                   |     r2 = r0;
    0x000106dc b 0x10334                     |     goto label_3;
                                             | }
    ; assembly                                       | /* r2dec pseudo code output */
                                                     | /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/sbin/fwmgr @ 0x10804 */
                                                     | #include <stdint.h>
                                                     |  
    ; (fcn) fcn.00010804 ()                          | void fcn_00010804 (char * arg1, int16_t arg2) {
                                                     |     int16_t var_4h;
                                                     |     int16_t var_404h;
                                                     |     r0 = arg1;
                                                     |     r1 = arg2;
                                                     | label_2:
    0x00010118 bkpt 0x82                             |     __asm ("bkpt 0x82");
    0x00010804 ldr r2, [pc, 0xb4]                    |     
    0x00010806 ldr r3, [pc, 0xb8]                    |     r3 = *(0x108c2);
    0x00010808 push.w {r4, r5, r6, r7, r8, lr}       |     
    0x0001080a rors r0, r6                           |     __asm ("rors r0, r6");
    0x0001080c sub.w sp, sp, 0x408                   |     
    0x00010810 add r2, pc                            |     r2 = 0x210d0;
    0x00010812 mov r7, r0                            |     r7 = r0;
    0x00010814 mov r8, r1                            |     r8 = r1;
    0x00010816 mov r4, r0                            |     r4 = r0;
    0x00010818 ldr r3, [r2, r3]                      |     
    0x0001081a add r6, sp, 4                         |     r6 += var_4h;
    0x0001081c ldr r3, [r3]                          |     r3 = *(0x210d0);
    0x0001081e str.w r3, [sp, 0x404]                 |     __asm ("str.w r3, [var_404h]");
    0x00010822 mov.w r3, 0                           |     r3 = 0;
                                                     |     do {
                                                     | label_0:
    0x00010826 adds r0, r4, 1                        |         r0 = r4 + 1;
    0x00010828 movs r1, 0x2f                         |         r1 = 0x2f;
    0x0001082a blx 0x28e4                            |         r0 = fcn_000028e4 ();
    0x0001082e mov r4, r0                            |         r4 = r0;
                                                     |         if (r0 == 0) {
    0x00010830 cbz r0, 0x1086e                       |             goto label_3;
                                                     |         }
    0x00010832 subs r5, r4, r7                       |         r5 = r4 - r7;
    0x00010834 mov.w r3, 0x400                       |         r3 = 0x400;
    0x00010838 mov r2, r5                            |         r2 = r5;
    0x0001083a mov r1, r7                            |         r1 = r7;
    0x0001083c mov r0, r6                            |         r0 = r6;
    0x0001083e blx 0x2a08                            |         fcn_00002a08 ();
    0x00010842 movs r3, 0                            |         r3 = 0;
    0x00010844 mov r1, r8                            |         r1 = r8;
    0x00010846 mov r0, r6                            |         r0 = r6;
    0x00010848 strb r3, [r6, r5]                     |         *((r6 + r5)) = r3;
    0x0001084a blx 0x276c                            |         r0 = mkdir ();
    0x0001084e cmp r0, 0                             |         
    0x00010850 bge 0x10826                           |         
                                                     |     } while (r0 >= 0);
    0x00010852 blx 0x2f88                            |     r0 = cxa_finalize ();
    0x00010856 ldr r3, [r0]                          |     r3 = *(r0);
    0x00010858 mov r5, r0                            |     r5 = r0;
    0x0001085a cmp r3, 0x11                          |     
                                                     |     if (r3 == 0x11) {
    0x0001085c beq 0x10826                           |         goto label_0;
                                                     |     }
    0x0001085e ldr r1, [pc, 0x64]                    |     
    0x00010860 movs r0, 2                            |     r0 = 2;
    0x00010862 mov r2, r6                            |     r2 = r6;
    0x00010864 add r1, pc                            |     r1 = 0x2112e;
    0x00010866 bl 0xfcdc                             |     fcn_0000fcdc (r0);
    0x00010868 invalid                               |     
    0x0001086c b 0x1087c                             |     goto label_1;
                                                     | label_3:
    0x0001086e mov r1, r8                            |     r1 = r8;
    0x00010870 mov r0, r7                            |     r0 = r7;
    0x00010872 blx 0x276c                            |     r0 = mkdir ();
    0x00010876 cmp r0, 0                             |     
    0x00010878 blt 0x1089a                           |     
                                                     |     while (r3 == 0x11) {
    0x0001087a mov r0, r4                            |         r0 = r4;
                                                     | label_1:
    0x0001087c ldr r2, [pc, 0x48]                    |         
    0x0001087e ldr r3, [pc, 0x40]                    |         r3 = *(0x108c2);
    0x00010880 add r2, pc                            |         r2 = 0x2114c;
    0x00010882 ldr r3, [r2, r3]                      |         r3 = *(0x2114c);
    0x00010884 ldr r2, [r3]                          |         r2 = *(0x2114c);
    0x00010886 ldr.w r3, [sp, 0x404]                 |         r3 = var_404h;
    0x0001088a eors r2, r3                           |         r2 ^= r3;
    0x0001088c mov.w r3, 0                           |         r3 = 0;
                                                     |         if (r2 != r3) {
    0x00010890 bne 0x108b6                           |             goto label_4;
                                                     |         }
    0x00010892 add.w sp, sp, 0x408                   |         
    0x00010896 pop.w {r4, r5, r6, r7, r8, pc}        |         
    0x0001089a blx 0x2f88                            |         r0 = cxa_finalize ();
    0x0001089e ldr r3, [r0]                          |         r3 = *(r0);
    0x000108a0 mov r5, r0                            |         r5 = r0;
    0x000108a2 cmp r3, 0x11                          |         
    0x000108a4 beq 0x1087a                           |         
                                                     |     }
    0x000108a6 ldr r1, [pc, 0x24]                    |     
    0x000108a8 movs r0, 2                            |     r0 = 2;
    0x000108aa mov r2, r7                            |     r2 = r7;
    0x000108ac add r1, pc                            |     r1 = 0x2117e;
    0x000108ae bl 0xfcdc                             |     fcn_0000fcdc (r0);
    0x000108b2 ldr r0, [r5]                          |     r0 = *(r5);
    0x000108b4 b 0x1087c                             |     goto label_1;
                                                     | label_4:
    0x000108b6 blx 0x2cdc                            |     fprintf_chk ()
    0x000108ba nop                                   |     
    0x000108bc b 0x10118                             |     goto label_2;
                                                     | }
    ; assembly                           | /* r2dec pseudo code output */
                                         | /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/sbin/fwmgr @ 0x109d4 */
                                         | #include <stdint.h>
                                         |  
    ; (fcn) fcn.000109d4 ()              | void fcn_000109d4 (int16_t arg1) {
                                         |     int16_t var_0h;
                                         |     int16_t var_4h;
                                         |     char * s1;
                                         |     int16_t var_5ch;
                                         |     r0 = arg1;
    0x000109d4 push {r4, r5, lr}         |     
    0x000109d6 sub sp, 0x64              |     
    0x000109d8 str r0, [sp, 4]           |     var_4h = r0;
    0x000109da add r5, sp, 8             |     r5 += s1;
    0x000109dc movs r2, 0x54             |     r2 = 0x54;
    0x000109de ldr r0, [pc, 0x64]        |     
    0x000109e0 ldr r1, [pc, 0x64]        |     r1 = *(0x10a48);
    0x000109e2 ldr r4, [pc, 0x68]        |     
    0x000109e4 add r0, pc                |     r0 = 0x2142e;
    0x000109e6 ldr r3, [pc, 0x68]        |     
    0x000109e8 ldr r1, [r0, r1]          |     
    0x000109ea mov r0, r5                |     r0 = r5;
    0x000109ec add r4, pc                |     r4 = 0x2143e;
    0x000109ee adds r4, 0x10             |     r4 += 0x10;
    0x000109f0 add r3, pc                |     r3 = 0x21446;
    0x000109f2 ldr r1, [r1]              |     r1 = *(0x2142e);
    0x000109f4 str r1, [sp, 0x5c]        |     var_5ch = r1;
    0x000109f6 mov.w r1, 0               |     r1 = 0;
    0x000109fa movs r1, 1                |     r1 = 1;
    0x000109fc str r4, [sp]              |     *(sp) = r4;
    0x000109fe blx 0x2e80                |     strncmp (r0, r1, r2);
    0x00010a02 movw r1, 0x1ed            |     r1 = 0x1ed;
    0x00010a06 mov r0, r4                |     r0 = r4;
    0x00010a08 bl 0x10804                |     r0 = fcn_00010804 (r0, r1);
                                         |     if (r0 == 0) {
    0x00010a0c cbz r0, 0x10a2c           |         goto label_1;
                                         |     }
                                         | label_0:
    0x00010a0e blx 0x2f88                |     r0 = cxa_finalize ();
    0x00010a12 ldr r0, [r0]              |     r0 = *(r0);
                                         |     do {
    0x00010a14 ldr r2, [pc, 0x3c]        |         
    0x00010a16 ldr r3, [pc, 0x30]        |         r3 = *(0x10a4a);
    0x00010a18 add r2, pc                |         r2 = 0x21470;
    0x00010a1a ldr r3, [r2, r3]          |         r3 = *(0x21470);
    0x00010a1c ldr r2, [r3]              |         r2 = *(0x21470);
    0x00010a1e ldr r3, [sp, 0x5c]        |         r3 = var_5ch;
    0x00010a20 eors r2, r3               |         r2 ^= r3;
    0x00010a22 mov.w r3, 0               |         r3 = 0;
                                         |         if (r2 != r3) {
    0x00010a26 bne 0x10a3e               |             goto label_2;
                                         |         }
    0x00010a28 add sp, 0x64              |         
    0x00010a2a pop {r4, r5, pc}          |         
                                         | label_1:
    0x00010a2c mov r3, r0                |         r3 = r0;
    0x00010a2e mov r2, r0                |         r2 = r0;
    0x00010a30 mov r1, r0                |         r1 = r0;
    0x00010a32 mov r0, r5                |         r0 = r5;
    0x00010a34 bl 0x10488                |         r0 = fcn_00010488 (r0, r1, r2, r3);
    0x00010a38 cmp r0, 0                 |         
    0x00010a3a beq 0x10a14               |         
                                         |     } while (r0 == 0);
    0x00010a3c b 0x10a0e                 |     goto label_0;
                                         | label_2:
    0x00010a3e blx 0x2cdc                |     fprintf_chk ()
    0x00010a42 nop                       |     
    0x00010a44 b 0x10ef8                 |     
    0x00010ef8 add sp, 0x28              |     
    0x00010efa pop {r4, r5, r6, pc}      |     
                                         | }
    ; assembly                                                   | /* r2dec pseudo code output */
                                                                 | /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/sbin/fwmgr @ 0x10a58 */
                                                                 | #include <stdint.h>
                                                                 |  
    ; (fcn) fcn.00010a58 ()                                      | void fcn_00010a58 (int16_t arg_8ch, char * arg1, int16_t arg2) {
                                                                 |     int16_t var_114h;
                                                                 |     int16_t var_0h_2;
                                                                 |     int16_t var_ch_2;
                                                                 |     int16_t var_10h;
                                                                 |     char * var_1ch;
                                                                 |     void * s;
                                                                 |     int16_t var_5ch;
                                                                 |     int16_t var_14h_2;
                                                                 |     int16_t var_bch;
                                                                 |     int16_t var_34h_3;
                                                                 |     int16_t var_4h_3;
                                                                 |     int32_t var_4h_5;
                                                                 |     int32_t var_ch_4;
                                                                 |     int32_t var_ch_5;
                                                                 |     char * var_14h;
                                                                 |     int16_t var_0h_3;
                                                                 |     int16_t var_4h_4;
                                                                 |     int16_t var_8h;
                                                                 |     char * s1;
                                                                 |     int16_t var_34h_2;
                                                                 |     int16_t var_0h_4;
                                                                 |     char * path;
                                                                 |     int16_t var_24h;
                                                                 |     int16_t var_34h;
                                                                 |     int16_t var_0h;
                                                                 |     int16_t var_4h;
                                                                 |     int16_t var_ch;
                                                                 |     r0 = arg1;
                                                                 |     r1 = arg2;
                                                                 | label_17:
    0x000029c8 bx pc                                             |     return void (*pc)() ();
    0x00010a58 push {r4, r5, r6, lr}                             |     
    0x00010a5a mov r4, r0                                        |     r4 = r0;
    0x00010a5c ldr r6, [pc, 0xb4]                                |     
    0x00010a5e sub sp, 0x10                                      |     
    0x00010a60 mov.w r2, 0x100                                   |     r2 = 0x100;
    0x00010a64 add r3, sp, 4                                     |     r3 += var_4h;
    0x00010a66 ldr r5, [pc, 0xb0]                                |     r5 = *(0x10b1a);
    0x00010a68 movt r2, 0x304                                    |     r2 = (r2 & 0xFFFF) | 0x3040000;
    0x00010a6c add r6, pc                                        |     r6 = 0x21584;
    0x00010a6e ldr r0, [r1]                                      |     r0 = *(r1);
    0x00010a70 ldr r1, [r1, 4]                                   |     r1 = *((r1 + 4));
    0x00010a72 ldr r5, [r6, r5]                                  |     
    0x00010a74 ldr r5, [r5]                                      |     r5 = *(0x21584);
    0x00010a76 str r5, [sp, 0xc]                                 |     var_ch = r5;
    0x00010a78 mov.w r5, 0                                       |     r5 = 0;
    0x00010a7c stm r3!, {r0, r1}                                 |     *(r3!) = r0;
                                                                 |     *((r3! + 4)) = r1;
    0x00010a7e movw r1, 0x1ed                                    |     r1 = 0x1ed;
    0x00010a82 mov r0, r4                                        |     r0 = r4;
    0x00010a84 str r2, [sp]                                      |     *(sp) = r2;
    0x00010a86 blx 0x276c                                        |     mkdir ();
    0x00010a88 cdp p8, 7, c2, c2, c0, 0                          |     __asm ("cdp p8, 7, c2, c2, c0, 0");
                                                                 |     if (? < ?) {
    0x00010a8c bge 0x10a9a                                       |         
    0x00010a8e blx 0x2f88                                        |         r0 = cxa_finalize ();
    0x00010a92 ldr r3, [r0]                                      |         r3 = *(r0);
    0x00010a94 mov r5, r0                                        |         r5 = r0;
    0x00010a96 cmp r3, 0x11                                      |         
                                                                 |         if (r3 != 0x11) {
    0x00010a98 bne 0x10b00                                       |             goto label_18;
                                                                 |         }
                                                                 |     }
    0x00010a9a mov.w r1, 0x4000                                  |     r1 = 0x4000;
    0x00010a9e mov r0, r4                                        |     r0 = r4;
    0x00010aa0 blx 0x2730                                        |     r0 = open (r0, r1, r2);
    0x00010aa4 subs r6, r0, 0                                    |     r6 = r0 - 0;
                                                                 |     if (r6 < r0) {
    0x00010aa6 blt 0x10afa                                       |         goto label_19;
                                                                 |     }
    0x00010aa8 movw r1, 0x6613                                   |     
    0x00010aac mov r2, sp                                        |     r2 = sp;
    0x00010aae movt r1, 0x800c                                   |     r1 = 0x800c6613;
    0x00010ab2 blx 0x2a8c                                        |     fcn_00002a8c ();
    0x00010ab4 invalid                                           |     
    0x00010ab8 mov r0, r6                                        |     r0 = r6;
    0x00010aba bl 0x10978                                        |     fcn_00010978 (r0);
                                                                 |     if (r5 != 0) {
    0x00010abe cbnz r5, 0x10ae6                                  |         goto label_20;
                                                                 |     }
    0x00010ac0 ldr r1, [pc, 0x58]                                |     
    0x00010ac2 mov r2, r4                                        |     r2 = r4;
    0x00010ac4 movs r0, 7                                        |     r0 = 7;
    0x00010ac6 add r1, pc                                        |     r1 = 0x215e6;
    0x00010ac8 bl 0xfcdc                                         |     fcn_0000fcdc (r0);
                                                                 |     do {
                                                                 | label_1:
    0x00010acc ldr r2, [pc, 0x50]                                |         
    0x00010ace ldr r3, [pc, 0x48]                                |         r3 = *(0x10b1a);
    0x00010ad0 add r2, pc                                        |         r2 = 0x215f4;
    0x00010ad2 ldr r3, [r2, r3]                                  |         r3 = *(0x215f4);
    0x00010ad4 ldr r2, [r3]                                      |         r2 = *(0x215f4);
    0x00010ad6 ldr r3, [sp, 0xc]                                 |         r3 = var_ch;
    0x00010ad8 eors r2, r3                                       |         r2 ^= r3;
    0x00010ada mov.w r3, 0                                       |         r3 = 0;
                                                                 |         if (r2 != r3) {
    0x00010ade bne 0x10b10                                       |             goto label_21;
                                                                 |         }
    0x00010ae0 mov r0, r5                                        |         r0 = r5;
    0x00010ae2 add sp, 0x10                                      |         
    0x00010ae4 pop {r4, r5, r6, pc}                              |         
                                                                 | label_20:
    0x00010ae6 ldr r1, [pc, 0x3c]                                |         
    0x00010ae8 add r1, pc                                        |         r1 = 0x21612;
                                                                 | label_0:
    0x00010aea mov r2, r4                                        |         r2 = r4;
    0x00010aec movs r0, 3                                        |         r0 = 3;
    0x00010aee bl 0xfcdc                                         |         r0 = fcn_0000fcdc (r0);
    0x00010af2 blx 0x2f88                                        |         r0 = cxa_finalize ();
    0x00010af6 ldr r5, [r0]                                      |         r5 = *(r0);
    0x00010af8 b 0x10acc                                         |         
                                                                 |     } while (1);
                                                                 | label_19:
    0x00010afa ldr r1, [pc, 0x2c]                                |     
    0x00010afc add r1, pc                                        |     r1 = 0x2162a;
    0x00010afe b 0x10aea                                         |     goto label_0;
                                                                 | label_18:
    0x00010b00 ldr r1, [pc, 0x28]                                |     
    0x00010b02 mov r2, r4                                        |     r2 = r4;
    0x00010b04 movs r0, 3                                        |     r0 = 3;
    0x00010b06 add r1, pc                                        |     r1 = 0x21636;
    0x00010b08 bl 0xfcdc                                         |     fcn_0000fcdc (r0);
    0x00010b0a invalid                                           |     
    0x00010b0e b 0x10acc                                         |     goto label_1;
                                                                 | label_21:
    0x00010b10 blx 0x2cdc                                        |     fprintf_chk ()
    0x00010b14 b 0x10eb8                                         |     
    0x00010eb8 push {r1, r2, r4, r5, r7, lr}                     |     
    0x00010eba movs r0, r0                                       |     
    0x00010ebc ldr r2, [pc, 0x8c]                                |     
    0x00010ebe mov r1, r0                                        |     r1 = r0;
    0x00010ec0 ldr r3, [pc, 0x8c]                                |     r3 = *(0x10f50);
    0x00010ec2 push {r4, r5, r6, lr}                             |     
    0x00010ec4 sub sp, 0x28                                      |     
    0x00010ec6 add r2, pc                                        |     r2 = 0x21e16;
    0x00010ec8 add r5, sp, 4                                     |     r5 += path;
    0x00010eca mov r0, r5                                        |     r0 = r5;
    0x00010ecc ldr r3, [r2, r3]                                  |     r3 = *((r2 + r3));
    0x00010ece ldr r3, [r3]                                      |     r3 = *(r3);
    0x00010ed0 str r3, [sp, 0x24]                                |     var_24h = r3;
    0x00010ed2 mov.w r3, 0                                       |     r3 = 0;
    0x00010ed6 bl 0x10dac                                        |     r0 = fcn_00010dac (r0, r1, r2);
                                                                 |     if (r0 == 0) {
    0x00010eda cbz r0, 0x10efc                                   |         goto label_22;
                                                                 |     }
                                                                 | label_2:
    0x00010edc blx 0x2f88                                        |     r0 = cxa_finalize ();
    0x00010ee0 ldr r4, [r0]                                      |     r4 = *(r0);
                                                                 |     do {
    0x00010ee2 ldr r2, [pc, 0x70]                                |         
    0x00010ee4 ldr r3, [pc, 0x68]                                |         r3 = *(0x10f50);
    0x00010ee6 add r2, pc                                        |         r2 = 0x21e40;
    0x00010ee8 ldr r3, [r2, r3]                                  |         r3 = *(0x21e40);
    0x00010eea ldr r2, [r3]                                      |         r2 = *(0x21e40);
    0x00010eec ldr r3, [sp, 0x24]                                |         r3 = var_24h;
    0x00010eee eors r2, r3                                       |         r2 ^= r3;
    0x00010ef0 mov.w r3, 0                                       |         r3 = 0;
                                                                 |         if (r2 != r3) {
    0x00010ef4 bne 0x10f48                                       |             goto label_23;
                                                                 |         }
    0x00010ef6 mov r0, r4                                        |         r0 = r4;
                                                                 | label_22:
    0x00010efc mov r4, r0                                        |         r4 = r0;
    0x00010efe movs r1, 1                                        |         r1 = 1;
    0x00010f00 mov r0, r5                                        |         r0 = r5;
    0x00010f02 blx 0x2730                                        |         open (r0, r1, r2);
    0x00010f06 subs r6, r0, 0                                    |         r6 -= path;
                                                                 |         if (r6 < path) {
    0x00010f08 blt 0x10f26                                       |             goto label_24;
                                                                 |         }
    0x00010f0a movw r1, 0x4f01                                   |         
    0x00010f0e mov r2, sp                                        |         r2 = sp;
    0x00010f10 movt r1, 0x4004                                   |         r1 = 0x40044f01;
    0x00010f14 str r4, [sp]                                      |         *(sp) = r4;
    0x00010f16 blx 0x2a8c                                        |         r0 = fcn_00002a8c ();
    0x00010f1a mov r4, r0                                        |         r4 = r0;
                                                                 |         if (r0 != 0) {
    0x00010f1c cbnz r0, 0x10f34                                  |             goto label_25;
                                                                 |         }
                                                                 | label_3:
    0x00010f1e mov r0, r6                                        |         r0 = r6;
    0x00010f20 bl 0x10978                                        |         fcn_00010978 (r0);
    0x00010f24 b 0x10ee2                                         |         
                                                                 |     } while (1);
                                                                 | label_24:
    0x00010f26 ldr r1, [pc, 0x30]                                |     
    0x00010f28 mov r2, r5                                        |     r2 = r5;
    0x00010f2a movs r0, 3                                        |     r0 = 3;
    0x00010f2c add r1, pc                                        |     r1 = 0x21e8a;
    0x00010f2e bl 0xfcdc                                         |     fcn_0000fcdc (r0);
    0x00010f32 b 0x10edc                                         |     goto label_2;
                                                                 | label_25:
    0x00010f34 ldr r1, [pc, 0x24]                                |     
    0x00010f36 mov r2, r5                                        |     r2 = r5;
    0x00010f38 movs r0, 2                                        |     r0 = 2;
    0x00010f3a add r1, pc                                        |     r1 = 0x21e9a;
    0x00010f3c bl 0xfcdc                                         |     r0 = fcn_0000fcdc (r0);
    0x00010f40 blx 0x2f88                                        |     r0 = cxa_finalize ();
    0x00010f44 ldr r4, [r0]                                      |     r4 = *(r0);
    0x00010f46 b 0x10f1e                                         |     goto label_3;
                                                                 | label_23:
    0x00010f48 blx 0x2cdc                                        |     fprintf_chk ()
                                                                 |     if (r0 <= 2) {
    0x00010f4c ble 0x1103c                                       |         goto label_26;
                                                                 |     }
    0x00010f4e movs r1, r0                                       |     r1 = r0;
    0x00010f50 lsls r4, r1, 0xd                                  |     r4 = r1 << 0xd;
    0x00010f52 movs r0, r0                                       |     
                                                                 |     if (r0 <= r0) {
    0x00010f54 ble 0x11004                                       |         goto label_27;
                                                                 |     }
    0x00010f56 movs r1, r0                                       |     r1 = r0;
    0x00010f58 push {r2, r4, r5, lr}                             |     
    0x00010f5a movs r0, r0                                       |     
    0x00010f5c push {r1, r3, r6, lr}                             |     
    0x00010f5e movs r0, r0                                       |     
    0x00010f60 push.w {r4, r5, r6, r7, r8, sb, lr}               |     
                                                                 | label_7:
    0x00010f64 mov r3, r0                                        |     r3 = r0;
    0x00010f66 mov r6, r2                                        |     r6 = r2;
    0x00010f68 ldr r2, [pc, 0xa4]                                |     
    0x00010f6a mov r7, r1                                        |     r7 = r1;
    0x00010f6c mov r1, r3                                        |     r1 = r3;
    0x00010f6e ldr r3, [pc, 0xa4]                                |     r3 = *(0x11016);
    0x00010f70 sub sp, 0x3c                                      |     
    0x00010f72 add r2, pc                                        |     r2 = 0x21f86;
    0x00010f74 add.w r8, sp, 0x14                                |     r8 += var_14h;
    0x00010f76 lsrs r4, r2, 0x20                                 |     r4 = r2 >> 0x20;
    0x00010f78 mov r0, r8                                        |     r0 = r8;
    0x00010f7a ldr r3, [r2, r3]                                  |     
    0x00010f7c ldr r3, [r3]                                      |     r3 = *(0x21f86);
    0x00010f7e str r3, [sp, 0x34]                                |     var_34h_2 = r3;
    0x00010f80 mov.w r3, 0                                       |     r3 = 0;
    0x00010f84 bl 0x10dac                                        |     r0 = fcn_00010dac (r0, r1, r2);
    0x00010f88 mov r4, r0                                        |     r4 = r0;
    0x00010f8a blx 0x2f88                                        |     r0 = cxa_finalize ();
    0x00010f8e mov r5, r0                                        |     r5 = r0;
    0x00010f90 cbz r4, 0x10fb0                                   |     
                                                                 |     while (sb < var_14h) {
                                                                 | label_5:
    0x00010f92 ldr r4, [r5]                                      |         r4 = *(r5);
                                                                 | label_4:
    0x00010f94 ldr r2, [pc, 0x80]                                |         
    0x00010f96 ldr r3, [pc, 0x7c]                                |         r3 = *(0x11016);
    0x00010f98 add r2, pc                                        |         r2 = 0x21fb4;
    0x00010f9a ldr r3, [r2, r3]                                  |         r3 = *(0x21fb4);
    0x00010f9c ldr r2, [r3]                                      |         r2 = *(0x21fb4);
    0x00010f9e ldr r3, [sp, 0x34]                                |         r3 = var_34h;
    0x00010fa0 eors r2, r3                                       |         r2 ^= r3;
    0x00010fa2 mov.w r3, 0                                       |         r3 = 0;
                                                                 |         if (r2 != r3) {
    0x00010fa6 bne 0x1100a                                       |             goto label_28;
                                                                 |         }
                                                                 | label_6:
    0x00010fa8 mov r0, r4                                        |         r0 = r4;
    0x00010faa add sp, 0x3c                                      |         
    0x00010fac pop.w {r4, r5, r6, r7, r8, sb, pc}                |         
    0x00010fb0 movs r1, 1                                        |         r1 = 1;
    0x00010fb2 mov r0, r8                                        |         r0 = r8;
    0x00010fb4 blx 0x2730                                        |         open (r0, r1, r2);
    0x00010fb8 subs.w sb, r0, 0                                  |         sb -= var_14h;
    0x00010fbc blt 0x10f92                                       |         
                                                                 |     }
    0x00010fbe movw r1, 0x4f02                                   |     
    0x00010fc2 add r2, sp, 4                                     |     r2 += var_4h_3;
    0x00010fc4 movt r1, 0x4004                                   |     r1 = 0x40044f02;
    0x00010fc8 strd r4, r6, [sp, 4]                              |     __asm ("strd r4, r6, [var_4h_3]");
    0x00010fcc strd r4, r4, [sp, 0xc]                            |     __asm ("strd r4, r4, [var_ch_4]");
    0x00010fd0 blx 0x2a8c                                        |     r0 = fcn_00002a8c ();
    0x00010fd4 mov r4, r0                                        |     r4 = r0;
                                                                 |     if (r0 != 0) {
    0x00010fd6 cbnz r0, 0x10ff6                                  |         goto label_29;
                                                                 |     }
    0x00010fd8 cbnz r6, 0x10fe4                                  |     
                                                                 |     while (1) {
    0x00010fda mov r0, sb                                        |         r0 = sb;
    0x00010fdc blx 0x2bf8                                        |         EVP_PKEY_verify_init ();
    0x00010fe0 str r4, [r5]                                      |         *(r5) = r4;
    0x00010fe2 b 0x10f94                                         |         goto label_4;
    0x00010fe4 mov r2, r6                                        |         r2 = r6;
    0x00010fe6 mov r1, r7                                        |         r1 = r7;
    0x00010fe8 mov r0, sb                                        |         r0 = sb;
    0x00010fea blx 0x29e4                                        |         r0 = fcn_000029e4 ();
    0x00010fee cmp r0, 0                                         |         
    0x00010ff0 it lt                                             |         
                                                                 |         if (r0 >= 0) {
    0x00010ff2 ldrlt r4, [r5]                                    |             r4 = *(r5);
                                                                 |         }
    0x00010ff4 b 0x10fda                                         |         
                                                                 |     }
                                                                 | label_29:
    0x00010ff6 ldr r1, [pc, 0x24]                                |     
    0x00010ff8 mov r2, r8                                        |     r2 = r8;
    0x00010ffa movs r0, 3                                        |     r0 = 3;
    0x00010ffc add r1, pc                                        |     r1 = 0x2201e;
    0x00010ffe bl 0xfcdc                                         |     fcn_0000fcdc (r0);
    0x00011002 mov r0, sb                                        |     r0 = sb;
                                                                 | label_27:
    0x00011004 bl 0x10978                                        |     fcn_00010978 (r0);
    0x00011008 b 0x10f92                                         |     goto label_5;
                                                                 | label_28:
    0x0001100a blx 0x2cdc                                        |     fprintf_chk ()
    0x0001100e nop                                               |     
                                                                 |     if (r0 > 3) {
    0x00011010 bgt 0x10fa8                                       |         goto label_6;
                                                                 |     }
    0x00011012 movs r1, r0                                       |     r1 = r0;
    0x00011014 lsls r4, r1, 0xd                                  |     r4 = r1 << 0xd;
    0x00011016 movs r0, r0                                       |     
                                                                 |     if (r0 > r0) {
    0x00011018 bgt 0x10f64                                       |         goto label_7;
                                                                 |     }
    0x0001101a movs r1, r0                                       |     r1 = r0;
    0x0001101c push {r3, r5, r7}                                 |     
    0x0001101e movs r0, r0                                       |     
    0x00011020 ldr r2, [pc, 0x40]                                |     
    0x00011022 ldr r3, [pc, 0x44]                                |     r3 = *(0x1106a);
    0x00011024 ldr r1, [pc, 0x44]                                |     
    0x00011026 add r2, pc                                        |     r2 = 0x2208e;
    0x00011028 push {lr}                                         |     
    0x0001102a ldr r3, [r2, r3]                                  |     
    0x0001102c sub sp, 0xc                                       |     
    0x0001102e add r1, pc                                        |     r1 = 0x2209e;
    0x00011030 mov r0, sp                                        |     r0 = sp;
    0x00011032 ldr r3, [r3]                                      |     r3 = *(0x2208e);
    0x00011034 str r3, [sp, 4]                                   |     var_4h_4 = r3;
    0x00011036 mov.w r3, 0                                       |     r3 = 0;
    0x0001103a bl 0x10420                                        |     r0 = fcn_00010420 (r0, r1);
                                                                 | label_26:
    0x0001103c invalid                                           |     
                                                                 |     if (r0 != 0) {
    0x00011040 ldr r0, [sp]                                      |         r0 = *(sp);
                                                                 |     }
    0x0001103e cbnz r0, 0x1105c                                  |     goto label_30;
                                                                 |     do {
    0x00011042 ldr r2, [pc, 0x2c]                                |         
    0x00011044 ldr r3, [pc, 0x20]                                |         r3 = *(0x11068);
    0x00011046 add r2, pc                                        |         r2 = 0x220bc;
    0x00011048 ldr r3, [r2, r3]                                  |         r3 = *(0x220bc);
    0x0001104a ldr r2, [r3]                                      |         r2 = *(0x220bc);
    0x0001104c ldr r3, [sp, 4]                                   |         r3 = var_4h_4;
    0x0001104e eors r2, r3                                       |         r2 ^= r3;
    0x00011050 mov.w r3, 0                                       |         r3 = 0;
                                                                 |         if (r2 != r3) {
    0x00011054 bne 0x11060                                       |             goto label_31;
                                                                 |         }
    0x00011056 add sp, 0xc                                       |         
    0x00011058 ldr pc, [sp], 4                                   |         pc = *(sp);
                                                                 |         sp += 4;
                                                                 | label_30:
    0x0001105c movs r0, 0                                        |         r0 = 0;
    0x0001105e b 0x11042                                         |         
                                                                 |     } while (1);
                                                                 |     do {
                                                                 | label_31:
    0x00011060 blx 0x2cdc                                        |         fprintf_chk ()
                                                                 |         if (r0 > 0) {
    0x00011064 bgt 0x11094                                       |             goto label_32;
                                                                 |         }
    0x00011066 movs r1, r0                                       |         r1 = r0;
                                                                 | label_8:
    0x00011068 lsls r4, r1, 0xd                                  |         r4 = r1 << 0xd;
    0x0001106a movs r0, r0                                       |         
    0x0001106c push {r1, r3, r4, r7}                             |         
    0x0001106e movs r0, r0                                       |         
    0x00011070 blt 0x11060                                       |         
                                                                 |     } while (r0 < r0);
    0x00011072 movs r1, r0                                       |     r1 = r0;
    0x00011074 ldr.w ip, [pc, 0x74]                              |     
    0x00011078 movs r3, 0                                        |     r3 = 0;
    0x0001107a ldr r2, [pc, 0x74]                                |     r2 = *(0x110f2);
    0x0001107c push {r4, lr}                                     |     
    0x0001107e sub sp, 0x90                                      |     
    0x00011080 add ip, pc                                        |     ip = 0x22170;
    0x00011082 ldr r1, [pc, 0x70]                                |     
    0x00011084 mov r4, r3                                        |     r4 = r3;
    0x00011086 ldr.w r2, [ip, r2]                                |     
    0x0001108a add r1, pc                                        |     r1 = 0x22184;
    0x0001108c ldr r2, [r2]                                      |     r2 = *(0x22170);
    0x0001108e str r2, [sp, 0x8c]                                |     var_4h_3 = r2;
    0x00011090 mov.w r2, 0                                       |     r2 = 0;
    0x00011092 lsls r0, r0, 8                                    |     r0 <<= 8;
                                                                 | label_32:
    0x00011094 b 0x1109e                                         |     
                                                                 |     while (r0 != r2) {
    0x00011096 adds r4, 1                                        |         r4++;
    0x00011098 adds r3, 0x41                                     |         r3 += 0x41;
    0x0001109a cmp r4, 0x80                                      |         
                                                                 |         if (r4 == 0x80) {
    0x0001109c beq 0x110e0                                       |             goto label_33;
                                                                 |         }
    0x0001109e ldr.w r2, [r1, r3, lsl 2]                         |         offset_0 = r3 << 2;
                                                                 |         r2 = *((r1 + offset_0));
    0x000110a2 cmp r0, r2                                        |         
    0x000110a4 bne 0x11096                                       |         
                                                                 |     }
    0x000110a6 ldr r3, [pc, 0x50]                                |     
    0x000110a8 movs r1, 1                                        |     r1 = 1;
    0x000110aa str r4, [sp]                                      |     *(sp) = r4;
    0x000110ac add r4, sp, 0xc                                   |     r4 += s1;
    0x000110ae movs r2, 0x80                                     |     r2 = 0x80;
    0x000110b0 mov r0, r4                                        |     r0 = r4;
    0x000110b2 add r3, pc                                        |     r3 = 0x221b0;
    0x000110b4 blx 0x2e80                                        |     strncmp (r0, r1, r2);
    0x000110b8 movs r3, 0                                        |     r3 = 0;
    0x000110ba mov r1, r4                                        |     r1 = r4;
    0x000110bc add r0, sp, 8                                     |     r0 += var_8h;
    0x000110be str r3, [sp, 8]                                   |     var_8h = r3;
    0x000110c0 bl 0x10420                                        |     r0 = fcn_00010420 (r0, r1);
                                                                 |     if (r0 != 0) {
    0x000110c4 cbnz r0, 0x110e0                                  |         goto label_33;
                                                                 |     }
    0x000110c6 ldr r0, [sp, 8]                                   |     r0 = var_8h;
                                                                 |     do {
    0x000110c8 ldr r2, [pc, 0x30]                                |         
    0x000110ca ldr r3, [pc, 0x24]                                |         r3 = *(0x110f2);
    0x000110cc add r2, pc                                        |         r2 = 0x221cc;
    0x000110ce ldr r3, [r2, r3]                                  |         r3 = *(0x221cc);
    0x000110d0 ldr r2, [r3]                                      |         r2 = *(0x221cc);
    0x000110d2 ldr r3, [sp, 0x8c]                                |         r3 = *(arg_8ch);
    0x000110d4 eors r2, r3                                       |         r2 ^= r3;
    0x000110d6 mov.w r3, 0                                       |         r3 = 0;
                                                                 |         if (r2 != r3) {
    0x000110da bne 0x110e6                                       |             goto label_34;
                                                                 |         }
    0x000110dc add sp, 0x90                                      |         
    0x000110de pop {r4, pc}                                      |         
                                                                 | label_33:
    0x000110e0 mov.w r0, -1                                      |         r0 = -1;
    0x000110e4 b 0x110c8                                         |         
                                                                 |     } while (1);
                                                                 | label_34:
    0x000110e6 blx 0x2cdc                                        |     fprintf_chk ()
    0x000110ea nop                                               |     
                                                                 |     if (r2 < r3) {
    0x000110ec blt 0x11068                                       |         goto label_8;
                                                                 |     }
    0x000110ee movs r1, r0                                       |     r1 = r0;
    0x000110f0 lsls r4, r1, 0xd                                  |     r4 = r1 << 0xd;
    0x000110f2 movs r0, r0                                       |     
    0x000110f4 adds r4, 0xe6                                     |     r4 += 0xe6;
    0x000110f6 movs r2, r0                                       |     r2 = r0;
    0x000110f8 push {r1, r2, r3, r4, r5}                         |     
    0x000110fa movs r0, r0                                       |     
                                                                 |     if (r0 < r0) {
    0x000110fc blt 0x111e0                                       |         goto label_35;
                                                                 |     }
    0x000110fe movs r1, r0                                       |     r1 = r0;
    0x00011100 ldr r2, [pc, 0xa4]                                |     
    0x00011102 ldr r3, [pc, 0xa8]                                |     r3 = *(0x111ae);
    0x00011104 push.w {r4, r5, r6, r7, r8, sb, lr}               |     
    0x00011108 sub sp, 0xc4                                      |     
    0x0001110a add r2, pc                                        |     r2 = 0x222b6;
    0x0001110c ldr r4, [pc, 0xa0]                                |     
    0x0001110e movs r5, 0                                        |     r5 = 0;
    0x00011110 add r6, sp, 0x2c                                  |     r6 += s;
    0x00011112 ldr.w r8, [pc, 0xa0]                              |     
    0x00011116 ldr r7, [pc, 0xa0]                                |     
    0x00011118 add r4, pc                                        |     r4 = 0x222cc;
    0x0001111a ldr r3, [r2, r3]                                  |     
    0x0001111c adds r4, 4                                        |     r4 += 4;
    0x0001111e add r8, pc                                        |     r8 = 0x222d8;
    0x00011120 add r7, pc                                        |     r7 = 0x222de;
    0x00011122 ldr r3, [r3]                                      |     r3 = *(0x222b6);
                                                                 | label_10:
    0x00011124 str r3, [sp, 0xbc]                                |     var_bch = r3;
    0x00011126 mov.w r3, 0                                       |     r3 = 0;
    0x0001112a b 0x11136                                         |     
                                                                 |     while (r3 != 0) {
                                                                 | label_9:
    0x0001112c adds r5, 1                                        |         r5++;
    0x0001112e add.w r4, r4, 0x104                               |         r4 += 0x104;
    0x00011132 cmp r5, 0x80                                      |         
                                                                 |         if (r5 == 0x80) {
    0x00011134 beq 0x111a0                                       |             goto label_36;
                                                                 |         }
    0x00011136 ldr r3, [r4, -0x4]                                |         r3 = *((r4 - 0x4));
    0x0001113a and r2, r3, 0xe0                                  |         r2 = r3 & 0xe0;
    0x0001113e sub.w r3, r3, 0x23                                |         r3 -= 0x23;
    0x00011142 clz r3, r3                                        |         r3 &= r3;
    0x00011146 lsrs r3, r3, 5                                    |         r3 >>= 5;
    0x00011148 cmp r2, 0x20                                      |         
    0x0001114a it ne                                             |         
                                                                 |         if (r2 == 0x20) {
    0x0001114c orrne r3, r3, 1                                   |             r3 |= 1;
                                                                 |         }
    0x00011150 cmp r3, 0                                         |         
    0x00011152 bne 0x1112c                                       |         
                                                                 |     }
    0x00011154 mov r3, r8                                        |     r3 = r8;
    0x00011156 movs r2, 0x8f                                     |     r2 = 0x8f;
    0x00011158 movs r1, 1                                        |     r1 = 1;
    0x0001115a add.w sb, sp, 0xc                                 |     sb += var_ch_2;
    0x0001115e mov r0, r6                                        |     r0 = r6;
    0x00011160 str r4, [sp]                                      |     *(sp) = r4;
    0x00011162 blx 0x2e80                                        |     strncmp (r0, r1, r2);
    0x00011166 movs r1, 1                                        |     r1 = 1;
    0x00011168 mov r3, r7                                        |     r3 = r7;
    0x0001116a movs r2, 0x20                                     |     r2 = 0x20;
    0x0001116c mov r0, sb                                        |     r0 = sb;
    0x0001116e str r5, [sp]                                      |     *(sp) = r5;
    0x00011170 blx 0x2e80                                        |     strncmp (r0, r1, r2);
    0x00011174 mov r1, r6                                        |     r1 = r6;
    0x00011176 mov r0, sb                                        |     r0 = sb;
    0x00011178 bl 0x109a4                                        |     r0 = fcn_000109a4 (r0);
    0x0001117c cmp r0, 0                                         |     
                                                                 |     if (r0 == 0) {
    0x0001117e beq 0x1112c                                       |         goto label_9;
                                                                 |     }
    0x00011180 blx 0x2f88                                        |     r0 = cxa_finalize ();
    0x00011184 ldr r0, [r0]                                      |     r0 = *(r0);
                                                                 |     do {
    0x00011186 ldr r2, [pc, 0x34]                                |         
    0x00011188 ldr r3, [pc, 0x20]                                |         r3 = *(0x111ac);
    0x0001118a add r2, pc                                        |         r2 = 0x2234c;
    0x0001118c ldr r3, [r2, r3]                                  |         r3 = *(0x2234c);
    0x0001118e ldr r2, [r3]                                      |         r2 = *(0x2234c);
    0x00011190 ldr r3, [sp, 0xbc]                                |         r3 = var_bch;
    0x00011192 eors r2, r3                                       |         r2 ^= r3;
    0x00011194 mov.w r3, 0                                       |         r3 = 0;
                                                                 |         if (r2 != r3) {
    0x00011198 bne 0x111a4                                       |             goto label_37;
                                                                 |         }
    0x0001119a add sp, 0xc4                                      |         
    0x0001119c pop.w {r4, r5, r6, r7, r8, sb, pc}                |         
                                                                 | label_36:
    0x000111a0 movs r0, 0                                        |         r0 = 0;
    0x000111a2 b 0x11186                                         |         
                                                                 |     } while (1);
                                                                 | label_37:
    0x000111a4 blx 0x2cdc                                        |     fprintf_chk ()
                                                                 |     if (r0 < 0) {
    0x000111a8 blt 0x11210                                       |         goto label_38;
                                                                 |     }
    0x000111aa movs r1, r0                                       |     r1 = r0;
    0x000111ac lsls r4, r1, 0xd                                  |     r4 = r1 << 0xd;
    0x000111ae movs r0, r0                                       |     
    0x000111b0 adds r4, 0x58                                     |     r4 += 0x58;
    0x000111b2 movs r2, r0                                       |     r2 = r0;
                                                                 |     if (r2 == 0) {
    0x000111b4 cbz r2, 0x11236                                   |         goto label_39;
                                                                 |     }
    0x000111b6 movs r0, r0                                       |     
    0x000111b8 push {r3}                                         |     
    0x000111ba movs r0, r0                                       |     
                                                                 |     if (r0 >= r0) {
    0x000111bc bge 0x11124                                       |         goto label_10;
                                                                 |     }
    0x000111be movs r1, r0                                       |     r1 = r0;
    0x000111c0 ldr r1, [pc, 0x28]                                |     
    0x000111c2 push {r3, lr}                                     |     
    0x000111c4 movs r3, 0                                        |     r3 = 0;
    0x000111c6 mov r0, r3                                        |     r0 = r3;
    0x000111c8 add r1, pc                                        |     r1 = 0x223b8;
    0x000111ca b 0x111d2                                         |     
                                                                 |     while (r2 != 0x42) {
    0x000111cc adds r0, 1                                        |         r0++;
    0x000111ce cmp r0, 0x80                                      |         
                                                                 |         if (r0 == 0x80) {
    0x000111d0 beq 0x111e2                                       |             goto label_40;
                                                                 |         }
    0x000111d2 ldr.w r2, [r1, r3, lsl 2]                         |         offset_1 = r3 << 2;
                                                                 |         r2 = *((r1 + offset_1));
    0x000111d6 adds r3, 0x41                                     |         r3 += 0x41;
    0x000111d8 cmp r2, 0x42                                      |         
    0x000111da bne 0x111cc                                       |         
                                                                 |     }
    0x000111dc movs r1, 1                                        |     r1 = 1;
    0x000111de bl 0x67a8                                         |     fcn_000067a8 (r0, r1);
                                                                 | label_35:
    0x000111e0 invalid                                           |     
                                                                 | label_40:
    0x000111e2 pop.w {r3, lr}                                    |     
    0x000111e6 b.w 0x67a4                                        |     void (*0x67a4)() ();
                                                                 | label_38:
    0x00011210 orr r1, r0, 1                                     |     r1 = r0 | 1;
    0x00011214 mov r4, r3                                        |     r4 = r3;
    0x00011216 add r5, pc                                        |     r5 += pc;
    0x00011218 b 0x11224                                         |     
                                                                 |     while (r1 != r2) {
    0x0001121a adds r4, 1                                        |         r4++;
    0x0001121c adds r3, 0x41                                     |         r3 += 0x41;
    0x0001121e cmp r4, 0x80                                      |         
                                                                 |         if (r4 == 0x80) {
    0x00011220 beq.w 0x1133c                                     |             goto label_41;
                                                                 |         }
    0x00011224 ldr.w r2, [r5, r3, lsl 2]                         |         offset_2 = r3 << 2;
                                                                 |         r2 = *((r5 + offset_2));
    0x00011228 cmp r1, r2                                        |         
    0x0001122a bne 0x1121a                                       |         
                                                                 |     }
    0x0001122c ldr r6, [pc, 0x138]                               |     r6 = *(0x11368);
    0x0001122e movs r3, 0                                        |     r3 = 0;
    0x00011230 orr r1, r0, 4                                     |     r1 = r0 | 4;
    0x00011234 mov r5, r3                                        |     r5 = r3;
                                                                 | label_39:
    0x00011236 add r6, pc                                        |     r6 += pc;
    0x00011238 b 0x11242                                         |     
                                                                 |     while (r1 != r2) {
    0x0001123a adds r5, 1                                        |         r5++;
    0x0001123c adds r3, 0x41                                     |         r3 += 0x41;
    0x0001123e cmp r5, 0x80                                      |         
                                                                 |         if (r5 == 0x80) {
    0x00011240 beq 0x1130a                                       |             goto label_42;
                                                                 |         }
    0x00011242 ldr.w r2, [r6, r3, lsl 2]                         |         offset_3 = r3 << 2;
                                                                 |         r2 = *((r6 + offset_3));
    0x00011246 cmp r1, r2                                        |         
    0x00011248 bne 0x1123a                                       |         
                                                                 |     }
    0x0001124a ldr r6, [pc, 0x120]                               |     
    0x0001124c movs r3, 0                                        |     r3 = 0;
    0x0001124e orr ip, r0, 5                                     |     
    0x00011250 lsrs r5, r0, 0x10                                 |     r5 = r0 >> 0x10;
    0x00011252 mov r2, r3                                        |     r2 = r3;
    0x00011254 add r6, pc                                        |     r6 = 0x225c6;
    0x00011256 b 0x11260                                         |     
                                                                 |     while (ip != r1) {
    0x00011258 adds r2, 1                                        |         r2++;
    0x0001125a adds r3, 0x41                                     |         r3 += 0x41;
    0x0001125c cmp r2, 0x80                                      |         
                                                                 |         if (r2 == 0x80) {
    0x0001125e beq 0x11330                                       |             goto label_43;
                                                                 |         }
    0x00011260 ldr.w r1, [r6, r3, lsl 2]                         |         offset_4 = r3 << 2;
                                                                 |         r1 = *((r6 + offset_4));
    0x00011264 cmp ip, r1                                        |         
    0x00011266 bne 0x11258                                       |         
                                                                 |     }
    0x00011268 mov r6, r2                                        |     r6 = r2;
                                                                 | label_12:
    0x0001126a ldr.w ip, [pc, 0x104]                             |     ip = *(0x00011370);
    0x0001126e movs r2, 0                                        |     r2 = 0;
    0x00011270 orr lr, r0, 6                                     |     lr = r0 | 6;
    0x00011272 lsrs r6, r0, 0x18                                 |     r6 = r0 >> 0x18;
    0x00011274 mov r3, r2                                        |     r3 = r2;
    0x00011276 add ip, pc                                        |     
    0x00011278 b 0x11282                                         |     
                                                                 |     while (lr != r1) {
    0x0001127a adds r3, 1                                        |         r3++;
    0x0001127c adds r2, 0x41                                     |         r2 += 0x41;
    0x0001127e cmp r3, 0x80                                      |         
                                                                 |         if (r3 == 0x80) {
    0x00011280 beq 0x11336                                       |             goto label_44;
                                                                 |         }
    0x00011282 ldr.w r1, [ip, r2, lsl 2]                         |         offset_5 = r2 << 2;
                                                                 |         r1 = *((ip + offset_5));
    0x00011286 cmp lr, r1                                        |         
    0x00011288 bne 0x1127a                                       |         
                                                                 |     }
    0x0001128a mov r2, r3                                        |     r2 = r3;
                                                                 | label_13:
    0x0001128c ldr.w ip, [pc, 0xe4]                              |     ip = *(0x00011374);
    0x00011290 movs r1, 0                                        |     r1 = 0;
    0x00011292 orr r0, r0, 7                                     |     r0 |= 7;
    0x00011296 mov r3, r1                                        |     r3 = r1;
    0x00011298 add ip, pc                                        |     
    0x0001129a b 0x112a4                                         |     
                                                                 |     while (r0 != r7) {
    0x0001129c adds r3, 1                                        |         r3++;
    0x0001129e adds r1, 0x41                                     |         r1 += 0x41;
    0x000112a0 cmp r3, 0x80                                      |         
                                                                 |         if (r3 == 0x80) {
    0x000112a2 beq 0x11322                                       |             goto label_45;
                                                                 |         }
    0x000112a4 ldr.w r7, [ip, r1, lsl 2]                         |         offset_6 = r1 << 2;
                                                                 |         r7 = *((ip + offset_6));
    0x000112a8 cmp r0, r7                                        |         
    0x000112aa bne 0x1129c                                       |         
                                                                 |     }
    0x000112ac cmp.w r2, -1                                      |     
    0x000112b0 it eq                                             |     
                                                                 |     if (r2 != -1) {
    0x000112b2 moveq r2, r5                                      |         r2 = r5;
                                                                 |     }
                                                                 | label_11:
    0x000112b4 str r3, [sp, 0x10]                                |     var_10h = r3;
    0x000112b6 movs r1, 1                                        |     r1 = 1;
    0x000112b8 ldr r3, [pc, 0xbc]                                |     
    0x000112ba strd r5, r4, [sp]                                 |     __asm ("strd r5, r4, [sp]");
    0x000112be add r5, sp, 0x1c                                  |     r5 += var_1ch;
    0x000112c0 strd r6, r2, [sp, 8]                              |     __asm ("strd r6, r2, [sp, 8]");
    0x000112c4 mov r0, r5                                        |     r0 = r5;
    0x000112c6 add r3, pc                                        |     r3 = 0x22642;
    0x000112c8 movs r2, 0x40                                     |     r2 = 0x40;
    0x000112ca blx 0x2e80                                        |     strncmp (r0, r1, r2);
                                                                 |     do {
    0x000112ce ldr r0, [pc, 0xac]                                |         
    0x000112d0 movs r2, 0                                        |         r2 = 0;
    0x000112d2 mov r1, r5                                        |         r1 = r5;
    0x000112d4 add r0, pc                                        |         r0 = 0x22656;
    0x000112d6 bl 0x10554                                        |         fcn_00010554 (r0, r1, r2);
                                                                 | label_14:
    0x000112da ldr r2, [pc, 0xa4]                                |         
    0x000112dc ldr r3, [pc, 0x7c]                                |         r3 = *(0x1135c);
    0x000112de add r2, pc                                        |         r2 = 0x22664;
    0x000112e0 ldr r3, [r2, r3]                                  |         r3 = *(0x22664);
    0x000112e2 ldr r2, [r3]                                      |         r2 = *(0x22664);
    0x000112e4 ldr r3, [sp, 0x5c]                                |         r3 = var_5ch;
    0x000112e6 eors r2, r3                                       |         r2 ^= r3;
    0x000112e8 mov.w r3, 0                                       |         r3 = 0;
                                                                 |         if (r2 != r3) {
    0x000112ec bne 0x11354                                       |             goto label_46;
                                                                 |         }
    0x000112ee add sp, 0x64                                      |         
    0x000112f0 pop {r4, r5, r6, r7, pc}                          |         
                                                                 | label_42:
    0x0001130a ldr r3, [pc, 0x80]                                |         
    0x0001130c add r5, sp, 0x1c                                  |         r5 += var_1ch;
    0x0001130e movs r1, 0x7f                                     |         r1 = 0x7f;
    0x00011310 movs r2, 0x40                                     |         r2 = 0x40;
    0x00011312 strd r1, r4, [sp]                                 |         __asm ("strd r1, r4, [sp]");
    0x00011316 mov r0, r5                                        |         r0 = r5;
    0x00011318 add r3, pc                                        |         r3 = 0x226aa;
    0x0001131a movs r1, 1                                        |         r1 = 1;
    0x0001131c blx 0x2e80                                        |         strncmp (r0, r1, r2);
    0x00011320 b 0x112ce                                         |         
                                                                 |     } while (1);
                                                                 | label_45:
    0x00011322 adds r3, r2, 1                                    |     r3 = r2 + 1;
    0x00011324 itt eq                                            |     
                                                                 |     if (r3 != r2) {
    0x00011326 moveq r2, r5                                      |         r2 = r5;
                                                                 |     }
                                                                 |     if (r3 == r2) {
    0x00011328 moveq r3, r5                                      |         r3 = r5;
                                                                 |         goto label_47;
                                                                 |     }
                                                                 |     if (r3 == r2) {
                                                                 | label_47:
    0x0001132a beq 0x112b4                                       |         goto label_11;
                                                                 |     }
    0x0001132c mov r3, r5                                        |     r3 = r5;
    0x0001132e b 0x112b4                                         |     goto label_11;
                                                                 | label_43:
    0x00011330 mov.w r6, -1                                      |     r6 = -1;
    0x00011334 b 0x1126a                                         |     goto label_12;
                                                                 | label_44:
    0x00011336 mov.w r2, -1                                      |     r2 = -1;
    0x0001133a b 0x1128c                                         |     goto label_13;
                                                                 | label_41:
    0x0001133c ldr r1, [pc, 0x50]                                |     
    0x0001133e movs r0, 2                                        |     r0 = 2;
    0x00011340 add r1, pc                                        |     r1 = 0x226d4;
    0x00011342 bl 0xfcdc                                         |     r0 = fcn_0000fcdc (r0);
    0x00011346 blx 0x2f88                                        |     cxa_finalize ();
    0x0001134a movs r3, 0x16                                     |     r3 = 0x16;
    0x0001134c mov r2, r0                                        |     r2 = r0;
    0x0001134e str r3, [r2]                                      |     *(r2) = r3;
    0x00011350 mov r0, r3                                        |     r0 = r3;
    0x00011352 b 0x112da                                         |     goto label_14;
                                                                 | label_46:
    0x00011354 blx 0x2cdc                                        |     fprintf_chk ()
                                                                 |     if (r3 >= 0x16) {
    0x00011358 bge 0x113e0                                       |         goto label_16;
                                                                 |     }
    0x0001135a movs r1, r0                                       |     r1 = r0;
    0x0001135c lsls r4, r1, 0xd                                  |     r4 = r1 << 0xd;
    0x0001135e movs r0, r0                                       |     
                                                                 |     if (r0 >= r0) {
    0x00011360 bge 0x113dc                                       |         goto label_48;
                                                                 |     }
    0x00011362 movs r1, r0                                       |     r1 = r0;
    0x00011364 adds r3, 0x5a                                     |     r3 += 0x5a;
    0x00011366 movs r2, r0                                       |     r2 = r0;
    0x00011368 adds r3, 0x3a                                     |     r3 += 0x3a;
    0x0001136a movs r2, r0                                       |     r2 = r0;
    0x0001136c adds r3, 0x1c                                     |     r3 += 0x1c;
    0x0001136e movs r2, r0                                       |     r2 = r0;
    0x00011370 adds r2, 0xfa                                     |     r2 += 0xfa;
    0x00011372 movs r2, r0                                       |     r2 = r0;
    0x00011374 adds r2, 0xd8                                     |     r2 += 0xd8;
    0x00011376 movs r2, r0                                       |     r2 = r0;
    0x00011378 uxtb r6, r0                                       |     r6 = (int8_t) r0;
    0x0001137a movs r0, r0                                       |     
    0x0001137c uxtb r0, r1                                       |     r0 = (int8_t) r1;
    0x0001137e movs r0, r0                                       |     
                                                                 |     if (r0 < r0) {
    0x00011380 bls 0x11440                                       |         goto label_49;
                                                                 |     }
    0x00011382 movs r1, r0                                       |     r1 = r0;
    0x00011384 lsls r4, r6, 0xb                                  |     r4 = r6 << 0xb;
    0x00011386 movs r0, r0                                       |     
    0x00011388 sxth r4, r6                                       |     __asm ("sxth r4, r6");
    0x0001138a movs r0, r0                                       |     
    0x0001138c uxth r0, r4                                       |     r0 = (int16_t) r4;
    0x0001138e movs r0, r0                                       |     
    0x00011390 uxth r0, r0                                       |     r0 = (int16_t) r0;
    0x00011392 movs r0, r0                                       |     
    0x00011394 ldr r2, [pc, 0x148]                               |     
    0x00011396 mov.w r0, 0x20000                                 |     r0 = 0x20000;
    0x0001139a ldr r3, [pc, 0x148]                               |     r3 = *(0x114e6);
    0x0001139c push.w {r4, r5, r6, r7, r8, sb, sl, fp, lr}       |     
    0x000113a0 sub sp, 0x11c                                     |     
    0x000113a2 add r2, pc                                        |     r2 = 0x22886;
    0x000113a4 ldr r3, [r2, r3]                                  |     
    0x000113a6 ldr r3, [r3]                                      |     r3 = *(0x22886);
    0x000113a8 str r3, [sp, 0x114]                               |     var_114h = r3;
    0x000113aa mov.w r3, 0                                       |     r3 = 0;
    0x000113ae blx 0x2cc4                                        |     r0 = stack_chk_fail ();
    0x000113b2 cmp r0, 0                                         |     
                                                                 |     if (r0 == 0) {
    0x000113b4 beq 0x114b6                                       |         goto label_50;
                                                                 |     }
    0x000113b6 mov r4, r0                                        |     r4 = r0;
    0x000113b8 ldr r0, [pc, 0x12c]                               |     
    0x000113ba add r0, pc                                        |     r0 = 0x228a6;
    0x000113bc blx 0x27d8                                        |     r0 = opendir ();
    0x000113c0 mov r6, r0                                        |     r6 = r0;
    0x000113c2 cmp r0, 0                                         |     
                                                                 |     if (r0 == 0) {
    0x000113c4 beq 0x11494                                       |         goto label_51;
                                                                 |     }
    0x000113c6 ldr.w r8, [pc, 0x124]                             |     
    0x000113ca ldr r7, [pc, 0x124]                               |     
    0x000113cc ldr.w sb, [pc, 0x124]                             |     
    0x000113d0 add r8, pc                                        |     r8 = 0x228c2;
    0x000113d2 add r7, pc                                        |     r7 = 0x228c8;
    0x000113d4 add sb, pc                                        |     sb = 0x228cc;
                                                                 |     do {
                                                                 | label_15:
    0x000113d6 mov r0, r6                                        |         r0 = r6;
    0x000113d8 blx 0x2f1c                                        |         r0 = memchr (r0, r1, r2);
                                                                 | label_48:
    0x000113dc cmp r0, 0                                         |         
                                                                 |         if (r0 == 0) {
    0x000113de beq 0x11460                                       |             goto label_52;
                                                                 |         }
                                                                 | label_16:
    0x000113e0 ldrb r3, [r0, 0xb]                                |         r3 = *((r0 + 0xb));
    0x000113e2 add.w r5, r0, 0xb                                 |         r5 = r0 + 0xb;
    0x000113e6 cmp r3, 0x75                                      |         
    0x000113e8 bne 0x113d6                                       |         
                                                                 |     } while (r3 != 0x75);
    0x000113ea ldrb r3, [r0, 0xc]                                |     r3 = *((r0 + 0xc));
    0x000113ec cmp r3, 0x62                                      |     
                                                                 |     if (r3 != 0x62) {
    0x000113ee bne 0x113d6                                       |         goto label_15;
                                                                 |     }
    0x000113f0 ldrb.w sl, [r0, 0xd]                              |     sl = *((r0 + 0xd));
    0x000113f4 subs.w sl, sl, 0x69                               |     sl -= 0x69;
                                                                 |     if (sl != sl) {
    0x000113f8 bne 0x113d6                                       |         goto label_15;
                                                                 |     }
    0x000113fa ldrb r3, [r0, 0xf]                                |     r3 = *((r0 + 0xf));
    0x000113fc cmp r3, 0x5f                                      |     
                                                                 |     if (r3 != 0x5f) {
    0x000113fe bne 0x113d6                                       |         goto label_15;
                                                                 |     }
    0x00011400 ldrb r2, [r0, 0xe]                                |     r2 = *((r0 + 0xe));
    0x00011402 add.w r3, r0, 0x10                                |     r3 = r0 + 0x10;
    0x00011406 mov r1, r8                                        |     r1 = r8;
    0x00011408 movs r0, 6                                        |     r0 = 6;
    0x0001140a add.w fp, sp, 0xc                                 |     
    0x0001140e bl 0xfcdc                                         |     fcn_0000fcdc (r0);
    0x00011412 mov r3, r7                                        |     r3 = r7;
    0x00011414 mov.w r2, 0x108                                   |     r2 = 0x108;
    0x00011418 movs r1, 1                                        |     r1 = 1;
    0x0001141a str r5, [sp]                                      |     *(sp) = r5;
    0x0001141c mov r0, fp                                        |     r0 = fp;
    0x0001141e blx 0x2e80                                        |     strncmp (r0, r1, r2);
    0x00011422 mov r1, sl                                        |     r1 = sl;
    0x00011424 mov r0, fp                                        |     r0 = fp;
    0x00011426 blx 0x2730                                        |     r0 = open (r0, r1, r2);
    0x0001142a subs r5, r0, 0                                    |     r5 = r0 - 0;
                                                                 |     if (r5 >= r0) {
    0x0001142c bge 0x11436                                       |         goto label_53;
                                                                 |     }
    0x0001142e b 0x11486                                         |     goto label_54;
                                                                 |     if (r5 == r0) {
                                                                 |         do {
    0x00011430 beq 0x11450                                       |             goto label_55;
                                                                 |         }
    0x00011432 blx 0x283c                                        |         fcn_0000283c ();
                                                                 | label_53:
    0x00011436 mov.w r2, 0x20000                                 |         r2 = 0x20000;
    0x0001143a mov r1, r4                                        |         r1 = r4;
    0x0001143c mov r0, r5                                        |         r0 = r5;
    0x0001143e invalid                                           |         
                                                                 | label_49:
    0x00011440 pkhbt r8, ip, r0, lsl 8                           |         __asm ("pkhbt r8, ip, r0, lsl 8");
    0x00011444 bge 0x11430                                       |         
                                                                 |     } while (r5 >= r0);
    0x00011446 mov r2, fp                                        |     r2 = fp;
    0x00011448 mov r1, sb                                        |     r1 = sb;
    0x0001144a movs r0, 4                                        |     r0 = 4;
    0x0001144c bl 0xfcdc                                         |     fcn_0000fcdc (r0);
                                                                 | label_55:
    0x00011450 mov r0, r5                                        |     r0 = r5;
    0x00011452 blx 0x2bf8                                        |     EVP_PKEY_verify_init ();
    0x00011456 mov r0, r6                                        |     r0 = r6;
    0x00011458 blx 0x2f1c                                        |     r0 = memchr (r0, r1, r2);
    0x0001145c cmp r0, 0                                         |     
                                                                 |     if (r0 != 0) {
    0x0001145e bne 0x113e0                                       |         goto label_16;
                                                                 |     }
                                                                 | label_52:
    0x00011460 mov r0, r6                                        |     r0 = r6;
    0x00011462 blx 0x2c40                                        |     dprintf_chk ();
    0x00011466 ldr r2, [pc, 0x90]                                |     
    0x00011468 ldr r3, [pc, 0x78]                                |     r3 = *(0x114e4);
    0x0001146a add r2, pc                                        |     r2 = 0x22968;
    0x0001146c ldr r3, [r2, r3]                                  |     r3 = *(0x22968);
    0x0001146e ldr r2, [r3]                                      |     r2 = *(0x22968);
    0x00011470 ldr r3, [sp, 0x114]                               |     r3 = path;
    0x00011472 eors r2, r3                                       |     r2 ^= r3;
    0x00011474 mov.w r3, 0                                       |     r3 = 0;
                                                                 |     if (r2 != r3) {
    0x00011478 bne 0x114b2                                       |         goto label_56;
                                                                 |     }
                                                                 |     do {
    0x0001147a mov r0, r4                                        |         r0 = r4;
    0x0001147c add sp, 0x11c                                     |         
    0x0001147e pop.w {r4, r5, r6, r7, r8, sb, sl, fp, lr}        |         
    0x00011482 b.w 0x29c8                                        |         goto label_17;
                                                                 | label_54:
    0x00011486 ldr r1, [pc, 0x74]                                |         
    0x00011488 mov r2, fp                                        |         r2 = fp;
    0x0001148a movs r0, 4                                        |         r0 = 4;
    0x0001148c add r1, pc                                        |         r1 = 0x2298e;
    0x0001148e bl 0xfcdc                                         |         fcn_0000fcdc (r0);
    0x00011492 b 0x113d6                                         |         goto label_15;
                                                                 | label_51:
    0x00011494 ldr r1, [pc, 0x68]                                |         
    0x00011496 movs r0, 2                                        |         r0 = 2;
    0x00011498 add r1, pc                                        |         r1 = 0x2299c;
    0x0001149a bl 0xfcdc                                         |         fcn_0000fcdc (r0);
    0x0001149c invalid                                           |         
    0x000114a0 ldr r3, [pc, 0x40]                                |         r3 = *(0x114e4);
    0x000114a2 add r2, pc                                        |         r2 += pc;
    0x000114a4 ldr r3, [r2, r3]                                  |         r3 = *((r2 + r3));
    0x000114a6 ldr r2, [r3]                                      |         r2 = *(0x114e4);
    0x000114a8 ldr r3, [sp, 0x114]                               |         r3 = var_114h;
    0x000114aa eors r2, r3                                       |         r2 ^= r3;
    0x000114ac mov.w r3, 0                                       |         r3 = 0;
    0x000114b0 beq 0x1147a                                       |         
                                                                 |     } while (r2 == r3);
                                                                 |     do {
                                                                 | label_56:
    0x000114b2 blx 0x2cdc                                        |         fprintf_chk ()
                                                                 | label_50:
    0x000114b6 ldr r2, [pc, 0x50]                                |         
    0x000114b8 ldr r3, [pc, 0x28]                                |         r3 = *(0x114e4);
    0x000114ba add r2, pc                                        |         r2 = 0x229c8;
    0x000114bc ldr r3, [r2, r3]                                  |         r3 = *(0x229c8);
    0x000114be ldr r2, [r3]                                      |         r2 = *(0x229c8);
    0x000114c0 ldr r3, [sp, 0x114]                               |         r3 = path;
    0x000114c2 eors r2, r3                                       |         r2 ^= r3;
    0x000114c4 mov.w r3, 0                                       |         r3 = 0;
    0x000114c8 bne 0x114b2                                       |         
                                                                 |     } while (r2 != r3);
    0x000114ca ldr r1, [pc, 0x40]                                |     
    0x000114cc mov.w r2, 0x20000                                 |     r2 = 0x20000;
    0x000114d0 movs r0, 2                                        |     r0 = 2;
    0x000114d2 add r1, pc                                        |     r1 = 0x229e4;
    0x000114d4 add sp, 0x11c                                     |     
    0x000114d6 pop.w {r4, r5, r6, r7, r8, sb, sl, fp, lr}        |     
    0x000114da b.w 0xfcdc                                        |     return void (*0xfcdc)() ();
                                                                 | }
    ; assembly                                                   | /* r2dec pseudo code output */
                                                                 | /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/sbin/fwmgr @ 0x10b30 */
                                                                 | #include <stdint.h>
                                                                 |  
    ; (fcn) fcn.00010b30 ()                                      | void fcn_00010b30 (int16_t arg1, int16_t arg3) {
                                                                 |     int16_t var_0h;
                                                                 |     int16_t var_4h;
                                                                 |     int16_t var_8h;
                                                                 |     void * s1;
                                                                 |     char * path;
                                                                 |     int16_t var_114h;
                                                                 |     int16_t var_214h;
                                                                 |     int16_t var_218h;
                                                                 |     r0 = arg1;
                                                                 |     r2 = arg3;
    0x00010b30 push.w {r4, r5, r6, r7, r8, sb, sl, lr}           |     
    0x00010b34 sub.w sp, sp, 0x218                               |     
    0x00010b38 ldr r5, [pc, 0x18c]                               |     
    0x00010b3a ldr r4, [pc, 0x190]                               |     r4 = *(0x10cce);
    0x00010b3c add r5, pc                                        |     r5 = 0x21808;
    0x00010b3e ldr r3, [pc, 0x190]                               |     
    0x00010b40 ldr r1, [pc, 0x190]                               |     r1 = *(0x10cd4);
    0x00010b42 ldr r4, [r5, r4]                                  |     
    0x00010b44 add r3, pc                                        |     r3 = 0x2181a;
    0x00010b46 ldr r4, [r4]                                      |     r4 = *(0x21808);
    0x00010b48 str r4, [sp, 0x214]                               |     var_214h = r4;
    0x00010b4a mov.w r4, 0                                       |     r4 = 0;
    0x00010b4e ldr r6, [r3, r1]                                  |     r6 = *(0x2181a);
    0x00010b50 ldrb r3, [r6]                                     |     r3 = *(r6);
    0x00010b52 cbnz r3, 0x10b74                                  |     
                                                                 |     while (r0 == 0) {
                                                                 | label_1:
    0x00010b54 movs r0, 0                                        |         r0 = 0;
                                                                 | label_0:
    0x00010b56 ldr r2, [pc, 0x180]                               |         
    0x00010b58 ldr r3, [pc, 0x170]                               |         r3 = *(0x10ccc);
    0x00010b5a add r2, pc                                        |         r2 = 0x21838;
    0x00010b5c ldr r3, [r2, r3]                                  |         r3 = *(0x21838);
    0x00010b5e ldr r2, [r3]                                      |         r2 = *(0x21838);
    0x00010b60 ldr r3, [sp, 0x214]                               |         r3 = var_214h;
    0x00010b62 eors r2, r3                                       |         r2 ^= r3;
    0x00010b64 mov.w r3, 0                                       |         r3 = 0;
                                                                 |         if (r2 != r3) {
    0x00010b68 bne.w 0x10cc2                                     |             goto label_4;
                                                                 |         }
    0x00010b6c add.w sp, sp, 0x218                               |         
    0x00010b70 pop.w {r4, r5, r6, r7, r8, sb, sl, pc}            |         
    0x00010b74 mov r4, r0                                        |         r4 = r0;
    0x00010b76 mov r7, r2                                        |         r7 = r2;
    0x00010b78 bl 0x6e24                                         |         r0 = fcn_00006e24 ();
    0x00010b7c mov r5, r0                                        |         r5 = r0;
    0x00010b7e cmp r0, 0                                         |         
                                                                 |         if (r0 == 0) {
    0x00010b80 beq 0x10c00                                       |             goto label_5;
                                                                 |         }
    0x00010b82 ldr r3, [pc, 0x158]                               |         
    0x00010b84 add.w r8, sp, 0x14                                |         r8 += path;
    0x00010b88 movs r2, 1                                        |         r2 = 1;
    0x00010b8a mov r0, r8                                        |         r0 = r8;
    0x00010b8c str r4, [sp, 4]                                   |         var_4h = r4;
    0x00010b8e add r3, pc                                        |         r3 = 0x21870;
    0x00010b90 str r3, [sp]                                      |         *(sp) = r3;
    0x00010b92 mov.w r3, 0x100                                   |         r3 = 0x100;
    0x00010b96 mov r1, r3                                        |         r1 = r3;
    0x00010b98 blx 0x2b98                                        |         r0 = shutdown ();
    0x00010b9c cmp r0, 0xff                                      |         
                                                                 |         if (r0 > 0xff) {
    0x00010b9e bgt 0x10bf2                                       |             goto label_6;
                                                                 |         }
    0x00010ba0 ldr r3, [pc, 0x13c]                               |         
    0x00010ba2 add.w sb, sp, 0x114                               |         sb += var_114h;
    0x00010ba6 movs r2, 1                                        |         r2 = 1;
    0x00010ba8 mov r0, sb                                        |         r0 = sb;
    0x00010baa str r4, [sp, 4]                                   |         var_4h = r4;
    0x00010bac add r3, pc                                        |         r3 = 0x21890;
    0x00010bae str r3, [sp]                                      |         *(sp) = r3;
    0x00010bb0 mov.w r3, 0x100                                   |         r3 = 0x100;
    0x00010bb2 strb r0, [r0, 0xe]                                |         *((r0 + 0xe)) = r0;
    0x00010bb4 mov r1, r3                                        |         r1 = r3;
    0x00010bb6 blx 0x2b98                                        |         r0 = shutdown ();
    0x00010bba cmp r0, 0xff                                      |         
                                                                 |         if (r0 > 0xff) {
    0x00010bbc bgt 0x10bf2                                       |             goto label_6;
                                                                 |         }
    0x00010bbe mov.w r1, 0x4000                                  |         r1 = 0x4000;
    0x00010bc2 mov r0, r8                                        |         r0 = r8;
    0x00010bc4 blx 0x2730                                        |         open (r0, r1, r2);
    0x00010bc8 subs r4, r0, 0                                    |         r4 -= path;
                                                                 |         if (r4 >= path) {
    0x00010bca bge 0x10c08                                       |             goto label_7;
                                                                 |         }
    0x00010bcc blx 0x2f88                                        |         r0 = cxa_finalize ();
    0x00010bd0 ldr r3, [r0]                                      |         r3 = *(r0);
    0x00010bd2 mov r4, r0                                        |         r4 = r0;
    0x00010bd4 cmp r3, 2                                         |         
                                                                 |         if (r3 != 2) {
    0x00010bd6 bne 0x10c4e                                       |             goto label_8;
                                                                 |         }
    0x00010bd8 mov r1, r5                                        |         r1 = r5;
    0x00010bda mov r0, sb                                        |         r0 = sb;
    0x00010bdc bl 0x10a58                                        |         r0 = fcn_00010a58 (r0, r1, r2);
                                                                 |         if (r0 != 0) {
    0x00010be0 cbnz r0, 0x10bee                                  |             goto label_2;
                                                                 |         }
    0x00010be2 mov r1, r5                                        |         r1 = r5;
    0x00010be4 mov r0, r8                                        |         r0 = r8;
    0x00010be6 bl 0x10a58                                        |         r0 = fcn_00010a58 (r0, r1, r2);
    0x00010bea cmp r0, 0                                         |         
    0x00010bec beq 0x10b54                                       |         
                                                                 |     }
                                                                 | label_2:
    0x00010bee ldr r0, [r4]                                      |     r0 = *(r4);
    0x00010bf0 b 0x10b56                                         |     goto label_0;
                                                                 | label_6:
    0x00010bf2 blx 0x2f88                                        |     cxa_finalize ();
    0x00010bf6 movs r3, 0x16                                     |     r3 = 0x16;
    0x00010bf8 mov r2, r0                                        |     r2 = r0;
    0x00010bfa str r3, [r2]                                      |     *(r2) = r3;
    0x00010bfc mov r0, r3                                        |     r0 = r3;
    0x00010bfe b 0x10b56                                         |     goto label_0;
                                                                 | label_5:
    0x00010c00 blx 0x2f88                                        |     r0 = cxa_finalize ();
    0x00010c04 ldr r0, [r0]                                      |     r0 = *(r0);
    0x00010c06 b 0x10b56                                         |     goto label_0;
                                                                 | label_7:
    0x00010c08 add.w sl, sp, 8                                   |     sl += var_8h;
    0x00010c0c movw r1, 0x6615                                   |     
    0x00010c10 movt r1, 0x400c                                   |     r1 = 0x400c6615;
    0x00010c14 mov r2, sl                                        |     r2 = sl;
    0x00010c16 blx 0x2a8c                                        |     r0 = fcn_00002a8c ();
    0x00010c1a mov sb, r0                                        |     sb = r0;
    0x00010c1c mov r0, r4                                        |     r0 = r4;
    0x00010c1e bl 0x10978                                        |     fcn_00010978 (r0);
    0x00010c22 cmp.w sb, 0                                       |     
                                                                 |     if (sb != 0) {
    0x00010c26 beq 0x10c5e                                       |         
    0x00010c28 blx 0x2f88                                        |         r0 = cxa_finalize ();
    0x00010c2c ldr r3, [r0]                                      |         r3 = *(r0);
    0x00010c2e mov r4, r0                                        |         r4 = r0;
    0x00010c30 cmp r3, 0x3d                                      |         
                                                                 |         if (r3 != 0x3d) {
    0x00010c32 bne 0x10c94                                       |             goto label_9;
                                                                 |         }
    0x00010c34 cmp r7, 0                                         |         
                                                                 |         if (r7 == 0) {
    0x00010c36 beq 0x10ca2                                       |             goto label_10;
                                                                 |         }
    0x00010c38 ldrb r3, [r6]                                     |         r3 = *(r6);
    0x00010c3a cmp r3, 0                                         |         
                                                                 |         if (r3 != 0) {
    0x00010c3c bne 0x10ca8                                       |             goto label_11;
                                                                 |         }
    0x00010c3e ldr r2, [pc, 0xa4]                                |         
    0x00010c40 add r2, pc                                        |         r2 = 0x2192a;
                                                                 | label_3:
    0x00010c42 ldr r1, [pc, 0xa4]                                |         
    0x00010c44 movs r0, 2                                        |         r0 = 2;
    0x00010c46 add r1, pc                                        |         r1 = 0x21934;
    0x00010c48 bl 0xfcdc                                         |         fcn_0000fcdc (r0);
    0x00010c4a invalid                                           |         
                                                                 | label_8:
    0x00010c4e ldr r1, [pc, 0x9c]                                |         
    0x00010c50 movs r0, 3                                        |         r0 = 3;
    0x00010c52 mov r2, r8                                        |         r2 = r8;
    0x00010c54 add r1, pc                                        |         r1 = 0x21946;
    0x00010c56 bl 0xfcdc                                         |         fcn_0000fcdc (r0);
    0x00010c5a ldr r0, [r4]                                      |         r0 = *(r4);
    0x00010c5c b 0x10b56                                         |         goto label_0;
                                                                 |     }
    0x00010c5e ldrb.w r3, [sl]                                   |     r3 = *(sl);
                                                                 |     if (r3 != 0) {
    0x00010c62 cbnz r3, 0x10cb4                                  |         goto label_12;
                                                                 |     }
    0x00010c64 movs r2, 8                                        |     r2 = 8;
    0x00010c66 mov r1, r5                                        |     r1 = r5;
    0x00010c68 add r0, sp, 0xc                                   |     r0 += s1;
    0x00010c6a blx 0x27e4                                        |     r0 = memcmp (r0, r1, r2);
    0x00010c6e cmp r0, 0                                         |     
                                                                 |     if (r0 == 0) {
    0x00010c70 beq.w 0x10b54                                     |         goto label_1;
                                                                 |     }
    0x00010c74 ldr r1, [pc, 0x78]                                |     
    0x00010c76 cmp r7, 0                                         |     
    0x00010c78 mov r2, r8                                        |     r2 = r8;
    0x00010c7a ite ne                                            |     
                                                                 |     if (r7 == 0) {
    0x00010c7c movne r0, 4                                       |         r0 = 4;
                                                                 |     }
                                                                 |     if (r7 != 0) {
    0x00010c7e moveq r0, 2                                       |         r0 = 2;
                                                                 |     }
    0x00010c80 add r1, pc                                        |     r1 = 0x21974;
    0x00010c82 bl 0xfcdc                                         |     r0 = fcn_0000fcdc (r0);
                                                                 |     do {
    0x00010c86 blx 0x2f88                                        |         cxa_finalize ();
    0x00010c8a movs r3, 0x7e                                     |         r3 = 0x7e;
    0x00010c8c mov r2, r0                                        |         r2 = r0;
    0x00010c8e str r3, [r2]                                      |         *(r2) = r3;
    0x00010c90 mov r0, r3                                        |         r0 = r3;
    0x00010c92 b 0x10b56                                         |         goto label_0;
                                                                 | label_9:
    0x00010c94 ldr r1, [pc, 0x5c]                                |         
    0x00010c96 mov r2, r8                                        |         r2 = r8;
    0x00010c98 movs r0, 3                                        |         r0 = 3;
    0x00010c9a add r1, pc                                        |         r1 = 0x21992;
    0x00010c9c bl 0xfcdc                                         |         fcn_0000fcdc (r0);
    0x00010ca0 b 0x10bee                                         |         goto label_2;
                                                                 | label_10:
    0x00010ca2 ldr r2, [pc, 0x54]                                |         
    0x00010ca4 add r2, pc                                        |         r2 = 0x219a2;
    0x00010ca6 b 0x10c42                                         |         goto label_3;
                                                                 | label_11:
    0x00010ca8 ldr r1, [pc, 0x50]                                |         
    0x00010caa movs r0, 5                                        |         r0 = 5;
    0x00010cac add r1, pc                                        |         r1 = 0x219ac;
    0x00010cae bl 0xfcdc                                         |         fcn_0000fcdc (r0);
    0x00010cb2 b 0x10b54                                         |         goto label_1;
                                                                 | label_12:
    0x00010cb4 ldr r1, [pc, 0x48]                                |         
    0x00010cb6 mov r2, r8                                        |         r2 = r8;
    0x00010cb8 movs r0, 2                                        |         r0 = 2;
    0x00010cba add r1, pc                                        |         r1 = 0x219be;
    0x00010cbc bl 0xfcdc                                         |         fcn_0000fcdc (r0);
    0x00010cc0 b 0x10c86                                         |         
                                                                 |     } while (1);
                                                                 | label_4:
    0x00010cc2 blx 0x2cdc                                        |     fprintf_chk ()
    0x00010cc6 nop                                               |     
    0x00010cc8 b 0x10ecc                                         |     return void (*0x10ecc)() ();
                                                                 | }
    ; assembly                                                   | /* r2dec pseudo code output */
                                                                 | /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/sbin/fwmgr @ 0x11510 */
                                                                 | #include <stdint.h>
                                                                 |  
                                                                 | #define BIT_MASK(t,v) ((t)(-((v)!= 0)))&(((t)-1)>>((sizeof(t)*CHAR_BIT)-(v)))
                                                                 |  
    ; (fcn) fcn.00011510 ()                                      | void fcn_00011510 (int16_t arg_2f8h, int16_t arg_3d0h, int16_t arg_3d8h, int16_t arg_1120h) {
                                                                 |     int16_t var_10h_2;
                                                                 |     int16_t var_14h_2;
                                                                 |     int16_t var_18h_2;
                                                                 |     int16_t var_1ch_2;
                                                                 |     int16_t var_24h;
                                                                 |     int16_t var_138h;
                                                                 |     int16_t var_1120h_2;
                                                                 |     int16_t var_1120h;
                                                                 |     int16_t var_14h_4;
                                                                 |     int32_t var_0h_2;
                                                                 |     int32_t var_0h_3;
                                                                 |     int16_t var_ch;
                                                                 |     size_t var_10h;
                                                                 |     size_t n;
                                                                 |     int16_t var_18h;
                                                                 |     int16_t var_1ch;
                                                                 |     int16_t var_c0h;
                                                                 |     int16_t var_4ch;
                                                                 |     int16_t var_8ch;
                                                                 |     int16_t var_cch_2;
                                                                 |     int16_t var_1b0h;
                                                                 |     int16_t var_218h;
                                                                 |     int16_t var_0h;
                                                                 |     int16_t var_ch_2;
                                                                 |     char * s1;
                                                                 |     int16_t var_54h;
                                                                 |     char * var_ach;
                                                                 |     int16_t var_cch;
                                                                 |     int16_t var_d4h;
                                                                 |     int16_t var_338h;
                                                                 |     int16_t var_340h;
    0x00011510 ldr r2, [pc, 0x120]                               |     
    0x00011512 ldr r3, [pc, 0x124]                               |     r3 = *(0x1163a);
    0x00011514 ldr r0, [pc, 0x124]                               |     
    0x00011516 add r2, pc                                        |     r2 = 0x22b4e;
    0x00011518 push.w {r4, r5, r6, r7, r8, sb, sl, fp, lr}       |     
    0x0001151c ldr r3, [r2, r3]                                  |     
    0x0001151e sub sp, 0xdc                                      |     
    0x00011520 add r0, pc                                        |     r0 = 0x22b60;
    0x00011522 ldr r3, [r3]                                      |     r3 = *(0x22b4e);
    0x00011524 str r3, [sp, 0xd4]                                |     var_d4h = r3;
    0x00011526 mov.w r3, 0                                       |     r3 = 0;
    0x0001152a blx 0x27d8                                        |     r0 = opendir ();
    0x0001152e cmp r0, 0                                         |     
                                                                 |     if (r0 == 0) {
    0x00011530 beq 0x1161e                                       |         goto label_18;
                                                                 |     }
    0x00011532 ldr r6, [pc, 0x10c]                               |     
    0x00011534 mov r5, r0                                        |     r5 = r0;
    0x00011536 ldr.w r8, [pc, 0x10c]                             |     
    0x0001153a ldr r7, [pc, 0x10c]                               |     
    0x0001153c add r6, pc                                        |     r6 = 0x22b82;
    0x0001153e add r8, pc                                        |     r8 = 0x22b88;
    0x00011540 add r7, pc                                        |     r7 = 0x22b8e;
                                                                 |     do {
                                                                 | label_0:
    0x00011542 mov r0, r5                                        |         r0 = r5;
    0x00011544 blx 0x2f1c                                        |         r0 = memchr (r0, r1, r2);
    0x00011548 mov r4, r0                                        |         r4 = r0;
    0x0001154a cmp r0, 0                                         |         
                                                                 |         if (r0 == 0) {
    0x0001154c beq 0x115f4                                       |             goto label_19;
                                                                 |         }
                                                                 | label_1:
    0x0001154e ldrb r3, [r4, 0xa]                                |         r3 = *((r4 + 0xa));
    0x00011550 cmp r3, 4                                         |         
    0x00011552 bne 0x11542                                       |         
                                                                 |     } while (r3 != 4);
    0x00011554 movs r2, 5                                        |     r2 = 5;
    0x00011556 mov r1, r6                                        |     r1 = r6;
    0x00011558 add.w r0, r4, 0xb                                 |     r0 = r4 + 0xb;
    0x0001155c blx 0x2ea4                                        |     r0 = realloc (r0, r1);
    0x00011560 cmp r0, 0                                         |     
                                                                 |     if (r0 != 0) {
    0x00011562 bne 0x11542                                       |         goto label_0;
                                                                 |     }
    0x00011564 mov r1, r0                                        |     r1 = r0;
    0x00011566 movs r2, 0xa                                      |     r2 = 0xa;
    0x00011568 add.w r0, r4, 0x10                                |     r0 = r4 + 0x10;
    0x0001156c blx 0x2b38                                        |     sd_bus_message_is_empty ();
    0x0001156e invalid                                           |     
    0x00011572 mov r4, r0                                        |     r4 = r0;
                                                                 |     if (r2 > 0xa) {
    0x00011574 bhi 0x11542                                       |         goto label_0;
                                                                 |     }
    0x00011576 add.w sb, sp, 0x14                                |     sb += s1;
    0x0001157a mov r3, r8                                        |     r3 = r8;
    0x0001157c movs r2, 0x40                                     |     r2 = 0x40;
    0x0001157e movs r1, 1                                        |     r1 = 1;
    0x00011580 str r0, [sp]                                      |     *(sp) = r0;
    0x00011582 add.w sl, sp, 0x54                                |     sl += var_54h;
    0x00011586 mov r0, sb                                        |     r0 = sb;
    0x00011588 blx 0x2e80                                        |     strncmp (r0, r1, r2);
    0x0001158c mov r0, sb                                        |     r0 = sb;
    0x0001158e movs r3, 1                                        |     r3 = 1;
    0x00011590 movs r2, 0x80                                     |     r2 = 0x80;
    0x00011592 mov r1, sl                                        |     r1 = sl;
    0x00011594 bl 0x103f4                                        |     r0 = fcn_000103f4 (r0, r1, r2, r3);
    0x00011598 mov sb, r0                                        |     sb = r0;
    0x0001159a cmp r0, 0                                         |     
                                                                 |     if (r0 != 0) {
    0x0001159c bne 0x11542                                       |         goto label_0;
                                                                 |     }
    0x0001159e lsl.w fp, r4, 6                                   |     
    0x000115a2 movs r2, 0x80                                     |     r2 = 0x80;
    0x000115a4 mov r1, sl                                        |     r1 = sl;
    0x000115a6 add.w r3, fp, r4                                  |     r3 = fp + r4;
    0x000115aa lsls r3, r3, 2                                    |     r3 <<= 2;
    0x000115ac adds r0, r3, 4                                    |     r0 = r3 + 4;
    0x000115ae str r3, [sp, 0xc]                                 |     var_ch_2 = r3;
    0x000115b0 add r0, r7                                        |     r0 += r7;
    0x000115b2 blx 0x2ee0                                        |     pipe ();
    0x000115b6 movs r1, 0x2d                                     |     r1 = 0x2d;
    0x000115b8 mov r0, sl                                        |     r0 = sl;
    0x000115ba blx 0x28e4                                        |     fcn_000028e4 ();
    0x000115be ldr r3, [sp, 0xc]                                 |     r3 = var_ch_2;
    0x000115c0 mov r1, r0                                        |     r1 = r0;
                                                                 |     if (r0 == 0) {
    0x000115c2 cbz r0, 0x11616                                   |         goto label_20;
                                                                 |     }
    0x000115c4 sub.w sl, r0, sl                                  |     sl = r0 - sl;
    0x000115c8 adds r2, r7, r3                                   |     r2 = r7 + r3;
    0x000115ca add r2, sl                                        |     r2 += sl;
    0x000115cc add.w r0, r3, 0x84                                |     r0 = r3 + 0x84;
    0x000115d0 strb.w sb, [r2, 4]                                |     *((r2 + 4)) = sb;
    0x000115d4 add r0, r7                                        |     r0 += r7;
    0x000115d6 movs r2, 0x80                                     |     r2 = 0x80;
    0x000115d8 blx 0x2ee0                                        |     pipe ();
    0x000115da invalid                                           |     
                                                                 | label_2:
    0x000115dc ldr r3, [pc, 0x6c]                                |     
    0x000115de add fp, r4                                        |     
    0x000115e0 movs r2, 0xff                                     |     r2 = 0xff;
    0x000115e2 mov r0, r5                                        |     r0 = r5;
    0x000115e4 add r3, pc                                        |     r3 = 0x22c34;
    0x000115e6 str.w r2, [r3, fp, lsl 2]                         |     __asm ("str.w r2, [r3, fp, lsl 2]");
    0x000115ea blx 0x2f1c                                        |     r0 = memchr (r0, r1, r2);
    0x000115ee mov r4, r0                                        |     r4 = r0;
    0x000115f0 cmp r0, 0                                         |     
                                                                 |     if (r0 != 0) {
    0x000115f2 bne 0x1154e                                       |         goto label_1;
                                                                 |     }
                                                                 | label_19:
    0x000115f4 mov r0, r5                                        |     r0 = r5;
    0x000115f6 blx 0x2c40                                        |     dprintf_chk ();
    0x000115f8 invalid                                           |     
                                                                 |     do {
    0x000115fc ldr r2, [pc, 0x50]                                |         
    0x000115fe ldr r3, [pc, 0x38]                                |         r3 = *(0x1163a);
    0x00011600 add r2, pc                                        |         r2 = 0x22c54;
    0x00011602 ldr r3, [r2, r3]                                  |         r3 = *(0x22c54);
    0x00011604 ldr r2, [r3]                                      |         r2 = *(0x22c54);
    0x00011606 ldr r3, [sp, 0xd4]                                |         r3 = var_d4h;
    0x00011608 eors r2, r3                                       |         r2 ^= r3;
    0x0001160a mov.w r3, 0                                       |         r3 = 0;
    0x0001160c lsls r0, r0, 0xc                                  |         r0 <<= 0xc;
                                                                 |         if (r0 != r0) {
    0x0001160e bne 0x11630                                       |             goto label_21;
                                                                 |         }
    0x00011610 add sp, 0xdc                                      |         
    0x00011612 pop.w {r4, r5, r6, r7, r8, sb, sl, fp, pc}        |         
                                                                 | label_20:
    0x00011616 add r3, r7                                        |         r3 += r7;
    0x00011618 strb.w r0, [r3, 0x84]                             |         *((r3 + 0x84)) = r0;
    0x0001161c b 0x115dc                                         |         goto label_2;
                                                                 | label_18:
    0x0001161e ldr r1, [pc, 0x34]                                |         
    0x00011620 movs r0, 2                                        |         r0 = 2;
    0x00011622 add r1, pc                                        |         r1 = 0x22c7c;
    0x00011624 bl 0xfcdc                                         |         r0 = fcn_0000fcdc (r0);
    0x00011628 blx 0x2f88                                        |         r0 = cxa_finalize ();
    0x0001162c ldr r0, [r0]                                      |         r0 = *(r0);
    0x0001162e b 0x115fc                                         |         
                                                                 |     } while (1);
                                                                 | label_21:
    0x00011630 blx 0x2cdc                                        |     fprintf_chk ()
    0x00011634 bvc 0x11684                                       |     __asm ("bvc 0x11684");
    0x00011636 movs r1, r0                                       |     r1 = r0;
    0x00011638 lsls r4, r1, 0xd                                  |     r4 = r1 << 0xd;
    0x0001163a movs r0, r0                                       |     
                                                                 |     if (r0 != 0) {
    0x0001163c cbz r0, 0x1166a                                   |         
    0x0001163e movs r0, r0                                       |         
                                                                 |         if (r4 == 0) {
    0x00011640 cbz r4, 0x11674                                   |             goto label_22;
                                                                 |         }
    0x00011642 movs r0, r0                                       |         
                                                                 |         if (r2 == 0) {
    0x00011644 cbz r2, 0x1167a                                   |             goto label_23;
                                                                 |         }
    0x00011646 movs r0, r0                                       |         
    0x00011648 adds r0, 0x30                                     |         r0 += 0x30;
    0x0001164a movs r2, r0                                       |         r2 = r0;
    0x0001164c cmp r7, 0x8c                                      |         
    0x0001164e movs r2, r0                                       |         r2 = r0;
    0x00011650 bvs 0x116cc                                       |         __asm ("bvs 0x116cc");
    0x00011652 movs r1, r0                                       |         r1 = r0;
    0x00011654 sub sp, 0xe8                                      |         
    0x00011656 movs r0, r0                                       |         
    0x00011658 push.w {r4, r5, r6, r7, r8, sb, sl, lr}           |         
    0x0001165a blx lr                                            |         lr (r0, r1);
    0x0001165c mov r7, r2                                        |         r7 = r2;
    0x0001165e ldr r2, [pc, 0x1c0]                               |         r2 = *(0x11822);
    0x00011660 sub sp, 0xd0                                      |         
    0x00011662 add.w r8, sp, 0x8c                                |         r8 += var_8ch;
    0x00011666 mov r4, r0                                        |         r4 = r0;
    0x00011668 ldr r3, [pc, 0x1b8]                               |         r3 = *(0x11824);
                                                                 |     }
    0x0001166a mov r6, r1                                        |     r6 = r1;
    0x0001166c add r2, pc                                        |     r2 += pc;
    0x0001166e ldr.w sb, [pc, 0x1b8]                             |     sb = *(0x1182a);
    0x00011672 mov r1, r0                                        |     r1 = r0;
                                                                 | label_22:
    0x00011674 mov r0, r8                                        |     r0 = r8;
    0x00011676 ldr r3, [r2, r3]                                  |     r3 = *((r2 + r3));
    0x00011678 add sb, pc                                        |     sb += pc;
                                                                 | label_23:
    0x0001167a ldr r3, [r3]                                      |     r3 = *(r3);
    0x0001167c str r3, [sp, 0xcc]                                |     var_cch = r3;
    0x0001167e mov.w r3, 0                                       |     r3 = 0;
    0x00011682 bl 0x10dac                                        |     r0 = fcn_00010dac (r0, r1, r2);
    0x00011684 invalid                                           |     
                                                                 |     if (r0 != 0) {
    0x00011688 ldr r2, [pc, 0x1a0]                               |         
    0x0001168a mov r5, r0                                        |         r5 = r0;
    0x0001168c mov ip, r0                                        |         
    0x0001168e mov lr, r0                                        |         lr = r0;
    0x00011690 add r2, pc                                        |         r2 = 0x22ec0;
    0x00011692 b 0x116a2                                         |         
                                                                 |     }
    0x00011686 cbnz r0, 0x116dc                                  |     goto label_4;
                                                                 |     while (r4 != r3) {
    0x00011694 add.w lr, lr, 1                                   |         lr++;
    0x00011698 add.w ip, ip, 0x41                                |         
    0x0001169c cmp.w lr, 0x80                                    |         
                                                                 |         if (lr == 0x80) {
    0x000116a0 beq 0x11756                                       |             goto label_24;
                                                                 |         }
    0x000116a2 ldr.w r3, [r2, ip, lsl 2]                         |         offset_0 = ip << 2;
                                                                 |         r3 = *((r2 + offset_0));
    0x000116a6 cmp r4, r3                                        |         
    0x000116a8 bne 0x11694                                       |         
                                                                 |     }
    0x000116aa mov sl, lr                                        |     sl = lr;
                                                                 | label_5:
    0x000116ac cmp r4, 0x41                                      |     
                                                                 |     if (r4 != 0x41) {
    0x000116ae beq 0x11700                                       |         
    0x000116b0 bic r3, r4, 0xe0                                  |         r3 = BIT_MASK (r4, 0xe0);
    0x000116b4 cmp r3, 2                                         |         
                                                                 |         if (r3 != 2) {
    0x000116b6 bne 0x11718                                       |             goto label_7;
                                                                 |         }
    0x000116b8 ldr r3, [pc, 0x174]                               |         r3 = *(0x11830);
    0x000116ba ldr.w r3, [sb, r3]                                |         r3 = *((sb + r3));
    0x000116be ldrb r3, [r3]                                     |         r3 = *(r3);
    0x000116c0 cmp r3, 0                                         |         
                                                                 |         if (r3 != 0) {
    0x000116c2 bne 0x1175c                                       |             goto label_25;
                                                                 |         }
                                                                 | label_6:
    0x000116c4 ldr r2, [pc, 0x16c]                               |         r2 = *(0x11834);
    0x000116c6 mov r3, r7                                        |         r3 = r7;
    0x000116c8 mov r0, r8                                        |         r0 = r8;
    0x000116ca mov r1, r6                                        |         r1 = r6;
    0x000116cc add r2, pc                                        |         r2 += pc;
    0x000116ce str r2, [sp]                                      |         *(sp) = r2;
    0x000116d0 ldr r2, [pc, 0x164]                               |         
    0x000116d2 add r2, pc                                        |         r2 = 0x22f0e;
    0x000116d4 blx 0x2c70                                        |         r0 = ctype_b_loc ();
    0x000116d8 cmp r0, 0                                         |         
                                                                 |         if (r0 >= 0) {
    0x000116da bge 0x11732                                       |             goto label_26;
                                                                 |         }
                                                                 | label_4:
    0x000116dc blx 0x2f88                                        |         r0 = cxa_finalize ();
    0x000116e0 ldr r5, [r0]                                      |         r5 = *(r0);
                                                                 | label_3:
    0x000116e2 ldr r2, [pc, 0x158]                               |         
    0x000116e4 ldr r3, [pc, 0x13c]                               |         r3 = *(0x11824);
    0x000116e6 add r2, pc                                        |         r2 = 0x22f28;
    0x000116e8 ldr r3, [r2, r3]                                  |         r3 = *(0x22f28);
    0x000116ea ldr r2, [r3]                                      |         r2 = *(0x22f28);
    0x000116ec ldr r3, [sp, 0xcc]                                |         r3 = var_cch;
    0x000116ee eors r2, r3                                       |         r2 ^= r3;
    0x000116f0 mov.w r3, 0                                       |         r3 = 0;
                                                                 |         if (r2 != r3) {
    0x000116f4 bne.w 0x1181a                                     |             goto label_27;
                                                                 |         }
    0x000116f8 mov r0, r5                                        |         r0 = r5;
    0x000116fa add sp, 0xd0                                      |         
    0x000116fc pop.w {r4, r5, r6, r7, r8, sb, sl, pc}            |         
                                                                 |     }
    0x00011700 ldr r1, [pc, 0x13c]                               |     
    0x00011702 movs r3, 0                                        |     r3 = 0;
    0x00011704 add r1, pc                                        |     r1 = 0x22f48;
    0x00011706 b 0x11710                                         |     
                                                                 |     while (r2 != 0x4b) {
    0x00011708 adds r3, 0x41                                     |         r3 += 0x41;
    0x0001170a cmp.w r3, 0x2080                                  |         
                                                                 |         if (r3 == 0x2080) {
    0x0001170e beq 0x11770                                       |             goto label_28;
                                                                 |         }
    0x00011710 ldr.w r2, [r1, r3, lsl 2]                         |         offset_1 = r3 << 2;
                                                                 |         r2 = *((r1 + offset_1));
    0x00011714 cmp r2, 0x4b                                      |         
    0x00011716 bne 0x11708                                       |         
                                                                 |     }
                                                                 | label_7:
    0x00011718 ldr r2, [pc, 0x128]                               |     
    0x0001171a mov r3, r7                                        |     r3 = r7;
    0x0001171c mov r1, r6                                        |     r1 = r6;
    0x0001171e mov r0, r8                                        |     r0 = r8;
    0x00011720 add r2, pc                                        |     r2 = 0x22f68;
    0x00011722 str r2, [sp]                                      |     *(sp) = r2;
    0x00011724 ldr r2, [pc, 0x120]                               |     
    0x00011726 add r2, pc                                        |     r2 = 0x22f72;
    0x00011728 blx 0x2c70                                        |     r0 = ctype_b_loc ();
    0x0001172c cmp r0, 0                                         |     
                                                                 |     if (r0 >= 0) {
    0x0001172e bge 0x116e2                                       |         goto label_3;
                                                                 |     }
    0x00011730 b 0x116dc                                         |     goto label_4;
                                                                 | label_26:
    0x00011732 subs.w r2, r4, 0x22                               |     r2 = r4 - 0x22;
    0x00011736 mov r1, sl                                        |     r1 = sl;
    0x00011738 it ne                                             |     
                                                                 |     if (r2 == r4) {
    0x0001173a movne r2, 1                                       |         r2 = 1;
                                                                 |     }
    0x0001173c mov r0, r6                                        |     r0 = r6;
    0x0001173e bl 0x10b30                                        |     r0 = fcn_00010b30 (r0, r1);
    0x00011742 mov r5, r0                                        |     r5 = r0;
    0x00011744 cmp r0, 0                                         |     
                                                                 |     if (r0 == 0) {
    0x00011746 beq 0x116e2                                       |         goto label_3;
                                                                 |     }
    0x00011748 mov r0, r6                                        |     r0 = r6;
    0x0001174a blx 0x29a4                                        |     fcn_000029a4 ();
    0x0001174e blx 0x2f88                                        |     r0 = cxa_finalize ();
    0x00011752 str r5, [r0]                                      |     *(r0) = r5;
    0x00011754 b 0x116e2                                         |     goto label_3;
                                                                 | label_24:
    0x00011756 mov.w sl, -1                                      |     sl = -1;
    0x0001175a b 0x116ac                                         |     goto label_5;
                                                                 | label_25:
    0x0001175c subs.w r1, r4, 0x22                               |     r1 = r4 - 0x22;
    0x00011760 mov r0, sl                                        |     r0 = sl;
    0x00011762 it ne                                             |     
                                                                 |     if (r1 == r4) {
    0x00011764 movne r1, 1                                       |         r1 = 1;
                                                                 |     }
    0x00011766 bl 0x67a8                                         |     r0 = fcn_000067a8 (r0, r1);
    0x0001176a cmp r0, 0                                         |     
                                                                 |     if (r0 == 0) {
    0x0001176c beq 0x116c4                                       |         goto label_6;
                                                                 |     }
    0x0001176e b 0x116dc                                         |     goto label_4;
                                                                 | label_28:
    0x00011770 movs r1, 2                                        |     r1 = 2;
    0x00011772 mov r0, r8                                        |     r0 = r8;
    0x00011774 blx 0x2730                                        |     r0 = open (r0, r1, r2);
    0x00011778 subs r4, r0, 0                                    |     r4 = r0 - 0;
                                                                 |     if (r4 < r0) {
    0x0001177a blt 0x117f6                                       |         goto label_29;
                                                                 |     }
    0x0001177c ldr r1, [pc, 0xcc]                                |     
    0x0001177e add r3, sp, 0xc                                   |     r3 += var_ch_2;
    0x00011780 movs r2, 0x80                                     |     r2 = 0x80;
    0x00011782 mov r0, r3                                        |     r0 = r3;
    0x00011784 add r1, pc                                        |     r1 = 0x22fd4;
    0x00011786 blx 0x2b08                                        |     EVP_MD_CTX_new ();
    0x0001178a movw r1, 0x4f07                                   |     
    0x0001178e mov r2, r0                                        |     r2 = r0;
    0x00011790 movt r1, 0x4080                                   |     r1 = 0x40804f07;
    0x00011794 mov r0, r4                                        |     r0 = r4;
    0x00011796 blx 0x2a8c                                        |     fcn_00002a8c ();
    0x00011798 ldrd r4, r6, [sl, -0x204]!                        |     __asm ("ldrd r4, r6, [sl, -0x204]!");
                                                                 |     if (r0 == 0) {
    0x0001179c cbnz r0, 0x117e2                                  |         
    0x0001179e ldr r3, [pc, 0xb0]                                |         
    0x000117a0 movs r2, 0x20                                     |         r2 = 0x20;
    0x000117a2 str.w sl, [sp]                                    |         __asm ("str.w sl, [sp]");
    0x000117a6 add.w sl, sp, 0xac                                |         sl += var_ach;
    0x000117aa movs r1, 1                                        |         r1 = 1;
    0x000117ac mov r0, sl                                        |         r0 = sl;
    0x000117ae add r3, pc                                        |         r3 = 0x23004;
    0x000117b0 blx 0x2e80                                        |         strncmp (r0, r1, r2);
                                                                 | label_9:
    0x000117b4 ldr r3, [pc, 0x9c]                                |         
    0x000117b6 mov r0, sl                                        |         r0 = sl;
    0x000117b8 ldr r2, [pc, 0x9c]                                |         
    0x000117ba mov r1, r6                                        |         r1 = r6;
    0x000117bc add r3, pc                                        |         r3 = 0x23014;
    0x000117be str r3, [sp]                                      |         *(sp) = r3;
    0x000117c0 add r2, pc                                        |         r2 = 0x2301c;
    0x000117c2 mov r3, r7                                        |         r3 = r7;
                                                                 | label_8:
    0x000117c4 blx 0x2c70                                        |         r0 = ctype_b_loc ();
    0x000117c8 mov r3, r0                                        |         r3 = r0;
                                                                 |         if (r0 == 0) {
    0x000117ca cbz r0, 0x1180a                                   |             goto label_30;
                                                                 |         }
    0x000117cc mov r2, sb                                        |         r2 = sb;
    0x000117ce movw r1, 0x4f08                                   |         r1 = 0x4f08;
    0x000117d2 mov r0, r4                                        |         r0 = r4;
    0x000117d4 blx 0x2a8c                                        |         r0 = fcn_00002a8c ();
                                                                 |         if (r0 != 0) {
    0x000117d8 cbnz r0, 0x11814                                  |             goto label_31;
                                                                 |         }
    0x000117da mov r0, r4                                        |         r0 = r4;
    0x000117dc blx 0x2bf8                                        |         EVP_PKEY_verify_init ();
    0x000117e0 b 0x11718                                         |         goto label_7;
                                                                 |     }
    0x000117e2 ldr r1, [pc, 0x78]                                |     
    0x000117e4 add r1, pc                                        |     r1 = 0x23046;
                                                                 |     do {
    0x000117e6 mov r2, r8                                        |         r2 = r8;
    0x000117e8 movs r0, 2                                        |         r0 = 2;
    0x000117ea bl 0xfcdc                                         |         fcn_0000fcdc (r0);
    0x000117ee mov r0, r4                                        |         r0 = r4;
    0x000117f0 bl 0x10978                                        |         fcn_00010978 (r0);
    0x000117f4 b 0x116dc                                         |         goto label_4;
                                                                 | label_29:
    0x000117f6 ldr r1, [pc, 0x68]                                |         
    0x000117f8 mov r2, r8                                        |         r2 = r8;
    0x000117fa movs r0, 2                                        |         r0 = 2;
    0x000117fc add r1, pc                                        |         r1 = 0x23062;
    0x000117fe bl 0xfcdc                                         |         r0 = fcn_0000fcdc (r0);
    0x00011802 blx 0x2f88                                        |         r0 = cxa_finalize ();
    0x00011806 ldr r5, [r0]                                      |         r5 = *(r0);
    0x00011808 b 0x116e2                                         |         goto label_3;
                                                                 | label_30:
    0x0001180a mov r0, r4                                        |         r0 = r4;
    0x0001180c mov r5, r3                                        |         r5 = r3;
    0x0001180e blx 0x2bf8                                        |         EVP_PKEY_verify_init ();
    0x00011810 ldrd lr, r7, [r4, 0x198]!                         |         __asm ("ldrd lr, r7, [r4, 0x198]!");
                                                                 | label_31:
    0x00011814 ldr r1, [pc, 0x4c]                                |         
    0x00011816 add r1, pc                                        |         r1 = 0x2307e;
    0x00011818 b 0x117e6                                         |         
                                                                 |     } while (1);
                                                                 | label_27:
    0x0001181a blx 0x2cdc                                        |     fprintf_chk ()
    0x0001181e nop                                               |     
                                                                 |     if (r0 >= 2) {
    0x00011820 bpl 0x117c4                                       |         goto label_8;
                                                                 |     }
    0x00011822 movs r1, r0                                       |     r1 = r0;
    0x00011824 lsls r4, r1, 0xd                                  |     r4 = r1 << 0xd;
    0x00011826 movs r0, r0                                       |     
                                                                 |     if (r0 >= r0) {
    0x00011828 bpl 0x117b4                                       |         goto label_9;
                                                                 |     }
    0x0001182a movs r1, r0                                       |     r1 = r0;
    0x0001182c cmp r6, 0xe0                                      |     
    0x0001182e movs r2, r0                                       |     r2 = r0;
    0x00011830 lsls r4, r2, 0xd                                  |     r4 = r2 << 0xd;
    0x00011832 movs r0, r0                                       |     
    0x00011834 str r4, [r5, 0x50]                                |     *((r5 + 0x50)) = r4;
    0x00011836 movs r0, r0                                       |     
    0x00011838 sub sp, 0x1d8                                     |     
    0x0001183a movs r0, r0                                       |     
                                                                 |     if (r0 >= r0) {
    0x0001183c bpl 0x118ec                                       |         goto label_32;
                                                                 |     }
    0x0001183e movs r1, r0                                       |     r1 = r0;
                                                                 | label_10:
    0x00011840 cmp r6, 0x6c                                      |     
    0x00011842 movs r2, r0                                       |     r2 = r0;
    0x00011844 str r0, [r3, 0x4c]                                |     *((r3 + 0x4c)) = r0;
    0x00011846 movs r0, r0                                       |     
    0x00011848 sub sp, 0x88                                      |     
    0x0001184a movs r0, r0                                       |     
    0x0001184c pop {r3, r5, r7}                                  |     
    0x0001184e movs r0, r0                                       |     
    0x00011850 add r7, sp, 0x338                                 |     r7 += var_338h;
    0x00011852 movs r0, r0                                       |     
    0x00011854 str r4, [r7, 0x40]                                |     *((r7 + 0x40)) = r4;
    0x00011856 movs r0, r0                                       |     
    0x00011858 add r7, sp, 0x340                                 |     r7 += var_340h;
    0x0001185a movs r0, r0                                       |     
    0x0001185c add r7, sp, 0x1b0                                 |     r7 += var_1b0h;
    0x0001185e movs r0, r0                                       |     
    0x00011860 add r7, sp, 0xc0                                  |     r7 += var_c0h;
    0x00011862 movs r0, r0                                       |     
    0x00011864 add r7, sp, 0x218                                 |     r7 += var_218h;
    0x00011866 movs r0, r0                                       |     
    0x00011868 ldr r1, [pc, 0x2c]                                |     
    0x0001186a push {r3, lr}                                     |     
    0x0001186c movs r3, 0                                        |     r3 = 0;
    0x0001186e mov r0, r3                                        |     r0 = r3;
    0x00011870 add r1, pc                                        |     r1 = 0x2310c;
    0x00011872 b 0x1187a                                         |     
                                                                 |     while (r2 != 0x23) {
    0x00011874 adds r0, 1                                        |         r0++;
    0x00011876 cmp r0, 0x80                                      |         
                                                                 |         if (r0 == 0x80) {
    0x00011878 beq 0x1188a                                       |             goto label_33;
                                                                 |         }
    0x0001187a ldr.w r2, [r1, r3, lsl 2]                         |         offset_2 = r3 << 2;
                                                                 |         r2 = *((r1 + offset_2));
    0x0001187e adds r3, 0x41                                     |         r3 += 0x41;
    0x00011880 cmp r2, 0x23                                      |         
    0x00011882 bne 0x11874                                       |         
                                                                 |     }
    0x00011884 bl 0x10d3c                                        |     r0 = fcn_00010d3c (r0);
                                                                 |     if (r0 == 0) {
    0x00011888 cbnz r0, 0x1188e                                  |         
                                                                 | label_33:
    0x0001188a movs r0, 0                                        |         r0 = 0;
    0x0001188c pop {r3, pc}                                      |         
                                                                 |     }
    0x0001188e blx 0x2f88                                        |     r0 = cxa_finalize ();
    0x00011892 ldr r0, [r0]                                      |     r0 = *(r0);
    0x00011894 pop {r3, pc}                                      |     
                                                                 | label_32:
    0x000118ec ldr r3, [pc, 0x2c]                                |     r3 = *(0x1191c);
    0x000118ee add r2, pc                                        |     r2 += pc;
    0x000118f0 ldr r3, [r2, r3]                                  |     r3 = *((r2 + r3));
    0x000118f2 ldr r2, [r3]                                      |     r2 = *(0x1191c);
    0x000118f4 ldr r3, [sp, 0x4c]                                |     r3 = var_4ch;
    0x000118f6 eors r2, r3                                       |     r2 ^= r3;
    0x000118f8 mov.w r3, 0                                       |     r3 = 0;
                                                                 |     if (r2 == r3) {
    0x000118fc bne 0x11912                                       |         
    0x000118fe add sp, 0x54                                      |         
    0x00011900 pop {r4, r5, pc}                                  |         
                                                                 |     }
    0x00011912 blx 0x2cdc                                        |     fprintf_chk ()
    0x00011916 nop                                               |     
                                                                 |     if (r2 <= r3) {
    0x00011918 blo 0x11840                                       |         goto label_10;
                                                                 |     }
    0x0001191a movs r1, r0                                       |     r1 = r0;
    0x0001191c lsls r4, r1, 0xd                                  |     r4 = r1 << 0xd;
    0x0001191e movs r0, r0                                       |     
    0x00011920 cmp r4, 0xbe                                      |     
    0x00011922 movs r2, r0                                       |     r2 = r0;
    0x00011924 add r6, sp, 0x3d8                                 |     r6 += arg_3d8h;
    0x00011926 movs r0, r0                                       |     
                                                                 |     if (r0 <= r0) {
    0x00011928 blo 0x119c8                                       |         goto label_34;
                                                                 |     }
    0x0001192a movs r1, r0                                       |     r1 = r0;
    0x0001192c ldr r1, [pc, 0x1f8]                               |     
    0x0001192e cmp r0, 0x20                                      |     
    0x00011930 ldr r2, [pc, 0x1f8]                               |     
    0x00011932 ldr r3, [pc, 0x1fc]                               |     r3 = *(0x11b32);
    0x00011934 push.w {r4, r5, r6, r7, r8, sb, sl, fp, lr}       |     
    0x00011938 sub.w sp, sp, 0x1120                              |     
    0x0001193c sub sp, 0x1c                                      |     
    0x0001193e add r1, pc                                        |     r1 = 0x2346a;
    0x00011940 add r2, pc                                        |     r2 = 0x23470;
    0x00011942 mov r6, r0                                        |     r6 = r0;
    0x00011944 str r1, [sp, 0x1c]                                |     var_1ch_2 = r1;
    0x00011946 add.w r0, sp, 0x1120                              |     r0 += var_1120h_2;
    0x0001194a ldr r3, [r2, r3]                                  |     
    0x0001194c mov.w r5, 0                                       |     r5 = 0;
    0x00011950 ldr r4, [pc, 0x1e0]                               |     
    0x00011952 add.w r0, r0, 0x14                                |     r0 += var_14h_4;
    0x00011956 ldr.w sb, [pc, 0x1e0]                             |     
    0x00011958 str r1, [sp, 0x380]                               |     *((sp + 0x380)) = r1;
    0x0001195a mov r8, r5                                        |     r8 = r5;
    0x0001195c ldr r3, [r3]                                      |     r3 = *(0x23470);
    0x0001195e str r3, [r0]                                      |     *(r0) = r3;
    0x00011960 mov.w r3, 0                                       |     r3 = 0;
    0x00011964 ldr r3, [pc, 0x1d4]                               |     
    0x00011966 ldr.w fp, [pc, 0x1d8]                             |     
    0x0001196a add r4, pc                                        |     r4 = 0x234a2;
    0x0001196c ite eq                                            |     
                                                                 |     if (r0 != 0x20) {
    0x0001196e moveq r7, 0x40                                    |         r7 = 0x40;
                                                                 |     }
                                                                 |     if (r0 == 0x20) {
    0x00011970 movne r7, 0x20                                    |         r7 = 0x20;
                                                                 |     }
    0x00011972 add r3, pc                                        |     r3 = 0x234b2;
    0x00011974 adds r4, 4                                        |     r4 += 4;
    0x00011976 str r3, [sp, 0x18]                                |     var_18h_2 = r3;
    0x00011978 add r3, sp, 0x138                                 |     r3 += var_138h;
    0x0001197a str r3, [sp, 0x14]                                |     var_14h_2 = r3;
    0x0001197c add r3, sp, 0x24                                  |     r3 += var_24h;
    0x0001197e add sb, pc                                        |     sb = 0x234bc;
    0x00011980 add fp, pc                                        |     fp = 0x234c6;
    0x00011982 str r3, [sp, 0x10]                                |     var_10h_2 = r3;
    0x00011984 b 0x11996                                         |     goto label_13;
                                                                 | label_12:
    0x00011986 cmp r7, r2                                        |     
                                                                 |     if (r7 == r2) {
    0x00011988 beq.w 0x11aaa                                     |         goto label_35;
                                                                 |     }
                                                                 |     do {
                                                                 | label_11:
    0x0001198c adds r5, 1                                        |         r5++;
    0x0001198e add.w r4, r4, 0x104                               |         r4 += 0x104;
    0x00011992 cmp r5, 0x80                                      |         
                                                                 |         if (r5 == 0x80) {
    0x00011994 beq 0x11a14                                       |             goto label_36;
                                                                 |         }
                                                                 | label_13:
    0x00011996 ldr r3, [r4, -0x4]                                |         r3 = *((r4 - 0x4));
    0x0001199a cmp r3, 0                                         |         
    0x0001199c beq 0x1198c                                       |         
                                                                 |     } while (r3 == 0);
    0x0001199e cmp r3, 0x4b                                      |     
    0x000119a0 and r2, r3, 0xe0                                  |     r2 = r3 & 0xe0;
                                                                 |     if (r3 == 0x4b) {
    0x000119a4 beq 0x1198c                                       |         goto label_11;
                                                                 |     }
    0x000119a6 cmp r6, r2                                        |     
                                                                 |     if (r6 != r2) {
    0x000119a8 bne 0x11986                                       |         goto label_12;
                                                                 |     }
    0x000119aa ldrb.w r1, [r4, 0x80]                             |     r1 = *((r4 + 0x80));
    0x000119ae str r3, [sp, 0xc]                                 |     var_ch = r3;
    0x000119b0 cmp r1, 0                                         |     
                                                                 |     if (r1 == 0) {
    0x000119b2 beq 0x11986                                       |         goto label_12;
                                                                 |     }
    0x000119b4 mov r1, fp                                        |     r1 = fp;
    0x000119b6 mov r0, r4                                        |     r0 = r4;
    0x000119b8 blx 0x2f70                                        |     vdprintf_chk ();
    0x000119bc ldr r3, [sp, 0xc]                                 |     r3 = var_ch;
    0x000119be subs r3, 0x22                                     |     r3 -= 0x22;
    0x000119c0 it ne                                             |     
                                                                 |     if (r3 == 0x22) {
    0x000119c2 movne r3, 1                                       |         r3 = 1;
                                                                 |     }
    0x000119c4 cmp r0, 0                                         |     
    0x000119c6 it ne                                             |     
                                                                 |     if (r0 == 0) {
                                                                 | label_34:
    0x000119c8 movne r3, 0                                       |         r3 = 0;
                                                                 |     }
    0x000119ca cmp r3, 0                                         |     
                                                                 |     if (r3 != 0) {
    0x000119cc bne.w 0x11afe                                     |         goto label_37;
                                                                 |     }
    0x000119d0 strb.w r3, [r4, 0x80]                             |     *((r4 + 0x80)) = r3;
    0x000119d4 add.w sl, r8, r8, lsl 4                           |     sl = r8 + (r8 << 4);
    0x000119d8 ldr r3, [sp, 0x14]                                |     r3 = n;
    0x000119da mov r0, r4                                        |     r0 = r4;
    0x000119dc lsl.w sl, sl, 3                                   |     sl <<= 3;
    0x000119e0 add.w r8, r8, 1                                   |     r8++;
    0x000119e4 sub.w r3, r3, 0x114                               |     r3 -= 0x114;
    0x000119e8 add r3, sl                                        |     r3 += sl;
    0x000119ea add.w sl, sl, 0x18                                |     sl += 0x18;
    0x000119ee str r5, [r3, 0x10]                                |     *((r3 + 0x10)) = r5;
    0x000119f0 adds r5, 1                                        |     r5++;
    0x000119f2 str r3, [sp, 0xc]                                 |     var_ch = r3;
    0x000119f4 blx 0x2ab0                                        |     fcn_00002ab0 ();
    0x000119f8 ldr r3, [sp, 0xc]                                 |     r3 = var_ch;
    0x000119fa adds r2, r0, 1                                    |     r2 = r0 + 1;
    0x000119fc mov r1, r4                                        |     r1 = r4;
    0x000119fe add.w r4, r4, 0x104                               |     r4 += 0x104;
    0x00011a02 strh r0, [r3, 0x14]                               |     *((r3 + 0x14)) = r0;
    0x00011a04 ldr r3, [sp, 0x10]                                |     r3 = var_10h;
    0x00011a06 add.w r0, r3, sl                                  |     r0 = r3 + sl;
    0x00011a0a movs r3, 0x80                                     |     r3 = 0x80;
    0x00011a0c blx 0x2a08                                        |     fcn_00002a08 ();
    0x00011a10 cmp r5, 0x80                                      |     
                                                                 |     if (r5 != 0x80) {
    0x00011a12 bne 0x11996                                       |         goto label_13;
                                                                 |     }
                                                                 | label_36:
    0x00011a14 ldr r3, [sp, 0x14]                                |     r3 = n;
    0x00011a16 movw r1, 0x6f03                                   |     
    0x00011a1a ldr r2, [sp, 0x10]                                |     r2 = var_10h;
    0x00011a1c movt r1, 0x5110                                   |     r1 = 0x51106f03;
    0x00011a20 sub.w r3, r3, 0x114                               |     r3 -= 0x114;
    0x00011a24 str.w r8, [r3]                                    |     __asm ("str.w r8, [r3]");
    0x00011a28 ldr r3, [pc, 0x118]                               |     
    0x00011a2a add r3, pc                                        |     r3 = 0x23572;
    0x00011a2c ldr r0, [r3]                                      |     r0 = *(0x23572);
    0x00011a2e blx 0x2a8c                                        |     r0 = fcn_00002a8c ();
    0x00011a32 mov r5, r0                                        |     r5 = r0;
    0x00011a34 cmp r0, 0                                         |     
                                                                 |     if (r0 != 0) {
    0x00011a36 bne 0x11b0c                                       |         goto label_38;
                                                                 |     }
    0x00011a38 cmp r6, 0x20                                      |     
                                                                 |     if (r6 == 0x20) {
    0x00011a3a beq 0x11b06                                       |         goto label_39;
                                                                 |     }
    0x00011a3c ldr r1, [pc, 0x108]                               |     
    0x00011a3e add r1, pc                                        |     r1 = 0x2358a;
                                                                 | label_14:
    0x00011a40 ldr r0, [pc, 0x108]                               |     
    0x00011a42 ldr r4, [pc, 0x10c]                               |     
    0x00011a44 add r0, pc                                        |     r0 = 0x23594;
    0x00011a46 adds r0, 4                                        |     r0 += 4;
    0x00011a48 add r4, pc                                        |     r4 = 0x2359e;
    0x00011a4a blx 0x2b44                                        |     waitpid ();
    0x00011a4e ldr r2, [pc, 0x104]                               |     r2 = *(0x11b56);
    0x00011a50 orr r0, r6, 1                                     |     r0 = r6 | 1;
    0x00011a54 ldr r1, [sp, 0x1c]                                |     r1 = var_1ch;
    0x00011a56 sub.w r6, r6, 0x40                                |     r6 -= 0x40;
    0x00011a5a clz r6, r6                                        |     r6 &= r6;
    0x00011a5e movs r3, 0                                        |     r3 = 0;
    0x00011a60 lsrs r6, r6, 5                                    |     r6 >>= 5;
    0x00011a62 ldr r2, [r1, r2]                                  |     r2 = *((r1 + r2));
    0x00011a64 strb r6, [r2]                                     |     *(r2) = r6;
    0x00011a66 mov r2, r3                                        |     r2 = r3;
    0x00011a68 b 0x11a72                                         |     goto label_40;
    0x00011a5c invalid                                           |     
                                                                 |     do {
    0x00011a6a adds r2, 1                                        |         r2++;
    0x00011a6c adds r3, 0x41                                     |         r3 += 0x41;
    0x00011a6e cmp r2, 0x80                                      |         
                                                                 |         if (r2 == 0x80) {
    0x00011a70 beq 0x11b1e                                       |             goto label_41;
                                                                 |         }
                                                                 | label_40:
    0x00011a72 ldr.w r1, [r4, r3, lsl 2]                         |         offset_3 = r3 << 2;
                                                                 |         r1 = *((r4 + offset_3));
    0x00011a76 cmp r0, r1                                        |         
    0x00011a78 bne 0x11a6a                                       |         
                                                                 |     } while (r0 != r1);
                                                                 | label_16:
    0x00011a7a ldr r1, [pc, 0xdc]                                |     
    0x00011a7c movs r0, 5                                        |     r0 = 5;
    0x00011a7e add r1, pc                                        |     r1 = 0x235dc;
    0x00011a80 bl 0xfcdc                                         |     fcn_0000fcdc (r0);
                                                                 | label_15:
    0x00011a84 ldr r2, [pc, 0xd4]                                |     
    0x00011a86 add.w r1, sp, 0x1120                              |     r1 += arg_1120h;
    0x00011a8a ldr r3, [pc, 0xa4]                                |     r3 = *(0x11b32);
    0x00011a8c adds r1, 0x14                                     |     r1 += 0x14;
    0x00011a8e add r2, pc                                        |     r2 = 0x235ee;
    0x00011a90 ldr r3, [r2, r3]                                  |     r3 = *(0x235ee);
    0x00011a92 ldr r2, [r3]                                      |     r2 = *(0x235ee);
    0x00011a94 ldr r3, [r1]                                      |     r3 = *(r1);
    0x00011a96 eors r2, r3                                       |     r2 ^= r3;
    0x00011a98 mov.w r3, 0                                       |     r3 = 0;
                                                                 |     if (r2 != r3) {
    0x00011a9c bne 0x11b24                                       |         goto label_42;
                                                                 |     }
    0x00011a9e mov r0, r5                                        |     r0 = r5;
    0x00011aa0 add.w sp, sp, 0x1120                              |     
    0x00011aa4 add sp, 0x1c                                      |     
    0x00011aa6 pop.w {r4, r5, r6, r7, r8, sb, sl, fp, pc}        |     
                                                                 | label_35:
    0x00011aaa add.w sl, r4, 0x80                                |     sl = r4 + 0x80;
    0x00011aae mov r1, sb                                        |     r1 = sb;
    0x00011ab0 mov r0, sl                                        |     r0 = sl;
    0x00011ab2 blx 0x2f70                                        |     r0 = vdprintf_chk ();
    0x00011ab6 cmp r0, 0                                         |     
                                                                 |     if (r0 == 0) {
    0x00011ab8 beq.w 0x1198c                                     |         goto label_11;
                                                                 |     }
                                                                 | label_17:
    0x00011abc ldrb.w r2, [sb, 4]                                |     r2 = *((sb + 4));
    0x00011ac0 add.w r3, r8, r8, lsl 4                           |     r3 = r8 + (r8 << 4);
    0x00011ac4 ldr.w r0, [sb]                                    |     r0 = *(sb);
    0x00011ac8 movs r1, 1                                        |     r1 = 1;
    0x00011aca lsls r3, r3, 3                                    |     r3 <<= 3;
    0x00011acc add.w r8, r8, 1                                   |     r8++;
    0x00011ad0 strb.w r2, [r4, 0x84]                             |     *((r4 + 0x84)) = r2;
    0x00011ad4 ldr r2, [sp, 0x10]                                |     r2 = var_10h;
    0x00011ad6 str.w r0, [r4, 0x80]                              |     __asm ("str.w r0, [r4, 0x80]");
    0x00011ada add.w r0, r3, 0x18                                |     r0 = r3 + 0x18;
    0x00011adc movs r0, r3                                       |     r0 = r3;
    0x00011ade strd r4, sl, [sp]                                 |     __asm ("strd r4, sl, [sp]");
    0x00011ae2 add r0, r2                                        |     r0 += r2;
    0x00011ae4 ldr r2, [sp, 0x14]                                |     r2 = n;
    0x00011ae6 sub.w sl, r2, 0x114                               |     sl = r2 - 0x114;
    0x00011aea movs r2, 0x80                                     |     r2 = 0x80;
    0x00011aec add sl, r3                                        |     sl += r3;
    0x00011aee ldr r3, [sp, 0x18]                                |     r3 = var_18h;
    0x00011af0 str.w r5, [sl, 0x10]                              |     __asm ("str.w r5, [sl, 0x10]");
    0x00011af4 blx 0x2e80                                        |     strncmp (r0, r1, r2);
    0x00011af8 strh.w r0, [sl, 0x14]                             |     *((sl + 0x14)) = r0;
    0x00011afa movs r4, r2                                       |     r4 = r2;
    0x00011afc b 0x1198c                                         |     goto label_11;
                                                                 | label_37:
    0x00011afe mov r0, r5                                        |     r0 = r5;
    0x00011b00 bl 0x10d3c                                        |     fcn_00010d3c (r0);
    0x00011b04 b 0x1198c                                         |     goto label_11;
                                                                 | label_39:
    0x00011b06 ldr r1, [pc, 0x58]                                |     
    0x00011b08 add r1, pc                                        |     r1 = 0x2366e;
    0x00011b0a b 0x11a40                                         |     goto label_14;
                                                                 | label_38:
    0x00011b0c ldr r1, [pc, 0x54]                                |     
    0x00011b0e movs r0, 2                                        |     r0 = 2;
    0x00011b10 add r1, pc                                        |     r1 = 0x23678;
    0x00011b12 bl 0xfcdc                                         |     r0 = fcn_0000fcdc (r0);
    0x00011b16 blx 0x2f88                                        |     r0 = cxa_finalize ();
    0x00011b1a ldr r5, [r0]                                      |     r5 = *(r0);
    0x00011b1c b 0x11a84                                         |     goto label_15;
                                                                 | label_41:
    0x00011b1e mov.w r2, -1                                      |     r2 = -1;
    0x00011b22 b 0x11a7a                                         |     goto label_16;
                                                                 | label_42:
    0x00011b24 blx 0x2cdc                                        |     fprintf_chk ()
                                                                 |     do {
    0x00011b28 bhs 0x11b28                                       |         
    0x00011b2a movs r1, r0                                       |         r1 = r0;
    0x00011b2c bhs 0x11b28                                       |         
                                                                 |     } while (r1 >= r0);
    0x00011b2e movs r1, r0                                       |     r1 = r0;
    0x00011b30 lsls r4, r1, 0xd                                  |     r4 = r1 << 0xd;
    0x00011b32 movs r0, r0                                       |     
    0x00011b34 cmp r4, 6                                         |     
    0x00011b36 movs r2, r0                                       |     r2 = r0;
    0x00011b38 ldr r2, [r1, 4]                                   |     r2 = *((r1 + 4));
    0x00011b3a movs r0, r0                                       |     
    0x00011b3c ldr r6, [r7, 0x3c]                                |     r6 = *((r7 + 0x3c));
    0x00011b3e movs r0, r0                                       |     
    0x00011b40 ldr r4, [r7]                                      |     r4 = *(r7);
    0x00011b42 movs r0, r0                                       |     
    0x00011b44 bvc 0x11a5c                                       |     __asm ("bvc 0x11a5c");
    0x00011b46 movs r1, r0                                       |     r1 = r0;
    0x00011b48 add r5, sp, 0x2f8                                 |     r5 += arg_2f8h;
    0x00011b4a movs r0, r0                                       |     
    0x00011b4c cmp r2, 0xa8                                      |     
    0x00011b4e movs r2, r0                                       |     r2 = r0;
    0x00011b50 cmp r3, 0x28                                      |     
    0x00011b52 movs r2, r0                                       |     r2 = r0;
    0x00011b54 lsls r0, r7, 0xb                                  |     r0 = r7 << 0xb;
    0x00011b56 movs r0, r0                                       |     
    0x00011b58 add r5, sp, 0x2f8                                 |     r5 += arg_2f8h;
    0x00011b5a movs r0, r0                                       |     
                                                                 |     if (r0 != r0) {
    0x00011b5c bne 0x11abc                                       |         goto label_17;
                                                                 |     }
    0x00011b5e movs r1, r0                                       |     r1 = r0;
    0x00011b60 str r0, [r6, 0xc]                                 |     *((r6 + 0xc)) = r0;
    0x00011b62 movs r0, r0                                       |     
    0x00011b64 add r4, sp, 0x3d0                                 |     r4 += arg_3d0h;
    0x00011b66 movs r0, r0                                       |     
                                                                 | }
    ; assembly                                       | /* r2dec pseudo code output */
                                                     | /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/sbin/fwmgr @ 0x122f0 */
                                                     | #include <stdint.h>
                                                     |  
    ; (fcn) fcn.000122f0 ()                          | void fcn_000122f0 () {
                                                     |     int16_t var_4h_2;
                                                     |     int16_t var_8h_2;
                                                     |     int16_t var_1ch_2;
                                                     |     int16_t var_70h;
                                                     |     int16_t var_80h;
    0x000122f0 ldr r2, [pc, 0xe0]                    |     
    0x000122f2 movs r1, 2                            |     r1 = 2;
    0x000122f4 ldr r3, [pc, 0xe0]                    |     r3 = *(0x123d8);
    0x000122f6 push.w {r4, r5, r6, r7, r8, lr}       |     
    0x000122fa sub sp, 0x20                          |     
    0x000122fc ldr r6, [pc, 0xdc]                    |     
    0x000122fe add r2, pc                            |     r2 = 0x246d6;
    0x00012300 ldr r3, [r2, r3]                      |     
    0x00012302 ldr r5, [pc, 0xdc]                    |     
    0x00012304 add r6, pc                            |     r6 = 0x246e4;
    0x00012306 mov r0, r6                            |     r0 = r6;
    0x00012308 ldr r3, [r3]                          |     r3 = *(0x246d6);
    0x0001230a str r3, [sp, 0x1c]                    |     var_1ch_2 = r3;
    0x0001230c mov.w r3, 0                           |     r3 = 0;
    0x00012310 blx 0x2730                            |     r0 = open (r0, r1, r2);
    0x00012314 cmp r0, 0                             |     
    0x00012316 add r5, pc                            |     r5 = 0x246fc;
    0x00012318 str r0, [r5]                          |     *(r5) = r0;
                                                     |     if (r0 < 0) {
    0x0001231a bge 0x1236a                           |         
    0x0001231c blx 0x2f88                            |         r0 = cxa_finalize ();
    0x00012320 ldr r7, [r0]                          |         r7 = *(r0);
    0x00012322 mov r4, r0                            |         r4 = r0;
    0x00012324 cmp r7, 2                             |         
                                                     |         if (r7 != 2) {
    0x00012326 bne 0x1238a                           |             goto label_4;
                                                     |         }
    0x00012328 ldr r0, [pc, 0xb8]                    |         
    0x0001232a mov r1, r7                            |         r1 = r7;
    0x0001232c add r0, pc                            |         r0 = 0x24714;
    0x0001232e blx 0x2730                            |         r0 = open (r0, r1, r2);
    0x00012332 subs.w r8, r0, 0                      |         r8 = r0 - 0;
                                                     |         if (r8 < r0) {
    0x00012336 blt 0x123b4                           |             goto label_5;
                                                     |         }
    0x00012338 movw r1, 0x6f40                       |         
    0x0001233c movs r3, 0                            |         r3 = 0;
    0x0001233e add r2, sp, 4                         |         r2 += var_4h_2;
    0x00012340 movt r1, 0x4018                       |         r1 = 0x40186f40;
    0x00012344 str r7, [sp, 8]                       |         var_8h_2 = r7;
    0x00012346 str r3, [sp, 4]                       |         var_4h_2 = r3;
    0x00012348 strd r3, r3, [r2, 8]                  |         __asm ("strd r3, r3, [r2, 8]");
    0x0001234c strd r3, r3, [r2, 0x10]               |         __asm ("strd r3, r3, [r2, 0x10]");
    0x00012350 blx 0x2a8c                            |         r0 = fcn_00002a8c ();
                                                     |         if (r0 != 0) {
    0x00012354 cbnz r0, 0x123a0                      |             goto label_6;
                                                     |         }
    0x00012356 mov r0, r8                            |         r0 = r8;
    0x00012358 blx 0x2bf8                            |         EVP_PKEY_verify_init ();
    0x0001235c mov r1, r7                            |         r1 = r7;
    0x0001235e mov r0, r6                            |         r0 = r6;
    0x00012360 blx 0x2730                            |         open (r0, r1, r2);
    0x00012362 strd r2, r8, [r6, 0]!                 |         __asm ("strd r2, r8, [r6, 0]!");
    0x00012366 str r0, [r5]                          |         *(r5) = r0;
                                                     |         if (r0 < 0) {
    0x00012368 blt 0x123c2                           |             goto label_7;
                                                     |         }
                                                     |     }
    0x0001236a bl 0x11510                            |     r0 = fcn_00011510 (r0, r1, r2, r3);
                                                     |     if (r0 != 0) {
    0x0001236e cbnz r0, 0x12398                      |         goto label_8;
                                                     |     }
                                                     |     do {
                                                     | label_0:
    0x00012370 ldr r2, [pc, 0x74]                    |         
    0x00012372 ldr r3, [pc, 0x64]                    |         r3 = *(0x123da);
    0x00012374 add r2, pc                            |         r2 = 0x24760;
    0x00012376 ldr r3, [r2, r3]                      |         r3 = *(0x24760);
    0x00012378 ldr r2, [r3]                          |         r2 = *(0x24760);
    0x0001237a ldr r3, [sp, 0x1c]                    |         r3 = var_1ch_2;
    0x0001237c eors r2, r3                           |         r2 ^= r3;
    0x0001237e mov.w r3, 0                           |         r3 = 0;
                                                     |         if (r2 != r3) {
    0x00012382 bne 0x123d0                           |             goto label_9;
                                                     |         }
    0x00012384 add sp, 0x20                          |         
    0x00012386 pop.w {r4, r5, r6, r7, r8, pc}        |         
                                                     | label_4:
    0x0001238a ldr r1, [pc, 0x60]                    |         
    0x0001238c movs r0, 2                            |         r0 = 2;
    0x0001238e add r1, pc                            |         r1 = 0x24780;
    0x00012390 bl 0xfcdc                             |         fcn_0000fcdc (r0);
    0x00012394 ldr r0, [r4]                          |         r0 = *(r4);
    0x00012396 b 0x12370                             |         
                                                     |     } while (1);
                                                     | label_8:
    0x00012398 blx 0x2f88                            |     r0 = cxa_finalize ();
    0x0001239c ldr r0, [r0]                          |     r0 = *(r0);
    0x0001239e b 0x12370                             |     goto label_0;
                                                     | label_6:
    0x000123a0 ldr r1, [pc, 0x4c]                    |     
    0x000123a2 mov r0, r7                            |     r0 = r7;
    0x000123a4 add r1, pc                            |     r1 = 0x24798;
    0x000123a6 bl 0xfcdc                             |     fcn_0000fcdc (r0);
    0x000123aa mov r0, r8                            |     r0 = r8;
    0x000123ac bl 0x10978                            |     fcn_00010978 (r0);
    0x000123b0 ldr r0, [r4]                          |     r0 = *(r4);
    0x000123b2 b 0x12370                             |     goto label_0;
                                                     | label_5:
    0x000123b4 ldr r1, [pc, 0x3c]                    |     
    0x000123b6 mov r0, r7                            |     r0 = r7;
    0x000123b8 add r1, pc                            |     r1 = 0x247b0;
    0x000123ba bl 0xfcdc                             |     fcn_0000fcdc (r0);
    0x000123be ldr r0, [r4]                          |     r0 = *(r4);
    0x000123c0 b 0x12370                             |     goto label_0;
                                                     | label_7:
    0x000123c2 ldr r1, [pc, 0x34]                    |     
    0x000123c4 mov r0, r7                            |     r0 = r7;
    0x000123c6 add r1, pc                            |     r1 = 0x247c4;
    0x000123c8 bl 0xfcdc                             |     fcn_0000fcdc (r0);
    0x000123cc ldr r0, [r4]                          |     r0 = *(r4);
    0x000123ce b 0x12370                             |     goto label_0;
                                                     | label_9:
    0x000123d0 blx 0x2cdc                            |     fprintf_chk ()
    0x000123d4 ldm r1, {r1, r2, r3, r4, r5}          |     r1 = *(r1);
                                                     |     r2 = *((r1 + 4));
                                                     |     r3 = *((r1 + 8));
                                                     |     r4 = *((r1 + 12));
                                                     |     r5 = *((r1 + 16));
    0x000123d6 movs r1, r0                           |     r1 = r0;
    0x000123d8 lsls r4, r1, 0xd                      |     r4 = r1 << 0xd;
    0x000123da movs r0, r0                           |     
    0x000123dc add r0, sp, 0x70                      |     r0 += var_70h;
    0x000123de movs r0, r0                           |     
    0x000123e0 ldm r6!, {r1, r2, r3, r4, r7}         |     r1 = *(r6!);
                                                     |     r2 = *((r6! + 4));
                                                     |     r3 = *((r6! + 8));
                                                     |     r4 = *((r6! + 12));
                                                     |     r7 = *((r6! + 16));
    0x000123e2 movs r1, r0                           |     r1 = r0;
    0x000123e4 add r0, sp, 0x80                      |     r0 += var_80h;
    0x000123e6 movs r0, r0                           |     
    0x000123e8 ldm r0!, {r3, r6, r7}                 |     r3 = *(r0!);
                                                     |     r6 = *((r0! + 4));
                                                     |     r7 = *((r0! + 8));
    0x000123ea movs r1, r0                           |     r1 = r0;
    0x000123ec adr r7, 0x278                         |     r7 = 0x278;
    0x000123ee movs r0, r0                           |     
    0x000123f0 adr r7, 0x370                         |     r7 = 0x370;
    0x000123f2 movs r0, r0                           |     
    0x000123f4 adr r7, 0x290                         |     r7 = 0x290;
    0x000123f6 movs r0, r0                           |     
    0x000123f8 adr r7, 0x198                         |     r7 = 0x198;
    0x000123fa movs r0, r0                           |     
    0x000123fc ldr r3, [pc, 0x9c]                    |     
    0x000123fe push.w {r4, r5, r6, r7, r8, lr}       |     
    0x00012402 mov r7, r0                            |     r7 = r0;
    0x00012404 ldr.w r8, [pc, 0x98]                  |     
    0x00012408 add r3, pc                            |     
    0x0001240a ldr r3, [r3]                          |     r3 = *(0x248a8);
    0x0001240c add r8, pc                            |     r8 = 0x248b0;
    0x0001240e cmp r3, 0                             |     
                                                     |     if (r3 < 0) {
    0x00012410 blt 0x1248a                           |         goto label_10;
                                                     |     }
                                                     |     if (r7 == 0) {
                                                     | label_3:
    0x00012412 cbz r7, 0x12464                       |         goto label_11;
                                                     |     }
                                                     | label_1:
    0x00012414 ldr r6, [pc, 0x8c]                    |     
    0x00012416 movs r4, 0                            |     r4 = 0;
    0x00012418 mov r5, r4                            |     r5 = r4;
    0x0001241a add r6, pc                            |     r6 = 0x248c2;
                                                     |     do {
    0x0001241c ldr.w r3, [r6, r4, lsl 2]             |         offset_0 = r4 << 2;
                                                     |         r3 = *((r6 + offset_0));
    0x00012420 mov r0, r5                            |         r0 = r5;
    0x00012422 adds r4, 0x41                         |         r4 += 0x41;
    0x00012424 adds r5, 1                            |         r5++;
    0x00012426 and r3, r3, 0xe0                      |         r3 &= 0xe0;
    0x0001242a cmp r3, 0x40                          |         
                                                     |         if (r3 != 0x40) {
    0x0001242c beq 0x1243a                           |             
    0x0001242e cmp r3, 0xe0                          |             
    0x00012430 ite ne                                |             
                                                     |             if (r3 == 0xe0) {
    0x00012432 movne r2, 0                           |                 r2 = 0;
                                                     |             }
                                                     |             if (r3 != 0xe0) {
    0x00012434 andeq r2, r7, 1                       |                 r2 = r7 & 1;
                                                     |             }
                                                     |             if (r2 == 0) {
    0x00012438 cbz r2, 0x1243e                       |                 goto label_12;
                                                     |             }
                                                     |         }
    0x0001243a bl 0x10d3c                            |         fcn_00010d3c (r0);
                                                     | label_12:
    0x0001243e cmp.w r4, 0x2080                      |         
    0x00012442 bne 0x1241c                           |         
                                                     |     } while (r4 != 0x2080);
    0x00012444 ldr r2, [pc, 0x60]                    |     r2 = *(0x124a8);
    0x00012446 movs r4, 0                            |     r4 = 0;
    0x00012448 ldr r3, [pc, 0x60]                    |     r3 = *(0x124ac);
    0x0001244a ldr.w r2, [r8, r2]                    |     r2 = *((r8 + r2));
    0x0001244e strb r4, [r2]                         |     *(r2) = r4;
    0x00012450 ldr.w r3, [r8, r3]                    |     r3 = *((r8 + r3));
    0x00012454 strb r4, [r3]                         |     *(r3) = r4;
    0x00012456 bl 0x9874                             |     fcn_00009874 ();
    0x0001245a bl 0x3d2c                             |     fcn_00003d2c ();
    0x0001245e mov r0, r4                            |     r0 = r4;
    0x00012460 pop.w {r4, r5, r6, r7, r8, pc}        |     
                                                     | label_11:
    0x00012464 ldr r0, [pc, 0x48]                    |     
    0x00012466 mov r3, r7                            |     r3 = r7;
    0x00012468 mov r2, r7                            |     r2 = r7;
    0x0001246a add r0, pc                            |     r0 = 0x2491e;
    0x0001246c b 0x12474                             |     goto label_13;
                                                     | label_2:
    0x0001246e adds r2, 1                            |     r2++;
    0x00012470 cmp r2, 0x80                          |     
                                                     |     if (r2 == 0x80) {
    0x00012472 beq 0x12414                           |         goto label_1;
                                                     |     }
                                                     | label_13:
    0x00012474 ldr.w r1, [r0, r3, lsl 2]             |     offset_1 = r3 << 2;
                                                     |     r1 = *((r0 + offset_1));
    0x00012478 adds r3, 0x41                         |     r3 += 0x41;
    0x0001247a cmp r1, 0x41                          |     
                                                     |     if (r1 != 0x41) {
    0x0001247c bne 0x1246e                           |         goto label_2;
                                                     |     }
    0x0001247e ldr r1, [pc, 0x34]                    |     
    0x00012480 movs r0, 6                            |     r0 = 6;
    0x00012482 add r1, pc                            |     r1 = 0x2493c;
    0x00012484 bl 0xfcdc                             |     fcn_0000fcdc (r0);
    0x00012488 b 0x12414                             |     goto label_1;
                                                     | label_10:
    0x0001248a bl 0x122f0                            |     r0 = fcn_000122f0 ();
    0x0001248e cmp r0, 0                             |     
                                                     |     if (r0 == 0) {
    0x00012490 beq 0x12412                           |         goto label_3;
                                                     |     }
    0x00012492 blx 0x2f88                            |     r0 = cxa_finalize ();
    0x00012496 ldr r0, [r0]                          |     r0 = *(r0);
    0x00012498 pop.w {r4, r5, r6, r7, r8, pc}        |     
                                                     | }


r2dec has crashed (info: /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/sbin/fwmgr @ 0x12b48).
Please report the bug at https://github.com/radareorg/r2dec-js/issues
Use the option '--issue' or the command 'pddi' to generate 
the needed data for the issue.
    ; assembly                                                   | /* r2dec pseudo code output */
                                                                 | /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/sbin/fwmgr @ 0x13438 */
                                                                 | #include <stdint.h>
                                                                 |  
                                                                 | #define BIT_MASK(t,v) ((t)(-((v)!= 0)))&(((t)-1)>>((sizeof(t)*CHAR_BIT)-(v)))
                                                                 |  
    ; (fcn) fcn.00013438 ()                                      | void fcn_00013438 (int16_t arg_c8h, int16_t arg1, int16_t arg2, int16_t arg3, int16_t arg4) {
                                                                 |     int16_t var_4h;
                                                                 |     int16_t var_8h;
                                                                 |     int16_t var_ch;
                                                                 |     int16_t var_10h;
                                                                 |     int16_t var_14h;
                                                                 |     int16_t var_16h;
                                                                 |     int16_t var_1ch;
                                                                 |     int16_t var_9ch;
                                                                 |     r0 = arg1;
                                                                 |     r1 = arg2;
                                                                 |     r2 = arg3;
                                                                 |     r3 = arg4;
    0x00013438 svcmi 0xf0e92d                                    |     __asm ("svcmi 0xf0e92d");
    0x0001343c mov r7, r0                                        |     r7 = r0;
    0x0001343e ldr r0, [pc, 0x120]                               |     
    0x00013440 mov r6, r1                                        |     r6 = r1;
    0x00013442 sub sp, 0xa4                                      |     
    0x00013444 mov r4, r2                                        |     r4 = r2;
    0x00013446 ldr r1, [pc, 0x11c]                               |     r1 = *(0x13566);
    0x00013448 mov r8, r3                                        |     r8 = r3;
    0x0001344a add r0, pc                                        |     r0 = 0x269b0;
    0x0001344c ldrb.w r5, [sp, 0xc8]                             |     r5 = *(arg_c8h);
    0x00013450 ldr r1, [r0, r1]                                  |     
    0x00013452 movs r0, 7                                        |     r0 = 7;
    0x00013454 adds r5, 3                                        |     r5 += 3;
    0x00013456 ldr r1, [r1]                                      |     r1 = *(0x269b0);
    0x00013458 str r1, [sp, 0x9c]                                |     var_9ch = r1;
    0x0001345a mov.w r1, 0                                       |     r1 = 0;
    0x0001345e ldr r1, [pc, 0x108]                               |     
    0x00013460 add r1, pc                                        |     r1 = 0x269ce;
    0x00013462 bl 0xfcdc                                         |     fcn_0000fcdc (r0);
    0x00013466 movs r2, 0x88                                     |     r2 = 0x88;
    0x00013468 movs r1, 0                                        |     r1 = 0;
    0x0001346a add r0, sp, 0x14                                  |     r0 += var_14h;
    0x0001346c blx 0x2938                                        |     fcn_00002938 ();
    0x00013470 movs r3, 1                                        |     r3 = 1;
    0x00013472 mov r0, r4                                        |     r0 = r4;
    0x00013474 str r3, [sp, 8]                                   |     var_8h = r3;
    0x00013476 movs r3, 0                                        |     r3 = 0;
    0x00013478 str r3, [sp, 0x10]                                |     var_10h = r3;
    0x0001347a str.w r8, [sp, 0xc]                               |     __asm ("str.w r8, [var_ch]");
    0x0001347e str r6, [sp, 4]                                   |     var_4h = r6;
    0x00013480 strb.w r5, [sp, 0x14]                             |     var_14h = r5;
    0x00013484 blx 0x2ab0                                        |     fcn_00002ab0 ();
    0x00013488 movs r3, 0x80                                     |     r3 = 0x80;
    0x0001348a adds r2, r0, 1                                    |     r2 = r0 + 1;
    0x0001348c mov r1, r4                                        |     r1 = r4;
    0x0001348e strh.w r0, [sp, 0x16]                             |     var_16h = r0;
    0x00013492 add r0, sp, 0x1c                                  |     r0 += var_1ch;
    0x00013494 blx 0x2a08                                        |     fcn_00002a08 ();
    0x00013498 ldr r3, [pc, 0xd0]                                |     
    0x0001349a mov.w r1, 0x6f00                                  |     r1 = 0x6f00;
    0x0001349e add r2, sp, 4                                     |     r2 += var_4h;
    0x000134a0 movt r1, 0x4098                                   |     r1 = (r1 & 0xFFFF) | 0x40980000;
    0x000134a4 add r3, pc                                        |     r3 = 0x26a14;
    0x000134a6 ldr r0, [r3]                                      |     r0 = *(0x26a14);
    0x000134a8 blx 0x2a8c                                        |     r0 = fcn_00002a8c ();
    0x000134ac cmp r0, 0                                         |     
                                                                 |     if (r0 != 0) {
    0x000134ae bne 0x13546                                       |         goto label_2;
                                                                 |     }
    0x000134b0 lsl.w sb, r6, 6                                   |     sb = r6 << 6;
    0x000134b4 ldr.w sl, [pc, 0xb8]                              |     sl = *(0x00013570);
    0x000134b8 movs r2, 0x80                                     |     r2 = 0x80;
    0x000134ba add.w r8, sb, r6                                  |     r8 = sb + r6;
    0x000134be mov r1, r4                                        |     r1 = r4;
    0x000134c0 lsl.w r8, r8, 2                                   |     r8 <<= 2;
    0x000134c4 add sl, pc                                        |     sl += pc;
    0x000134c6 mov r5, r0                                        |     r5 = r0;
    0x000134c8 add.w fp, r8, 4                                   |     
    0x000134cc add fp, sl                                        |     
    0x000134ce mov r0, fp                                        |     r0 = fp;
    0x000134d0 blx 0x2ee0                                        |     pipe ();
    0x000134d4 movs r1, 0x2d                                     |     r1 = 0x2d;
    0x000134d6 mov r0, r4                                        |     r0 = r4;
    0x000134d8 blx 0x28e4                                        |     r0 = fcn_000028e4 ();
    0x000134dc mov r1, r0                                        |     r1 = r0;
                                                                 |     if (r0 == 0) {
    0x000134de cbz r0, 0x13524                                   |         goto label_3;
                                                                 |     }
    0x000134e0 subs r4, r0, r4                                   |     r4 = r0 - r4;
    0x000134e2 add.w r3, sl, r8                                  |     r3 = sl + r8;
    0x000134e6 add r3, r4                                        |     r3 += r4;
    0x000134e8 add.w r0, r8, 0x84                                |     r0 = r8 + 0x84;
    0x000134ec strb r5, [r3, 4]                                  |     *((r3 + 4)) = r5;
    0x000134ee add r0, sl                                        |     r0 += sl;
    0x000134f0 movs r2, 0x80                                     |     r2 = 0x80;
    0x000134f2 blx 0x2ee0                                        |     pipe ();
    0x000134f6 bic r3, r7, 0xe0                                  |     r3 = BIT_MASK (r7, 0xe0);
    0x000134fa cmp r3, 0x1f                                      |     
                                                                 |     if (r3 == 0x1f) {
    0x000134fc beq 0x13532                                       |         goto label_4;
                                                                 |     }
                                                                 |     do {
                                                                 | label_0:
    0x000134fe ldr r3, [pc, 0x74]                                |         
    0x00013500 add sb, r6                                        |         sb += r6;
    0x00013502 add r3, pc                                        |         r3 = 0x26a7c;
    0x00013504 str.w r7, [r3, sb, lsl 2]                         |         __asm ("str.w r7, [r3, sb, lsl 2]");
                                                                 | label_1:
    0x00013508 ldr r2, [pc, 0x6c]                                |         
    0x0001350a ldr r3, [pc, 0x58]                                |         r3 = *(0x13566);
    0x0001350c add r2, pc                                        |         r2 = 0x26a88;
    0x0001350e ldr r3, [r2, r3]                                  |         r3 = *(0x26a88);
    0x00013510 ldr r2, [r3]                                      |         r2 = *(0x26a88);
    0x00013512 ldr r3, [sp, 0x9c]                                |         r3 = var_9ch;
    0x00013514 eors r2, r3                                       |         r2 ^= r3;
    0x00013516 mov.w r3, 0                                       |         r3 = 0;
                                                                 |         if (r2 != r3) {
    0x0001351a bne 0x1355a                                       |             goto label_5;
                                                                 |         }
    0x0001351c mov r0, r5                                        |         r0 = r5;
    0x0001351e add sp, 0xa4                                      |         
    0x00013520 pop.w {r4, r5, r6, r7, r8, sb, sl, fp, pc}        |         
                                                                 | label_3:
    0x00013524 bic r3, r7, 0xe0                                  |         r3 = BIT_MASK (r7, 0xe0);
    0x00013528 add sl, r8                                        |         sl += r8;
    0x0001352a cmp r3, 0x1f                                      |         
    0x0001352c strb.w r5, [sl, 0x84]                             |         *((sl + 0x84)) = r5;
    0x00013530 bne 0x134fe                                       |         
                                                                 |     } while (r3 != 0x1f);
                                                                 | label_4:
    0x00013532 and r1, r7, 0xe0                                  |     r1 = r7 & 0xe0;
    0x00013536 mov r0, fp                                        |     r0 = fp;
    0x00013538 bl 0x9c6c                                         |     r0 = fcn_00009c6c (r0, r1);
    0x0001353c ands.w r7, r7, r0, asr 32                         |     r7 &= (r0 >> 32);
    0x00013540 it lo                                             |     
                                                                 |     if (r7 >= r7) {
    0x00013542 movlo r7, r0                                      |         r7 = r0;
                                                                 |     }
    0x00013544 b 0x134fe                                         |     goto label_0;
                                                                 | label_2:
    0x00013546 ldr r1, [pc, 0x34]                                |     
    0x00013548 mov r2, r6                                        |     r2 = r6;
    0x0001354a movs r0, 2                                        |     r0 = 2;
    0x0001354c add r1, pc                                        |     r1 = 0x26ace;
    0x0001354e bl 0xfcdc                                         |     r0 = fcn_0000fcdc (r0);
    0x00013552 blx 0x2f88                                        |     r0 = cxa_finalize ();
    0x00013556 ldr r5, [r0]                                      |     r5 = *(r0);
    0x00013558 b 0x13508                                         |     goto label_1;
                                                                 | label_5:
    0x0001355a blx 0x2cdc                                        |     fprintf_chk ()
    0x0001355e nop                                               |     
    0x00013560 invalid                                           |     
                                                                 | }
    ; assembly                                                   | /* r2dec pseudo code output */
                                                                 | /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/sbin/fwmgr @ 0x13bd4 */
                                                                 | #include <stdint.h>
                                                                 |  
    ; (fcn) fcn.00013bd4 ()                                      | void fcn_00013bd4 (int16_t arg_70h, int16_t arg_98h, int16_t arg_1f0h, int16_t arg_358h, int16_t arg_378h, int16_t arg_3d0h, int16_t arg1, int16_t arg2, int16_t arg3, int16_t arg4) {
                                                                 |     int16_t var_0h;
                                                                 |     int16_t var_ch;
                                                                 |     int16_t var_10h;
                                                                 |     int16_t var_14h;
                                                                 |     int16_t var_18h;
                                                                 |     int16_t var_1ch;
                                                                 |     int16_t var_24h;
                                                                 |     int16_t var_28h;
                                                                 |     int16_t var_34h;
                                                                 |     int16_t var_38h;
                                                                 |     int16_t var_44h;
                                                                 |     int16_t var_48h;
                                                                 |     r0 = arg1;
                                                                 |     r1 = arg2;
                                                                 |     r2 = arg3;
                                                                 |     r3 = arg4;
    0x00013bd4 svcmi 0xf0e92d                                    |     __asm ("svcmi 0xf0e92d");
    0x00013bd8 mov r6, r1                                        |     r6 = r1;
    0x00013bda sub sp, 0x4c                                      |     
    0x00013bdc ldr r1, [pc, 0x144]                               |     
    0x00013bde mov r8, r2                                        |     r8 = r2;
    0x00013be0 mov r7, r3                                        |     r7 = r3;
    0x00013be2 str r2, [sp, 0x14]                                |     var_14h = r2;
    0x00013be4 movs r4, 0                                        |     r4 = 0;
    0x00013be6 ldr r5, [sp, 0x70]                                |     r5 = *(arg_70h);
    0x00013be8 add r1, pc                                        |     r1 = 0x27910;
    0x00013bea ldr r2, [pc, 0x13c]                               |     r2 = *(0x13d2a);
    0x00013bec mov sl, r0                                        |     sl = r0;
    0x00013bee ldr r3, [pc, 0x13c]                               |     
    0x00013bf0 mov r0, r8                                        |     r0 = r8;
    0x00013bf2 str r5, [sp, 0x1c]                                |     var_1ch = r5;
    0x00013bf4 ldr r2, [r1, r2]                                  |     
    0x00013bf6 add r3, pc                                        |     r3 = 0x27928;
    0x00013bf8 ldr r1, [r3]                                      |     r1 = *(0x27928);
    0x00013bfa ldr r2, [r2]                                      |     r2 = *(0x27910);
    0x00013bfc str r2, [sp, 0x44]                                |     var_44h = r2;
    0x00013bfe mov.w r2, 0                                       |     r2 = 0;
    0x00013c02 bl 0x15290                                        |     fcn_00015290 (r0, r1, r2);
    0x00013c06 mov r2, r4                                        |     r2 = r4;
    0x00013c08 str r0, [sp, 0x10]                                |     var_10h = r0;
    0x00013c0a mov r1, r8                                        |     r1 = r8;
    0x00013c0c mov r0, r6                                        |     r0 = r6;
    0x00013c0e strb r4, [r5]                                     |     *(r5) = r4;
    0x00013c10 blx 0x2e04                                        |     r0 = fcn_00002e04 ();
    0x00013c14 cmp r0, r4                                        |     
                                                                 |     if (r0 < r4) {
    0x00013c16 blt 0x13cd6                                       |         goto label_3;
                                                                 |     }
    0x00013c18 cmp r7, 0                                         |     
                                                                 |     if (r7 == 0) {
    0x00013c1a beq 0x13cec                                       |         goto label_4;
                                                                 |     }
    0x00013c1c ldr r3, [pc, 0x110]                               |     
    0x00013c1e movw r8, 0x4d12                                   |     
    0x00013c22 ldr.w sb, [pc, 0x110]                             |     sb = *(0x00013d34);
    0x00013c26 movt r8, 0x8010                                   |     r8 = 0x80104d12;
    0x00013c2a add.w fp, sp, 0x24                                |     
    0x00013c2e add r3, pc                                        |     r3 = 0x27962;
    0x00013c30 add sb, pc                                        |     sb += pc;
    0x00013c32 str r3, [sp, 0x18]                                |     var_18h = r3;
    0x00013c34 b 0x13c44                                         |     
                                                                 |     while (r2 == r2) {
    0x00013c36 ldr r2, [sp, 0x38]                                |         r2 = var_38h;
    0x00013c38 ldr r3, [sp, 0x28]                                |         r3 = var_28h;
    0x00013c3a cmp r2, r3                                        |         
                                                                 |         if (r2 != r3) {
    0x00013c3c bne 0x13ca6                                       |             goto label_5;
                                                                 |         }
                                                                 | label_0:
    0x00013c3e add r4, r5                                        |         r4 += r5;
    0x00013c40 cmp r7, r4                                        |         
                                                                 |         if (r7 < r4) {
    0x00013c42 bls 0x13cec                                       |             goto label_4;
                                                                 |         }
    0x00013c44 mov r2, fp                                        |         r2 = fp;
    0x00013c46 mov r1, r8                                        |         r1 = r8;
    0x00013c48 mov r0, r6                                        |         r0 = r6;
    0x00013c4a blx 0x2a8c                                        |         r0 = fcn_00002a8c ();
    0x00013c4e cmp r0, 0                                         |         
                                                                 |         if (r0 < 0) {
    0x00013c50 blt 0x13cf0                                       |             goto label_6;
                                                                 |         }
    0x00013c52 ldr.w r3, [sb, 4]                                 |         r3 = *((sb + 4));
    0x00013c56 subs r2, r7, r4                                   |         r2 = r7 - r4;
    0x00013c58 add.w r1, sl, r4                                  |         r1 = sl + r4;
    0x00013c5c mov r0, r6                                        |         r0 = r6;
    0x00013c5e cmp r2, r3                                        |         
    0x00013c60 it hs                                             |         
                                                                 |         if (r2 < r3) {
    0x00013c62 movhs r2, r3                                      |             r2 = r3;
                                                                 |         }
    0x00013c64 blx 0x29d8                                        |         r0 = fcn_000029d8 ();
    0x00013c68 subs r5, r0, 0                                    |         r5 = r0 - 0;
                                                                 |         if (r5 < r0) {
    0x00013c6a blt 0x13d02                                       |             goto label_7;
                                                                 |         }
    0x00013c6c add r2, sp, 0x34                                  |         r2 += var_34h;
    0x00013c6e mov r1, r8                                        |         r1 = r8;
    0x00013c70 mov r0, r6                                        |         r0 = r6;
    0x00013c72 blx 0x2a8c                                        |         r0 = fcn_00002a8c ();
    0x00013c76 cmp r0, 0                                         |         
                                                                 |         if (r0 < 0) {
    0x00013c78 blt 0x13d0e                                       |             goto label_8;
                                                                 |         }
    0x00013c7a ldr r2, [sp, 0x34]                                |         r2 = var_34h;
    0x00013c7c ldr r3, [sp, 0x24]                                |         r3 = var_24h;
    0x00013c7e subs r2, r2, r3                                   |         r2 -= r3;
    0x00013c80 beq 0x13c36                                       |         
                                                                 |     }
    0x00013c82 ldr r3, [sp, 0x14]                                |     r3 = var_14h;
    0x00013c84 movs r0, 7                                        |     r0 = 7;
    0x00013c86 ldr r1, [sp, 0x18]                                |     r1 = var_18h;
    0x00013c88 str r2, [sp, 0xc]                                 |     var_ch = r2;
    0x00013c8a add r3, r4                                        |     r3 += r4;
    0x00013c8c str r3, [sp]                                      |     *(sp) = r3;
    0x00013c8e ldr r3, [sp, 0x10]                                |     r3 = var_10h;
    0x00013c90 bl 0xfcdc                                         |     fcn_0000fcdc (r0);
    0x00013c94 ldr r1, [sp, 0x38]                                |     r1 = var_38h;
    0x00013c96 ldr r3, [sp, 0x28]                                |     r3 = var_28h;
    0x00013c98 ldr r2, [sp, 0xc]                                 |     r2 = var_ch;
    0x00013c9a cmp r1, r3                                        |     
                                                                 |     if (r1 != r3) {
    0x00013c9c bne 0x13ca6                                       |         goto label_5;
                                                                 |     }
    0x00013c9e ldr.w r3, [sb, 8]                                 |     r3 = *((sb + 8));
    0x00013ca2 cmp r3, r2                                        |     
                                                                 |     if (r3 >= r2) {
    0x00013ca4 bhs 0x13c3e                                       |         goto label_0;
                                                                 |     }
                                                                 | label_5:
    0x00013ca6 ldr r1, [pc, 0x90]                                |     
    0x00013ca8 movs r0, 5                                        |     r0 = 5;
    0x00013caa ldrd r2, r3, [sp, 0x10]                           |     __asm ("ldrd r2, r3, [var_14h]");
    0x00013cae add r1, pc                                        |     r1 = 0x279ec;
                                                                 | label_2:
    0x00013cb0 bl 0xfcdc                                         |     fcn_0000fcdc (r0);
    0x00013cb4 ldr r2, [sp, 0x1c]                                |     r2 = var_1ch;
    0x00013cb6 movs r0, 0                                        |     r0 = 0;
    0x00013cb8 movs r3, 1                                        |     r3 = 1;
    0x00013cba strb r3, [r2]                                     |     *(r2) = r3;
                                                                 |     do {
                                                                 | label_1:
    0x00013cbc ldr r2, [pc, 0x7c]                                |         
    0x00013cbe ldr r3, [pc, 0x68]                                |         r3 = *(0x13d2a);
    0x00013cc0 add r2, pc                                        |         r2 = 0x27a00;
    0x00013cc2 ldr r3, [r2, r3]                                  |         r3 = *(0x27a00);
    0x00013cc4 ldr r2, [r3]                                      |         r2 = *(0x27a00);
    0x00013cc6 ldr r3, [sp, 0x44]                                |         r3 = var_44h;
    0x00013cc8 eors r2, r3                                       |         r2 ^= r3;
    0x00013cca mov.w r3, 0                                       |         r3 = 0;
                                                                 |         if (r2 != r3) {
    0x00013cce bne 0x13d20                                       |             goto label_9;
                                                                 |         }
    0x00013cd0 add sp, 0x4c                                      |         
    0x00013cd2 pop.w {r4, r5, r6, r7, r8, sb, sl, fp, pc}        |         
                                                                 | label_3:
    0x00013cd6 ldr r1, [pc, 0x68]                                |         
    0x00013cd8 movs r0, 2                                        |         r0 = 2;
    0x00013cda ldrd r2, r3, [sp, 0x10]                           |         __asm ("ldrd r2, r3, [var_14h]");
    0x00013cde add r1, pc                                        |         r1 = 0x27a24;
    0x00013ce0 bl 0xfcdc                                         |         r0 = fcn_0000fcdc (r0);
    0x00013ce4 blx 0x2f88                                        |         r0 = cxa_finalize ();
    0x00013ce8 ldr r0, [r0]                                      |         r0 = *(r0);
    0x00013cea b 0x13cbc                                         |         
                                                                 |     } while (1);
                                                                 | label_4:
    0x00013cec movs r0, 0                                        |     r0 = 0;
    0x00013cee b 0x13cbc                                         |     goto label_1;
                                                                 | label_6:
    0x00013cf0 ldr r1, [pc, 0x50]                                |     
    0x00013cf2 movs r0, 2                                        |     r0 = 2;
    0x00013cf4 add r1, pc                                        |     r1 = 0x27a3c;
    0x00013cf6 bl 0xfcdc                                         |     r0 = fcn_0000fcdc (r0);
    0x00013cfa blx 0x2f88                                        |     r0 = cxa_finalize ();
    0x00013cfe ldr r0, [r0]                                      |     r0 = *(r0);
    0x00013d00 b 0x13cbc                                         |     goto label_1;
                                                                 | label_7:
    0x00013d02 ldr r1, [pc, 0x44]                                |     
    0x00013d04 movs r0, 4                                        |     r0 = 4;
    0x00013d06 ldrd r2, r3, [sp, 0x10]                           |     __asm ("ldrd r2, r3, [var_14h]");
    0x00013d0a add r1, pc                                        |     r1 = 0x27a58;
    0x00013d0c b 0x13cb0                                         |     goto label_2;
                                                                 | label_8:
    0x00013d0e ldr r1, [pc, 0x3c]                                |     
    0x00013d10 movs r0, 2                                        |     r0 = 2;
    0x00013d12 add r1, pc                                        |     r1 = 0x27a64;
    0x00013d14 bl 0xfcdc                                         |     r0 = fcn_0000fcdc (r0);
    0x00013d18 blx 0x2f88                                        |     r0 = cxa_finalize ();
    0x00013d1c ldr r0, [r0]                                      |     r0 = *(r0);
    0x00013d1e b 0x13cbc                                         |     goto label_1;
                                                                 | label_9:
    0x00013d20 blx 0x2cdc                                        |     fprintf_chk ()
    0x00013d24 add sp, 0x150                                     |     
    0x00013d26 movs r1, r0                                       |     r1 = r0;
    0x00013d28 lsls r4, r1, 0xd                                  |     r4 = r1 << 0xd;
    0x00013d2a movs r0, r0                                       |     
    0x00013d2c ldrh r2, [r7, 0x1a]                               |     r2 = *((r7 + 0x1a));
    0x00013d2e movs r2, r0                                       |     r2 = r0;
    0x00013d30 ldr r1, [sp, 0x98]                                |     r1 = *(arg_98h);
    0x00013d32 movs r0, r0                                       |     
    0x00013d34 ldrh r0, [r0, 0x1a]                               |     r0 = *((r0 + 0x1a));
    0x00013d36 movs r2, r0                                       |     r2 = r0;
    0x00013d38 ldr r0, [sp, 0x358]                               |     r0 = *(arg_358h);
    0x00013d3a movs r0, r0                                       |     
    0x00013d3c add r7, sp, 0x1f0                                 |     r7 += arg_1f0h;
    0x00013d3e movs r1, r0                                       |     r1 = r0;
    0x00013d40 str r7, [sp, 0x378]                               |     *(arg_378h) = r7;
    0x00013d42 movs r0, r0                                       |     
    0x00013d44 str r7, [sp, 0x3d0]                               |     *(arg_3d0h) = r7;
    0x00013d46 movs r0, r0                                       |     
    0x00013d48 ldr r0, [sp, 0x48]                                |     r0 = var_48h;
    0x00013d4a movs r0, r0                                       |     
    0x00013d4c str r7, [sp, 0x358]                               |     *(arg_358h) = r7;
    0x00013d4e movs r0, r0                                       |     
                                                                 | }

[*] Function fprintf used 73 times fwmgr