[*] Binary protection state of kmod

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


[*] Function mmap tear down of kmod

    ; assembly                                                   | /* r2dec pseudo code output */
                                                                 | /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/bin/kmod @ 0x37cc */
                                                                 | #include <stdint.h>
                                                                 |  
    ; (fcn) fcn.000037cc ()                                      | void fcn_000037cc (int16_t arg1, int16_t arg2) {
                                                                 |     int16_t var_4h;
                                                                 |     int16_t var_ch;
                                                                 |     int16_t var_10h;
                                                                 |     int16_t var_14h;
                                                                 |     r0 = arg1;
                                                                 |     r1 = arg2;
    0x000037cc ldr r2, [pc, 0x26c]                               |     
    0x000037ce ldr r3, [pc, 0x270]                               |     r3 = *(0x3a42);
    0x000037d0 push.w {r4, r5, r6, r7, r8, sb, sl, fp, lr}       |     
    0x000037d4 sub sp, 0x1c                                      |     
    0x000037d6 add r2, pc                                        |     r2 = 0x7216;
    0x000037d8 mov r5, r0                                        |     r5 = r0;
    0x000037da mov r6, r1                                        |     r6 = r1;
    0x000037dc ldr r3, [r2, r3]                                  |     
    0x000037de ldr r3, [r3]                                      |     r3 = *(0x7216);
    0x000037e0 str r3, [sp, 0x14]                                |     var_14h = r3;
    0x000037e2 mov.w r3, 0                                       |     r3 = 0;
    0x000037e6 bl 0xcfb4                                         |     fcn_0000cfb4 (r0);
    0x000037ea ldr r3, [pc, 0x258]                               |     
    0x000037ec movs r2, 0                                        |     r2 = 0;
    0x000037ee mov r7, r0                                        |     r7 = r0;
    0x000037f0 strd r2, r2, [sp, 0xc]                            |     __asm ("strd r2, r2, [var_10h]");
    0x000037f4 add r3, pc                                        |     
    0x000037f6 ldr r3, [r3]                                      |     r3 = *(0x723e);
    0x000037f8 cmp r3, 0                                         |     
                                                                 |     if (r3 == 0) {
    0x000037fa beq.w 0x393e                                      |         goto label_10;
                                                                 |     }
                                                                 | label_5:
    0x000037fe ldr r3, [pc, 0x248]                               |     
    0x00003800 add r3, pc                                        |     
    0x00003802 ldr r3, [r3]                                      |     r3 = *(0x724e);
    0x00003804 cmp r3, 0                                         |     
                                                                 |     if (r3 == 0) {
    0x00003806 beq.w 0x3916                                      |         goto label_11;
                                                                 |     }
                                                                 | label_3:
    0x0000380a mov.w r8, 0                                       |     r8 = 0;
                                                                 | label_4:
    0x0000380e ldr r0, [sp, 0x10]                                |     r0 = var_10h;
    0x00003810 movs r1, 0                                        |     r1 = 0;
    0x00003812 bl 0x3a9c                                         |     fcn_00003a9c (r0, r1);
    0x00003816 cmp r6, 1                                         |     
                                                                 |     if (r6 == 1) {
    0x00003818 bne 0x3826                                        |         
    0x0000381a ldr r3, [pc, 0x230]                               |         
    0x0000381c add r3, pc                                        |         
    0x0000381e ldr r3, [r3]                                      |         r3 = *(0x726e);
    0x00003820 cmp r3, 0                                         |         
                                                                 |         if (r3 != 0) {
    0x00003822 bne.w 0x399e                                      |             goto label_12;
                                                                 |         }
                                                                 |     }
                                                                 | label_7:
    0x00003826 ldr r3, [pc, 0x228]                               |     
    0x00003828 add r3, pc                                        |     
    0x0000382a ldr r3, [r3]                                      |     r3 = *(0x727e);
    0x0000382c cmp r3, 0                                         |     
                                                                 |     if (r3 != 0) {
    0x0000382e bne 0x3902                                        |         goto label_13;
                                                                 |     }
    0x00003830 cmp.w r8, 0                                       |     
                                                                 |     if (r8 == 0) {
    0x00003834 beq.w 0x3a02                                      |         goto label_14;
                                                                 |     }
                                                                 | label_0:
    0x00003838 mov r0, r5                                        |     r0 = r5;
    0x0000383a bl 0xcfb4                                         |     r0 = fcn_0000cfb4 (r0);
    0x0000383e mov sb, r0                                        |     sb = r0;
    0x00003840 mov r0, r8                                        |     r0 = r8;
    0x00003842 str.w sb, [sp, 4]                                 |     __asm ("str.w sb, [var_4h]");
    0x00003846 blx 0x1a10                                        |     r0 = stack_chk_fail ();
    0x0000384a mov r5, r0                                        |     r5 = r0;
    0x0000384c cmp r0, 0                                         |     
                                                                 |     if (r0 == 0) {
    0x0000384e beq.w 0x3a30                                      |         goto label_15;
                                                                 |     }
    0x00003852 ldr r7, [pc, 0x200]                               |     
    0x00003854 mov.w r8, 0                                       |     r8 = 0;
    0x00003858 blx 0x1bb0                                        |     r0 = fcn_00001bb0 ();
    0x0000385c mov sl, r0                                        |     sl = r0;
    0x0000385e add r7, pc                                        |     r7 = 0x72b8;
    0x00003860 b 0x38a2                                          |     
                                                                 |     while (r0 != 0) {
    0x00003862 sub.w r0, sl, 0xc                                 |         r0 = sl - 0xc;
    0x00003866 sub.w fp, r4, r5                                  |         
    0x0000386a sub.w r6, sl, 0xd                                 |         r6 = sl - 0xd;
    0x0000386e adds r4, 0xd                                      |         r4 += 0xd;
    0x00003870 blx 0x1b0c                                        |         strerror (r0);
    0x00003874 sub.w sl, r6, fp                                  |         sl = r6 - fp;
    0x00003878 mov sb, r0                                        |         sb = r0;
    0x0000387a cmp r0, 0                                         |         
                                                                 |         if (r0 == 0) {
    0x0000387c beq.w 0x3a24                                      |             goto label_16;
                                                                 |         }
    0x00003880 mov r1, r5                                        |         r1 = r5;
    0x00003882 mov r2, fp                                        |         r2 = fp;
    0x00003884 blx 0x19c8                                        |         mmap64 ()
    0x00003888 mov r2, sl                                        |         r2 = sl;
    0x0000388a mov r1, r4                                        |         r1 = r4;
    0x0000388c add.w r0, sb, fp                                  |         r0 = sb + fp;
    0x00003890 mov sl, r6                                        |         sl = r6;
    0x00003892 blx 0x19c8                                        |         mmap64 ()
    0x00003896 mov r0, r5                                        |         r0 = r5;
    0x00003898 strb.w r8, [sb, r6]                               |         *((sb + r6)) = r8;
    0x0000389c mov r5, sb                                        |         r5 = sb;
    0x0000389e blx 0x19a0                                        |         fcn_000019a0 ();
    0x000038a2 mov r1, r7                                        |         r1 = r7;
    0x000038a4 mov r0, r5                                        |         r0 = r5;
    0x000038a6 blx 0x18e4                                        |         r0 = strstr (r0, r1);
    0x000038aa mov r4, r0                                        |         r4 = r0;
    0x000038ac cmp r0, 0                                         |         
    0x000038ae bne 0x3862                                        |         
                                                                 |     }
    0x000038b0 ldr r7, [pc, 0x1a4]                               |     
    0x000038b2 mov r2, r5                                        |     r2 = r5;
    0x000038b4 ldr r0, [pc, 0x1a4]                               |     
    0x000038b6 add r7, pc                                        |     r7 = 0x7312;
    0x000038b8 add r0, pc                                        |     r0 = 0x7318;
    0x000038ba mov r1, r7                                        |     r1 = r7;
    0x000038bc bl 0x3320                                         |     fcn_00003320 ();
    0x000038c0 ldr r3, [pc, 0x19c]                               |     
    0x000038c2 add r3, pc                                        |     
    0x000038c4 ldr r3, [r3]                                      |     r3 = *(0x7326);
    0x000038c6 cmp r3, 0                                         |     
                                                                 |     if (r3 == 0) {
    0x000038c8 beq 0x395c                                        |         goto label_17;
                                                                 |     }
    0x000038ca mov r0, r5                                        |     r0 = r5;
    0x000038cc blx 0x19a0                                        |     fcn_000019a0 ();
                                                                 | label_2:
    0x000038d0 ldr r0, [sp, 0xc]                                 |     r0 = var_ch;
    0x000038d2 movs r1, 0                                        |     r1 = 0;
    0x000038d4 bl 0x3a9c                                         |     fcn_00003a9c (r0, r1);
                                                                 | label_1:
    0x000038d8 ldr r0, [sp, 0xc]                                 |     r0 = var_ch;
    0x000038da bl 0xcb50                                         |     fcn_0000cb50 (r0);
    0x000038de ldr r0, [sp, 0x10]                                |     r0 = var_10h;
    0x000038e0 bl 0xcb50                                         |     fcn_0000cb50 (r0);
                                                                 | label_8:
    0x000038e4 ldr r2, [pc, 0x17c]                               |     
    0x000038e6 ldr r3, [pc, 0x158]                               |     r3 = *(0x3a42);
    0x000038e8 add r2, pc                                        |     r2 = 0x7350;
    0x000038ea ldr r3, [r2, r3]                                  |     r3 = *(0x7350);
    0x000038ec ldr r2, [r3]                                      |     r2 = *(0x7350);
    0x000038ee ldr r3, [sp, 0x14]                                |     r3 = var_14h;
    0x000038f0 eors r2, r3                                       |     r2 ^= r3;
    0x000038f2 mov.w r3, 0                                       |     r3 = 0;
                                                                 |     if (r2 != r3) {
    0x000038f6 bne.w 0x3a36                                      |         goto label_18;
                                                                 |     }
    0x000038fa mov r0, r4                                        |     r0 = r4;
    0x000038fc add sp, 0x1c                                      |     
    0x000038fe pop.w {r4, r5, r6, r7, r8, sb, sl, fp, pc}        |     
                                                                 | label_13:
    0x00003902 cmp.w r8, 0                                       |     
                                                                 |     if (r8 != 0) {
    0x00003906 bne 0x3838                                        |         goto label_0;
                                                                 |     }
                                                                 | label_9:
    0x00003908 mov r0, r5                                        |     r0 = r5;
    0x0000390a bl 0x33a8                                         |     r0 = fcn_000033a8 (r0);
    0x0000390e mov r4, r0                                        |     r4 = r0;
                                                                 | label_6:
    0x00003910 cmp r4, 0                                         |     
                                                                 |     if (r4 < 0) {
    0x00003912 blt 0x38d8                                        |         goto label_1;
                                                                 |     }
    0x00003914 b 0x38d0                                          |     goto label_2;
                                                                 | label_11:
    0x00003916 mov r0, r5                                        |     r0 = r5;
    0x00003918 bl 0xd74c                                         |     r0 = fcn_0000d74c (r0);
    0x0000391c subs r4, r0, 0                                    |     r4 = r0 - 0;
                                                                 |     if (r4 < r0) {
    0x0000391e blt 0x39b2                                        |         goto label_19;
                                                                 |     }
                                                                 |     if (r4 != r0) {
    0x00003920 bne.w 0x380a                                      |         goto label_3;
                                                                 |     }
    0x00003924 cmp r6, 1                                         |     
                                                                 |     if (r6 != 1) {
    0x00003926 bne 0x38d8                                        |         goto label_1;
                                                                 |     }
    0x00003928 ldr r3, [pc, 0x13c]                               |     
    0x0000392a mov r2, r7                                        |     r2 = r7;
    0x0000392c ldr r1, [pc, 0x13c]                               |     
    0x0000392e mvn r4, 1                                         |     r4 = ~1;
    0x00003930 lsls r1, r0, 0x10                                 |     r1 = r0 << 0x10;
    0x00003932 add r3, pc                                        |     r3 = 0x739e;
    0x00003934 ldr r0, [r3]                                      |     r0 = *(0x739e);
    0x00003936 add r1, pc                                        |     r1 = 0x73a6;
    0x00003938 bl 0x85e4                                         |     fcn_000085e4 (r0);
    0x0000393c b 0x38d8                                          |     goto label_1;
                                                                 | label_10:
    0x0000393e add r2, sp, 0x10                                  |     r2 += var_10h;
    0x00003940 add r1, sp, 0xc                                   |     r1 += var_ch;
    0x00003942 mov r0, r5                                        |     r0 = r5;
    0x00003944 bl 0xd2e4                                         |     r0 = fcn_0000d2e4 (r0, r1, r2);
    0x00003948 subs r4, r0, 0                                    |     r4 = r0 - 0;
                                                                 |     if (r4 < r0) {
    0x0000394a blt 0x39ec                                        |         goto label_20;
                                                                 |     }
    0x0000394c mov r0, r5                                        |     r0 = r5;
    0x0000394e bl 0xd59c                                         |     r0 = fcn_0000d59c (r0);
    0x00003952 mov r8, r0                                        |     r8 = r0;
    0x00003954 cmp r0, 0                                         |     
                                                                 |     if (r0 != 0) {
    0x00003956 bne.w 0x380e                                      |         goto label_4;
                                                                 |     }
    0x0000395a b 0x37fe                                          |     goto label_5;
                                                                 | label_17:
    0x0000395c ldr r6, [pc, 0x110]                               |     
    0x0000395e movs r2, 1                                        |     r2 = 1;
    0x00003960 ldr r1, [sp, 4]                                   |     r1 = var_4h;
    0x00003962 add r6, pc                                        |     r6 = 0x73d6;
    0x00003964 mov r0, r6                                        |     r0 = r6;
    0x00003966 blx 0x1bcc                                        |     errno_location ();
    0x0000396a mov r0, r5                                        |     r0 = r5;
    0x0000396c blx 0x1b24                                        |     r0 = vfprintf_chk ();
    0x00003970 mov r4, r0                                        |     r4 = r0;
    0x00003972 mov r0, r6                                        |     r0 = r6;
    0x00003974 blx 0x1d8c                                        |     fcn_00001d8c ();
    0x00003978 adds r3, r4, 1                                    |     r3 = r4 + 1;
                                                                 |     if (r3 == r4) {
    0x0000397a beq 0x39d2                                        |         goto label_21;
                                                                 |     }
    0x0000397c ubfx r1, r4, 8, 8                                 |     r1 = (r4 >> 8) & ((1 << 8) - 1);
                                                                 |     if (r1 != 0) {
    0x00003980 cbz r1, 0x3996                                    |         
    0x00003982 ldr r0, [pc, 0xf0]                                |         
    0x00003984 rsbs r4, r1, 0                                    |         r4 = r1 - ;
    0x00003986 ldr r1, [pc, 0xf0]                                |         
    0x00003988 mov r2, r7                                        |         r2 = r7;
    0x0000398a ldr r3, [sp, 4]                                   |         r3 = var_4h;
    0x0000398c add r0, pc                                        |         
    0x0000398e ldr r0, [r0]                                      |         r0 = *(0x7406);
    0x00003990 add r1, pc                                        |         r1 = 0x740e;
    0x00003992 bl 0x85e4                                         |         fcn_000085e4 (r0);
                                                                 |     }
    0x00003996 mov r0, r5                                        |     r0 = r5;
    0x00003998 blx 0x19a0                                        |     fcn_000019a0 ();
    0x0000399c b 0x3910                                          |     goto label_6;
                                                                 | label_12:
    0x0000399e mov r0, r5                                        |     r0 = r5;
    0x000039a0 bl 0xcf40                                         |     fcn_0000cf40 (r0);
    0x000039a4 mov r1, r6                                        |     r1 = r6;
    0x000039a6 bl 0x3a9c                                         |     r0 = fcn_00003a9c (r0, r1);
    0x000039aa subs r4, r0, 0                                    |     r4 = r0 - 0;
                                                                 |     if (r4 >= r0) {
    0x000039ac bge.w 0x3826                                      |         goto label_7;
                                                                 |     }
    0x000039b0 b 0x38d8                                          |     goto label_1;
                                                                 | label_19:
    0x000039b2 ldr r3, [pc, 0xc8]                                |     
    0x000039b4 add r3, pc                                        |     r3 = 0x7436;
    0x000039b6 ldr r4, [r3]                                      |     r4 = *(0x7436);
    0x000039b8 cmp r4, 0                                         |     
                                                                 |     if (r4 == 0) {
    0x000039ba beq 0x38d8                                        |         goto label_1;
                                                                 |     }
    0x000039bc ldr r3, [pc, 0xc0]                                |     
    0x000039be mov r2, r7                                        |     r2 = r7;
    0x000039c0 ldr r1, [pc, 0xc0]                                |     
    0x000039c2 mvn r4, 1                                         |     r4 = ~1;
    0x000039c6 add r3, pc                                        |     r3 = 0x744a;
    0x000039c8 ldr r0, [r3]                                      |     r0 = *(0x744a);
    0x000039ca add r1, pc                                        |     r1 = 0x7452;
    0x000039cc bl 0x85e4                                         |     fcn_000085e4 (r0);
    0x000039d0 b 0x38d8                                          |     goto label_1;
                                                                 | label_21:
    0x000039d2 ldr r1, [pc, 0xb4]                                |     
    0x000039d4 mov r2, r7                                        |     r2 = r7;
    0x000039d6 ldr r3, [sp, 4]                                   |     r3 = var_4h;
    0x000039d8 add r1, pc                                        |     r1 = 0x7466;
    0x000039da ldr r0, [r1]                                      |     r0 = *(0x7466);
    0x000039dc ldr r1, [pc, 0xac]                                |     
    0x000039de add r1, pc                                        |     r1 = 0x746e;
    0x000039e0 bl 0x85e4                                         |     fcn_000085e4 (r0);
    0x000039e4 mov r0, r5                                        |     r0 = r5;
    0x000039e6 blx 0x19a0                                        |     fcn_000019a0 ();
    0x000039ea b 0x38d8                                          |     goto label_1;
                                                                 | label_20:
    0x000039ec rsbs r0, r4, 0                                    |     r0 = r4 - ;
    0x000039ee blx 0x1b18                                        |     system (r0);
    0x000039f2 ldr r1, [pc, 0x9c]                                |     
    0x000039f4 mov r3, r0                                        |     r3 = r0;
    0x000039f6 mov r2, r7                                        |     r2 = r7;
    0x000039f8 movs r0, 4                                        |     r0 = 4;
    0x000039fa add r1, pc                                        |     r1 = 0x7490;
    0x000039fc bl 0x85e4                                         |     fcn_000085e4 (r0);
    0x00003a00 b 0x38e4                                          |     goto label_8;
                                                                 | label_14:
    0x00003a02 mov r0, r5                                        |     r0 = r5;
    0x00003a04 bl 0xddf0                                         |     r0 = fcn_0000ddf0 (r0);
    0x00003a08 cmp r0, 0                                         |     
                                                                 |     if (r0 <= 0) {
    0x00003a0a ble.w 0x3908                                      |         goto label_9;
                                                                 |     }
    0x00003a0e ldr r3, [pc, 0x84]                                |     
    0x00003a10 mov r2, r7                                        |     r2 = r7;
    0x00003a12 ldr r1, [pc, 0x84]                                |     
    0x00003a14 mvn r4, 0xf                                       |     r4 = ~0xf;
    0x00003a16 lsls r7, r1, 0x10                                 |     r7 = r1 << 0x10;
    0x00003a18 add r3, pc                                        |     r3 = 0x74b2;
    0x00003a1a ldr r0, [r3]                                      |     r0 = *(0x74b2);
    0x00003a1c add r1, pc                                        |     r1 = 0x74ba;
    0x00003a1e bl 0x85e4                                         |     fcn_000085e4 (r0);
    0x00003a22 b 0x38d8                                          |     goto label_1;
                                                                 | label_16:
    0x00003a24 mov r0, r5                                        |     r0 = r5;
    0x00003a26 mvn r4, 0xb                                       |     r4 = ~0xb;
    0x00003a2a blx 0x19a0                                        |     fcn_000019a0 ();
    0x00003a2e b 0x38d8                                          |     goto label_1;
                                                                 | label_15:
    0x00003a30 mvn r4, 0xb                                       |     r4 = ~0xb;
    0x00003a34 b 0x38d8                                          |     goto label_1;
                                                                 | label_18:
    0x00003a36 blx 0x1a1c                                        |     stat64 ();
    0x00003a3a nop                                               |     
    0x00003a3c movs r6, 0x42                                     |     r6 = 0x42;
    0x00003a3e movs r2, r0                                       |     r2 = r0;
    0x00003a40 lsls r4, r7, 6                                    |     r4 = r7 << 6;
    0x00003a42 movs r0, r0                                       |     
    0x00003a44 cmp r0, 0x98                                      |     
    0x00003a46 movs r2, r0                                       |     r2 = r0;
    0x00003a48 cmp r0, 0x90                                      |     
    0x00003a4a movs r2, r0                                       |     r2 = r0;
    0x00003a4c cmp r0, 0x7c                                      |     
    0x00003a4e movs r2, r0                                       |     r2 = r0;
    0x00003a50 cmp r0, 0x68                                      |     
    0x00003a52 movs r2, r0                                       |     r2 = r0;
    0x00003a54 ands.w r0, lr, r0                                 |     r0 = lr & r0;
    0x00003a58 ldrd r0, r0, [r6]                                 |     __asm ("ldrd r0, r0, [r6]");
    0x00003a5c lsrs r4, r3, 0x20                                 |     r4 = r3 >> 0x20;
    0x00003a5e movs r1, r0                                       |     r1 = r0;
    0x00003a60 movs r7, 0xbe                                     |     r7 = 0xbe;
    0x00003a62 movs r2, r0                                       |     r2 = r0;
    0x00003a64 movs r5, 0x30                                     |     r5 = 0x30;
    0x00003a66 movs r2, r0                                       |     r2 = r0;
    0x00003a68 movs r7, 6                                        |     r7 = 6;
    0x00003a6a movs r2, r0                                       |     r2 = r0;
    0x00003a6c b 0x3b14                                          |     
    0x00003b14 invalid                                           |     
                                                                 | }
    ; assembly                                                   | /* r2dec pseudo code output */
                                                                 | /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/bin/kmod @ 0x4754 */
                                                                 | #include <stdint.h>
                                                                 |  
    ; (fcn) fcn.00004754 ()                                      | uint32_t fcn_00004754 (int16_t arg1, int16_t arg2, int16_t arg3, int16_t arg4) {
                                                                 |     int16_t var_10h;
                                                                 |     char * string;
                                                                 |     int16_t var_18h;
                                                                 |     int16_t var_1ch;
                                                                 |     int16_t var_20h;
                                                                 |     int16_t var_30h;
                                                                 |     int16_t var_70h;
                                                                 |     int16_t var_8ch;
                                                                 |     r0 = arg1;
                                                                 |     r1 = arg2;
                                                                 |     r2 = arg3;
                                                                 |     r3 = arg4;
                                                                 | label_4:
    0x00004604 ldr r2, [r0]                                      |     r2 = *(r0);
    0x00004606 ldr r3, [r1]                                      |     r3 = *(r1);
    0x00004608 ldr r0, [r2, 0x30]                                |     r0 = *((r2 + 0x30));
    0x0000460a ldr r3, [r3, 0x30]                                |     r3 = *((r3 + 0x30));
    0x0000460c subs r0, r0, r3                                   |     r0 -= r3;
    0x0000460e bx lr                                             |     return r0;
    0x00004754 push.w {r4, r5, r6, r7, r8, sb, sl, fp, lr}       |     
    0x00004758 mov r7, r2                                        |     r7 = r2;
    0x0000475a ldr r2, [pc, 0x1f8]                               |     
    0x0000475c mov sb, r3                                        |     sb = r3;
    0x0000475e sub sp, 0x94                                      |     
    0x00004760 mov r6, r0                                        |     r6 = r0;
    0x00004762 ldr r3, [pc, 0x1f4]                               |     r3 = *(0x495a);
    0x00004764 add r2, pc                                        |     r2 = 0x90be;
    0x00004766 str r1, [sp, 0x1c]                                |     var_1ch = r1;
    0x00004768 ldr.w r8, [pc, 0x1f0]                             |     
    0x0000476c ldr r3, [r2, r3]                                  |     
    0x0000476e ldr.w fp, [pc, 0x1f0]                             |     
    0x00004772 add r8, pc                                        |     r8 = 0x90d2;
    0x00004774 ldr r3, [r3]                                      |     r3 = *(0x90be);
    0x00004776 str r3, [sp, 0x8c]                                |     var_8ch = r3;
    0x00004778 mov.w r3, 0                                       |     r3 = 0;
    0x0000477c blx 0x1d40                                        |     renameat ();
    0x00004780 ldr r3, [pc, 0x1e0]                               |     
    0x00004782 add fp, pc                                        |     fp = 0x90e8;
    0x00004784 str r0, [sp, 0x10]                                |     var_10h = r0;
    0x00004786 add r3, pc                                        |     r3 = 0x90ee;
    0x00004788 str r3, [sp, 0x18]                                |     var_18h = r3;
    0x0000478a movs r3, 1                                        |     r3 = 1;
    0x0000478c str r3, [sp, 0x14]                                |     string = r3;
                                                                 |     do {
                                                                 | label_0:
    0x0000478e mov r0, r6                                        |         r0 = r6;
    0x00004790 blx 0x1cf4                                        |         r0 = fcn_00001cf4 ();
    0x00004794 cmp r0, 0                                         |         
                                                                 |         if (r0 == 0) {
    0x00004796 beq 0x4822                                        |             goto label_3;
                                                                 |         }
                                                                 | label_1:
    0x00004798 ldrb r3, [r0, 0x13]                               |         r3 = *((r0 + 0x13));
    0x0000479a add.w r4, r0, 0x13                                |         r4 = r0 + 0x13;
    0x0000479e cmp r3, 0x2e                                      |         
                                                                 |         if (r3 == 0x2e) {
    0x000047a0 beq 0x4840                                        |             goto label_5;
                                                                 |         }
                                                                 | label_2:
    0x000047a2 mov r1, r8                                        |         r1 = r8;
    0x000047a4 mov r0, r4                                        |         r0 = r4;
    0x000047a6 blx 0x1924                                        |         r0 = fcn_00001924 ();
    0x000047aa cmp r0, 0                                         |         
    0x000047ac beq 0x478e                                        |         
                                                                 |     } while (r0 == 0);
    0x000047ae mov r1, fp                                        |     r1 = fp;
    0x000047b0 mov r0, r4                                        |     r0 = r4;
    0x000047b2 blx 0x1924                                        |     r0 = fcn_00001924 ();
    0x000047b6 cmp r0, 0                                         |     
                                                                 |     if (r0 == 0) {
    0x000047b8 beq 0x478e                                        |         goto label_0;
                                                                 |     }
    0x000047ba mov r0, r4                                        |     r0 = r4;
    0x000047bc blx 0x1bb0                                        |     r0 = fcn_00001bb0 ();
    0x000047c0 add.w sl, r0, r7                                  |     sl = r0 + r7;
    0x000047c4 mov r5, r0                                        |     r5 = r0;
    0x000047c6 add.w r3, sl, 2                                   |     r3 = sl + 2;
    0x000047ca cmp.w r3, 0x1000                                  |     
                                                                 |     if (r3 >= 0x1000) {
    0x000047ce bhs 0x4852                                        |         goto label_6;
                                                                 |     }
    0x000047d0 ldr r0, [sp, 0x10]                                |     r0 = var_10h;
    0x000047d2 movs r3, 0                                        |     r3 = 0;
    0x000047d4 add r2, sp, 0x20                                  |     r2 += var_20h;
    0x000047d6 mov r1, r4                                        |     r1 = r4;
    0x000047d8 blx 0x1adc                                        |     r0 = asprintf_chk ();
    0x000047dc cmp r0, 0                                         |     
                                                                 |     if (r0 < 0) {
    0x000047de blt.w 0x48ee                                      |         goto label_7;
                                                                 |     }
    0x000047e2 ldr r3, [sp, 0x30]                                |     r3 = var_30h;
    0x000047e4 and r3, r3, 0xf000                                |     r3 &= 0xf000;
    0x000047e8 cmp.w r3, 0x4000                                  |     
                                                                 |     if (r3 == 0x4000) {
    0x000047ec beq 0x4874                                        |         goto label_8;
                                                                 |     }
    0x000047ee cmp.w r3, 0x8000                                  |     
                                                                 |     if (r3 != 0x8000) {
    0x000047f2 bne 0x4868                                        |         goto label_9;
                                                                 |     }
    0x000047f4 mov r1, r5                                        |     r1 = r5;
    0x000047f6 mov r0, r4                                        |     r0 = r4;
    0x000047f8 bl 0x9400                                         |     r0 = fcn_00009400 (r0, r1);
    0x000047fc cmp r0, 0                                         |     
                                                                 |     if (r0 == 0) {
    0x000047fe beq 0x478e                                        |         goto label_0;
                                                                 |     }
    0x00004800 adds r2, r5, 1                                    |     r2 = r5 + 1;
    0x00004802 mov r1, r4                                        |     r1 = r4;
    0x00004804 add.w r0, sb, r7                                  |     r0 = sb + r7;
    0x00004808 blx 0x19c8                                        |     mmap64 ()
    0x0000480c ldr r3, [sp, 0x70]                                |     r3 = var_70h;
    0x0000480e ldr r2, [sp, 0x1c]                                |     r2 = var_1ch;
    0x00004810 cmp r3, r2                                        |     
                                                                 |     if (r3 > r2) {
    0x00004812 bgt 0x490e                                        |         goto label_10;
                                                                 |     }
    0x00004814 movs r3, 1                                        |     r3 = 1;
    0x00004816 mov r0, r6                                        |     r0 = r6;
    0x00004818 str r3, [sp, 0x14]                                |     string = r3;
    0x0000481a blx 0x1cf4                                        |     r0 = fcn_00001cf4 ();
    0x0000481e cmp r0, 0                                         |     
                                                                 |     if (r0 != 0) {
    0x00004820 bne 0x4798                                        |         goto label_1;
                                                                 |     }
                                                                 | label_3:
    0x00004822 ldr r2, [pc, 0x144]                               |     
    0x00004824 ldr r3, [pc, 0x130]                               |     r3 = *(0x4958);
    0x00004826 add r2, pc                                        |     r2 = 0x9194;
    0x00004828 ldr r3, [r2, r3]                                  |     r3 = *(0x9194);
    0x0000482a ldr r2, [r3]                                      |     r2 = *(0x9194);
    0x0000482c ldr r3, [sp, 0x8c]                                |     r3 = var_8ch;
    0x0000482e eors r2, r3                                       |     r2 ^= r3;
    0x00004830 mov.w r3, 0                                       |     r3 = 0;
                                                                 |     if (r2 != r3) {
    0x00004834 bne.w 0x4950                                      |         goto label_11;
                                                                 |     }
    0x00004838 ldr r0, [sp, 0x14]                                |     r0 = string;
    0x0000483a add sp, 0x94                                      |     
    0x0000483c pop.w {r4, r5, r6, r7, r8, sb, sl, fp, pc}        |     
                                                                 | label_5:
    0x00004840 ldrb r3, [r0, 0x14]                               |     r3 = *((r0 + 0x14));
    0x00004842 cmp r3, 0                                         |     
                                                                 |     if (r3 == 0) {
    0x00004844 beq 0x478e                                        |         goto label_0;
                                                                 |     }
    0x00004846 cmp r3, 0x2e                                      |     
                                                                 |     if (r3 != 0x2e) {
    0x00004848 bne 0x47a2                                        |         goto label_2;
                                                                 |     }
    0x0000484a ldrb r3, [r0, 0x15]                               |     r3 = *((r0 + 0x15));
    0x0000484c cmp r3, 0                                         |     
                                                                 |     if (r3 != 0) {
    0x0000484e bne 0x47a2                                        |         goto label_2;
                                                                 |     }
    0x00004850 b 0x478e                                          |     goto label_0;
                                                                 | label_6:
    0x00004852 ldr r1, [pc, 0x118]                               |     
    0x00004854 movs r2, 0                                        |     r2 = 0;
    0x00004856 strb.w r2, [sb, r7]                               |     *((sb + r7)) = r2;
    0x0000485a mov r3, r4                                        |     r3 = r4;
    0x0000485c mov r2, sb                                        |     r2 = sb;
    0x0000485e movs r0, 3                                        |     r0 = 3;
    0x00004860 add r1, pc                                        |     r1 = 0x91d2;
    0x00004862 bl 0x85e4                                         |     fcn_000085e4 (r0);
    0x00004866 b 0x478e                                          |     goto label_0;
                                                                 | label_9:
    0x00004868 ldr r1, [sp, 0x18]                                |     r1 = var_18h;
    0x0000486a mov r2, sb                                        |     r2 = sb;
    0x0000486c movs r0, 3                                        |     r0 = 3;
    0x0000486e bl 0x85e4                                         |     fcn_000085e4 (r0);
    0x00004872 b 0x478e                                          |     goto label_0;
                                                                 | label_8:
    0x00004874 adds r2, r5, 1                                    |     r2 = r5 + 1;
    0x00004876 mov r1, r4                                        |     r1 = r4;
    0x00004878 add.w r0, sb, r7                                  |     r0 = sb + r7;
    0x0000487c blx 0x19c8                                        |     mmap64 ()
    0x00004880 addw r3, sl, 0x101                                |     __asm ("addw r3, sl, 0x101");
    0x00004884 cmp.w r3, 0x1000                                  |     
                                                                 |     if (r3 >= 0x1000) {
    0x00004888 bhs 0x492e                                        |         goto label_12;
                                                                 |     }
    0x0000488a ldr r0, [sp, 0x10]                                |     r0 = var_10h;
    0x0000488c movs r2, 0                                        |     r2 = 0;
    0x0000488e mov r1, r4                                        |     r1 = r4;
    0x00004890 blx 0x1bd8                                        |     r0 = sprintf_chk ();
    0x00004894 subs r5, r0, 0                                    |     r5 = r0 - 0;
                                                                 |     if (r5 < r0) {
    0x00004896 blt 0x48fe                                        |         goto label_13;
                                                                 |     }
    0x00004898 blx 0x1d00                                        |     r0 = fcn_00001d00 ();
    0x0000489c mov r4, r0                                        |     r4 = r0;
    0x0000489e cmp r0, 0                                         |     
                                                                 |     if (r0 == 0) {
    0x000048a0 beq 0x493c                                        |         goto label_14;
                                                                 |     }
    0x000048a2 movs r3, 0x2f                                     |     r3 = 0x2f;
    0x000048a4 add.w r2, sl, 1                                   |     r2 = sl + 1;
    0x000048a8 strb.w r3, [sb, sl]                               |     *((sb + sl)) = r3;
    0x000048ac movs r3, 0                                        |     r3 = 0;
    0x000048ae strb.w r3, [sb, r2]                               |     *((sb + r2)) = r3;
    0x000048b2 mov r3, sb                                        |     r3 = sb;
    0x000048b4 ldr r1, [sp, 0x1c]                                |     r1 = var_1ch;
    0x000048b6 bl 0x4754                                         |     r0 = fcn_00004754 (r0, r1, r2, r3);
    0x000048ba mov r5, r0                                        |     r5 = r0;
    0x000048bc str r0, [sp, 0x14]                                |     string = r0;
    0x000048be mov r0, r4                                        |     r0 = r4;
    0x000048c0 blx 0x1dc8                                        |     fcn_00001dc8 ();
    0x000048c4 cmp r5, 0                                         |     
                                                                 |     if (r5 == 0) {
    0x000048c6 beq 0x4928                                        |         goto label_15;
                                                                 |     }
                                                                 |     if (r5 >= 0) {
    0x000048c8 bge.w 0x478e                                      |         goto label_0;
                                                                 |     }
    0x000048cc ldr r3, [sp, 0x14]                                |     r3 = string;
    0x000048ce rsbs r0, r3, 0                                    |     r0 = r3 - ;
    0x000048d0 movs r3, 0                                        |     r3 = 0;
    0x000048d2 strb.w r3, [sb, sl]                               |     *((sb + sl)) = r3;
    0x000048d6 blx 0x1b18                                        |     system (r0);
    0x000048da ldr r1, [pc, 0x94]                                |     
    0x000048dc mov r3, r0                                        |     r3 = r0;
    0x000048de mov r2, sb                                        |     r2 = sb;
    0x000048e0 movs r0, 3                                        |     r0 = 3;
    0x000048e2 add r1, pc                                        |     r1 = 0x9258;
    0x000048e4 bl 0x85e4                                         |     fcn_000085e4 (r0);
    0x000048e8 movs r3, 1                                        |     r3 = 1;
    0x000048ea str r3, [sp, 0x14]                                |     string = r3;
    0x000048ec b 0x478e                                          |     goto label_0;
                                                                 | label_7:
    0x000048ee ldr r1, [pc, 0x84]                                |     
    0x000048f0 mov r3, r4                                        |     r3 = r4;
    0x000048f2 ldr r2, [sp, 0x10]                                |     r2 = var_10h;
    0x000048f4 movs r0, 3                                        |     r0 = 3;
    0x000048f6 add r1, pc                                        |     r1 = 0x9270;
    0x000048f8 bl 0x85e4                                         |     fcn_000085e4 (r0);
    0x000048fc b 0x478e                                          |     goto label_0;
                                                                 | label_13:
    0x000048fe ldr r1, [pc, 0x78]                                |     
    0x00004900 mov r3, r4                                        |     r3 = r4;
    0x00004902 ldr r2, [sp, 0x10]                                |     r2 = var_10h;
    0x00004904 movs r0, 3                                        |     r0 = 3;
    0x00004906 add r1, pc                                        |     r1 = 0x9284;
    0x00004908 bl 0x85e4                                         |     fcn_000085e4 (r0);
    0x0000490c b 0x478e                                          |     goto label_0;
                                                                 | label_10:
    0x0000490e asrs r1, r2, 0x1f                                 |     r1 = r2 >> 0x1f;
    0x00004910 mov r0, r2                                        |     r0 = r2;
    0x00004912 asrs r4, r3, 0x1f                                 |     r4 = r3 >> 0x1f;
    0x00004914 mov r2, sb                                        |     r2 = sb;
    0x00004916 strd r0, r1, [sp, 8]                              |     __asm ("strd r0, r1, [sp, 8]");
    0x0000491a movs r0, 7                                        |     r0 = 7;
    0x0000491c ldr r1, [pc, 0x5c]                                |     
    0x0000491e strd r3, r4, [sp]                                 |     __asm ("strd r3, r4, [sp]");
    0x00004922 add r1, pc                                        |     r1 = 0x92a2;
    0x00004924 bl 0x85e4                                         |     fcn_000085e4 (r0);
                                                                 | label_15:
    0x00004928 movs r3, 0                                        |     r3 = 0;
    0x0000492a str r3, [sp, 0x14]                                |     string = r3;
    0x0000492c b 0x4822                                          |     goto label_3;
                                                                 | label_12:
    0x0000492e ldr r1, [pc, 0x50]                                |     
    0x00004930 mov r2, sb                                        |     r2 = sb;
    0x00004932 movs r0, 3                                        |     r0 = 3;
    0x00004934 add r1, pc                                        |     r1 = 0x92ba;
    0x00004936 bl 0x85e4                                         |     fcn_000085e4 (r0);
    0x0000493a b 0x478e                                          |     goto label_0;
                                                                 | label_14:
    0x0000493c ldr r1, [pc, 0x44]                                |     
    0x0000493e mov r2, r5                                        |     r2 = r5;
    0x00004940 movs r0, 3                                        |     r0 = 3;
    0x00004942 add r1, pc                                        |     r1 = 0x92ca;
    0x00004944 bl 0x85e4                                         |     fcn_000085e4 (r0);
    0x00004948 mov r0, r5                                        |     r0 = r5;
    0x0000494a blx 0x1dbc                                        |     fcn_00001dbc ();
    0x0000494e b 0x478e                                          |     goto label_0;
                                                                 | label_11:
    0x00004950 blx 0x1a1c                                        |     stat64 ();
    0x00004954 asrs r4, r6, 0x1a                                 |     r4 = r6 >> 0x1a;
    0x00004956 movs r2, r0                                       |     r2 = r0;
    0x00004958 lsls r4, r7, 6                                    |     r4 = r7 << 6;
    0x0000495a movs r0, r0                                       |     
    0x0000495c b 0x4604                                          |     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/bin/kmod @ 0x4a18 */
                                                                 | #include <stdint.h>
                                                                 |  
    ; (fcn) fcn.00004a18 ()                                      | void fcn_00004a18 (int16_t arg1, int16_t arg2, int16_t arg3) {
                                                                 |     r0 = arg1;
                                                                 |     r1 = arg2;
                                                                 |     r2 = arg3;
    0x00004a18 push.w {r4, r5, r6, r7, r8, sb, sl, lr}           |     
    0x00004a1c mov r7, r0                                        |     r7 = r0;
    0x00004a1e ldr r4, [r0]                                      |     r4 = *(r0);
    0x00004a20 mov r8, r1                                        |     r8 = r1;
    0x00004a22 mov sb, r2                                        |     sb = r2;
                                                                 |     if (r4 == 0) {
    0x00004a24 cbz r4, 0x4a7c                                    |         goto label_0;
                                                                 |     }
    0x00004a26 mov r5, r4                                        |     r5 = r4;
    0x00004a28 movs r6, 0                                        |     r6 = 0;
                                                                 |     do {
    0x00004a2a add.w r0, r5, 8                                   |         r0 = r5 + 8;
    0x00004a2e mov r1, r8                                        |         r1 = r8;
    0x00004a30 blx 0x1924                                        |         fcn_00001924 ();
    0x00004a34 ldr r5, [r5]                                      |         r5 = *(r5);
    0x00004a36 cmp r0, 0                                         |         
    0x00004a38 it eq                                             |         
                                                                 |         if (r0 != 0) {
    0x00004a3a moveq r6, 1                                       |             r6 = 1;
                                                                 |         }
    0x00004a3c cmp r5, 0                                         |         
    0x00004a3e bne 0x4a2a                                        |         
                                                                 |     } while (r5 != 0);
    0x00004a40 ldr r3, [r4, 4]                                   |     r3 = *((r4 + 4));
    0x00004a42 cmp r3, sb                                        |     
                                                                 |     if (r3 >= sb) {
    0x00004a44 bhs 0x4a52                                        |         goto label_1;
                                                                 |     }
                                                                 |     do {
    0x00004a46 mov r7, r4                                        |         r7 = r4;
    0x00004a48 ldr r4, [r4]                                      |         r4 = *(r4);
                                                                 |         if (r4 == 0) {
    0x00004a4a cbz r4, 0x4a52                                    |             goto label_1;
                                                                 |         }
    0x00004a4c ldr r3, [r4, 4]                                   |         r3 = *((r4 + 4));
    0x00004a4e cmp r3, sb                                        |         
    0x00004a50 blo 0x4a46                                        |         
                                                                 |     } while (r3 <= sb);
                                                                 |     do {
                                                                 | label_1:
    0x00004a52 mov r0, r8                                        |         r0 = r8;
    0x00004a54 blx 0x1bb0                                        |         fcn_00001bb0 ();
    0x00004a58 movs r1, 1                                        |         r1 = 1;
    0x00004a5a mov sl, r0                                        |         sl = r0;
    0x00004a5c adds r0, 9                                        |         r0 += 9;
    0x00004a5e blx 0x18d8                                        |         calloc (r0, r1);
    0x00004a62 add.w r2, sl, 1                                   |         r2 = sl + 1;
    0x00004a66 mov r5, r0                                        |         r5 = r0;
    0x00004a68 strd r4, sb, [r0]                                 |         __asm ("strd r4, sb, [r0]");
    0x00004a6c mov r1, r8                                        |         r1 = r8;
    0x00004a6e adds r0, 8                                        |         r0 += 8;
    0x00004a70 blx 0x19c8                                        |         mmap64 ()
    0x00004a74 mov r0, r6                                        |         r0 = r6;
    0x00004a76 str r5, [r7]                                      |         *(r7) = r5;
    0x00004a78 pop.w {r4, r5, r6, r7, r8, sb, sl, pc}            |         
                                                                 | label_0:
    0x00004a7c mov r6, r4                                        |         r6 = r4;
    0x00004a7e b 0x4a52                                          |         
                                                                 |     } 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/bin/kmod @ 0x4a80 */
                                                                     | #include <stdint.h>
                                                                     |  
    ; (fcn) fcn.00004a80 ()                                          | void fcn_00004a80 (int16_t arg_4h, int16_t arg_1000h, int16_t arg1, int16_t arg2) {
                                                                     |     int16_t var_0h;
                                                                     |     int16_t var_ch;
                                                                     |     r0 = arg1;
                                                                     |     r1 = arg2;
    0x00004a80 push.w {r4, r5, r6, r7, r8, sb, sl, fp, lr}           |     
    0x00004a84 mov r8, r0                                            |     r8 = r0;
    0x00004a86 sub sp, 0x14                                          |     
    0x00004a88 mov r0, r1                                            |     r0 = r1;
    0x00004a8a mov r7, r1                                            |     r7 = r1;
    0x00004a8c ldr.w fp, [r8]                                        |     fp = *(r8);
    0x00004a90 bl 0xcfb4                                             |     r0 = fcn_0000cfb4 (r0);
    0x00004a94 mov r5, r0                                            |     r5 = r0;
    0x00004a96 blx 0x1bb0                                            |     r0 = fcn_00001bb0 ();
    0x00004a9a mov sl, r0                                            |     sl = r0;
    0x00004a9c movs r0, 1                                            |     r0 = 1;
    0x00004a9e add.w r1, sl, 0x45                                    |     r1 = sl + 0x45;
    0x00004aa2 add sl, r0                                            |     sl += r0;
    0x00004aa4 blx 0x18d8                                            |     r0 = calloc (r0, r1);
    0x00004aa8 cmp r0, 0                                             |     
                                                                     |     if (r0 == 0) {
    0x00004aaa beq.w 0x4bb8                                          |         goto label_1;
                                                                     |     }
    0x00004aae ldr.w r3, [r8, 0xc]                                   |     r3 = *((r8 + 0xc));
    0x00004ab2 add.w sb, r0, 0x44                                    |     sb = r0 + 0x44;
    0x00004ab6 mov r2, sl                                            |     r2 = sl;
    0x00004ab8 mov r4, r0                                            |     r4 = r0;
    0x00004aba mov r1, r5                                            |     r1 = r5;
    0x00004abc str r7, [r0]                                          |     *(r0) = r7;
    0x00004abe adds r3, 1                                            |     r3++;
    0x00004ac0 str r3, [r0, 0x30]                                    |     *((r0 + 0x30)) = r3;
    0x00004ac2 mvn r3, 0x80000000                                    |     r3 = ~0x80000000;
    0x00004ac6 str r3, [r0, 0x34]                                    |     *((r0 + 0x34)) = r3;
    0x00004ac8 mov r0, sb                                            |     r0 = sb;
    0x00004aca blx 0x19c8                                            |     mmap64 ()
    0x00004ace movs r1, 4                                            |     r1 = 4;
    0x00004ad0 add.w r0, r4, 0x18                                    |     r0 = r4 + 0x18;
    0x00004ad4 str.w sl, [r4, 0x2c]                                  |     __asm ("str.w sl, [r4, 0x2c]");
    0x00004ad8 bl 0x8b68                                             |     fcn_00008b68 (r0, r1);
    0x00004adc mov r0, r7                                            |     r0 = r7;
    0x00004ade bl 0xcfbc                                             |     r0 = fcn_0000cfbc (r0);
    0x00004ae2 blx 0x1a10                                            |     stack_chk_fail ();
    0x00004ae6 movs r1, 0x2f                                         |     r1 = 0x2f;
    0x00004ae8 str r0, [r4, 4]                                       |     *((r4 + 4)) = r0;
    0x00004aea mov r6, r0                                            |     r6 = r0;
    0x00004aec blx 0x1cd0                                            |     fcn_00001cd0 ();
    0x00004af0 add.w r3, fp, 0x1000                                  |     r3 += arg_1000h;
    0x00004af4 mov r5, r0                                            |     r5 = r0;
    0x00004af6 ldr r2, [r3, 4]                                       |     r2 = *((r3 + 4));
    0x00004af8 subs r3, r0, r6                                       |     r3 = r0 - r6;
    0x00004afa add.w r1, fp, 4                                       |     r1 += arg_4h;
    0x00004afe mov r0, r6                                            |     r0 = r6;
    0x00004b00 str r3, [r4, 0x28]                                    |     *((r4 + 0x28)) = r3;
    0x00004b02 str r2, [sp, 0xc]                                     |     var_ch = r2;
    0x00004b04 blx 0x1da4                                            |     r0 = fcn_00001da4 ();
                                                                     |     if (r0 == 0) {
    0x00004b08 cbz r0, 0x4b60                                        |         goto label_2;
                                                                     |     }
    0x00004b0a movs r0, 0                                            |     r0 = 0;
                                                                     |     do {
    0x00004b0c str r0, [r4, 8]                                       |         *((r4 + 8)) = r0;
    0x00004b0e mov r2, r4                                            |         r2 = r4;
    0x00004b10 ldr.w r0, [r8, 0x1c]                                  |         r0 = *((r8 + 0x1c));
    0x00004b14 mov r1, sb                                            |         r1 = sb;
    0x00004b16 bl 0x8e20                                             |         r0 = fcn_00008e20 (r0, r1, r2);
    0x00004b1a subs r6, r0, 0                                        |         r6 = r0 - 0;
                                                                     |         if (r6 < r0) {
    0x00004b1c blt 0x4b6e                                            |             goto label_3;
                                                                     |         }
    0x00004b1e ldr r0, [r4, 8]                                       |         r0 = *((r4 + 8));
                                                                     |         if (r0 != 0) {
    0x00004b20 cbz r0, 0x4b44                                        |             
    0x00004b22 subs r5, r5, r0                                       |             r5 -= r0;
    0x00004b24 add r5, sl                                            |             r5 += sl;
    0x00004b26 adds r1, r5, 4                                        |             r1 = r5 + 4;
    0x00004b28 bl 0x92ac                                             |             fcn_000092ac (r0, r1);
    0x00004b2c movs r3, 0                                            |             r3 = 0;
    0x00004b2e add r5, r0                                            |             r5 += r0;
    0x00004b30 str r0, [r4, 0xc]                                     |             *((r4 + 0xc)) = r0;
    0x00004b32 mov r2, r4                                            |             r2 = r4;
    0x00004b34 strb r3, [r5, 3]                                      |             *((r5 + 3)) = r3;
    0x00004b36 ldr r1, [r4, 0xc]                                     |             r1 = *((r4 + 0xc));
    0x00004b38 ldr.w r0, [r8, 0x18]                                  |             r0 = *((r8 + 0x18));
    0x00004b3c bl 0x8e20                                             |             r0 = fcn_00008e20 (r0, r1, r2);
    0x00004b40 subs r6, r0, 0                                        |             r6 = r0 - 0;
                                                                     |             if (r6 < r0) {
    0x00004b42 blt 0x4b96                                            |                 goto label_4;
                                                                     |             }
                                                                     |         }
    0x00004b44 ldr r5, [r4, 4]                                       |         r5 = *((r4 + 4));
    0x00004b46 movs r6, 0                                            |         r6 = 0;
    0x00004b48 ldr r1, [pc, 0x74]                                    |         
    0x00004b4a mov r3, r7                                            |         r3 = r7;
    0x00004b4c mov r2, r4                                            |         r2 = r4;
    0x00004b4e movs r0, 7                                            |         r0 = 7;
    0x00004b50 str r5, [sp]                                          |         *(sp) = r5;
    0x00004b52 add r1, pc                                            |         r1 = 0x9716;
    0x00004b54 bl 0x85e4                                             |         fcn_000085e4 (r0);
                                                                     | label_0:
    0x00004b58 mov r0, r6                                            |         r0 = r6;
    0x00004b5a add sp, 0x14                                          |         
    0x00004b5c pop.w {r4, r5, r6, r7, r8, sb, sl, fp, pc}            |         
                                                                     | label_2:
    0x00004b60 ldr r2, [sp, 0xc]                                     |         r2 = var_ch;
    0x00004b62 ldrb r3, [r6, r2]                                     |         r3 = *((r6 + r2));
    0x00004b64 cmp r3, 0x2f                                          |         
    0x00004b66 itt eq                                                |         
                                                                     |         if (r3 != 0x2f) {
    0x00004b68 addeq r2, 1                                           |             r2++;
                                                                     |         }
                                                                     |         if (r3 != 0x2f) {
    0x00004b6a addeq r0, r6, r2                                      |             r0 = r6 + r2;
                                                                     |         }
    0x00004b6c b 0x4b0c                                              |         
                                                                     |     } while (1);
                                                                     | label_3:
    0x00004b6e rsbs r0, r6, 0                                        |     r0 = r6 - ;
    0x00004b70 blx 0x1b18                                            |     system (r0);
    0x00004b74 ldr r1, [pc, 0x4c]                                    |     
    0x00004b76 mov r3, r0                                            |     r3 = r0;
    0x00004b78 mov r2, sb                                            |     r2 = sb;
    0x00004b7a movs r0, 3                                            |     r0 = 3;
    0x00004b7c add r1, pc                                            |     r1 = 0x9744;
    0x00004b7e bl 0x85e4                                             |     fcn_000085e4 (r0);
                                                                     |     do {
    0x00004b82 ldr r0, [r4, 0xc]                                     |         r0 = *((r4 + 0xc));
    0x00004b84 blx 0x19a0                                            |         fcn_000019a0 ();
    0x00004b88 mov r0, r4                                            |         r0 = r4;
    0x00004b8a blx 0x19a0                                            |         fcn_000019a0 ();
    0x00004b8e mov r0, r6                                            |         r0 = r6;
    0x00004b90 add sp, 0x14                                          |         
    0x00004b92 pop.w {r4, r5, r6, r7, r8, sb, sl, fp, pc}            |         
                                                                     | label_4:
    0x00004b96 rsbs r0, r6, 0                                        |         r0 = r6 - ;
    0x00004b98 ldr r5, [r4, 0xc]                                     |         r5 = *((r4 + 0xc));
    0x00004b9a blx 0x1b18                                            |         system (r0);
    0x00004b9e ldr r1, [pc, 0x28]                                    |         
    0x00004ba0 mov r3, r0                                            |         r3 = r0;
    0x00004ba2 mov r2, r5                                            |         r2 = r5;
    0x00004ba4 movs r0, 3                                            |         r0 = 3;
    0x00004ba6 add r1, pc                                            |         r1 = 0x9774;
    0x00004ba8 bl 0x85e4                                             |         fcn_000085e4 (r0);
    0x00004bac ldr.w r0, [r8, 0x1c]                                  |         r0 = *((r8 + 0x1c));
    0x00004bb0 mov r1, sb                                            |         r1 = sb;
    0x00004bb2 bl 0x904c                                             |         fcn_0000904c (r0, r1);
    0x00004bb6 b 0x4b82                                              |         
                                                                     |     } while (1);
                                                                     | label_1:
    0x00004bb8 mvn r6, 0xb                                           |     r6 = ~0xb;
    0x00004bbc b 0x4b58                                              |     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/bin/kmod @ 0x5330 */
                                                             | #include <stdint.h>
                                                             |  
    ; (fcn) fcn.00005330 ()                                  | void fcn_00005330 (int16_t arg_20h, int16_t arg_28h, int16_t arg1, int16_t arg2) {
                                                             |     r0 = arg1;
                                                             |     r1 = arg2;
    0x00005330 push.w {r4, r5, r6, r7, r8, sl, fp, lr}       |     
    0x00005334 mov r6, r0                                    |     r6 = r0;
    0x00005336 ldrd sl, fp, [sp, 0x20]                       |     __asm ("ldrd sl, fp, [arg_20h]");
    0x00005338 add r3, sp, 0x20                              |     r3 = sp + 0x20;
    0x0000533a mov r8, r1                                    |     r8 = r1;
    0x0000533c ldr r7, [sp, 0x28]                            |     r7 = *(arg_28h);
                                                             |     if (r2 == 0) {
    0x0000533e cbnz r2, 0x5352                               |         
    0x00005340 ldr r3, [r0]                                  |         r3 = *(r0);
    0x00005342 ldrb r2, [r1]                                 |         r2 = *(r1);
    0x00005344 add.w r3, r3, 0x1000                          |         r3 += 0x1000;
    0x00005348 ldrb r3, [r3, 8]                              |         r3 = *((r3 + 8));
    0x0000534a cmp r2, r3                                    |         
    0x0000534c it eq                                         |         
                                                             |         if (r2 == r3) {
    0x0000534e addeq r8, r1, 1                               |             r8 = r1 + 1;
                                                             |             goto label_0;
                                                             |         }
                                                             |     }
                                                             | label_0:
    0x00005352 mov r0, r8                                    |     r0 = r8;
    0x00005354 blx 0x1bb0                                    |     r0 = fcn_00001bb0 ();
    0x00005358 mov r2, r0                                    |     r2 = r0;
    0x0000535a adds r0, 0x11                                 |     r0 += 0x11;
    0x0000535c adds r5, r2, 1                                |     r5 = r2 + 1;
    0x0000535e blx 0x1b0c                                    |     r0 = strerror (r0);
    0x00005362 mov r4, r0                                    |     r4 = r0;
                                                             |     if (r0 == 0) {
    0x00005364 cbz r0, 0x53b2                                |         goto label_1;
                                                             |     }
    0x00005366 mov r2, r5                                    |     r2 = r5;
    0x00005368 add.w r5, r0, 0x10                            |     r5 = r0 + 0x10;
    0x0000536c mov r1, r8                                    |     r1 = r8;
    0x0000536e strd sl, fp, [r0, 8]                          |     __asm ("strd sl, fp, [r0, 8]");
    0x00005372 str r7, [r0]                                  |     *(r0) = r7;
    0x00005374 mov r0, r5                                    |     r0 = r5;
    0x00005376 blx 0x19c8                                    |     mmap64 ()
    0x0000537a ldr r0, [r6, 0x20]                            |     r0 = *((r6 + 0x20));
    0x0000537c mov r2, r4                                    |     r2 = r4;
    0x0000537e mov r1, r5                                    |     r1 = r5;
    0x00005380 bl 0x8cc0                                     |     r0 = fcn_00008cc0 (r0, r1, r2);
    0x00005384 cmp r0, 0                                     |     
                                                             |     if (r0 < 0) {
    0x00005386 blt 0x53a8                                    |         goto label_2;
                                                             |     }
                                                             |     if (r7 == 0) {
    0x00005388 cbz r7, 0x53a2                                |         goto label_3;
                                                             |     }
    0x0000538a ldr r0, [r7, 4]                               |     r0 = *((r7 + 4));
                                                             |     do {
    0x0000538c ldr r1, [pc, 0x28]                            |         
    0x0000538e mov r3, r5                                    |         r3 = r5;
    0x00005390 strd r7, r0, [sp, 0x20]                       |         __asm ("strd r7, r0, [sp, 0x20]");
    0x00005394 mov r2, r4                                    |         r2 = r4;
    0x00005396 movs r0, 7                                    |         r0 = 7;
    0x00005398 pop.w {r4, r5, r6, r7, r8, sl, fp, lr}        |         
    0x0000539c add r1, pc                                    |         r1 = 0xa758;
    0x0000539e b.w 0x85e4                                    |         void (*0x85e4)() ();
                                                             | label_3:
    0x000053a2 ldr r0, [pc, 0x18]                            |         
    0x000053a4 add r0, pc                                    |         r0 = 0xa766;
    0x000053a6 b 0x538c                                      |         
                                                             |     } while (1);
                                                             | label_2:
    0x000053a8 mov r0, r4                                    |     r0 = r4;
    0x000053aa pop.w {r4, r5, r6, r7, r8, sl, fp, lr}        |     
    0x000053ae b.w 0x199c                                    |     void (*0x199c)() ();
                                                             | label_1:
    0x000053b2 pop.w {r4, r5, r6, r7, r8, sl, fp, pc}        |     
                                                             | }
    ; assembly                                                   | /* r2dec pseudo code output */
                                                                 | /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/bin/kmod @ 0x5458 */
                                                                 | #include <stdint.h>
                                                                 |  
    ; (fcn) fcn.00005458 ()                                      | void fcn_00005458 (int16_t arg_0h, int16_t arg1, int16_t arg2, int16_t arg3, int16_t arg4) {
                                                                 |     int16_t var_4h;
                                                                 |     int16_t var_0h;
                                                                 |     int16_t var_8h;
                                                                 |     int16_t var_ch;
                                                                 |     int16_t var_10h;
                                                                 |     int16_t var_14h;
                                                                 |     r0 = arg1;
                                                                 |     r1 = arg2;
                                                                 |     r2 = arg3;
                                                                 |     r3 = arg4;
    0x00005458 push.w {r4, r5, r6, r7, r8, sb, sl, fp, lr}       |     
    0x0000545c mov r4, r3                                        |     r4 = r3;
    0x0000545e sub sp, 0x1c                                      |     
    0x00005460 mov sl, r0                                        |     sl = r0;
    0x00005462 mov r0, r2                                        |     r0 = r2;
    0x00005464 mov r8, r2                                        |     r8 = r2;
    0x00005466 str r1, [sp, 8]                                   |     var_8h = r1;
    0x00005468 blx 0x1bb0                                        |     r0 = fcn_00001bb0 ();
    0x0000546c mov r6, r0                                        |     r6 = r0;
    0x0000546e cmp r4, 0                                         |     
                                                                 |     if (r4 == 0) {
    0x00005470 beq 0x5548                                        |         goto label_1;
                                                                 |     }
    0x00005472 mov r0, r4                                        |     r0 = r4;
    0x00005474 blx 0x1bb0                                        |     fcn_00001bb0 ();
    0x00005478 str r0, [sp, 0xc]                                 |     var_ch = r0;
                                                                 | label_0:
    0x0000547a ldr r3, [sp, 8]                                   |     r3 = var_8h;
    0x0000547c ldr.w fp, [sl]                                    |     fp = *(sl);
    0x00005480 ldr r5, [r3]                                      |     r5 = *(r3);
                                                                 |     if (r5 == 0) {
    0x00005482 cbz r5, 0x54ba                                    |         goto label_2;
                                                                 |     }
    0x00005484 sub.w sb, fp, 4                                   |     sb = fp - 4;
    0x00005488 movs r7, 0                                        |     r7 = 0;
    0x0000548a b 0x5494                                          |     
                                                                 |     if (r7 < 0) {
                                                                 |         while (r0 != 0) {
    0x0000548c blt 0x54bc                                        |             goto label_3;
                                                                 |         }
    0x0000548e adds r7, 1                                        |         r7++;
    0x00005490 cmp r5, r7                                        |         
                                                                 |         if (r5 == r7) {
    0x00005492 beq 0x54bc                                        |             goto label_3;
                                                                 |         }
    0x00005494 ldr r3, [sb, 4]!                                  |         r3 = *((sb += 4));
    0x00005498 mov r0, r4                                        |         r0 = r4;
    0x0000549a ldr r1, [r3, 8]                                   |         r1 = *((r3 + 8));
    0x0000549c blx 0x1924                                        |         r0 = fcn_00001924 ();
    0x000054a0 cmp r0, 0                                         |         
    0x000054a2 bne 0x548c                                        |         
                                                                 |     }
    0x000054a4 ldr r1, [pc, 0xdc]                                |     
    0x000054a6 mov r3, r8                                        |     r3 = r8;
    0x000054a8 mov r2, r6                                        |     r2 = r6;
    0x000054aa movs r0, 7                                        |     r0 = 7;
    0x000054ac str r4, [sp]                                      |     *(sp) = r4;
    0x000054ae add r1, pc                                        |     r1 = 0xaa36;
    0x000054b0 bl 0x85e4                                         |     fcn_000085e4 (r0);
    0x000054b4 add sp, 0x1c                                      |     
    0x000054b6 pop.w {r4, r5, r6, r7, r8, sb, sl, fp, pc}        |     
                                                                 | label_2:
    0x000054ba mov r7, r5                                        |     r7 = r5;
                                                                 | label_3:
    0x000054bc ldr r3, [sp, 0xc]                                 |     r3 = var_ch;
    0x000054be adds r3, r6, r3                                   |     r3 = r6 + r3;
    0x000054c0 add.w r0, r3, 0xe                                 |     r0 = r3 + 0xe;
    0x000054c4 str r3, [sp, 0x10]                                |     var_10h = r3;
    0x000054c6 blx 0x1b0c                                        |     r0 = strerror (r0);
    0x000054ca mov sb, r0                                        |     sb = r0;
    0x000054cc cmp r0, 0                                         |     
                                                                 |     if (r0 == 0) {
    0x000054ce beq 0x5572                                        |         goto label_4;
                                                                 |     }
    0x000054d0 adds r3, r5, 1                                    |     r3 = r5 + 1;
    0x000054d2 mov r0, fp                                        |     r0 = fp;
    0x000054d4 lsls r1, r3, 2                                    |     r1 = r3 << 2;
    0x000054d6 str r3, [sp, 0x14]                                |     var_14h = r3;
    0x000054d8 blx 0x1a34                                        |     r0 = regexec ();
    0x000054dc mov fp, r0                                        |     
    0x000054de cmp r0, 0                                         |     
                                                                 |     if (r0 == 0) {
    0x000054e0 beq 0x555c                                        |         goto label_5;
                                                                 |     }
    0x000054e2 str.w r0, [sl]                                    |     __asm ("str.w r0, [sl]");
    0x000054e6 cmp r5, r7                                        |     
    0x000054e8 lsl.w sl, r7, 2                                   |     sl = r7 << 2;
    0x000054ec add.w r1, r0, sl                                  |     r1 = r0 + sl;
    0x000054f0 bhi 0x5538                                        |     
                                                                 |     while (1) {
    0x000054f2 ldr r7, [sp, 0xc]                                 |         r7 = var_ch;
    0x000054f4 add.w r0, sb, 0xc                                 |         r0 = sb + 0xc;
    0x000054f8 adds r5, r6, 1                                    |         r5 = r6 + 1;
    0x000054fa str.w sb, [fp, sl]                                |         __asm ("str.w sb, [fp, sl]");
    0x000054fe add r5, r0                                        |         r5 += r0;
    0x00005500 mov r1, r8                                        |         r1 = r8;
    0x00005502 mov r2, r6                                        |         r2 = r6;
    0x00005504 str.w r6, [sb]                                    |         __asm ("str.w r6, [sb]");
    0x00005508 str.w r7, [sb, 4]                                 |         __asm ("str.w r7, [sb, 4]");
    0x0000550c add r6, sb                                        |         r6 += sb;
    0x0000550e str.w r5, [sb, 8]                                 |         __asm ("str.w r5, [sb, 8]");
    0x00005512 blx 0x19c8                                        |         mmap64 ()
    0x00005516 mov r1, r4                                        |         r1 = r4;
    0x00005518 movs r4, 0x2f                                     |         r4 = 0x2f;
    0x0000551a mov r2, r7                                        |         r2 = r7;
    0x0000551c mov r0, r5                                        |         r0 = r5;
    0x0000551e strb r4, [r6, 0xc]                                |         *((r6 + 0xc)) = r4;
    0x00005520 blx 0x19c8                                        |         mmap64 ()
    0x00005524 ldr r3, [sp, 0x10]                                |         r3 = var_10h;
    0x00005526 movs r2, 0                                        |         r2 = 0;
    0x00005528 ldr r1, [sp, 8]                                   |         r1 = var_8h;
    0x0000552a ldr r0, [sp, 0x14]                                |         r0 = var_14h;
    0x0000552c add r3, sb                                        |         r3 += sb;
    0x0000552e strb r2, [r3, 0xd]                                |         *((r3 + 0xd)) = r2;
    0x00005530 str r0, [r1]                                      |         *(r1) = r0;
    0x00005532 add sp, 0x1c                                      |         
    0x00005534 pop.w {r4, r5, r6, r7, r8, sb, sl, fp, pc}        |         
    0x00005538 subs r2, r5, r7                                   |         r2 = r5 - r7;
    0x0000553a add.w r0, sl, 4                                   |         r0 = sl + 4;
    0x0000553e lsls r2, r2, 2                                    |         r2 <<= 2;
    0x00005540 add r0, fp                                        |         r0 += fp;
    0x00005542 blx 0x1990                                        |         fcn_00001990 ();
    0x00005546 b 0x54f2                                          |         
                                                                 |     }
                                                                 | label_1:
    0x00005548 mov r0, r8                                        |     r0 = r8;
    0x0000554a subs r6, 1                                        |     r6--;
    0x0000554c blx 0x1948                                        |     r0 = fcn_00001948 ();
    0x00005550 mov r4, r0                                        |     r4 = r0;
    0x00005552 blx 0x1bb0                                        |     r0 = fcn_00001bb0 ();
    0x00005556 subs r6, r6, r0                                   |     r6 -= r0;
    0x00005558 str r0, [sp, 0xc]                                 |     var_ch = r0;
    0x0000555a b 0x547a                                          |     goto label_0;
                                                                 | label_5:
    0x0000555c ldr r1, [pc, 0x28]                                |     
    0x0000555e movs r0, 3                                        |     r0 = 3;
    0x00005560 add r1, pc                                        |     r1 = 0xaaec;
    0x00005562 bl 0x85e4                                         |     fcn_000085e4 (r0);
    0x00005566 mov r0, sb                                        |     r0 = sb;
    0x00005568 add sp, 0x1c                                      |     
    0x0000556a pop.w {r4, r5, r6, r7, r8, sb, sl, fp, lr}        |     
    0x0000556e b.w 0x199c                                        |     void (*0x199c)() ();
                                                                 | label_4:
    0x00005572 ldr r1, [pc, 0x18]                                |     
    0x00005574 movs r0, 3                                        |     r0 = 3;
    0x00005576 add r1, pc                                        |     r1 = 0xab08;
    0x00005578 add sp, 0x1c                                      |     
    0x0000557a pop.w {r4, r5, r6, r7, r8, sb, sl, fp, lr}        |     
    0x0000557e b.w 0x85e4                                        |     return void (*0x85e4)() ();
                                                                 | }
    ; assembly                                       | /* r2dec pseudo code output */
                                                     | /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/bin/kmod @ 0x5590 */
                                                     | #include <stdint.h>
                                                     |  
    ; (fcn) fcn.00005590 ()                          | void fcn_00005590 (int16_t arg1, int16_t arg2) {
                                                     |     r0 = arg1;
                                                     |     r1 = arg2;
    0x00005590 push.w {r4, r5, r6, r7, r8, lr}       |     
    0x00005594 mov r7, r1                            |     r7 = r1;
    0x00005596 ldr r1, [pc, 0x7c]                    |     
    0x00005598 mov r8, r0                            |     r8 = r0;
    0x0000559a mov r0, r7                            |     r0 = r7;
    0x0000559c add r1, pc                            |     r1 = 0xabb6;
    0x0000559e blx 0x1924                            |     r0 = fcn_00001924 ();
                                                     |     if (r0 == 0) {
    0x000055a2 cbz r0, 0x55ee                        |         goto label_1;
                                                     |     }
    0x000055a4 ldr r1, [pc, 0x70]                    |     
    0x000055a6 mov r0, r7                            |     r0 = r7;
    0x000055a8 add r1, pc                            |     r1 = 0xabc4;
    0x000055aa blx 0x1924                            |     r0 = fcn_00001924 ();
                                                     |     if (r0 == 0) {
    0x000055ae cbz r0, 0x5610                        |         goto label_2;
                                                     |     }
    0x000055b0 mov r0, r7                            |     r0 = r7;
    0x000055b2 blx 0x1bb0                            |     r0 = fcn_00001bb0 ();
    0x000055b6 mov r6, r0                            |     r6 = r0;
    0x000055b8 adds r0, 0xd                          |     r0 += 0xd;
    0x000055ba blx 0x1b0c                            |     r0 = strerror (r0);
    0x000055be mov r4, r0                            |     r4 = r0;
                                                     |     if (r0 == 0) {
    0x000055c0 cbz r0, 0x5602                        |         goto label_3;
                                                     |     }
    0x000055c2 movs r5, 0                            |     r5 = 0;
    0x000055c4 str r6, [r0, 8]                       |     *((r0 + 8)) = r6;
    0x000055c6 str r5, [r0, 4]                       |     *((r0 + 4)) = r5;
    0x000055c8 adds r2, r6, 1                        |     r2 = r6 + 1;
    0x000055ca mov r1, r7                            |     r1 = r7;
    0x000055cc adds r0, 0xc                          |     r0 += 0xc;
    0x000055ce blx 0x19c8                            |     mmap64 ()
                                                     |     do {
    0x000055d2 ldr r1, [pc, 0x48]                    |         
    0x000055d4 mov r3, r5                            |         r3 = r5;
    0x000055d6 movs r0, 7                            |         r0 = 7;
    0x000055d8 mov r2, r7                            |         r2 = r7;
    0x000055da add r1, pc                            |         r1 = 0xabfc;
    0x000055dc bl 0x85e4                             |         fcn_000085e4 (r0);
    0x000055e0 add.w r0, r8, 0x1000                  |         r0 = r8 + 0x1000;
    0x000055e4 ldr r3, [r0, 0x10]                    |         r3 = *((r0 + 0x10));
    0x000055e6 str r4, [r0, 0x10]                    |         *((r0 + 0x10)) = r4;
    0x000055e8 str r3, [r4]                          |         *(r4) = r3;
    0x000055ea pop.w {r4, r5, r6, r7, r8, pc}        |         
                                                     | label_1:
    0x000055ee movs r5, 1                            |         r5 = 1;
                                                     | label_0:
    0x000055f0 movs r0, 0xc                          |         r0 = 0xc;
    0x000055f2 blx 0x1b0c                            |         r0 = strerror (r0);
    0x000055f6 mov r4, r0                            |         r4 = r0;
                                                     |         if (r0 == 0) {
    0x000055f8 cbz r0, 0x5602                        |             goto label_3;
                                                     |         }
    0x000055fa movs r3, 0                            |         r3 = 0;
    0x000055fc strd r5, r3, [r4, 4]                  |         __asm ("strd r5, r3, [r4, 4]");
    0x00005600 b 0x55d2                              |         
                                                     |     } while (1);
                                                     | label_3:
    0x00005602 ldr r1, [pc, 0x1c]                    |     
    0x00005604 movs r0, 3                            |     r0 = 3;
    0x00005606 pop.w {r4, r5, r6, r7, r8, lr}        |     
    0x0000560a add r1, pc                            |     r1 = 0xac30;
    0x0000560c b.w 0x85e4                            |     void (*0x85e4)() ();
                                                     | label_2:
    0x00005610 movs r5, 2                            |     r5 = 2;
    0x00005612 b 0x55f0                              |     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/bin/kmod @ 0x5a5c */
                                                                 | #include <stdint.h>
                                                                 |  
    ; (fcn) fcn.00005a5c ()                                      | void fcn_00005a5c (int16_t arg_12h, int16_t arg_13h, int16_t arg_14h, int16_t arg_15h, int16_t arg_108h, int16_t arg_10ch, int16_t arg_1a0h, int16_t arg_320h, int16_t arg_b20h, void * ptr, int16_t arg_1320h, char * * endptr, int16_t arg1, int16_t arg2, int16_t arg3, int16_t arg4) {
                                                                 |     int16_t var_0h_3;
                                                                 |     int32_t var_0h_4;
                                                                 |     int8_t var_8h_3;
                                                                 |     int16_t var_ch_2;
                                                                 |     int16_t var_0h_2;
                                                                 |     int16_t var_4h_2;
                                                                 |     int16_t var_8h_2;
                                                                 |     int16_t var_ch;
                                                                 |     int16_t var_10h;
                                                                 |     int16_t var_14h_2;
                                                                 |     char * var_18h;
                                                                 |     int16_t var_1ch;
                                                                 |     FILE * stream;
                                                                 |     int16_t var_24h;
                                                                 |     int16_t var_28h;
                                                                 |     int16_t var_2ch;
                                                                 |     int16_t var_30h;
                                                                 |     int16_t var_34h;
                                                                 |     int16_t var_38h;
                                                                 |     int16_t var_3ch;
                                                                 |     int16_t var_40h;
                                                                 |     int16_t var_44h;
                                                                 |     int16_t var_0h;
                                                                 |     int16_t var_4h;
                                                                 |     int16_t var_8h;
                                                                 |     int16_t var_54h;
                                                                 |     int16_t var_58h;
                                                                 |     int16_t var_14h;
                                                                 |     int16_t var_60h;
                                                                 |     int16_t var_64h;
                                                                 |     int16_t var_6ch;
                                                                 |     int16_t var_70h;
                                                                 |     int16_t var_a0h;
                                                                 |     int16_t var_84h;
                                                                 |     r0 = arg1;
                                                                 |     r1 = arg2;
                                                                 |     r2 = arg3;
                                                                 |     r3 = arg4;
    0x00005a5c push.w {r4, r5, r6, r7, r8, sb, sl, fp, lr}       |     
    0x00005a60 sub sp, 0x8c                                      |     
    0x00005a62 str r2, [sp]                                      |     *(sp) = r2;
    0x00005a64 mov sl, r3                                        |     sl = r3;
    0x00005a66 mov r4, r0                                        |     r4 = r0;
    0x00005a68 mov r0, r1                                        |     r0 = r1;
    0x00005a6a ldr r2, [pc, 0x1b4]                               |     
    0x00005a6c mov r5, r1                                        |     r5 = r1;
    0x00005a6e ldr r3, [pc, 0x1b4]                               |     r3 = *(0x5c26);
    0x00005a70 movs r7, 0                                        |     r7 = 0;
    0x00005a72 str r4, [sp, 8]                                   |     var_8h = r4;
    0x00005a74 add r2, pc                                        |     r2 = 0xb69a;
    0x00005a76 ldr.w r8, [pc, 0x1b0]                             |     
    0x00005a7a ldr r3, [r2, r3]                                  |     
    0x00005a7c ldr.w sb, [pc, 0x1ac]                             |     
    0x00005a80 add r8, pc                                        |     r8 = 0xb6ae;
    0x00005a82 ldr r3, [r3]                                      |     r3 = *(0xb69a);
    0x00005a84 str r3, [sp, 0x84]                                |     var_84h = r3;
    0x00005a86 mov.w r3, 0                                       |     r3 = 0;
    0x00005a8a blx 0x1d40                                        |     renameat ();
    0x00005a8e ldr r3, [pc, 0x1a0]                               |     
    0x00005a90 add sb, pc                                        |     sb = 0xb6c0;
    0x00005a92 str r0, [sp, 4]                                   |     var_4h = r0;
    0x00005a94 add r3, pc                                        |     r3 = 0xb6ca;
    0x00005a96 str r3, [sp, 0x14]                                |     var_14h = r3;
                                                                 |     do {
                                                                 | label_0:
    0x00005a98 mov r0, r5                                        |         r0 = r5;
    0x00005a9a blx 0x1cf4                                        |         r0 = fcn_00001cf4 ();
    0x00005a9e mov fp, r0                                        |         
    0x00005aa0 cmp r0, 0                                         |         
                                                                 |         if (r0 == 0) {
    0x00005aa2 beq 0x5b84                                        |             goto label_61;
                                                                 |         }
                                                                 | label_1:
    0x00005aa4 ldrb.w r2, [fp, 0x13]                             |         r2 = *(arg_13h);
    0x00005aa8 add.w r4, fp, 0x13                                |         r4 += arg_13h;
    0x00005aac cmp r2, 0x2e                                      |         
                                                                 |         if (r2 == 0x2e) {
    0x00005aae beq 0x5ba0                                        |             goto label_62;
                                                                 |         }
                                                                 | label_2:
    0x00005ab0 mov r1, r8                                        |         r1 = r8;
    0x00005ab2 mov r0, r4                                        |         r0 = r4;
    0x00005ab4 blx 0x1924                                        |         r0 = fcn_00001924 ();
    0x00005ab8 cmp r0, 0                                         |         
    0x00005aba beq 0x5a98                                        |         
                                                                 |     } while (r0 == 0);
    0x00005abc mov r1, sb                                        |     r1 = sb;
    0x00005abe mov r0, r4                                        |     r0 = r4;
    0x00005ac0 blx 0x1924                                        |     r0 = fcn_00001924 ();
    0x00005ac4 cmp r0, 0                                         |     
                                                                 |     if (r0 == 0) {
    0x00005ac6 beq 0x5a98                                        |         goto label_0;
                                                                 |     }
    0x00005ac8 mov r0, r4                                        |     r0 = r4;
    0x00005aca blx 0x1bb0                                        |     fcn_00001bb0 ();
    0x00005ace ldr r3, [sp]                                      |     r3 = *(sp);
    0x00005ad0 mov r6, r0                                        |     r6 = r0;
    0x00005ad2 mov r0, sl                                        |     r0 = sl;
    0x00005ad4 adds r3, r6, r3                                   |     r3 = r6 + r3;
    0x00005ad6 adds r1, r3, 2                                    |     r1 = r3 + 2;
    0x00005ad8 str r3, [sp, 0x10]                                |     var_58h = r3;
    0x00005ada bl 0x925c                                         |     r0 = fcn_0000925c (r0, r1);
    0x00005ade cmp r0, 0                                         |     
                                                                 |     if (r0 < 0) {
    0x00005ae0 blt 0x5bca                                        |         goto label_63;
                                                                 |     }
    0x00005ae2 ldr.w r3, [sl]                                    |     r3 = *(sl);
    0x00005ae6 adds r2, r6, 1                                    |     r2 = r6 + 1;
    0x00005ae8 ldr r0, [sp]                                      |     r0 = *(sp);
    0x00005aea mov r1, r4                                        |     r1 = r4;
    0x00005aec str r3, [sp, 0xc]                                 |     var_54h = r3;
    0x00005aee adds r0, r3, r0                                   |     r0 = r3 + r0;
    0x00005af0 blx 0x19c8                                        |     mmap64 ()
    0x00005af4 ldrb.w r3, [fp, 0x12]                             |     r3 = *(arg_12h);
    0x00005af8 cmp r3, 8                                         |     
                                                                 |     if (r3 == 8) {
    0x00005afa beq 0x5bba                                        |         goto label_64;
                                                                 |     }
    0x00005afc cmp r3, 4                                         |     
                                                                 |     if (r3 != 4) {
    0x00005afe beq 0x5b22                                        |         
    0x00005b00 ldr r0, [sp, 4]                                   |         r0 = var_4h;
    0x00005b02 movs r3, 0                                        |         r3 = 0;
    0x00005b04 add r2, sp, 0x18                                  |         r2 += var_60h;
    0x00005b06 mov r1, r4                                        |         r1 = r4;
    0x00005b08 blx 0x1adc                                        |         r0 = asprintf_chk ();
    0x00005b0c cmp r0, 0                                         |         
                                                                 |         if (r0 < 0) {
    0x00005b0e blt 0x5bf8                                        |             goto label_65;
                                                                 |         }
    0x00005b10 ldr r3, [sp, 0x28]                                |         r3 = var_70h;
    0x00005b12 and r3, r3, 0xf000                                |         r3 &= 0xf000;
    0x00005b16 cmp.w r3, 0x8000                                  |         
                                                                 |         if (r3 == 0x8000) {
    0x00005b1a beq 0x5bba                                        |             goto label_64;
                                                                 |         }
    0x00005b1c cmp.w r3, 0x4000                                  |         
                                                                 |         if (r3 != 0x4000) {
    0x00005b20 bne 0x5bda                                        |             goto label_66;
                                                                 |         }
                                                                 |     }
    0x00005b22 ldr r0, [sp, 4]                                   |     r0 = var_4h;
    0x00005b24 movs r2, 0                                        |     r2 = 0;
    0x00005b26 mov r1, r4                                        |     r1 = r4;
    0x00005b28 blx 0x1bd8                                        |     r0 = sprintf_chk ();
    0x00005b2c subs r6, r0, 0                                    |     r6 = r0 - 0;
                                                                 |     if (r6 < r0) {
    0x00005b2e blt 0x5be8                                        |         goto label_67;
                                                                 |     }
    0x00005b30 blx 0x1d00                                        |     r0 = fcn_00001d00 ();
    0x00005b34 mov r4, r0                                        |     r4 = r0;
    0x00005b36 cmp r0, 0                                         |     
                                                                 |     if (r0 == 0) {
    0x00005b38 beq 0x5c08                                        |         goto label_68;
                                                                 |     }
    0x00005b3a ldr r1, [sp, 0x10]                                |     r1 = var_58h;
    0x00005b3c movs r3, 0x2f                                     |     r3 = 0x2f;
    0x00005b3e ldr r0, [sp, 0xc]                                 |     r0 = var_54h;
    0x00005b40 adds r2, r1, 1                                    |     r2 = r1 + 1;
    0x00005b42 strb r3, [r0, r1]                                 |     *((r0 + r1)) = r3;
    0x00005b44 movs r3, 0                                        |     r3 = 0;
    0x00005b46 strb r3, [r0, r2]                                 |     *((r0 + r2)) = r3;
    0x00005b48 mov r1, r4                                        |     r1 = r4;
    0x00005b4a ldr r0, [sp, 8]                                   |     r0 = var_8h;
    0x00005b4c mov r3, sl                                        |     r3 = sl;
    0x00005b4e bl 0x5a5c                                         |     r0 = fcn_00005a5c (r0, r1, r2, r3, r4, r5, r6);
    0x00005b52 mov r7, r0                                        |     r7 = r0;
    0x00005b54 mov r0, r4                                        |     r0 = r4;
    0x00005b56 blx 0x1dc8                                        |     fcn_00001dc8 ();
                                                                 | label_3:
    0x00005b5a cmp r7, 0                                         |     
                                                                 |     if (r7 >= 0) {
    0x00005b5c bge 0x5a98                                        |         goto label_0;
                                                                 |     }
    0x00005b5e ldrd r4, r3, [sp, 0xc]                            |     __asm ("ldrd r4, r3, [var_54h]");
    0x00005b62 rsbs r0, r7, 0                                    |     r0 = r7 - ;
    0x00005b64 movs r7, 0                                        |     r7 = 0;
    0x00005b66 strb r7, [r4, r3]                                 |     *((r4 + r3)) = r7;
                                                                 | label_4:
    0x00005b68 blx 0x1b18                                        |     system (r0);
    0x00005b6c ldr r1, [sp, 0x14]                                |     r1 = var_14h;
    0x00005b6e mov r3, r0                                        |     r3 = r0;
    0x00005b70 mov r2, r4                                        |     r2 = r4;
    0x00005b72 movs r0, 3                                        |     r0 = 3;
    0x00005b74 bl 0x85e4                                         |     fcn_000085e4 (r0);
    0x00005b78 mov r0, r5                                        |     r0 = r5;
    0x00005b7a blx 0x1cf4                                        |     r0 = fcn_00001cf4 ();
    0x00005b7e mov fp, r0                                        |     
    0x00005b80 cmp r0, 0                                         |     
                                                                 |     if (r0 != 0) {
    0x00005b82 bne 0x5aa4                                        |         goto label_1;
                                                                 |     }
                                                                 | label_61:
    0x00005b84 ldr r2, [pc, 0xac]                                |     
    0x00005b86 ldr r3, [pc, 0x9c]                                |     r3 = *(0x5c26);
    0x00005b88 add r2, pc                                        |     r2 = 0xb7c0;
    0x00005b8a ldr r3, [r2, r3]                                  |     r3 = *(0xb7c0);
    0x00005b8c ldr r2, [r3]                                      |     r2 = *(0xb7c0);
    0x00005b8e ldr r3, [sp, 0x84]                                |     r3 = var_84h;
    0x00005b90 eors r2, r3                                       |     r2 ^= r3;
    0x00005b92 mov.w r3, 0                                       |     r3 = 0;
                                                                 |     if (r2 != r3) {
    0x00005b96 bne 0x5c1c                                        |         goto label_69;
                                                                 |     }
    0x00005b98 mov r0, r7                                        |     r0 = r7;
    0x00005b9a add sp, 0x8c                                      |     
    0x00005b9c pop.w {r4, r5, r6, r7, r8, sb, sl, fp, pc}        |     
                                                                 | label_62:
    0x00005ba0 ldrb.w r2, [fp, 0x14]                             |     r2 = *(arg_14h);
    0x00005ba4 cmp r2, 0                                         |     
                                                                 |     if (r2 == 0) {
    0x00005ba6 beq.w 0x5a98                                      |         goto label_0;
                                                                 |     }
    0x00005baa cmp r2, 0x2e                                      |     
                                                                 |     if (r2 != 0x2e) {
    0x00005bac bne 0x5ab0                                        |         goto label_2;
                                                                 |     }
    0x00005bae ldrb.w r2, [fp, 0x15]                             |     r2 = *(arg_15h);
    0x00005bb2 cmp r2, 0                                         |     
                                                                 |     if (r2 != 0) {
    0x00005bb4 bne.w 0x5ab0                                      |         goto label_2;
                                                                 |     }
    0x00005bb8 b 0x5a98                                          |     goto label_0;
                                                                 | label_64:
    0x00005bba ldr r3, [sp, 0xc]                                 |     r3 = var_54h;
    0x00005bbc mov r2, r6                                        |     r2 = r6;
    0x00005bbe ldr r1, [sp]                                      |     r1 = *(sp);
    0x00005bc0 ldr r0, [sp, 8]                                   |     r0 = var_8h;
    0x00005bc2 bl 0x5624                                         |     r0 = fcn_00005624 (r0, r1, r2, r3, r4);
    0x00005bc6 mov r7, r0                                        |     r7 = r0;
                                                                 |     do {
    0x00005bc8 b 0x5b5a                                          |         goto label_3;
                                                                 | label_63:
    0x00005bca ldr r1, [pc, 0x6c]                                |         
    0x00005bcc movs r0, 3                                        |         r0 = 3;
    0x00005bce mvn r7, 0xb                                       |         r7 = ~0xb;
    0x00005bd2 add r1, pc                                        |         r1 = 0xb810;
    0x00005bd4 bl 0x85e4                                         |         fcn_000085e4 (r0);
    0x00005bd8 b 0x5a98                                          |         goto label_0;
                                                                 | label_66:
    0x00005bda ldr r1, [pc, 0x60]                                |         
    0x00005bdc movs r0, 3                                        |         r0 = 3;
    0x00005bde ldr r2, [sp, 0xc]                                 |         r2 = var_54h;
    0x00005be0 add r1, pc                                        |         r1 = 0xb822;
    0x00005be2 bl 0x85e4                                         |         fcn_000085e4 (r0);
    0x00005be6 b 0x5a98                                          |         goto label_0;
                                                                 | label_67:
    0x00005be8 ldr r1, [pc, 0x54]                                |         
    0x00005bea mov r3, r4                                        |         r3 = r4;
    0x00005bec ldr r2, [sp, 4]                                   |         r2 = var_4h;
    0x00005bee movs r0, 3                                        |         r0 = 3;
    0x00005bf0 add r1, pc                                        |         r1 = 0xb834;
    0x00005bf2 bl 0x85e4                                         |         fcn_000085e4 (r0);
    0x00005bf6 b 0x5a98                                          |         goto label_0;
                                                                 | label_65:
    0x00005bf8 ldr r1, [pc, 0x48]                                |         
    0x00005bfa mov r3, r4                                        |         r3 = r4;
    0x00005bfc ldr r2, [sp, 4]                                   |         r2 = var_4h;
    0x00005bfe movs r0, 3                                        |         r0 = 3;
    0x00005c00 add r1, pc                                        |         r1 = 0xb848;
    0x00005c02 bl 0x85e4                                         |         fcn_000085e4 (r0);
    0x00005c04 stc2l p7, c14, [pc], 0x11c                        |         __asm ("stc2l p7, c14, [pc], 0x11c");
                                                                 | label_68:
    0x00005c08 ldr r1, [pc, 0x3c]                                |         
    0x00005c0a mov r2, r6                                        |         r2 = r6;
    0x00005c0c movs r0, 3                                        |         r0 = 3;
    0x00005c0e add r1, pc                                        |         r1 = 0xb85a;
    0x00005c10 bl 0x85e4                                         |         fcn_000085e4 (r0);
    0x00005c14 mov r0, r6                                        |         r0 = r6;
    0x00005c16 blx 0x1dbc                                        |         fcn_00001dbc ();
    0x00005c1a b 0x5a98                                          |         goto label_0;
                                                                 | label_69:
    0x00005c1c blx 0x1a1c                                        |         stat64 ();
                                                                 | label_5:
    0x00005c20 lsls r4, r4, 0xe                                  |         r4 <<= 0xe;
    0x00005c22 movs r2, r0                                       |         r2 = r0;
    0x00005c24 lsls r4, r7, 6                                    |         r4 = r7 << 6;
    0x00005c26 movs r0, r0                                       |         
                                                                 |         if (r0 <= r0) {
    0x00005c28 blo 0x5cb4                                        |             goto label_70;
                                                                 |         }
    0x00005c2a movs r0, r0                                       |         
                                                                 |         if (r0 <= r0) {
    0x00005c2c blo 0x5ca8                                        |             goto label_71;
                                                                 |         }
    0x00005c2e movs r0, r0                                       |         
                                                                 |         if (r0 >= r0) {
    0x00005c30 bmi 0x5c34                                        |             
    0x00005c32 movs r0, r0                                       |             
                                                                 |         }
    0x00005c34 lsls r0, r2, 0xa                                  |         r0 = r2 << 0xa;
    0x00005c36 movs r2, r0                                       |         r2 = r0;
    0x00005c38 bvc 0x5bc8                                        |         __asm ("bvc 0x5bc8");
                                                                 |     } while (1);
    0x00005c3a movs r0, r0                                       |     
                                                                 |     if (r0 >= r0) {
    0x00005c3c bhs 0x5b68                                        |         goto label_4;
                                                                 |     }
    0x00005c3e movs r0, r0                                       |     
                                                                 |     if (r0 >= r0) {
    0x00005c40 bhs 0x5cac                                        |         goto label_72;
                                                                 |     }
    0x00005c42 movs r0, r0                                       |     
                                                                 |     if (r0 != r0) {
    0x00005c44 bne 0x5c20                                        |         goto label_5;
                                                                 |     }
    0x00005c46 movs r0, r0                                       |     
                                                                 |     if (r0 < r0) {
    0x00005c48 bhs 0x5cb8                                        |         
    0x00005c4a movs r0, r0                                       |         
    0x00005c4c push.w {r4, r5, r6, r7, r8, sb, lr}               |         
    0x00005c50 mov r5, r1                                        |         r5 = r1;
    0x00005c52 ldr r1, [pc, 0xb0]                                |         
    0x00005c54 sub sp, 0x114                                     |         
    0x00005c56 mov r4, sp                                        |         r4 = sp;
    0x00005c58 mov.w r2, 0x100                                   |         r2 = 0x100;
    0x00005c5c ldr r3, [pc, 0xa8]                                |         r3 = *(0x5d08);
    0x00005c5e mov r8, r0                                        |         r8 = r0;
    0x00005c60 add r1, pc                                        |         r1 = 0xb96a;
    0x00005c62 mov.w sb, 0                                       |         sb = 0;
    0x00005c66 mov r0, r5                                        |         r0 = r5;
    0x00005c68 ldr r3, [r1, r3]                                  |         
    0x00005c6a ldr r3, [r3]                                      |         r3 = *(0xb96a);
    0x00005c6c str r3, [sp, 0x10c]                               |         var_24h = r3;
    0x00005c6e mov.w r3, 0                                       |         r3 = 0;
    0x00005c72 add r3, sp, 0xc                                   |         r3 += var_ch_2;
    0x00005c74 strd r3, r2, [r4]                                 |         __asm ("strd r3, r2, [r4]");
    0x00005c78 strb.w sb, [r4, 8]                                |         var_8h_3 = sb;
    0x00005c7c blx 0x1ab8                                        |         r0 = fnmatch ();
                                                                 |         if (r0 == 0) {
    0x00005c80 cbz r0, 0x5cea                                    |             goto label_73;
                                                                 |         }
    0x00005c82 mov r6, r0                                        |         r6 = r0;
    0x00005c84 mov r0, r5                                        |         r0 = r5;
    0x00005c86 blx 0x1bb0                                        |         r0 = fcn_00001bb0 ();
    0x00005c8a mov r7, r0                                        |         r7 = r0;
    0x00005c8c mov r0, r4                                        |         r0 = r4;
    0x00005c8e adds r1, r7, 2                                    |         r1 = r7 + 2;
    0x00005c90 bl 0x925c                                         |         r0 = fcn_0000925c (r0, r1);
    0x00005c94 cmp r0, 0                                         |         
    0x00005c96 it lt                                             |         
                                                                 |         if (r0 >= 0) {
    0x00005c98 mvnlt r5, 0xb                                     |             r5 = ~0xb;
                                                                 |         }
                                                                 |         if (r0 < 0) {
    0x00005c9c blt 0x5cc2                                        |             goto label_74;
                                                                 |         }
    0x00005c9e ldr r3, [r4]                                      |         r3 = *(r4);
    0x00005ca0 mov r1, r5                                        |         r1 = r5;
    0x00005ca2 mov r2, r7                                        |         r2 = r7;
    0x00005ca4 mov r0, r3                                        |         r0 = r3;
    0x00005ca6 blx 0x19c8                                        |         mmap64 ()
                                                                 | label_71:
    0x00005ca8 mrc p12, 4, r1, c0, c10, 3                        |         __asm ("mrc p12, 4, r1, c0, c10, 3");
                                                                 | label_72:
    0x00005cac mov r3, r0                                        |         r3 = r0;
    0x00005cae movs r1, 0x2f                                     |         r1 = 0x2f;
    0x00005cb0 mov r0, r8                                        |         r0 = r8;
    0x00005cb2 strb r1, [r3, r7]                                 |         *((r3 + r7)) = r1;
                                                                 | label_70:
    0x00005cb4 mov r1, r6                                        |         r1 = r6;
    0x00005cb6 invalid                                           |         
                                                                 |     }
    0x00005cb8 str r0, [sp, 8]                                   |     var_8h = r0;
    0x00005cba mov r3, r4                                        |     r3 = r4;
    0x00005cbc bl 0x5a5c                                         |     r0 = fcn_00005a5c (r0, r1, r2, r3, r4, r5, r6);
    0x00005cc0 mov r5, r0                                        |     r5 = r0;
                                                                 | label_74:
    0x00005cc2 mov r0, r6                                        |     r0 = r6;
    0x00005cc4 blx 0x1dc8                                        |     fcn_00001dc8 ();
                                                                 |     do {
                                                                 | label_6:
    0x00005cc8 mov r0, r4                                        |         r0 = r4;
    0x00005cca bl 0x92a0                                         |         fcn_000092a0 (r0);
    0x00005cce ldr r2, [pc, 0x3c]                                |         
    0x00005cd0 ldr r3, [pc, 0x34]                                |         r3 = *(0x5d08);
    0x00005cd2 add r2, pc                                        |         r2 = 0xb9e4;
    0x00005cd4 ldr r3, [r2, r3]                                  |         r3 = *(0xb9e4);
    0x00005cd6 ldr r2, [r3]                                      |         r2 = *(0xb9e4);
    0x00005cd8 ldr r3, [sp, 0x10c]                               |         r3 = *(arg_10ch);
    0x00005cda eors r2, r3                                       |         r2 ^= r3;
    0x00005cdc mov.w r3, 0                                       |         r3 = 0;
                                                                 |         if (r2 != r3) {
    0x00005ce0 bne 0x5d00                                        |             goto label_75;
                                                                 |         }
    0x00005ce2 mov r0, r5                                        |         r0 = r5;
    0x00005ce4 add sp, 0x114                                     |         
    0x00005ce6 pop.w {r4, r5, r6, r7, r8, sb, pc}                |         
                                                                 | label_73:
    0x00005cea blx 0x1be4                                        |         isoc99_sscanf ();
    0x00005cee ldr r1, [pc, 0x20]                                |         
    0x00005cf0 mov r2, r5                                        |         r2 = r5;
    0x00005cf2 ldr r3, [r0]                                      |         r3 = *(r0);
    0x00005cf4 movs r0, 3                                        |         r0 = 3;
    0x00005cf6 add r1, pc                                        |         r1 = 0xba0c;
    0x00005cf8 rsbs r5, r3, 0                                    |         r5 = r3 - ;
    0x00005cfa bl 0x85e4                                         |         fcn_000085e4 (r0);
    0x00005cfe b 0x5cc8                                          |         
                                                                 |     } while (1);
                                                                 | label_75:
    0x00005d00 blx 0x1a1c                                        |     stat64 ();
    0x00005d04 lsls r0, r7, 6                                    |     r0 = r7 << 6;
    0x00005d06 movs r2, r0                                       |     r2 = r0;
    0x00005d08 lsls r4, r7, 6                                    |     r4 = r7 << 6;
    0x00005d0a movs r0, r0                                       |     
    0x00005d0c lsls r6, r0, 5                                    |     r6 = r0 << 5;
    0x00005d0e movs r2, r0                                       |     r2 = r0;
                                                                 |     if (r2 <= r0) {
    0x00005d10 blo 0x5cc8                                        |         goto label_6;
                                                                 |     }
    0x00005d12 movs r0, r0                                       |     
    0x00005d14 push.w {r4, r5, r6, r7, r8, sb, sl, fp, lr}       |     
    0x00005d16 ldr r7, [pc, 0x3c0]                               |     r7 = *(0x60da);
    0x00005d18 movs r6, 0                                        |     r6 = 0;
    0x00005d1a vpush {d8}                                        |     __asm ("vpush {d8}");
    0x00005d1e sub.w sp, sp, 0x3b00                              |     
    0x00005d22 sub sp, 0x24                                      |     
    0x00005d24 mov r4, r1                                        |     r4 = r1;
    0x00005d26 add r3, sp, 0x320                                 |     r3 += arg_320h;
    0x00005d28 ldr.w r2, [pc, 0xb68]                             |     r2 = *(0x00006894);
    0x00005d2c str r3, [sp, 0x2c]                                |     var_2ch = r3;
    0x00005d2e add r3, sp, 0x70                                  |     r3 += var_70h;
    0x00005d30 str r6, [r3]                                      |     *(r3) = r6;
    0x00005d32 add.w r7, sp, 0xb20                               |     r7 += arg_b20h;
    0x00005d36 ldr.w r3, [pc, 0xb60]                             |     
    0x00005d3a add r2, pc                                        |     r2 += pc;
    0x00005d3c str r7, [sp, 0x20]                                |     stream = r7;
    0x00005d3e add.w r1, sp, 0x3b00                              |     r1 += endptr;
    0x00005d42 adds r1, 0x1c                                     |     r1 += 0x1c;
    0x00005d44 mov r5, r0                                        |     r5 = r0;
    0x00005d46 ldr r3, [r2, r3]                                  |     r3 = *((r2 + r3));
    0x00005d48 mov fp, r6                                        |     
    0x00005d4a ldr.w r2, [pc, 0xb50]                             |     r2 = *(0x0000689c);
    0x00005d4e mov r7, fp                                        |     r7 = fp;
    0x00005d50 ldr.w sb, [pc, 0xb4c]                             |     sb = *(0x000068a0);
    0x00005d54 ldr r3, [r3]                                      |     r3 = *(0x689a);
    0x00005d56 str r3, [r1]                                      |     *(r1) = r3;
    0x00005d58 mov.w r3, 0                                       |     r3 = 0;
    0x00005d5c ldr r3, [sp, 0x2c]                                |     r3 = var_2ch;
    0x00005d5e add r2, pc                                        |     r2 += pc;
    0x00005d60 mov r1, r6                                        |     r1 = r6;
    0x00005d62 str r2, [sp, 0x1c]                                |     var_1ch = r2;
    0x00005d64 movw r2, 0x1018                                   |     r2 = 0x1018;
    0x00005d68 sub.w r0, r3, 0x28                                |     r0 = r3 - 0x28;
    0x00005d6c add r3, sp, 0xa0                                  |     r3 += var_a0h;
    0x00005d6e str r3, [sp, 0x28]                                |     var_28h = r3;
    0x00005d70 add sb, pc                                        |     sb += pc;
    0x00005d72 str r0, [sp, 0x34]                                |     var_34h = r0;
    0x00005d74 blx 0x1c2c                                        |     strtoull (r0, r1, r2);
    0x00005d78 ldr r3, [sp, 0x28]                                |     r3 = var_28h;
    0x00005d7a mov r1, r6                                        |     r1 = r6;
    0x00005d7c ldr.w r8, [pc, 0xb24]                             |     
    0x00005d80 movs r2, 0x24                                     |     r2 = 0x24;
    0x00005d82 str r6, [sp, 0x24]                                |     var_24h = r6;
    0x00005d84 sub.w r0, r3, 0x24                                |     r0 = r3 - 0x24;
    0x00005d88 add r3, sp, 0x108                                 |     r3 += arg_108h;
    0x00005d8a str r6, [sp, 0x38]                                |     var_38h = r6;
    0x00005d8c add r8, pc                                        |     r8 = 0xc634;
    0x00005d8e str r6, [sp, 0x40]                                |     var_40h = r6;
    0x00005d90 str r6, [sp, 0x30]                                |     var_30h = r6;
    0x00005d92 strd r6, r6, [sp, 0x44]                           |     __asm ("strd r6, r6, [sp, 0x44]");
    0x00005d96 str r6, [sp, 0x3c]                                |     var_3ch = r6;
    0x00005d98 mov r6, r3                                        |     r6 = r3;
    0x00005d9a str r0, [sp, 0x4c]                                |     var_4h = r0;
    0x00005d9c str r3, [sp, 0x18]                                |     var_18h = r3;
    0x00005d9e blx 0x1c2c                                        |     strtoull (r0, r1, r2);
                                                                 |     do {
                                                                 | label_7:
    0x00005da2 ldr r3, [sp, 0x18]                                |         r3 = var_18h;
    0x00005da4 mov r2, r8                                        |         r2 = r8;
    0x00005da6 mov r1, r4                                        |         r1 = r4;
    0x00005da8 mov r0, r5                                        |         r0 = r5;
    0x00005daa str r3, [sp]                                      |         *(sp) = r3;
    0x00005dac mov r3, sb                                        |         r3 = sb;
    0x00005dae str r7, [r6]                                      |         *(r6) = r7;
    0x00005db0 blx 0x1b74                                        |         r0 = fcn_00001b74 ();
    0x00005db4 adds r2, r0, 1                                    |         r2 = r0 + 1;
                                                                 |         if (r2 == r0) {
    0x00005db6 beq.w 0x5fba                                      |             goto label_76;
                                                                 |         }
    0x00005dba sub.w r3, r0, 0x3f                                |         r3 = r0 - 0x3f;
    0x00005dbe cmp r3, 0x38                                      |         
                                                                 |         if (r3 <= 0x38) {
    0x00005dc0 bhi 0x5e38                                        |             
                                                                 |             /* switch table (58 cases) at 0x5dc6 */
    0x00005dc2 tbh [pc, r3, lsl 1]                               |             __asm ("tbh [pc, r3, lsl 1]");
                                                                 |         }
    0x00005e38 ldr.w r1, [pc, 0xa6c]                             |         
    0x00005e3c mov r2, r0                                        |         r2 = r0;
    0x00005e3e movs r0, 3                                        |         r0 = 3;
    0x00005e40 add r1, pc                                        |         r1 = 0xc6ec;
    0x00005e42 bl 0x85e4                                         |         fcn_000085e4 (r0);
                                                                 | label_11:
    0x00005e46 ldr r0, [sp, 0x34]                                |         r0 = var_34h;
    0x00005e48 movs r4, 1                                        |         r4 = 1;
    0x00005e4a bl 0x46d8                                         |         fcn_000046d8 (r0);
                                                                 | label_8:
    0x00005e4e mov r0, fp                                        |         r0 = fp;
    0x00005e50 blx 0x19a0                                        |         fcn_000019a0 ();
    0x00005e54 ldr r0, [sp, 0x24]                                |         r0 = var_24h;
    0x00005e56 blx 0x19a0                                        |         fcn_000019a0 ();
    0x00005e5a ldr.w r2, [pc, 0xa50]                             |         r2 = *(0x000068ac);
    0x00005e5e add.w r1, sp, 0x3b00                              |         r1 += endptr;
    0x00005e62 ldr.w r3, [pc, 0xa34]                             |         r3 = *(0x689a);
    0x00005e66 adds r1, 0x1c                                     |         r1 += 0x1c;
    0x00005e68 add r2, pc                                        |         r2 += pc;
    0x00005e6a ldr r3, [r2, r3]                                  |         r3 = *((r2 + r3));
    0x00005e6c ldr r2, [r3]                                      |         r2 = *(0x689a);
    0x00005e6e ldr r3, [r1]                                      |         r3 = *(r1);
    0x00005e70 eors r2, r3                                       |         r2 ^= r3;
    0x00005e72 mov.w r3, 0                                       |         r3 = 0;
                                                                 |         if (r2 != r3) {
    0x00005e76 bne.w 0x7456                                      |             goto label_77;
                                                                 |         }
    0x00005e7a mov r0, r4                                        |         r0 = r4;
    0x00005e7c add.w sp, sp, 0x3b00                              |         
    0x00005e80 add sp, 0x24                                      |         
    0x00005e82 vpop {d8}                                         |         __asm ("vpop {d8}");
    0x00005e86 pop.w {r4, r5, r6, r7, r8, sb, sl, fp, pc}        |         
    0x00005e8a ldr r3, [r6]                                      |         r3 = *(r6);
    0x00005e8c cmp r3, 0                                         |         
                                                                 |         if (r3 <= 0) {
    0x00005e8e ble.w 0x5faa                                      |             goto label_78;
                                                                 |         }
    0x00005e92 ldr.w r2, [pc, 0xa1c]                             |         r2 = *(0x000068b0);
    0x00005e96 lsls r3, r3, 4                                    |         r3 <<= 4;
    0x00005e98 ldr.w r1, [pc, 0xa18]                             |         
    0x00005e9c movs r0, 4                                        |         r0 = 4;
    0x00005e9e add r2, pc                                        |         r2 += pc;
    0x00005ea0 ldr r2, [r2, r3]                                  |         r2 = *((r2 + r3));
    0x00005ea2 add r1, pc                                        |         r1 = 0xc75a;
    0x00005ea4 bl 0x85e4                                         |         fcn_000085e4 (r0);
    0x00005ea8 b 0x5da2                                          |         
                                                                 |     } while (1);
    0x00005eaa ldr.w r3, [pc, 0xa0c]                             |     
    0x00005eae ldr r2, [sp, 0x1c]                                |     r2 = var_1ch;
    0x00005eb0 ldr r3, [r2, r3]                                  |     r3 = *((r2 + r3));
    0x00005eb2 ldr r3, [r3]                                      |     r3 = *(0x68ba);
    0x00005eb4 str r3, [sp, 0x3c]                                |     var_3ch = r3;
    0x00005eb6 b 0x5da2                                          |     goto label_7;
    0x00005eb8 ldr r2, [sp, 0x1c]                                |     r2 = var_1ch;
    0x00005eba movs r0, 1                                        |     r0 = 1;
    0x00005ebc ldr.w r3, [pc, 0x9fc]                             |     r3 = *(0x68bc);
    0x00005ec0 ldr.w r1, [pc, 0x9fc]                             |     
    0x00005ec4 ldr r3, [r2, r3]                                  |     r3 = *((r2 + r3));
    0x00005ec6 add r1, pc                                        |     r1 = 0xc78a;
    0x00005ec8 ldr r2, [r3]                                      |     r2 = *(0x68bc);
    0x00005eca blx 0x1c54                                        |     fcn_00001c54 ();
                                                                 |     do {
    0x00005ece movs r4, 0                                        |         r4 = 0;
    0x00005ed0 b 0x5e4e                                          |         goto label_8;
    0x00005ed2 ldr r2, [sp, 0x20]                                |         r2 = stream;
    0x00005ed4 movs r3, 1                                        |         r3 = 1;
    0x00005ed6 strb.w r3, [r2, 0x7e2]                            |         *((r2 + 0x7e2)) = r3;
    0x00005eda b 0x5da2                                          |         goto label_7;
    0x00005edc ldr r2, [sp, 0x20]                                |         r2 = stream;
    0x00005ede movs r3, 1                                        |         r3 = 1;
    0x00005ee0 strb.w r3, [r2, 0x7e3]                            |         *((r2 + 0x7e3)) = r3;
    0x00005ee4 b 0x5da2                                          |         goto label_7;
    0x00005ee6 ldr.w r2, [pc, 0x9dc]                             |         r2 = *(0x000068c4);
    0x00005eea add r2, pc                                        |         r2 += pc;
    0x00005eec ldr r3, [r2]                                      |         r3 = *(r2);
    0x00005eee adds r3, 1                                        |         r3++;
    0x00005ef0 str r3, [r2]                                      |         *(r2) = r3;
    0x00005ef2 b 0x5da2                                          |         goto label_7;
    0x00005ef4 ldr r3, [sp, 0x24]                                |         r3 = var_24h;
                                                                 |         if (r3 != 0) {
    0x00005ef6 cbz r3, 0x5efe                                    |             
    0x00005ef8 mov r0, r3                                        |             r0 = r3;
    0x00005efa blx 0x19a0                                        |             fcn_000019a0 ();
                                                                 |         }
    0x00005efe ldr r2, [sp, 0x1c]                                |         r2 = var_1ch;
    0x00005f00 ldr.w r3, [pc, 0x9c4]                             |         r3 = *(0x68c8);
    0x00005f04 ldr r3, [r2, r3]                                  |         r3 = *((r2 + r3));
    0x00005f06 ldr r0, [r3]                                      |         r0 = *(0x68c8);
    0x00005f08 bl 0x960c                                         |         fcn_0000960c (r0);
    0x00005f0c str r0, [sp, 0x24]                                |         var_24h = r0;
    0x00005f0e b 0x5da2                                          |         goto label_7;
    0x00005f10 ldr.w r0, [pc, 0x9b8]                             |         
    0x00005f14 add r0, pc                                        |         r0 = 0xc7e4;
    0x00005f16 blx 0x1b00                                        |         malloc (r0);
    0x00005f1a ldr.w r0, [pc, 0x9b4]                             |         
    0x00005f1e add r0, pc                                        |         r0 = 0xc7f4;
    0x00005f20 blx 0x1b00                                        |         malloc (r0);
    0x00005f24 b 0x5ece                                          |         
                                                                 |     } while (1);
    0x00005f26 ldr r2, [sp, 0x1c]                                |     r2 = var_1ch;
    0x00005f28 ldr.w r3, [pc, 0x99c]                             |     
    0x00005f2c ldr r3, [r2, r3]                                  |     r3 = *((r2 + r3));
    0x00005f2e ldr r3, [r3]                                      |     r3 = *(0x68c8);
    0x00005f30 ldrb r2, [r3, 1]                                  |     r2 = *((r3 + 1));
    0x00005f32 cmp r2, 0                                         |     
                                                                 |     if (r2 != 0) {
    0x00005f34 bne.w 0x70a6                                      |         goto label_79;
                                                                 |     }
    0x00005f38 ldrb r3, [r3]                                     |     r3 = *(r3);
    0x00005f3a ldr r2, [sp, 0x20]                                |     r2 = stream;
    0x00005f3c strb.w r3, [r2, 0x7e0]                            |     *((r2 + 0x7e0)) = r3;
    0x00005f40 b 0x5da2                                          |     goto label_7;
    0x00005f42 ldr.w r3, [pc, 0x984]                             |     
    0x00005f46 ldr r2, [sp, 0x1c]                                |     r2 = var_1ch;
    0x00005f48 ldr r3, [r2, r3]                                  |     r3 = *((r2 + r3));
    0x00005f4a ldr r3, [r3]                                      |     r3 = *(0x68ca);
    0x00005f4c str r3, [sp, 0x40]                                |     var_40h = r3;
    0x00005f4e b 0x5da2                                          |     goto label_7;
    0x00005f50 ldr r2, [sp, 0x1c]                                |     r2 = var_1ch;
    0x00005f52 ldr.w r3, [pc, 0x974]                             |     
    0x00005f56 ldr r3, [r2, r3]                                  |     r3 = *((r2 + r3));
    0x00005f58 ldr r2, [sp, 0x20]                                |     r2 = stream;
    0x00005f5a ldr r3, [r3]                                      |     r3 = *(0x68ca);
    0x00005f5c str r3, [sp, 0x38]                                |     var_38h = r3;
    0x00005f5e movs r3, 1                                        |     r3 = 1;
    0x00005f60 strb.w r3, [r2, 0x7e1]                            |     *((r2 + 0x7e1)) = r3;
    0x00005f62 adds r7, 0xe1                                     |     r7 += 0xe1;
    0x00005f64 b 0x5da2                                          |     goto label_7;
    0x00005f66 ldr r3, [sp, 0x30]                                |     r3 = var_30h;
    0x00005f68 mov r0, fp                                        |     r0 = fp;
    0x00005f6a add.w sl, r3, 2                                   |     sl = r3 + 2;
    0x00005f6e lsl.w sl, sl, 2                                   |     sl <<= 2;
    0x00005f72 mov r1, sl                                        |     r1 = sl;
    0x00005f74 blx 0x1a34                                        |     r0 = regexec ();
    0x00005f78 cmp r0, 0                                         |     
                                                                 |     if (r0 == 0) {
    0x00005f7a beq.w 0x75ea                                      |         goto label_80;
                                                                 |     }
    0x00005f7e ldr r3, [sp, 0x30]                                |     r3 = var_30h;
    0x00005f80 add sl, r0                                        |     sl += r0;
    0x00005f82 ldr r2, [sp, 0x1c]                                |     r2 = var_1ch;
    0x00005f84 mov fp, r0                                        |     
    0x00005f86 adds r3, 1                                        |     r3++;
    0x00005f88 str r3, [sp, 0x30]                                |     var_30h = r3;
    0x00005f8a ldr.w r3, [pc, 0x93c]                             |     
    0x00005f8e ldr r3, [r2, r3]                                  |     r3 = *((r2 + r3));
    0x00005f90 movs r2, 0                                        |     r2 = 0;
    0x00005f92 str r2, [sl, -0x4]                                |     *((sl - 0x4)) = r2;
    0x00005f96 ldr r3, [r3]                                      |     r3 = *(0x68ca);
    0x00005f98 str r3, [sl, -0x8]                                |     *((sl - 0x8)) = r3;
    0x00005f9c b 0x5da2                                          |     goto label_7;
    0x00005f9e movs r3, 1                                        |     r3 = 1;
    0x00005fa0 str r3, [sp, 0x44]                                |     var_44h = r3;
    0x00005fa2 b 0x5da2                                          |     goto label_7;
    0x00005fa4 movs r3, 1                                        |     r3 = 1;
    0x00005fa6 str r3, [sp, 0x48]                                |     var_0h = r3;
    0x00005fa8 b 0x5da2                                          |     goto label_7;
                                                                 | label_78:
    0x00005faa ldr.w r1, [pc, 0x928]                             |     
    0x00005fae mov r2, r0                                        |     r2 = r0;
    0x00005fb0 movs r0, 4                                        |     r0 = 4;
    0x00005fb2 add r1, pc                                        |     r1 = 0xc88c;
    0x00005fb4 bl 0x85e4                                         |     fcn_000085e4 (r0);
    0x00005fb8 b 0x5da2                                          |     goto label_7;
                                                                 | label_76:
    0x00005fba ldr.w r3, [pc, 0x91c]                             |     
    0x00005fbe mov sl, r0                                        |     sl = r0;
    0x00005fc0 ldr r2, [sp, 0x1c]                                |     r2 = var_1ch;
    0x00005fc2 ldr r3, [r2, r3]                                  |     r3 = *((r2 + r3));
    0x00005fc4 str r3, [sp, 0x30]                                |     var_30h = r3;
    0x00005fc6 ldr r3, [r3]                                      |     r3 = *(0x68da);
    0x00005fc8 cmp r3, r5                                        |     
                                                                 |     if (r3 < r5) {
    0x00005fca blt.w 0x62a4                                      |         goto label_81;
                                                                 |     }
    0x00005fce add r6, sp, 0x1a0                                 |     r6 += arg_1a0h;
    0x00005fd0 sub.w r0, r6, 0x30                                |     r0 = r6 - 0x30;
    0x00005fd4 blx 0x1a04                                        |     r0 = strdup (r0);
    0x00005fd8 cmp r0, 0                                         |     
                                                                 |     if (r0 < 0) {
    0x00005fda blt.w 0x6ff0                                      |         goto label_82;
                                                                 |     }
    0x00005fde ldr r2, [sp, 0x20]                                |     r2 = stream;
    0x00005fe0 add.w r3, r6, 0x52                                |     r3 = r6 + 0x52;
    0x00005fe4 subw r2, r2, 0x828                                |     __asm ("subw r2, r2, 0x828");
    0x00005fe8 str r3, [r2]                                      |     *(r2) = r3;
                                                                 | label_12:
    0x00005fea ldr r2, [sp, 0x24]                                |     r2 = var_24h;
    0x00005fec cmp r2, 0                                         |     
                                                                 |     if (r2 == 0) {
    0x00005fee beq.w 0x62e8                                      |         goto label_83;
                                                                 |     }
    0x00005ff2 ldr r2, [sp, 0x24]                                |     r2 = var_24h;
                                                                 | label_14:
    0x00005ff4 strd r2, r3, [sp, 4]                              |     __asm ("strd r2, r3, [sp, 4]");
    0x00005ff8 ldr.w r3, [pc, 0x8e0]                             |     
    0x00005ffc ldr r2, [sp, 0x2c]                                |     r2 = var_2ch;
    0x00005ffe add r3, pc                                        |     r3 = 0xc8de;
    0x00006000 sub.w r6, r2, 0x24                                |     r6 = r2 - 0x24;
    0x00006004 str r3, [sp]                                      |     *(sp) = r3;
    0x00006006 mov.w r3, 0x1000                                  |     r3 = 0x1000;
    0x0000600a movs r2, 1                                        |     r2 = 1;
    0x0000600c mov r1, r3                                        |     r1 = r3;
    0x0000600e mov r0, r6                                        |     r0 = r6;
    0x00006010 blx 0x1dd4                                        |     fcn_00001dd4 ();
    0x00006014 ldr r3, [sp, 0x20]                                |     r3 = stream;
    0x00006016 ldr r2, [sp, 0x44]                                |     r2 = var_44h;
    0x00006018 str.w r0, [r3, 0x7dc]                             |     __asm ("str.w r0, [r3, 0x7dc]");
    0x0000601c ldr r3, [sp, 0x30]                                |     r3 = var_30h;
    0x0000601e ldr r3, [r3]                                      |     r3 = *(r3);
    0x00006020 cmp r3, r5                                        |     
    0x00006022 it eq                                             |     
                                                                 |     if (r3 != r5) {
    0x00006024 moveq r2, 1                                       |         r2 = 1;
                                                                 |     }
    0x00006026 ldr r3, [sp, 0x48]                                |     r3 = var_0h;
    0x00006028 str r2, [sp, 0x44]                                |     var_44h = r2;
    0x0000602a cmp r3, 0                                         |     
                                                                 |     if (r3 == 0) {
    0x0000602c beq.w 0x62d2                                      |         goto label_84;
                                                                 |     }
    0x00006030 ldr r2, [sp, 0x1c]                                |     r2 = var_1ch;
    0x00006032 ldr.w r3, [pc, 0x884]                             |     
    0x00006036 ldr r3, [r2, r3]                                  |     r3 = *((r2 + r3));
    0x00006038 ldr r2, [sp, 0x3c]                                |     r2 = var_3ch;
    0x0000603a ldr r3, [r3]                                      |     r3 = *(0x68ba);
    0x0000603c cmp r3, r2                                        |     
                                                                 |     if (r3 == r2) {
    0x0000603e beq.w 0x62d8                                      |         goto label_85;
                                                                 |     }
    0x00006042 mov r0, r6                                        |     r0 = r6;
    0x00006044 blx 0x1ab8                                        |     r0 = fnmatch ();
    0x00006048 mov r7, r0                                        |     r7 = r0;
    0x0000604a cmp r0, 0                                         |     
                                                                 |     if (r0 == 0) {
    0x0000604c beq.w 0x700c                                      |         goto label_86;
                                                                 |     }
    0x00006050 blx 0x1d40                                        |     renameat ();
    0x00006054 ldr.w r1, [pc, 0x888]                             |     
    0x00006058 movs r3, 0                                        |     r3 = 0;
    0x0000605a ldr r2, [sp, 0x18]                                |     r2 = var_18h;
    0x0000605c add r1, pc                                        |     r1 = 0xc940;
    0x0000605e blx 0x1adc                                        |     r0 = asprintf_chk ();
    0x00006062 mov r8, r0                                        |     r8 = r0;
    0x00006064 cmp r0, 0                                         |     
                                                                 |     if (r0 != 0) {
    0x00006066 bne.w 0x6aea                                      |         goto label_87;
                                                                 |     }
    0x0000606a mov r0, r6                                        |     r0 = r6;
    0x0000606c blx 0x1bb0                                        |     fcn_00001bb0 ();
    0x00006070 mov r1, r6                                        |     r1 = r6;
    0x00006072 add.w r6, sp, 0x1300                              |     r6 += ptr;
    0x00006076 adds r6, 0x1c                                     |     r6 += 0x1c;
    0x00006078 mov sb, r0                                        |     sb = r0;
    0x0000607a mov r2, r0                                        |     r2 = r0;
    0x0000607c mov.w r3, 0x1000                                  |     r3 = 0x1000;
    0x00006080 mov r0, r6                                        |     r0 = r6;
    0x00006082 blx 0x1a4c                                        |     fwrite (r0, r1, r2, r3);
    0x00006086 ldr r1, [sp, 0x20]                                |     r1 = stream;
    0x00006088 mov r3, r6                                        |     r3 = r6;
    0x0000608a add.w r2, sb, 1                                   |     r2 = sb + 1;
    0x0000608e movs r6, 0x2f                                     |     r6 = 0x2f;
    0x00006090 strb.w r6, [r3, sb]                               |     *((r3 + sb)) = r6;
    0x00006094 mov r0, r7                                        |     r0 = r7;
    0x00006096 subw r1, r1, 0xa18                                |     __asm ("subw r1, r1, 0xa18");
    0x0000609a strb.w r8, [r3, r2]                               |     *((r3 + r2)) = r8;
    0x0000609e ldr r1, [r1, 0x50]                                |     r1 = *((r1 + 0x50));
    0x000060a0 bl 0x4754                                         |     r0 = fcn_00004754 (r0, r1, r2, r3);
    0x000060a4 mov r6, r0                                        |     r6 = r0;
    0x000060a6 mov r0, r7                                        |     r0 = r7;
    0x000060a8 blx 0x1dc8                                        |     fcn_00001dc8 ();
                                                                 | label_30:
    0x000060ac cmp r6, 1                                         |     
                                                                 |     if (r6 == 1) {
    0x000060ae beq.w 0x62d8                                      |         goto label_85;
                                                                 |     }
                                                                 | label_13:
    0x000060b2 ldr r3, [sp, 0x2c]                                |     r3 = var_2ch;
    0x000060b4 sub.w r7, r3, 0x24                                |     r7 = r3 - 0x24;
    0x000060b8 ldr r3, [sp, 0x28]                                |     r3 = var_28h;
    0x000060ba mov r0, r7                                        |     r0 = r7;
    0x000060bc sub.w r1, r3, 0x30                                |     r1 = r3 - 0x30;
    0x000060c0 bl 0x9b18                                         |     r0 = fcn_00009b18 (r0, r1, r2, r3, r4);
    0x000060c4 mov r6, r0                                        |     r6 = r0;
    0x000060c6 cmp r0, 0                                         |     
                                                                 |     if (r0 == 0) {
    0x000060c8 beq.w 0x6ad8                                      |         goto label_88;
                                                                 |     }
    0x000060cc ldr.w r3, [pc, 0x814]                             |     r3 = *(0x000068e4);
    0x000060d0 add r3, pc                                        |     r3 += pc;
    0x000060d2 ldr r1, [r3]                                      |     r1 = *(r3);
    0x000060d4 bl 0x86bc                                         |     fcn_000086bc (r0, r1);
    0x000060d8 ldr r3, [sp, 0x20]                                |     r3 = stream;
    0x000060da movs r1, 0x80                                     |     r1 = 0x80;
    0x000060dc subw r7, r3, 0xaa4                                |     __asm ("subw r7, r3, 0xaa4");
    0x000060e0 ldr r3, [sp, 0x34]                                |     r3 = var_34h;
    0x000060e2 strd r3, r6, [r7]                                 |     __asm ("strd r3, r6, [r7]");
    0x000060e6 ldr r3, [sp, 0x28]                                |     r3 = var_28h;
    0x000060e8 sub.w r0, r3, 0x1c                                |     r0 = r3 - 0x1c;
    0x000060ec bl 0x8b68                                         |     fcn_00008b68 (r0, r1);
    0x000060f0 movs r1, 0                                        |     r1 = 0;
    0x000060f2 mov.w r0, 0x200                                   |     r0 = 0x200;
    0x000060f6 bl 0x8c14                                         |     fcn_00008c14 (r0, r1);
    0x000060fa str r0, [r7, 0x18]                                |     *((r7 + 0x18)) = r0;
    0x000060fc cmp r0, 0                                         |     
                                                                 |     if (r0 == 0) {
    0x000060fe beq.w 0x6414                                      |         goto label_89;
                                                                 |     }
    0x00006102 movs r1, 0                                        |     r1 = 0;
    0x00006104 mov.w r0, 0x200                                   |     r0 = 0x200;
    0x00006108 bl 0x8c14                                         |     fcn_00008c14 (r0, r1);
    0x0000610c str r0, [r7, 0x1c]                                |     *((r7 + 0x1c)) = r0;
    0x0000610e cmp r0, 0                                         |     
                                                                 |     if (r0 == 0) {
    0x00006110 beq.w 0x6f8e                                      |         goto label_90;
                                                                 |     }
    0x00006114 ldr.w r1, [pc, 0x7d0]                             |     r1 = *(0x000068e8);
    0x00006118 mov.w r0, 0x800                                   |     r0 = 0x800;
    0x0000611c add r1, pc                                        |     r1 += pc;
    0x0000611e bl 0x8c14                                         |     fcn_00008c14 (r0, r1);
    0x00006122 str r0, [r7, 0x20]                                |     *((r7 + 0x20)) = r0;
    0x00006124 cmp r0, 0                                         |     
                                                                 |     if (r0 == 0) {
    0x00006126 beq.w 0x7144                                      |         goto label_91;
                                                                 |     }
                                                                 | label_18:
    0x0000612a ldr r3, [sp, 0x38]                                |     r3 = var_38h;
    0x0000612c cmp r3, 0                                         |     
                                                                 |     if (r3 == 0) {
    0x0000612e beq.w 0x62f0                                      |         goto label_92;
                                                                 |     }
    0x00006132 ldr.w r1, [pc, 0x7b8]                             |     
    0x00006136 mov r0, r3                                        |     r0 = r3;
    0x00006138 add r1, pc                                        |     r1 = 0xca2a;
    0x0000613a blx 0x1d4c                                        |     r0 = fstat64 ();
    0x0000613e mov r8, r0                                        |     r8 = r0;
    0x00006140 cmp r0, 0                                         |     
                                                                 |     if (r0 == 0) {
    0x00006142 beq.w 0x756a                                      |         goto label_93;
                                                                 |     }
    0x00006146 ldr.w r1, [pc, 0x7a8]                             |     
    0x0000614a movs r0, 7                                        |     r0 = 7;
    0x0000614c ldr r2, [sp, 0x38]                                |     r2 = var_38h;
    0x0000614e add.w r6, sp, 0x1300                              |     r6 += ptr;
    0x00006152 ldr.w sb, [pc, 0x7a0]                             |     
    0x00006156 adds r6, 0x1c                                     |     r6 += 0x1c;
    0x00006158 add r1, pc                                        |     r1 = 0xca4e;
    0x0000615a bl 0x85e4                                         |     fcn_000085e4 (r0);
    0x0000615e ldr.w r3, [pc, 0x798]                             |     
    0x00006162 add sb, pc                                        |     sb = 0xca5c;
    0x00006164 str.w sl, [sp, 0x40]                              |     __asm ("str.w sl, [var_40h]");
    0x00006168 add r3, pc                                        |     r3 = 0xca66;
    0x0000616a str r3, [sp, 0x2c]                                |     var_2ch = r3;
    0x0000616c ldr.w r3, [pc, 0x78c]                             |     
    0x00006170 add r3, pc                                        |     r3 = 0xca70;
    0x00006172 str r3, [sp, 0x44]                                |     var_44h = r3;
    0x00006174 movs r3, 0                                        |     r3 = 0;
    0x00006176 str r3, [sp, 0x1c]                                |     var_1ch = r3;
                                                                 |     do {
                                                                 | label_9:
    0x00006178 mov r2, r8                                        |         r2 = r8;
    0x0000617a mov.w r1, 0x2800                                  |         r1 = 0x2800;
    0x0000617e mov r0, r6                                        |         r0 = r6;
    0x00006180 blx 0x19ac                                        |         r0 = fcn_000019ac ();
    0x00006184 cmp r0, 0                                         |         
                                                                 |         if (r0 == 0) {
    0x00006186 beq 0x6206                                        |             goto label_94;
                                                                 |         }
                                                                 | label_10:
    0x00006188 ldr r3, [sp, 0x1c]                                |         r3 = var_1ch;
    0x0000618a mov r1, sb                                        |         r1 = sb;
    0x0000618c mov r0, r6                                        |         r0 = r6;
    0x0000618e adds r3, 1                                        |         r3++;
    0x00006190 str r3, [sp, 0x1c]                                |         var_1ch = r3;
    0x00006192 blx 0x1cac                                        |         fcn_00001cac ();
    0x00006196 mov r1, sb                                        |         r1 = sb;
    0x00006198 mov r7, r0                                        |         r7 = r0;
    0x0000619a movs r0, 0                                        |         r0 = 0;
    0x0000619c blx 0x1cac                                        |         fcn_00001cac ();
    0x000061a0 mov r1, sb                                        |         r1 = sb;
    0x000061a2 mov sl, r0                                        |         sl = r0;
    0x000061a4 movs r0, 0                                        |         r0 = 0;
    0x000061a6 blx 0x1cac                                        |         fcn_00001cac ();
    0x000061aa cmp.w sl, 0                                       |         
    0x000061ae it ne                                             |         
                                                                 |         if (sl != 0) {
    0x000061b0 cmpne r7, 0                                       |             __asm ("cmpne r7, 0");
                                                                 |         }
    0x000061b2 ite eq                                            |         
                                                                 |         if (sl != 0) {
    0x000061b4 moveq r3, 1                                       |             r3 = 1;
                                                                 |         }
                                                                 |         if (sl == 0) {
    0x000061b6 movne r3, 0                                       |             r3 = 0;
                                                                 |         }
    0x000061b8 cmp r0, 0                                         |         
    0x000061ba it eq                                             |         
                                                                 |         if (r0 != 0) {
    0x000061bc orreq r3, r3, 1                                   |             r3 |= 1;
                                                                 |         }
    0x000061c0 cmp r3, 0                                         |         
    0x000061c2 bne 0x6178                                        |         
                                                                 |     } while (r3 != 0);
    0x000061c4 ldr r1, [sp, 0x2c]                                |     r1 = var_2ch;
    0x000061c6 blx 0x1924                                        |     r0 = fcn_00001924 ();
    0x000061ca cmp r0, 0                                         |     
                                                                 |     if (r0 != 0) {
    0x000061cc bne 0x6178                                        |         goto label_9;
                                                                 |     }
    0x000061ce movs r2, 0x10                                     |     r2 = 0x10;
    0x000061d0 ldr r1, [sp, 0x18]                                |     r1 = var_18h;
    0x000061d2 mov r0, r7                                        |     r0 = r7;
    0x000061d4 blx 0x1c44                                        |     write (r0, r1, r2);
    0x000061d8 ldr r3, [sp, 0x20]                                |     r3 = stream;
    0x000061da subw r3, r3, 0xa18                                |     __asm ("subw r3, r3, 0xa18");
    0x000061de ldr r3, [r3]                                      |     r3 = *(r3);
    0x000061e0 ldrb r2, [r3]                                     |     r2 = *(r3);
    0x000061e2 cmp r2, 0                                         |     
                                                                 |     if (r2 != 0) {
    0x000061e4 bne.w 0x6404                                      |         goto label_95;
                                                                 |     }
    0x000061e8 strd r0, r1, [sp]                                 |     __asm ("strd r0, r1, [sp]");
    0x000061ec mov r1, sl                                        |     r1 = sl;
    0x000061ee ldr r0, [sp, 0x4c]                                |     r0 = var_4h;
    0x000061f0 str r2, [sp, 8]                                   |     var_8h_2 = r2;
    0x000061f2 bl 0x5330                                         |     fcn_00005330 (r0, r1, r2, r3);
    0x000061f6 mov r2, r8                                        |     r2 = r8;
    0x000061f8 mov.w r1, 0x2800                                  |     r1 = 0x2800;
    0x000061fc mov r0, r6                                        |     r0 = r6;
    0x000061fe blx 0x19ac                                        |     r0 = fcn_000019ac ();
    0x00006202 cmp r0, 0                                         |     
                                                                 |     if (r0 != 0) {
    0x00006204 bne 0x6188                                        |         goto label_10;
                                                                 |     }
                                                                 | label_94:
    0x00006206 ldr r0, [sp, 0x4c]                                |     r0 = var_4h;
    0x00006208 ldr.w sl, [sp, 0x40]                              |     sl = var_40h;
    0x0000620c bl 0x53c0                                         |     fcn_000053c0 (r0);
    0x00006210 ldr.w r1, [pc, 0x6ec]                             |     
    0x00006212 asrs r4, r5, 0x1b                                 |     r4 = r5 >> 0x1b;
    0x00006214 movs r0, 7                                        |     r0 = 7;
    0x00006216 ldr r2, [sp, 0x38]                                |     r2 = var_38h;
    0x00006218 add r1, pc                                        |     r1 = 0xcb1c;
    0x0000621a bl 0x85e4                                         |     fcn_000085e4 (r0);
    0x0000621e mov r0, r8                                        |     r0 = r8;
    0x00006220 blx 0x1c84                                        |     fcn_00001c84 ();
                                                                 | label_16:
    0x00006224 ldr r3, [sp, 0x48]                                |     r3 = var_0h;
    0x00006226 cmp r3, 0                                         |     
                                                                 |     if (r3 != 0) {
    0x00006228 bne.w 0x6724                                      |         goto label_96;
                                                                 |     }
    0x0000622c ldr r3, [sp, 0x30]                                |     r3 = var_30h;
    0x0000622e ldr r6, [r3]                                      |     r6 = *(r3);
    0x00006230 cmp r5, r6                                        |     
                                                                 |     if (r5 <= r6) {
    0x00006232 ble.w 0x65b2                                      |         goto label_43;
                                                                 |     }
    0x00006236 ldr r3, [sp, 0x20]                                |     r3 = stream;
    0x00006238 add.w r4, r4, r6, lsl 2                           |     r4 += (r6 << 2);
    0x0000623c str.w sl, [sp, 0x2c]                              |     __asm ("str.w sl, [var_2ch]");
    0x00006240 str.w fp, [sp, 0x1c]                              |     __asm ("str.w fp, [var_1ch]");
    0x00006244 ldr.w sl, [sp, 0x18]                              |     sl = var_18h;
    0x00006248 subw sb, r3, 0xaa4                                |     __asm ("subw sb, r3, 0xaa4");
    0x0000624c ldr.w fp, [sp, 0x4c]                              |     fp = var_4h;
    0x00006250 subw r8, r3, 0xa18                                |     __asm ("subw r8, r3, 0xa18");
    0x00006252 cmp r0, 0x18                                      |     
    0x00006254 b 0x6280                                          |     
                                                                 |     while (r3 == 0x2f) {
    0x00006256 ldr.w r0, [sb, 4]                                 |         r0 = *((sb + 4));
    0x0000625a mov r2, sl                                        |         r2 = sl;
    0x0000625c mov r1, r7                                        |         r1 = r7;
    0x0000625e bl 0xc8c4                                         |         r0 = fcn_0000c8c4 (r0, r1, r2);
    0x00006260 smlawb r8, r1, r0, r2                             |         __asm ("smlawb r8, r1, r0, r2");
                                                                 |         if (r0 < 0x18) {
    0x00006264 blt.w 0x70b6                                      |             goto label_97;
                                                                 |         }
    0x00006268 ldr.w r1, [r8]                                    |         r1 = *(r8);
    0x0000626c mov r0, fp                                        |         r0 = fp;
    0x0000626e bl 0x4a80                                         |         fcn_00004a80 (r0, r1, r2, r3);
    0x00006270 invalid                                           |         
    0x00006272 cmp r0, 0                                         |         
                                                                 |         if (r0 < 0) {
    0x00006274 blt.w 0x70d4                                      |             goto label_98;
                                                                 |         }
    0x00006278 adds r6, 1                                        |         r6++;
    0x0000627a cmp r5, r6                                        |         
                                                                 |         if (r5 == r6) {
    0x0000627c beq.w 0x70fa                                      |             goto label_99;
                                                                 |         }
    0x00006280 ldr r7, [r4], 4                                   |         r7 = *(r4);
                                                                 |         r4 += 4;
    0x00006284 ldrb r3, [r7]                                     |         r3 = *(r7);
    0x00006286 cmp r3, 0x2f                                      |         
    0x00006288 beq 0x6256                                        |         
                                                                 |     }
    0x0000628a ldr.w r1, [pc, 0x678]                             |     
    0x0000628e mov r2, r7                                        |     r2 = r7;
    0x00006290 movs r0, 2                                        |     r0 = 2;
    0x00006292 ldr.w fp, [sp, 0x1c]                              |     fp = var_1ch;
    0x00006296 add r1, pc                                        |     r1 = 0xcba0;
    0x00006298 bl 0x85e4                                         |     fcn_000085e4 (r0);
                                                                 | label_32:
    0x0000629c ldr r0, [sp, 0x4c]                                |     r0 = var_4h;
    0x0000629e bl 0x49d8                                         |     fcn_000049d8 (r0);
    0x000062a2 b 0x5e46                                          |     goto label_11;
                                                                 | label_81:
    0x000062a4 ldr.w r1, [pc, 0x660]                             |     
    0x000062a8 ldr.w r0, [r4, r3, lsl 2]                         |     offset_0 = r3 << 2;
                                                                 |     r0 = *((r4 + offset_0));
    0x000062ac ldr r2, [sp, 0x28]                                |     r2 = var_28h;
    0x000062ae ldr r3, [sp, 0x18]                                |     r3 = var_18h;
    0x000062b0 add r1, pc                                        |     r1 = 0xcbbc;
    0x000062b2 blx 0x1bfc                                        |     r0 = mkdir ();
    0x000062b6 cmp r0, 2                                         |     
                                                                 |     if (r0 != 2) {
    0x000062b8 bne.w 0x6b0a                                      |         goto label_100;
                                                                 |     }
    0x000062bc ldr r0, [sp, 0x30]                                |     r0 = var_30h;
    0x000062be ldr r3, [sp, 0x20]                                |     r3 = stream;
    0x000062c0 ldr r2, [r0]                                      |     r2 = *(r0);
    0x000062c2 subw r1, r3, 0x828                                |     __asm ("subw r1, r3, 0x828");
    0x000062c6 ldr.w r3, [r4, r2, lsl 2]                         |     offset_1 = r2 << 2;
                                                                 |     r3 = *((r4 + offset_1));
    0x000062ca adds r2, 1                                        |     r2++;
    0x000062cc str r2, [r0]                                      |     *(r0) = r2;
    0x000062ce str r3, [r1]                                      |     *(r1) = r3;
    0x000062d0 b 0x5fea                                          |     goto label_12;
                                                                 | label_84:
    0x000062d2 ldr r3, [sp, 0x44]                                |     r3 = var_44h;
    0x000062d4 str r3, [sp, 0x48]                                |     var_0h = r3;
    0x000062d6 b 0x60b2                                          |     goto label_13;
                                                                 | label_85:
    0x000062d8 movs r4, 0                                        |     r4 = 0;
                                                                 | label_35:
    0x000062da ldr r0, [sp, 0x4c]                                |     r0 = var_4h;
    0x000062dc bl 0x49d8                                         |     fcn_000049d8 (r0);
    0x000062e0 ldr r0, [sp, 0x34]                                |     r0 = var_34h;
    0x000062e2 bl 0x46d8                                         |     fcn_000046d8 (r0);
    0x000062e6 b 0x5e4e                                          |     goto label_8;
                                                                 | label_83:
    0x000062e8 ldr.w r2, [pc, 0x620]                             |     
    0x000062ec add r2, pc                                        |     r2 = 0xcbfc;
    0x000062ee b 0x5ff4                                          |     goto label_14;
                                                                 | label_92:
    0x000062f0 ldr r6, [sp, 0x40]                                |     r6 = var_40h;
    0x000062f2 cmp r6, 0                                         |     
                                                                 |     if (r6 == 0) {
    0x000062f4 beq.w 0x6fa6                                      |         goto label_101;
                                                                 |     }
    0x000062f8 ldr.w r2, [pc, 0x614]                             |     
    0x000062fc add.w r3, sp, 0x1300                              |     r3 += ptr;
    0x000062fe strh r0, [r3, r6]                                 |     *((r3 + r6)) = r0;
    0x00006300 adds r3, 0x10                                     |     r3 += 0x10;
    0x00006302 add r2, pc                                        |     r2 = 0xcc16;
    0x00006304 ldm r2, {r0, r1, r2}                              |     r0 = *(r2);
                                                                 |     r1 = *((r2 + 4));
                                                                 |     r2 = *((r2 + 8));
    0x00006306 stm r3!, {r0, r1}                                 |     *(r3!) = r0;
                                                                 |     *((r3! + 4)) = r1;
    0x00006308 mov r0, r6                                        |     r0 = r6;
    0x0000630a ldr.w r1, [pc, 0x608]                             |     
    0x0000630e strh r2, [r3], 2                                  |     *(r3) = r2;
                                                                 |     r3 += 2;
    0x00006312 lsrs r2, r2, 0x10                                 |     r2 >>= 0x10;
    0x00006314 add r1, pc                                        |     r1 = 0xcc2e;
    0x00006316 strb r2, [r3]                                     |     *(r3) = r2;
    0x00006318 blx 0x1d4c                                        |     r0 = fstat64 ();
    0x0000631c mov r8, r0                                        |     r8 = r0;
    0x0000631e cmp r0, 0                                         |     
                                                                 |     if (r0 == 0) {
    0x00006320 beq.w 0x752c                                      |         goto label_102;
                                                                 |     }
    0x00006324 ldr.w r1, [pc, 0x5f0]                             |     
    0x00006328 movs r0, 7                                        |     r0 = 7;
    0x0000632a ldr r2, [sp, 0x40]                                |     r2 = var_40h;
    0x0000632c add.w r6, sp, 0x1300                              |     r6 += ptr;
    0x0000632e ldrsb r0, [r3, r2]                                |     r0 = *((r3 + r2));
    0x00006330 ldr r7, [sp, 0x38]                                |     r7 = var_38h;
    0x00006332 adds r6, 0x1c                                     |     r6 += 0x1c;
    0x00006334 add r1, pc                                        |     r1 = 0xcc50;
    0x00006336 vmov.i32 d8, 0                                    |     __asm ("vmov.i32 d8, 0");
    0x0000633a bl 0x85e4                                         |     fcn_000085e4 (r0);
    0x0000633e ldr.w r3, [pc, 0x5dc]                             |     
    0x00006342 add r3, pc                                        |     r3 = 0xcc64;
    0x00006344 str r3, [sp, 0x38]                                |     var_38h = r3;
    0x00006346 add.w r3, sp, 0x1320                              |     r3 += arg_1320h;
    0x0000634a str r3, [sp, 0x2c]                                |     var_2ch = r3;
                                                                 |     do {
                                                                 | label_17:
    0x0000634c mov r2, r8                                        |         r2 = r8;
    0x0000634e mov.w r1, 0x2800                                  |         r1 = 0x2800;
    0x00006352 mov r0, r6                                        |         r0 = r6;
    0x00006354 blx 0x19ac                                        |         r0 = fcn_000019ac ();
    0x00006358 cmp r0, 0                                         |         
                                                                 |         if (r0 == 0) {
    0x0000635a beq 0x63d8                                        |             goto label_103;
                                                                 |         }
                                                                 | label_15:
    0x0000635c movs r1, 0x20                                     |         r1 = 0x20;
    0x0000635e mov r0, r6                                        |         r0 = r6;
    0x00006360 adds r7, 1                                        |         r7++;
    0x00006362 blx 0x1bbc                                        |         r0 = fcn_00001bbc ();
    0x00006366 cmp r0, 0                                         |         
                                                                 |         if (r0 == 0) {
    0x00006368 beq 0x63f4                                        |             goto label_104;
                                                                 |         }
    0x0000636a adds r0, 1                                        |         r0++;
    0x0000636c movs r1, 0x20                                     |         r1 = 0x20;
    0x0000636e blx 0x1bbc                                        |         r0 = fcn_00001bbc ();
    0x00006372 cmp r0, 0                                         |         
                                                                 |         if (r0 == 0) {
    0x00006374 beq 0x63f4                                        |             goto label_104;
                                                                 |         }
    0x00006376 ldr r3, [sp, 0x20]                                |         r3 = stream;
    0x00006378 ldrb r2, [r0, 1]                                  |         r2 = *((r0 + 1));
    0x0000637a subw r3, r3, 0xaa4                                |         __asm ("subw r3, r3, 0xaa4");
    0x0000637e ldr r3, [r3]                                      |         r3 = *(r3);
    0x00006380 add.w r3, r3, 0x1000                              |         r3 += 0x1000;
    0x00006384 ldrb r3, [r3, 8]                                  |         r3 = *((r3 + 8));
    0x00006386 cmp r2, r3                                        |         
    0x00006388 ldr r3, [sp, 0x2c]                                |         r3 = var_2ch;
    0x0000638a ite ne                                            |         
                                                                 |         if (r2 == r3) {
    0x0000638c addne sb, r0, 1                                   |             sb = r0 + 1;
                                                                 |         }
                                                                 |         if (r2 == r3) {
    0x00006390 add.w sb, r0, 2                                   |             sb = r0 + 2;
                                                                 |         }
    0x00006394 movs r2, 0xa                                      |         r2 = 0xa;
    0x00006396 mov r0, sb                                        |         r0 = sb;
    0x00006398 sub.w r1, r3, 0x10                                |         r1 = r3 - 0x10;
    0x0000639c blx 0x1da4                                        |         fcn_00001da4 ();
    0x000063a0 str r0, [sp, 0x1c]                                |         var_1ch = r0;
    0x000063a2 cmp r0, 0                                         |         
    0x000063a4 bne 0x634c                                        |         
                                                                 |     } while (r0 != 0);
    0x000063a6 movs r1, 0xa                                      |     r1 = 0xa;
    0x000063a8 mov r0, sb                                        |     r0 = sb;
    0x000063aa blx 0x1bbc                                        |     r0 = fcn_00001bbc ();
                                                                 |     if (r0 != 0) {
    0x000063ae cbz r0, 0x63b4                                    |         
    0x000063b0 ldr r3, [sp, 0x1c]                                |         r3 = var_1ch;
    0x000063b2 strb r3, [r0]                                     |         *(r0) = r3;
                                                                 |     }
    0x000063b4 movs r3, 0                                        |     r3 = 0;
    0x000063b6 ldr r0, [sp, 0x4c]                                |     r0 = var_4h;
    0x000063b8 add.w r1, sb, 0xa                                 |     r1 = sb + 0xa;
    0x000063bc movs r2, 1                                        |     r2 = 1;
    0x000063be vstr d8, [sp]                                     |     __asm ("vstr d8, [sp]");
    0x000063c2 str r3, [sp, 8]                                   |     var_8h_2 = r3;
    0x000063c4 bl 0x5330                                         |     fcn_00005330 (r0, r1, r2, r3);
    0x000063c8 mov r2, r8                                        |     r2 = r8;
    0x000063ca mov.w r1, 0x2800                                  |     r1 = 0x2800;
    0x000063ce mov r0, r6                                        |     r0 = r6;
    0x000063d0 blx 0x19ac                                        |     r0 = fcn_000019ac ();
    0x000063d4 cmp r0, 0                                         |     
                                                                 |     if (r0 != 0) {
    0x000063d6 bne 0x635c                                        |         goto label_15;
                                                                 |     }
                                                                 | label_103:
    0x000063d8 ldr r0, [sp, 0x4c]                                |     r0 = var_4h;
    0x000063da bl 0x53c0                                         |     fcn_000053c0 (r0);
    0x000063de ldr.w r1, [pc, 0x540]                             |     
    0x000063e2 movs r0, 7                                        |     r0 = 7;
    0x000063e4 ldr r2, [sp, 0x40]                                |     r2 = var_40h;
    0x000063e6 add r1, pc                                        |     r1 = 0xcd0c;
    0x000063e8 bl 0x85e4                                         |     fcn_000085e4 (r0);
    0x000063ec mov r0, r8                                        |     r0 = r8;
    0x000063ee blx 0x1c84                                        |     fcn_00001c84 ();
    0x000063f2 b 0x6224                                          |     goto label_16;
                                                                 | label_104:
    0x000063f4 ldr r2, [sp, 0x40]                                |     r2 = var_40h;
    0x000063f6 mov r3, r7                                        |     r3 = r7;
    0x000063f8 ldr r1, [sp, 0x38]                                |     r1 = var_38h;
    0x000063fa movs r0, 3                                        |     r0 = 3;
    0x000063fc str r6, [sp]                                      |     *(sp) = r6;
    0x000063fe bl 0x85e4                                         |     fcn_000085e4 (r0);
    0x00006402 b 0x634c                                          |     goto label_17;
                                                                 | label_95:
    0x00006404 ldr r3, [sp, 0x1c]                                |     r3 = var_1ch;
    0x00006406 movs r0, 3                                        |     r0 = 3;
    0x00006408 ldr r2, [sp, 0x38]                                |     r2 = var_38h;
    0x0000640a ldr r1, [sp, 0x44]                                |     r1 = var_44h;
    0x0000640c str r7, [sp]                                      |     *(sp) = r7;
    0x0000640e bl 0x85e4                                         |     fcn_000085e4 (r0);
    0x00006412 b 0x6178                                          |     goto label_9;
                                                                 | label_89:
    0x00006414 blx 0x1be4                                        |     r0 = isoc99_sscanf ();
    0x00006418 ldr r7, [r0]                                      |     r7 = *(r0);
    0x0000641a rsbs r7, r7, 0                                    |     r7 -= ;
                                                                 | label_40:
    0x0000641c cmp r7, 0                                         |     
                                                                 |     if (r7 >= 0) {
    0x0000641e bge.w 0x612a                                      |         goto label_18;
                                                                 |     }
    0x00006422 rsbs r0, r7, 0                                    |     r0 = r7 - ;
    0x00006424 blx 0x1b18                                        |     system (r0);
    0x00006426 sbcs.w r8, r8, pc, lsr 31                         |     __asm ("sbcs.w r8, r8, pc, lsr 31");
    0x0000642a asrs r0, r7, 0x13                                 |     r0 = r7 >> 0x13;
    0x0000642c mov r2, r0                                        |     r2 = r0;
    0x0000642e movs r0, 2                                        |     r0 = 2;
    0x00006430 add r1, pc                                        |     r1 += pc;
    0x00006432 bl 0x85e4                                         |     fcn_000085e4 (r0);
    0x00006434 ldr.w r4, [r7, 0x630]                             |     r4 = *((r7 + 0x630));
    0x00006438 bl 0xa164                                         |     fcn_0000a164 (r0);
    0x0000643c b 0x5e46                                          |     goto label_11;
                                                                 | label_23:
    0x0000643e ldr r2, [sp, 0x20]                                |     r2 = stream;
    0x00006440 ldr.w sl, [sp, 0x38]                              |     sl = var_38h;
    0x00006444 ldr.w fp, [sp, 0x40]                              |     fp = var_40h;
    0x00006448 subw r3, r2, 0xaac                                |     __asm ("subw r3, r2, 0xaac");
    0x0000644c ldr r1, [r3]                                      |     r1 = *(r3);
    0x0000644e subw r3, r2, 0xaa8                                |     __asm ("subw r3, r2, 0xaa8");
    0x00006452 ldr.w sb, [r3]                                    |     sb = *(r3);
    0x00006456 str r1, [sp, 0x54]                                |     var_54h = r1;
    0x00006458 cmp r1, 0                                         |     
                                                                 |     if (r1 == 0) {
    0x0000645a beq.w 0x656e                                      |         goto label_22;
                                                                 |     }
    0x0000645e ldr.w r3, [pc, 0x4c8]                             |     
    0x00006462 ldr.w r6, [pc, 0x4c8]                             |     
    0x00006466 strd sl, fp, [sp, 0x64]                           |     __asm ("strd sl, fp, [var_0h_2x64]");
    0x0000646a add r3, pc                                        |     r3 = 0xcd98;
    0x0000646c ldr.w fp, [sp, 0x34]                              |     fp = var_34h;
    0x0000646e add sp, 0xd0                                      |     
    0x00006470 str r3, [sp, 0x58]                                |     var_58h = r3;
    0x00006472 add r6, pc                                        |     r6 = 0xcda4;
    0x00006474 ldr.w r3, [pc, 0x4b8]                             |     
    0x00006478 ldr r7, [sp, 0x28]                                |     r7 = var_28h;
    0x0000647a ldr r5, [sp, 0x18]                                |     r5 = var_18h;
    0x0000647c add r3, pc                                        |     
    0x0000647e str.w sb, [sp, 0x6c]                              |     __asm ("str.w sb, [var_6ch]");
    0x00006482 str r3, [sp, 0x1c]                                |     var_1ch = r3;
    0x00006484 ldr.w r3, [pc, 0x4ac]                             |     r3 = fcn.0000d5fc;
    0x00006488 add r3, pc                                        |     r3 = "built-in";
    0x0000648a str r3, [sp, 0x30]                                |     var_30h = r3;
    0x0000648c sub.w r3, sb, 4                                   |     r3 = sb - 4;
    0x0000648e lsls r4, r0, 0xc                                  |     r4 = r0 << 0xc;
    0x00006490 mov sb, r6                                        |     sb = r6;
    0x00006492 str r3, [sp, 0x40]                                |     var_40h = r3;
    0x00006494 movs r3, 0                                        |     r3 = 0;
    0x00006496 str r3, [sp, 0x38]                                |     var_38h = r3;
                                                                 | label_19:
    0x00006498 ldr r3, [sp, 0x40]                                |     r3 = var_40h;
    0x0000649a mov r8, r5                                        |     r8 = r5;
    0x0000649c ldr r1, [sp, 0x58]                                |     r1 = var_58h;
    0x0000649e ldr r2, [r3, 4]!                                  |     r2 = *((r3 += 4));
    0x000064a2 strd r3, r2, [sp, 0x40]                           |     __asm ("strd r3, r2, [sp, 0x40]");
    0x000064a6 movs r3, 0                                        |     r3 = 0;
    0x000064a8 str r3, [r7]                                      |     *(r7) = r3;
    0x000064aa add.w r3, r2, 0xc                                 |     r3 = r2 + 0xc;
    0x000064ac lsls r4, r1, 0xc                                  |     r4 = r1 << 0xc;
    0x000064ae mov r0, r3                                        |     r0 = r3;
    0x000064b0 str r3, [sp, 0x2c]                                |     var_2ch = r3;
    0x000064b2 blx 0x1d4c                                        |     r0 = fstat64 ();
    0x000064b6 mov r6, r0                                        |     r6 = r0;
    0x000064b8 cmp r0, 0                                         |     
                                                                 |     if (r0 != 0) {
    0x000064ba bne 0x653e                                        |         goto label_105;
                                                                 |     }
    0x000064bc b.w 0x7602                                        |     goto label_106;
                                                                 |     do {
    0x000064c0 ldrb r3, [r4]                                     |         r3 = *(r4);
    0x000064c2 cmp r3, 0x23                                      |         
    0x000064c4 it ne                                             |         
                                                                 |         if (r3 != 0x23) {
    0x000064c6 cmpne r3, 0                                       |             __asm ("cmpne r3, 0");
                                                                 |         }
                                                                 |         if (r3 != 0x23) {
    0x000064c8 beq 0x6538                                        |             
    0x000064ca mov r2, r8                                        |             r2 = r8;
    0x000064cc mov r1, sb                                        |             r1 = sb;
    0x000064ce blx 0x1aac                                        |             r0 = opendir ();
    0x000064d2 mov r5, r0                                        |             r5 = r0;
                                                                 |             if (r0 == 0) {
    0x000064d4 cbz r0, 0x6538                                    |                 goto label_28;
                                                                 |             }
    0x000064d6 ldr r1, [sp, 0x1c]                                |             r1 = var_1ch;
    0x000064d8 blx 0x1924                                        |             r0 = fcn_00001924 ();
    0x000064dc cmp r0, 0                                         |             
                                                                 |             if (r0 == 0) {
    0x000064de beq.w 0x6876                                      |                 goto label_107;
                                                                 |             }
    0x000064e2 ldr r1, [sp, 0x30]                                |             r1 = var_30h;
    0x000064e4 mov r0, r5                                        |             r0 = r5;
    0x000064e6 blx 0x1924                                        |             r0 = fcn_00001924 ();
    0x000064ea mov sl, r0                                        |             sl = r0;
    0x000064ec cmp r0, 0                                         |             
                                                                 |             if (r0 == 0) {
    0x000064ee beq.w 0x697c                                      |                 goto label_108;
                                                                 |             }
    0x000064f2 ldr.w r1, [pc, 0x444]                             |             
    0x000064f6 mov r0, r5                                        |             r0 = r5;
    0x000064f8 add r1, pc                                        |             r1 = 0xce36;
    0x000064fa blx 0x1924                                        |             r0 = fcn_00001924 ();
    0x000064fe mov sl, r0                                        |             sl = r0;
    0x00006500 cmp r0, 0                                         |             
                                                                 |             if (r0 == 0) {
    0x00006502 beq.w 0x6a46                                      |                 goto label_109;
                                                                 |             }
    0x00006506 ldr.w r1, [pc, 0x434]                             |             
    0x0000650a mov r0, r5                                        |             r0 = r5;
    0x0000650c add r1, pc                                        |             r1 = 0xce4e;
    0x0000650e blx 0x1924                                        |             r0 = fcn_00001924 ();
                                                                 |             if (r0 != 0) {
    0x00006512 cbz r0, 0x6526                                    |                 
    0x00006514 ldr.w r1, [pc, 0x428]                             |                 
    0x00006518 mov r0, r5                                        |                 r0 = r5;
    0x0000651a add r1, pc                                        |                 r1 = 0xce5e;
    0x0000651c blx 0x1924                                        |                 r0 = fcn_00001924 ();
    0x00006520 cmp r0, 0                                         |                 
                                                                 |                 if (r0 != 0) {
    0x00006522 bne.w 0x6864                                      |                     goto label_29;
                                                                 |                 }
                                                                 |             }
    0x00006526 ldr.w r1, [pc, 0x41c]                             |             
    0x0000652a movs r0, 6                                        |             r0 = 6;
    0x0000652c str r5, [sp]                                      |             *(sp) = r5;
    0x0000652e ldr r3, [r7]                                      |             r3 = *(r7);
    0x00006530 ldr r2, [sp, 0x2c]                                |             r2 = var_2ch;
    0x00006532 add r1, pc                                        |             r1 = 0xce7c;
    0x00006534 bl 0x85e4                                         |             fcn_000085e4 (r0);
                                                                 |         }
                                                                 | label_28:
    0x00006538 mov r0, r4                                        |         r0 = r4;
    0x0000653a blx 0x19a0                                        |         fcn_000019a0 ();
                                                                 | label_105:
    0x0000653e mov r1, r7                                        |         r1 = r7;
    0x00006540 mov r0, r6                                        |         r0 = r6;
    0x00006542 bl 0x9550                                         |         r0 = fcn_00009550 (r0, r1);
    0x00006546 mov r4, r0                                        |         r4 = r0;
    0x00006548 cmp r0, 0                                         |         
    0x0000654a bne 0x64c0                                        |         
                                                                 |     } while (r0 != 0);
    0x0000654c mov r0, r6                                        |     r0 = r6;
    0x0000654e mov r5, r8                                        |     r5 = r8;
    0x00006550 blx 0x1c84                                        |     fcn_00001c84 ();
                                                                 | label_59:
    0x00006554 ldr r0, [sp, 0x44]                                |     r0 = var_44h;
    0x00006556 blx 0x19a0                                        |     fcn_000019a0 ();
    0x0000655a ldr r3, [sp, 0x38]                                |     r3 = var_38h;
    0x0000655c ldr r2, [sp, 0x54]                                |     r2 = var_54h;
    0x0000655e adds r3, 1                                        |     r3++;
    0x00006560 cmp r2, r3                                        |     
    0x00006562 str r3, [sp, 0x38]                                |     var_38h = r3;
                                                                 |     if (r2 != r3) {
    0x00006564 bne 0x6498                                        |         goto label_19;
                                                                 |     }
    0x00006566 ldrd sl, fp, [sp, 0x64]                           |     __asm ("ldrd sl, fp, [var_64h]");
    0x0000656a ldr.w sb, [sp, 0x6c]                              |     sb = var_6ch;
    0x0000656c str r0, [sp, 0x1b0]                               |     *((sp + 0x1b0)) = r0;
                                                                 | label_22:
    0x0000656e mov r0, sb                                        |     r0 = sb;
    0x00006570 blx 0x19a0                                        |     fcn_000019a0 ();
    0x00006572 ands.w fp, r6, r8, lsl 4                          |     
    0x00006574 ldr r3, [sp, 0x20]                                |     r3 = stream;
    0x00006576 ldr.w r3, [r3, 0x7e8]                             |     r3 = *((r3 + 0x7e8));
    0x00006578 adds r7, 0xe8                                     |     r7 += 0xe8;
    0x0000657a cmp r3, 0                                         |     
                                                                 |     if (r3 == 0) {
    0x0000657c beq.w 0x7154                                      |         goto label_110;
                                                                 |     }
                                                                 | label_47:
    0x00006580 ldr r3, [sp, 0x20]                                |     r3 = stream;
    0x00006582 ldr r5, [sp, 0x4c]                                |     r5 = var_4h;
    0x00006584 subw r4, r3, 0xaa4                                |     __asm ("subw r4, r3, 0xaa4");
    0x00006588 ldr r1, [r4]                                      |     r1 = *(r4);
    0x0000658a mov r0, r5                                        |     r0 = r5;
    0x0000658c adds r1, 4                                        |     r1 += 4;
    0x0000658e bl 0x5c4c                                         |     r0 = void (*0x5c4c)(uint32_t, uint32_t, uint32_t, uint32_t, uint32_t, uint32_t, uint32_t) (r0, r1, r2, r3, r4, r5, r6);
    0x00006592 cmp r0, 0                                         |     
                                                                 |     if (r0 < 0) {
    0x00006594 blt.w 0x7164                                      |         goto label_111;
                                                                 |     }
    0x00006598 ldr r3, [r4]                                      |     r3 = *(r4);
    0x0000659a add.w r3, r3, 0x1000                              |     r3 += 0x1000;
    0x0000659e ldr r4, [r3, 0x14]                                |     r4 = *((r3 + 0x14));
                                                                 |     if (r4 == 0) {
    0x000065a0 cbz r4, 0x65b2                                    |         goto label_43;
                                                                 |     }
                                                                 |     do {
    0x000065a2 add.w r1, r4, 8                                   |         r1 = r4 + 8;
    0x000065a6 mov r0, r5                                        |         r0 = r5;
    0x000065a8 bl 0x5c4c                                         |         void (*0x5c4c)(uint32_t, uint32_t, uint32_t, uint32_t, uint32_t, uint32_t, uint32_t) (r0, r1, r2, r3, r4, r5, r6);
    0x000065ac ldr r4, [r4]                                      |         r4 = *(r4);
    0x000065ae cmp r4, 0                                         |         
    0x000065b0 bne 0x65a2                                        |         
                                                                 |     } while (r4 != 0);
                                                                 | label_43:
    0x000065b2 ldr r3, [sp, 0x20]                                |     r3 = stream;
    0x000065b4 ldr r7, [sp, 0x18]                                |     r7 = var_18h;
    0x000065b6 subw r5, r3, 0xaa4                                |     __asm ("subw r5, r3, 0xaa4");
    0x000065ba ldr r0, [r5, 0x1c]                                |     r0 = *((r5 + 0x1c));
    0x000065bc mov r1, r7                                        |     r1 = r7;
    0x000065be bl 0x91d8                                         |     fcn_000091d8 (r0, r1);
    0x000065c2 ldr r4, [sp, 0x28]                                |     r4 = var_28h;
    0x000065c4 sub.w r6, r4, 0x1c                                |     r6 = r4 - 0x1c;
    0x000065c8 b 0x65dc                                          |     
                                                                 |     while (r0 != 0) {
    0x000065ca ldr r1, [r4]                                      |         r1 = *(r4);
    0x000065cc mov r0, r6                                        |         r0 = r6;
    0x000065ce ldr r3, [r5, 0xc]                                 |         r3 = *((r5 + 0xc));
    0x000065d0 strh r3, [r1, 0x38]                               |         *((r1 + 0x38)) = r3;
    0x000065d2 bl 0x8b98                                         |         r0 = fcn_00008b98 (r0, r1);
    0x000065d6 cmp r0, 0                                         |         
                                                                 |         if (r0 < 0) {
    0x000065d8 blt.w 0x7106                                      |             goto label_112;
                                                                 |         }
    0x000065dc mov r2, r4                                        |         r2 = r4;
    0x000065de movs r1, 0                                        |         r1 = 0;
    0x000065e0 mov r0, r7                                        |         r0 = r7;
    0x000065e2 bl 0x91e8                                         |         r0 = fcn_000091e8 (r0, r1, r2, r3);
    0x000065e6 cmp r0, 0                                         |         
    0x000065e8 bne 0x65ca                                        |         
                                                                 |     }
    0x000065ea ldr r3, [sp, 0x20]                                |     r3 = stream;
    0x000065ec mov r4, r0                                        |     r4 = r0;
    0x000065ee ldr r1, [pc, 0x358]                               |     
    0x000065f0 subw r3, r3, 0xaa4                                |     __asm ("subw r3, r3, 0xaa4");
    0x000065f4 ldr r0, [r3]                                      |     r0 = *(r3);
    0x000065f6 add r1, pc                                        |     r1 = 0xcf44;
    0x000065f8 adds r0, 4                                        |     r0 += 4;
    0x000065fa bl 0x5238                                         |     r0 = fcn_00005238 (r0, r1);
    0x000065fe mov r5, r0                                        |     r5 = r0;
                                                                 |     if (r0 == 0) {
    0x00006600 cbz r0, 0x6652                                    |         goto label_113;
                                                                 |     }
    0x00006602 add.w r6, sp, 0x1300                              |     r6 += ptr;
    0x00006606 adds r6, 0x1c                                     |     r6 += 0x1c;
    0x00006608 mov r7, r6                                        |     r7 = r6;
                                                                 |     do {
                                                                 | label_20:
    0x0000660a mov r2, r5                                        |         r2 = r5;
    0x0000660c mov.w r1, 0x1000                                  |         r1 = 0x1000;
    0x00006610 mov r0, r6                                        |         r0 = r6;
    0x00006612 blx 0x19ac                                        |         r0 = fcn_000019ac ();
    0x00006616 cmp r0, 0                                         |         
                                                                 |         if (r0 == 0) {
    0x00006618 beq.w 0x7026                                      |             goto label_114;
                                                                 |         }
    0x0000661c mov r0, r6                                        |         r0 = r6;
    0x0000661e adds r4, 1                                        |         r4++;
    0x00006620 blx 0x1bb0                                        |         r0 = fcn_00001bb0 ();
    0x00006624 cmp r0, 0                                         |         
    0x00006626 beq 0x660a                                        |         
                                                                 |     } while (r0 == 0);
    0x00006628 add r0, r7                                        |     r0 += r7;
    0x0000662a ldrb r3, [r0, -0x1]                               |     r3 = *((r0 - 0x1));
    0x0000662e cmp r3, 0xa                                       |     
                                                                 |     if (r3 == 0xa) {
    0x00006630 beq 0x660a                                        |         goto label_20;
                                                                 |     }
    0x00006632 ldr r3, [sp, 0x20]                                |     r3 = stream;
    0x00006634 movs r0, 3                                        |     r0 = 3;
    0x00006636 ldr r1, [pc, 0x314]                               |     
    0x00006638 str r4, [sp]                                      |     *(sp) = r4;
    0x0000663a subw r3, r3, 0xaa4                                |     __asm ("subw r3, r3, 0xaa4");
    0x0000663e ldr r2, [r3]                                      |     r2 = *(r3);
    0x00006640 add r1, pc                                        |     r1 = 0xcf92;
    0x00006642 ldr r3, [pc, 0x30c]                               |     
    0x00006644 adds r2, 4                                        |     r2 += 4;
    0x00006646 add r3, pc                                        |     r3 = 0xcf9c;
    0x00006648 bl 0x85e4                                         |     fcn_000085e4 (r0);
                                                                 | label_42:
    0x0000664c mov r0, r5                                        |     r0 = r5;
    0x0000664e blx 0x1c84                                        |     fcn_00001c84 ();
                                                                 | label_113:
    0x00006652 ldr r3, [sp, 0x20]                                |     r3 = stream;
    0x00006654 movs r0, 7                                        |     r0 = 7;
    0x00006656 ldr r1, [pc, 0x2fc]                               |     
    0x00006658 subw r4, r3, 0xaa4                                |     __asm ("subw r4, r3, 0xaa4");
    0x0000665c ldr r2, [r4, 0xc]                                 |     r2 = *((r4 + 0xc));
    0x0000665e add r1, pc                                        |     r1 = 0xcfb8;
    0x00006660 bl 0x85e4                                         |     fcn_000085e4 (r0);
    0x00006664 ldrd r6, r2, [r4, 8]                              |     __asm ("ldrd r6, r2, [r4, 8]");
    0x00006668 add.w r8, r6, r2, lsl 2                           |     r8 = r6 + (r2 << 2);
    0x0000666c cmp r6, r8                                        |     
                                                                 |     if (r6 >= r8) {
    0x0000666e bhs.w 0x6b26                                      |         goto label_115;
                                                                 |     }
    0x00006672 ldr r3, [pc, 0x2e4]                               |     
    0x00006674 ldr r2, [sp, 0x20]                                |     r2 = stream;
    0x00006676 strd sl, fp, [sp, 0x28]                           |     __asm ("strd sl, fp, [var_0h_2x28]");
    0x0000667a add r3, pc                                        |     r3 = 0xcfd8;
    0x0000667c ldr r7, [sp, 0x4c]                                |     r7 = var_4h;
    0x0000667e ldr.w sb, [sp, 0x18]                              |     sb = var_18h;
    0x00006682 subw r5, r2, 0xa18                                |     __asm ("subw r5, r2, 0xa18");
    0x00006686 mov sl, r3                                        |     sl = r3;
    0x00006688 str r6, [sp, 0x1c]                                |     var_1ch = r6;
    0x0000668a b 0x66ca                                          |     
                                                                 |     while (r0 < 0) {
    0x0000668c adds r3, r0, 2                                    |         r3 = r0 + 2;
    0x0000668e ldr r6, [r4, 4]                                   |         r6 = *((r4 + 4));
                                                                 |         if (r3 == r0) {
    0x00006690 beq 0x6716                                        |             goto label_116;
                                                                 |         }
    0x00006692 rsbs r0, r0, 0                                    |         r0 -= ;
    0x00006694 blx 0x1b18                                        |         system (r0);
    0x00006698 mov r2, r6                                        |         r2 = r6;
    0x0000669a mov r3, r0                                        |         r3 = r0;
    0x0000669c mov r1, sl                                        |         r1 = sl;
    0x0000669e movs r0, 3                                        |         r0 = 3;
    0x000066a0 bl 0x85e4                                         |         fcn_000085e4 (r0);
                                                                 | label_21:
    0x000066a4 mov r1, r4                                        |         r1 = r4;
    0x000066a6 ldr r0, [r1], 0x10                                |         r0 = *(r1);
                                                                 |         r1 += 0x10;
    0x000066aa bl 0xdfec                                         |         fcn_0000dfec (r0, r1);
    0x000066ae mov r1, r4                                        |         r1 = r4;
    0x000066b0 ldr r0, [r1], 0x14                                |         r0 = *(r1);
                                                                 |         r1 += 0x14;
    0x000066b4 bl 0xe4cc                                         |         fcn_0000e4cc (r0, r1);
    0x000066b8 ldr r0, [r4]                                      |         r0 = *(r4);
    0x000066ba bl 0xcd5c                                         |         fcn_0000cd5c (r0);
    0x000066be movs r3, 0                                        |         r3 = 0;
    0x000066c0 str r3, [r4]                                      |         *(r4) = r3;
    0x000066c2 ldr r3, [sp, 0x1c]                                |         r3 = var_1ch;
    0x000066c4 cmp r8, r3                                        |         
                                                                 |         if (r8 < r3) {
    0x000066c6 bls.w 0x6b22                                      |             goto label_117;
                                                                 |         }
    0x000066ca ldr r3, [sp, 0x1c]                                |         r3 = var_1ch;
    0x000066cc mov r1, sb                                        |         r1 = sb;
    0x000066ce ldr r4, [r3], 4                                   |         r4 = *(r3);
                                                                 |         r3 += 4;
    0x000066d2 str r3, [sp, 0x1c]                                |         var_1ch = r3;
    0x000066d4 movs r3, 0                                        |         r3 = 0;
    0x000066d6 ldr r0, [r4]                                      |         r0 = *(r4);
    0x000066d8 str r3, [r5]                                      |         *(r5) = r3;
    0x000066da bl 0xe378                                         |         r0 = fcn_0000e378 (r0, r1);
    0x000066de cmp r0, 0                                         |         
    0x000066e0 blt 0x668c                                        |         
                                                                 |     }
    0x000066e2 ldr r6, [r5]                                      |     r6 = *(r5);
                                                                 |     if (r6 == 0) {
                                                                 |         do {
    0x000066e4 cbz r6, 0x6712                                    |             goto label_118;
                                                                 |         }
    0x000066e6 mov r0, r6                                        |         r0 = r6;
    0x000066e8 bl 0xe33c                                         |         r0 = fcn_0000e33c (r0);
    0x000066ec mov fp, r0                                        |         
    0x000066ee mov r0, r6                                        |         r0 = r6;
    0x000066f0 bl 0xe348                                         |         fcn_0000e348 (r0);
    0x000066f4 movs r2, 0                                        |         r2 = 0;
    0x000066f6 strd r0, r1, [sp]                                 |         __asm ("strd r0, r1, [sp]");
    0x000066fa str r4, [sp, 8]                                   |         var_8h_2 = r4;
    0x000066fc mov r0, r7                                        |         r0 = r7;
    0x000066fe mov r1, fp                                        |         r1 = fp;
    0x00006700 bl 0x5330                                         |         fcn_00005330 (r0, r1, r2, r3);
    0x00006704 ldr r6, [r6]                                      |         r6 = *(r6);
    0x00006706 ldr r0, [r5]                                      |         r0 = *(r5);
    0x00006708 cmp r6, r0                                        |         
    0x0000670a bne 0x66e4                                        |         
                                                                 |     } while (r6 != r0);
                                                                 |     do {
    0x0000670c bl 0xe35c                                         |         fcn_0000e35c (r0);
    0x00006710 b 0x66a4                                          |         goto label_21;
                                                                 | label_118:
    0x00006712 ldr r0, [r5]                                      |         r0 = *(r5);
    0x00006714 b 0x670c                                          |         
                                                                 |     } while (1);
                                                                 | label_116:
    0x00006716 ldr r1, [pc, 0x244]                               |     
    0x00006718 mov r2, r6                                        |     r2 = r6;
    0x0000671a movs r0, 7                                        |     r0 = 7;
    0x0000671c add r1, pc                                        |     r1 = 0xd07e;
    0x0000671e bl 0x85e4                                         |     fcn_000085e4 (r0);
    0x00006722 b 0x66a4                                          |     goto label_21;
                                                                 | label_96:
    0x00006724 ldr r1, [sp, 0x20]                                |     r1 = stream;
    0x00006726 movs r3, 0                                        |     r3 = 0;
    0x00006728 subw r2, r1, 0xaac                                |     __asm ("subw r2, r1, 0xaac");
    0x0000672c str r3, [r2]                                      |     *(r2) = r3;
    0x0000672e subw r2, r1, 0xaa8                                |     __asm ("subw r2, r1, 0xaa8");
    0x00006732 str r3, [r2]                                      |     *(r2) = r3;
    0x00006734 mov r3, fp                                        |     r3 = fp;
    0x00006736 cmp.w fp, 0                                       |     
                                                                 |     if (fp == 0) {
    0x0000673a beq.w 0x711e                                      |         goto label_119;
                                                                 |     }
    0x0000673c strh r0, [r6, 0x26]                               |     *((r6 + 0x26)) = r0;
                                                                 | label_44:
    0x0000673e ldr.w sb, [r3]                                    |     sb = *(r3);
    0x00006742 cmp.w sb, 0                                       |     
                                                                 |     if (sb == 0) {
    0x00006746 beq.w 0x656e                                      |         goto label_22;
                                                                 |     }
    0x0000674a ldr r2, [pc, 0x214]                               |     
    0x0000674c mov r5, sb                                        |     r5 = sb;
    0x0000674e ldr r7, [pc, 0x214]                               |     
    0x00006750 ldr r6, [pc, 0x214]                               |     
    0x00006752 add r2, pc                                        |     r2 = 0xd0b8;
    0x00006754 str.w sl, [sp, 0x38]                              |     __asm ("str.w sl, [var_38h]");
    0x00006758 str r2, [sp, 0x30]                                |     var_30h = r2;
    0x0000675a add r7, pc                                        |     r7 = 0xd0c4;
    0x0000675c ldr r2, [pc, 0x20c]                               |     
    0x0000675e add r6, pc                                        |     r6 = 0xd0ca;
    0x00006760 ldr.w sb, [sp, 0x28]                              |     sb = var_28h;
    0x00006764 mov sl, r3                                        |     sl = r3;
    0x00006766 str.w fp, [sp, 0x40]                              |     __asm ("str.w fp, [var_40h]");
    0x0000676a add r2, pc                                        |     r2 = 0xd0da;
    0x0000676c str r2, [sp, 0x2c]                                |     var_2ch = r2;
    0x0000676e b 0x678a                                          |     goto label_120;
                                                                 | label_24:
    0x00006770 mov r3, r0                                        |     r3 = r0;
    0x00006772 mov r2, r5                                        |     r2 = r5;
    0x00006774 sub.w r1, sb, 0x2c                                |     r1 = sb - 0x2c;
    0x00006778 sub.w r0, sb, 0x28                                |     r0 = sb - 0x28;
    0x0000677c bl 0x5458                                         |     fcn_00005458 (r0, r1, r2, r3, r4);
                                                                 | label_27:
    0x00006780 ldr r5, [sl, 4]!                                  |     r5 = *((sl += 4));
    0x00006784 cmp r5, 0                                         |     
                                                                 |     if (r5 == 0) {
    0x00006786 beq.w 0x643e                                      |         goto label_23;
                                                                 |     }
                                                                 | label_120:
    0x0000678a mov r1, sb                                        |     r1 = sb;
    0x0000678c mov r0, r5                                        |     r0 = r5;
    0x0000678e blx 0x1a28                                        |     r0 = realloc (r0, r1);
    0x00006792 cmp r0, 0                                         |     
                                                                 |     if (r0 != 0) {
    0x00006794 bne 0x684c                                        |         goto label_121;
                                                                 |     }
    0x00006796 ldr.w r2, [sb, 0x10]                              |     r2 = *((sb + 0x10));
    0x0000679a and r2, r2, 0xf000                                |     r2 &= 0xf000;
    0x0000679e cmp.w r2, 0x4000                                  |     
                                                                 |     if (r2 != 0x4000) {
    0x000067a2 bne 0x6770                                        |         goto label_24;
                                                                 |     }
    0x000067a4 mov r0, r5                                        |     r0 = r5;
    0x000067a6 blx 0x1ab8                                        |     r0 = fnmatch ();
    0x000067aa mov r8, r0                                        |     r8 = r0;
    0x000067ac cmp r0, 0                                         |     
                                                                 |     if (r0 == 0) {
    0x000067ae beq.w 0x7516                                      |         goto label_122;
                                                                 |     }
    0x000067b2 blx 0x1cf4                                        |     r0 = fcn_00001cf4 ();
    0x000067b6 cmp r0, 0                                         |     
                                                                 |     if (r0 == 0) {
    0x000067b8 beq 0x683a                                        |         goto label_123;
                                                                 |     }
    0x000067ba str.w sl, [sp, 0x1c]                              |     __asm ("str.w sl, [var_1ch]");
    0x000067be mov sl, r0                                        |     sl = r0;
    0x000067c0 ldr.w fp, [sp, 0x18]                              |     fp = var_18h;
    0x000067c4 b 0x6802                                          |     goto label_124;
                                                                 | label_25:
    0x000067c6 mov r0, r8                                        |     r0 = r8;
    0x000067c8 blx 0x1d40                                        |     renameat ();
    0x000067cc mov r3, sl                                        |     r3 = sl;
    0x000067ce mov r2, fp                                        |     r2 = fp;
    0x000067d0 mov r1, r4                                        |     r1 = r4;
    0x000067d2 blx 0x1adc                                        |     asprintf_chk ();
    0x000067d6 ldr r3, [sp, 0x20]                                |     r3 = stream;
    0x000067d8 mov r2, r5                                        |     r2 = r5;
    0x000067da subw r3, r3, 0xa18                                |     __asm ("subw r3, r3, 0xa18");
    0x000067de ldr r3, [r3, 0x10]                                |     r3 = *((r3 + 0x10));
    0x000067e0 and r3, r3, 0xf000                                |     r3 &= 0xf000;
    0x000067e4 cmp.w r3, 0x4000                                  |     
    0x000067e8 mov r3, r4                                        |     r3 = r4;
                                                                 |     if (r3 == 0x4000) {
    0x000067ea beq 0x685a                                        |         goto label_125;
                                                                 |     }
    0x000067ec sub.w r1, sb, 0x2c                                |     r1 = sb - 0x2c;
    0x000067f0 sub.w r0, sb, 0x28                                |     r0 = sb - 0x28;
    0x000067f4 bl 0x5458                                         |     fcn_00005458 (r0, r1, r2, r3, r4);
                                                                 |     do {
                                                                 | label_26:
    0x000067f8 mov r0, r8                                        |         r0 = r8;
    0x000067fa blx 0x1cf4                                        |         r0 = fcn_00001cf4 ();
    0x000067fe mov sl, r0                                        |         sl = r0;
                                                                 |         if (r0 == 0) {
    0x00006800 cbz r0, 0x6836                                    |             goto label_126;
                                                                 |         }
                                                                 | label_124:
    0x00006802 add.w r4, sl, 0x13                                |         r4 = sl + 0x13;
    0x00006806 mov r0, r4                                        |         r0 = r4;
    0x00006808 blx 0x1bb0                                        |         fcn_00001bb0 ();
    0x0000680c ldrb.w r3, [sl, 0x13]                             |         r3 = *((sl + 0x13));
    0x00006810 cmp r3, 0x2e                                      |         
    0x00006812 beq 0x67f8                                        |         
                                                                 |     } while (r3 == 0x2e);
    0x00006814 cmp r0, 5                                         |     
                                                                 |     if (r0 < 5) {
    0x00006816 bls 0x6828                                        |         goto label_127;
                                                                 |     }
    0x00006818 subs r0, 5                                        |     r0 -= 5;
    0x0000681a mov r1, r6                                        |     r1 = r6;
    0x0000681c add r0, r4                                        |     r0 += r4;
    0x0000681e blx 0x1924                                        |     r0 = fcn_00001924 ();
    0x00006822 mov sl, r0                                        |     sl = r0;
    0x00006824 cmp r0, 0                                         |     
                                                                 |     if (r0 == 0) {
    0x00006826 beq 0x67c6                                        |         goto label_25;
                                                                 |     }
                                                                 | label_127:
    0x00006828 mov r3, r4                                        |     r3 = r4;
    0x0000682a mov r2, r5                                        |     r2 = r5;
    0x0000682c mov r1, r7                                        |     r1 = r7;
    0x0000682e movs r0, 6                                        |     r0 = 6;
    0x00006830 bl 0x85e4                                         |     fcn_000085e4 (r0);
    0x00006834 b 0x67f8                                          |     goto label_26;
                                                                 | label_126:
    0x00006836 ldr.w sl, [sp, 0x1c]                              |     sl = var_1ch;
                                                                 | label_123:
    0x0000683a mov r0, r8                                        |     r0 = r8;
    0x0000683c blx 0x1dc8                                        |     fcn_00001dc8 ();
    0x00006840 ldr r1, [sp, 0x2c]                                |     r1 = var_2ch;
    0x00006842 mov r2, r5                                        |     r2 = r5;
    0x00006844 movs r0, 7                                        |     r0 = 7;
    0x00006846 bl 0x85e4                                         |     fcn_000085e4 (r0);
    0x0000684a b 0x6780                                          |     goto label_27;
                                                                 | label_121:
    0x0000684c ldr r1, [pc, 0x120]                               |     
    0x0000684e mov r2, r5                                        |     r2 = r5;
    0x00006850 movs r0, 7                                        |     r0 = 7;
    0x00006852 add r1, pc                                        |     r1 = 0xd1c6;
    0x00006854 bl 0x85e4                                         |     fcn_000085e4 (r0);
    0x00006856 mcr2 p7, 6, lr, c6, c2, 4                         |     __asm ("mcr2 p7, 6, lr, c6, c2, 4");
                                                                 | label_125:
    0x0000685a ldr r1, [sp, 0x30]                                |     r1 = var_30h;
    0x0000685c movs r0, 3                                        |     r0 = 3;
    0x0000685e bl 0x85e4                                         |     fcn_000085e4 (r0);
    0x00006862 b 0x67f8                                          |     goto label_26;
                                                                 | label_29:
    0x00006864 ldr r1, [pc, 0x10c]                               |     
    0x00006866 movs r0, 3                                        |     r0 = 3;
    0x00006868 str r5, [sp]                                      |     *(sp) = r5;
    0x0000686a ldr r3, [r7]                                      |     r3 = *(r7);
    0x0000686c ldr r2, [sp, 0x2c]                                |     r2 = var_2ch;
    0x0000686e add r1, pc                                        |     r1 = 0xd1e6;
    0x00006870 bl 0x85e4                                         |     fcn_000085e4 (r0);
    0x00006874 b 0x6538                                          |     goto label_28;
                                                                 | label_107:
    0x00006876 ldr r5, [pc, 0x100]                               |     
    0x00006878 add r5, pc                                        |     r5 = 0xd1f6;
    0x0000687a b 0x6882                                          |     
                                                                 |     while (r0 != 0) {
    0x0000687c mov r0, fp                                        |         r0 = fp;
    0x0000687e bl 0x5590                                         |         fcn_00005590 (r0, r1);
    0x00006882 mov r1, r5                                        |         r1 = r5;
    0x00006884 mov r2, r8                                        |         r2 = r8;
    0x00006886 movs r0, 0                                        |         r0 = 0;
    0x00006888 blx 0x1aac                                        |         r0 = opendir ();
    0x0000688c mov r1, r0                                        |         r1 = r0;
    0x0000688e cmp r0, 0                                         |         
    0x00006890 bne 0x687c                                        |         
                                                                 |     }
    0x00006892 b 0x6538                                          |     goto label_28;
                                                                 | label_108:
    0x0000697c mov r2, r8                                        |     r2 = r8;
    0x0000697e mov r1, sb                                        |     r1 = sb;
    0x00006980 blx 0x1aac                                        |     opendir ();
    0x00006984 mov r2, r8                                        |     r2 = r8;
    0x00006986 mov r1, sb                                        |     r1 = sb;
    0x00006988 str r0, [sp, 0x48]                                |     var_0h = r0;
    0x0000698a mov r0, sl                                        |     r0 = sl;
    0x0000698c blx 0x1aac                                        |     opendir ();
    0x00006990 mov r2, r8                                        |     r2 = r8;
    0x00006992 str r0, [sp, 0x50]                                |     var_8h = r0;
    0x00006994 mov r1, sb                                        |     r1 = sb;
    0x00006996 mov r0, sl                                        |     r0 = sl;
    0x00006998 blx 0x1aac                                        |     opendir ();
    0x0000699c ldr r2, [sp, 0x48]                                |     r2 = var_0h;
    0x0000699e mov sl, r0                                        |     sl = r0;
    0x000069a0 ldr r3, [sp, 0x50]                                |     r3 = var_8h;
    0x000069a2 cmp r3, 0                                         |     
    0x000069a4 it ne                                             |     
                                                                 |     if (r3 != 0) {
    0x000069a6 cmpne r2, 0                                       |         __asm ("cmpne r2, 0");
                                                                 |     }
    0x000069a8 ite eq                                            |     
                                                                 |     if (r3 != 0) {
    0x000069aa moveq r2, 1                                       |         r2 = 1;
                                                                 |     }
                                                                 |     if (r3 == 0) {
    0x000069ac movne r2, 0                                       |         r2 = 0;
                                                                 |     }
    0x000069ae cmp r0, 0                                         |     
    0x000069b0 it eq                                             |     
                                                                 |     if (r0 != 0) {
    0x000069b2 orreq r2, r2, 1                                   |         r2 |= 1;
                                                                 |     }
    0x000069b6 str r2, [sp, 0x50]                                |     var_8h = r2;
    0x000069b8 cmp r2, 0                                         |     
                                                                 |     if (r2 != 0) {
    0x000069ba bne.w 0x6864                                      |         goto label_29;
                                                                 |     }
    0x000069be mov r1, r3                                        |     r1 = r3;
    0x000069c0 mov r0, fp                                        |     r0 = fp;
    0x000069c2 str r3, [sp, 0x5c]                                |     var_14h = r3;
    0x000069c4 bl 0x51c0                                         |     fcn_000051c0 (r0, r1);
    0x000069c8 ldr r3, [sp, 0x5c]                                |     r3 = var_14h;
    0x000069ca cmp r0, 0                                         |     
                                                                 |     if (r0 == 0) {
    0x000069cc beq 0x6ac4                                        |         goto label_128;
                                                                 |     }
    0x000069ce ldr r0, [sp, 0x48]                                |     r0 = var_0h;
    0x000069d0 blx 0x1bb0                                        |     r0 = fcn_00001bb0 ();
    0x000069d4 mov r5, r0                                        |     r5 = r0;
    0x000069d6 str r0, [sp, 0x5c]                                |     var_14h = r0;
    0x000069d8 mov r0, sl                                        |     r0 = sl;
    0x000069da blx 0x1bb0                                        |     r0 = fcn_00001bb0 ();
    0x000069de mov r2, r0                                        |     r2 = r0;
    0x000069e0 adds r0, r5, r0                                   |     r0 = r5 + r0;
    0x000069e2 adds r0, 0xa                                      |     r0 += 0xa;
    0x000069e4 str r2, [sp, 0x60]                                |     var_60h = r2;
    0x000069e6 blx 0x1b0c                                        |     strerror (r0);
    0x000069ea ldr r2, [sp, 0x60]                                |     r2 = var_60h;
    0x000069ec mov r5, r0                                        |     r5 = r0;
    0x000069ee cmp r0, 0                                         |     
                                                                 |     if (r0 == 0) {
    0x000069f0 beq.w 0x7612                                      |         goto label_129;
                                                                 |     }
    0x000069f2 strh r7, [r1, 0x30]                               |     *((r1 + 0x30)) = r7;
    0x000069f4 mov r1, sl                                        |     r1 = sl;
    0x000069f6 add.w sl, r0, 8                                   |     sl = r0 + 8;
    0x000069fa mov r0, sl                                        |     r0 = sl;
    0x000069fc str r2, [sp, 0x60]                                |     var_60h = r2;
    0x000069fe blx 0x19c8                                        |     mmap64 ()
    0x00006a02 ldr r2, [sp, 0x60]                                |     r2 = var_60h;
    0x00006a04 movs r0, 0x2f                                     |     r0 = 0x2f;
    0x00006a06 ldr r1, [sp, 0x48]                                |     r1 = var_0h;
    0x00006a08 adds r3, r2, 1                                    |     r3 = r2 + 1;
    0x00006a0a add r2, r5                                        |     r2 += r5;
    0x00006a0c strb r0, [r2, 8]                                  |     *((r2 + 8)) = r0;
    0x00006a0e add.w r0, sl, r3                                  |     r0 = sl + r3;
    0x00006a12 ldr r2, [sp, 0x5c]                                |     r2 = var_14h;
    0x00006a14 str r3, [sp, 0x48]                                |     var_0h = r3;
    0x00006a16 blx 0x19c8                                        |     mmap64 ()
    0x00006a1a ldr r3, [sp, 0x48]                                |     r3 = var_0h;
    0x00006a1c ldr r2, [sp, 0x5c]                                |     r2 = var_14h;
    0x00006a1e ldr r0, [sp, 0x50]                                |     r0 = var_8h;
    0x00006a20 add r2, r3                                        |     r2 += r3;
    0x00006a22 mov r3, r2                                        |     r3 = r2;
    0x00006a24 mov r2, sl                                        |     r2 = sl;
    0x00006a26 adds r1, r5, r3                                   |     r1 = r5 + r3;
    0x00006a28 strb r0, [r1, 8]                                  |     *((r1 + 8)) = r0;
    0x00006a2a movs r0, 7                                        |     r0 = 7;
    0x00006a2c ldr.w r1, [pc, 0xc20]                             |     
    0x00006a30 str r3, [r5, 4]                                   |     *((r5 + 4)) = r3;
    0x00006a32 add r1, pc                                        |     r1 = 0xe086;
    0x00006a34 bl 0x85e4                                         |     fcn_000085e4 (r0);
    0x00006a38 ldr r2, [sp, 0x20]                                |     r2 = stream;
    0x00006a3a ldr.w r3, [r2, 0x7e4]                             |     r3 = *((r2 + 0x7e4));
    0x00006a3e str.w r5, [r2, 0x7e4]                             |     __asm ("str.w r5, [r2, 0x7e4]");
    0x00006a42 str r3, [r5]                                      |     *(r5) = r3;
    0x00006a44 b 0x6538                                          |     goto label_28;
                                                                 | label_109:
    0x00006a46 mov r2, r8                                        |     r2 = r8;
    0x00006a48 mov r1, sb                                        |     r1 = sb;
    0x00006a4a blx 0x1aac                                        |     r0 = opendir ();
    0x00006a4e mov r3, r0                                        |     r3 = r0;
    0x00006a50 mov r2, r8                                        |     r2 = r8;
    0x00006a52 mov r0, sl                                        |     r0 = sl;
    0x00006a54 mov r1, sb                                        |     r1 = sb;
    0x00006a56 mov sl, r3                                        |     sl = r3;
    0x00006a58 blx 0x1aac                                        |     r0 = opendir ();
    0x00006a5c cmp r0, 0                                         |     
    0x00006a5e it ne                                             |     
                                                                 |     if (r0 != 0) {
    0x00006a60 cmpne sl, 0                                       |         __asm ("cmpne sl, 0");
                                                                 |     }
    0x00006a64 str r0, [sp, 0x48]                                |     var_0h = r0;
                                                                 |     if (r0 == 0) {
    0x00006a66 beq.w 0x6864                                      |         goto label_29;
                                                                 |     }
    0x00006a6a mov r1, sl                                        |     r1 = sl;
    0x00006a6c mov r0, fp                                        |     r0 = fp;
    0x00006a6e bl 0x51c0                                         |     fcn_000051c0 (r0, r1);
    0x00006a72 ldr r3, [sp, 0x48]                                |     r3 = var_0h;
    0x00006a74 cmp r0, 0                                         |     
                                                                 |     if (r0 == 0) {
    0x00006a76 beq.w 0x6fd8                                      |         goto label_130;
                                                                 |     }
    0x00006a7a mov r0, r3                                        |     r0 = r3;
    0x00006a7c str r3, [sp, 0x48]                                |     var_0h = r3;
    0x00006a7e blx 0x1bb0                                        |     r0 = fcn_00001bb0 ();
    0x00006a82 mov sl, r0                                        |     sl = r0;
    0x00006a84 adds r0, 9                                        |     r0 += 9;
    0x00006a86 blx 0x1b0c                                        |     strerror (r0);
    0x00006a8a ldr r3, [sp, 0x48]                                |     r3 = var_0h;
    0x00006a8c mov r5, r0                                        |     r5 = r0;
    0x00006a8e cmp r0, 0                                         |     
                                                                 |     if (r0 == 0) {
    0x00006a90 beq.w 0x755c                                      |         goto label_131;
                                                                 |     }
    0x00006a94 mov r1, r3                                        |     r1 = r3;
    0x00006a96 add.w r3, r0, 8                                   |     r3 = r0 + 8;
    0x00006a9a mov r0, r3                                        |     r0 = r3;
    0x00006a9c add.w r2, sl, 1                                   |     r2 = sl + 1;
    0x00006aa0 blx 0x19c8                                        |     mmap64 ()
    0x00006aa4 ldr.w r1, [pc, 0xbac]                             |     
    0x00006aa8 mov r2, r0                                        |     r2 = r0;
    0x00006aaa str.w sl, [r5, 4]                                 |     __asm ("str.w sl, [r5, 4]");
    0x00006aae movs r0, 7                                        |     r0 = 7;
    0x00006ab0 add r1, pc                                        |     r1 = 0xe108;
    0x00006ab2 bl 0x85e4                                         |     fcn_000085e4 (r0);
    0x00006ab6 ldr r2, [sp, 0x20]                                |     r2 = stream;
    0x00006ab8 ldr.w r3, [r2, 0x7ec]                             |     r3 = *((r2 + 0x7ec));
    0x00006abc str.w r5, [r2, 0x7ec]                             |     __asm ("str.w r5, [r2, 0x7ec]");
    0x00006ac0 str r3, [r5]                                      |     *(r5) = r3;
    0x00006ac2 b 0x6538                                          |     goto label_28;
                                                                 | label_128:
    0x00006ac4 ldr.w r1, [pc, 0xb90]                             |     
    0x00006ac8 movs r0, 6                                        |     r0 = 6;
    0x00006aca str r3, [sp]                                      |     *(sp) = r3;
    0x00006acc ldr r3, [r7]                                      |     r3 = *(r7);
    0x00006ace ldr r2, [sp, 0x2c]                                |     r2 = var_2ch;
    0x00006ad0 add r1, pc                                        |     r1 = 0xe12c;
    0x00006ad2 bl 0x85e4                                         |     fcn_000085e4 (r0);
    0x00006ad6 b 0x6538                                          |     goto label_28;
                                                                 | label_88:
    0x00006ad8 ldr.w r1, [pc, 0xb80]                             |     
    0x00006adc mov r2, r7                                        |     r2 = r7;
    0x00006ade movs r0, 2                                        |     r0 = 2;
    0x00006ae0 add r1, pc                                        |     r1 = 0xe140;
    0x00006ae2 bl 0x85e4                                         |     fcn_000085e4 (r0);
    0x00006ae6 b.w 0x5e46                                        |     goto label_11;
                                                                 | label_87:
    0x00006aea blx 0x1be4                                        |     isoc99_sscanf ();
    0x00006aee ldr.w r1, [pc, 0xb70]                             |     
    0x00006af2 mov r2, r6                                        |     r2 = r6;
    0x00006af4 ldr r3, [r0]                                      |     r3 = *(r0);
    0x00006af6 movs r0, 3                                        |     r0 = 3;
    0x00006af8 add r1, pc                                        |     r1 = 0xe15e;
    0x00006afa rsbs r6, r3, 0                                    |     r6 = r3 - ;
    0x00006afc bl 0x85e4                                         |     fcn_000085e4 (r0);
    0x00006b00 mov r0, r7                                        |     r0 = r7;
    0x00006b02 blx 0x1dc8                                        |     fcn_00001dc8 ();
    0x00006b06 b.w 0x60ac                                        |     goto label_30;
                                                                 | label_100:
    0x00006b0a ldr r3, [sp, 0x30]                                |     r3 = var_30h;
    0x00006b0c movs r0, 3                                        |     r0 = 3;
    0x00006b0e ldr.w r1, [pc, 0xb54]                             |     
    0x00006b12 ldr r3, [r3]                                      |     r3 = *(r3);
    0x00006b14 add r1, pc                                        |     r1 = 0xe17e;
    0x00006b16 ldr.w r2, [r4, r3, lsl 2]                         |     offset_2 = r3 << 2;
                                                                 |     r2 = *((r4 + offset_2));
    0x00006b1a bl 0x85e4                                         |     fcn_000085e4 (r0);
    0x00006b1e b.w 0x5e46                                        |     goto label_11;
                                                                 |     if (r2 == 0) {
    0x00006b20 cbnz r2, 0x6b48                                   |         
                                                                 | label_117:
    0x00006b22 ldrd sl, fp, [sp, 0x28]                           |         __asm ("ldrd sl, fp, [var_28h]");
                                                                 | label_115:
    0x00006b26 ldr r3, [sp, 0x20]                                |         r3 = stream;
    0x00006b28 subw r4, r3, 0xaa4                                |         __asm ("subw r4, r3, 0xaa4");
    0x00006b2c ldr r0, [r4, 0x20]                                |         r0 = *((r4 + 0x20));
    0x00006b2e ldr r5, [r4, 0xc]                                 |         r5 = *((r4 + 0xc));
    0x00006b30 bl 0x91d4                                         |         fcn_000091d4 (r0);
    0x00006b34 ldr.w r1, [pc, 0xb30]                             |         
    0x00006b38 mov r3, r0                                        |         r3 = r0;
    0x00006b3a mov r2, r5                                        |         r2 = r5;
    0x00006b3c movs r0, 7                                        |         r0 = 7;
    0x00006b3e add r1, pc                                        |         r1 = 0xe1aa;
    0x00006b40 bl 0x85e4                                         |         fcn_000085e4 (r0);
    0x00006b44 ldr r0, [r4, 0x20]                                |         r0 = *((r4 + 0x20));
    0x00006b46 ldr r5, [r4, 0xc]                                 |         r5 = *((r4 + 0xc));
                                                                 |     }
    0x00006b48 bl 0x91d4                                         |     fcn_000091d4 (r0);
    0x00006b4c ldr.w r1, [pc, 0xb1c]                             |     
    0x00006b50 mov r3, r0                                        |     r3 = r0;
    0x00006b52 mov r2, r5                                        |     r2 = r5;
    0x00006b54 movs r0, 7                                        |     r0 = 7;
    0x00006b56 add r1, pc                                        |     r1 = 0xe1c6;
    0x00006b58 bl 0x85e4                                         |     fcn_000085e4 (r0);
    0x00006b5c ldrd r3, r2, [r4, 8]                              |     __asm ("ldrd r3, r2, [r4, 8]");
    0x00006b60 add.w r2, r3, r2, lsl 2                           |     r2 = r3 + (r2 << 2);
    0x00006b64 cmp r3, r2                                        |     
    0x00006b66 str r2, [sp, 0x44]                                |     var_44h = r2;
                                                                 |     if (r3 >= r2) {
    0x00006b68 bhs.w 0x6c94                                      |         goto label_132;
                                                                 |     }
    0x00006b6c str r3, [sp, 0x2c]                                |     var_2ch = r3;
    0x00006b6e ldr.w r3, [pc, 0xb00]                             |     
    0x00006b72 ldr.w r2, [pc, 0xb00]                             |     
    0x00006b76 strd sl, fp, [sp, 0x50]                           |     __asm ("strd sl, fp, [var_0h_2x50]");
    0x00006b7a add r3, pc                                        |     r3 = 0xe1f0;
    0x00006b7c str r3, [sp, 0x48]                                |     var_0h = r3;
    0x00006b7e add r2, pc                                        |     r2 = 0xe1f8;
    0x00006b80 ldr.w r3, [pc, 0xaf4]                             |     
    0x00006b84 str r2, [sp, 0x30]                                |     var_30h = r2;
    0x00006b86 ldr.w r2, [pc, 0xaf4]                             |     
    0x00006b8a add r3, pc                                        |     r3 = 0xe206;
    0x00006b8c mov sb, r3                                        |     sb = r3;
    0x00006b8e add r2, pc                                        |     r2 = 0xe210;
    0x00006b90 str r2, [sp, 0x38]                                |     var_38h = r2;
                                                                 | label_31:
    0x00006b92 ldr r3, [sp, 0x2c]                                |     r3 = var_2ch;
    0x00006b94 ldr r8, [r3], 4                                   |     r8 = *(r3);
                                                                 |     r3 += 4;
    0x00006b98 str r3, [sp, 0x2c]                                |     var_2ch = r3;
    0x00006b9a ldr.w r3, [r8, 0x14]                              |     r3 = *((r8 + 0x14));
    0x00006b9e ldr.w r2, [r8, 4]                                 |     r2 = *((r8 + 4));
    0x00006ba2 cmp r3, 0                                         |     
                                                                 |     if (r3 == 0) {
    0x00006ba4 beq.w 0x6fca                                      |         goto label_133;
                                                                 |     }
    0x00006ba8 ldr r3, [sp, 0x20]                                |     r3 = stream;
    0x00006baa movs r0, 7                                        |     r0 = 7;
    0x00006bac ldr r1, [sp, 0x48]                                |     r1 = var_0h;
    0x00006bae subw r3, r3, 0xaa4                                |     __asm ("subw r3, r3, 0xaa4");
    0x00006bb2 ldr r3, [r3]                                      |     r3 = *(r3);
    0x00006bb4 str r3, [sp, 0x28]                                |     var_28h = r3;
    0x00006bb6 bl 0x85e4                                         |     fcn_000085e4 (r0);
    0x00006bba ldr.w r5, [r8, 0x14]                              |     r5 = *((r8 + 0x14));
                                                                 |     do {
    0x00006bbe cmp r5, 0                                         |         
                                                                 |         if (r5 == 0) {
    0x00006bc0 beq 0x6c88                                        |             goto label_41;
                                                                 |         }
    0x00006bc2 mov r0, r5                                        |         r0 = r5;
    0x00006bc4 bl 0xe484                                         |         r0 = fcn_0000e484 (r0);
    0x00006bc8 mov r6, r0                                        |         r6 = r0;
    0x00006bca mov r0, r5                                        |         r0 = r5;
    0x00006bcc bl 0xe490                                         |         r0 = fcn_0000e490 (r0);
    0x00006bd0 mov sl, r0                                        |         sl = r0;
    0x00006bd2 mov r0, r5                                        |         r0 = r5;
    0x00006bd4 str r1, [sp, 0x1c]                                |         var_1ch = r1;
    0x00006bd6 bl 0xe4a4                                         |         fcn_0000e4a4 (r0);
    0x00006bda ldr r3, [sp, 0x20]                                |         r3 = stream;
    0x00006bdc mov r7, r0                                        |         r7 = r0;
    0x00006bde ldrb r2, [r6]                                     |         r2 = *(r6);
    0x00006be0 subw r1, r3, 0xaa4                                |         __asm ("subw r1, r3, 0xaa4");
    0x00006be4 ldr r3, [r1]                                      |         r3 = *(r1);
    0x00006be6 cmp r2, 0x2e                                      |         
    0x00006be8 it eq                                             |         
                                                                 |         if (r2 != 0x2e) {
    0x00006bea ldrbeq r2, [r6, 1]                                |             r2 = *((r6 + 1));
                                                                 |         }
    0x00006bec ldr r0, [r1, 0x20]                                |         r0 = *((r1 + 0x20));
    0x00006bee it eq                                             |         
                                                                 |         if (r2 != 0x2e) {
    0x00006bf0 addeq r1, r6, 1                                   |             r1 = r6 + 1;
                                                                 |         }
    0x00006bf2 add.w r3, r3, 0x1000                              |         r3 += 0x1000;
    0x00006bf6 it ne                                             |         
                                                                 |         if (r2 == 0x2e) {
    0x00006bf8 movne r1, r6                                      |             r1 = r6;
                                                                 |         }
    0x00006bfa ldrb r3, [r3, 8]                                  |         r3 = *((r3 + 8));
    0x00006bfc cmp r3, r2                                        |         
    0x00006bfe it eq                                             |         
                                                                 |         if (r3 != r2) {
    0x00006c00 addeq r1, 1                                       |             r1++;
                                                                 |         }
    0x00006c02 bl 0x8f6c                                         |         r0 = fcn_00008f6c (r0, r1);
    0x00006c06 mov r4, r0                                        |         r4 = r0;
    0x00006c08 cmp r0, 0                                         |         
                                                                 |         if (r0 == 0) {
    0x00006c0a beq.w 0x6f40                                      |             goto label_134;
                                                                 |         }
    0x00006c0e ldr r3, [sp, 0x28]                                |         r3 = var_28h;
    0x00006c10 add.w fp, r0, 0x10                                |         
    0x00006c14 ldr.w r2, [r8, 4]                                 |         r2 = *((r8 + 4));
    0x00006c16 movs r0, 4                                        |         r0 = 4;
    0x00006c18 add.w r3, r3, 0x1000                              |         r3 += 0x1000;
    0x00006c1c ldrb r1, [r3, 9]                                  |         r1 = *((r3 + 9));
                                                                 |         if (r1 != 0) {
    0x00006c1e cbz r1, 0x6c42                                    |             
    0x00006c20 ldr r1, [sp, 0x1c]                                |             r1 = var_1ch;
    0x00006c22 ldrd ip, r0, [r0, 8]                              |             __asm ("ldrd ip, r0, [r0, 8]");
    0x00006c26 cmp r1, r0                                        |             
    0x00006c28 it eq                                             |             
                                                                 |             if (r1 == r0) {
    0x00006c2a cmpeq sl, ip                                      |                 __asm ("cmpeq sl, ip");
                                                                 |             }
    0x00006c2c ite ne                                            |             
                                                                 |             if (r1 == r0) {
    0x00006c2e movne r1, 1                                       |                 r1 = 1;
                                                                 |             }
                                                                 |             if (r1 != r0) {
    0x00006c30 moveq r1, 0                                       |                 r1 = 0;
                                                                 |             }
    0x00006c32 cmp r7, 0x57                                      |             
    0x00006c34 ite eq                                            |             
                                                                 |             if (r7 != 0x57) {
    0x00006c36 moveq r1, 0                                       |                 r1 = 0;
                                                                 |             }
                                                                 |             if (r7 == 0x57) {
    0x00006c38 andne r1, r1, 1                                   |                 r1 &= 1;
                                                                 |             }
    0x00006c3c cmp r1, 0                                         |             
                                                                 |             if (r1 != 0) {
    0x00006c3e bne.w 0x6f16                                      |                 goto label_135;
                                                                 |             }
                                                                 |         }
                                                                 | label_37:
    0x00006c42 ldr r3, [r4]                                      |         r3 = *(r4);
    0x00006c44 cmp r3, 0                                         |         
                                                                 |         if (r3 == 0) {
    0x00006c46 beq.w 0x6f12                                      |             goto label_136;
                                                                 |         }
    0x00006c4a ldr r3, [r3, 4]                                   |         r3 = *((r3 + 4));
                                                                 | label_36:
    0x00006c4c mov r1, sb                                        |         r1 = sb;
    0x00006c4e str r3, [sp]                                      |         *(sp) = r3;
    0x00006c50 movs r0, 7                                        |         r0 = 7;
    0x00006c52 mov r3, fp                                        |         r3 = fp;
    0x00006c54 bl 0x85e4                                         |         fcn_000085e4 (r0);
    0x00006c58 ldr r1, [r4]                                      |         r1 = *(r4);
                                                                 |         if (r1 != 0) {
    0x00006c5a cbz r1, 0x6c7e                                    |             
    0x00006c5c add.w r0, r8, 0x18                                |             r0 = r8 + 0x18;
    0x00006c60 bl 0x8bd0                                         |             fcn_00008bd0 (r0, r1, r2);
    0x00006c62 vtbl.8 d2, {d6}, d0                               |             __asm ("vtbl.8 d2, {d6}, d0");
                                                                 |             if (r1 < 0) {
    0x00006c66 blt 0x6c7e                                        |                 goto label_38;
                                                                 |             }
    0x00006c68 ldr r3, [r4]                                      |             r3 = *(r4);
    0x00006c6a mov r2, fp                                        |             r2 = fp;
    0x00006c6c ldr.w r1, [r8, 4]                                 |             r1 = *((r8 + 4));
    0x00006c70 ldr r0, [sp, 0x30]                                |             r0 = var_30h;
    0x00006c72 ldrh r4, [r3, 0x3a]                               |             r4 = *((r3 + 0x3a));
    0x00006c74 adds r4, 1                                        |             r4++;
    0x00006c76 strh r4, [r3, 0x3a]                               |             *((r3 + 0x3a)) = r4;
    0x00006c78 ldr r3, [r3, 4]                                   |             r3 = *((r3 + 4));
    0x00006c7a bl 0x52b0                                         |             fcn_000052b0 ();
                                                                 |         }
                                                                 | label_38:
    0x00006c7e ldr r5, [r5]                                      |         r5 = *(r5);
    0x00006c80 ldr.w r3, [r8, 0x14]                              |         r3 = *((r8 + 0x14));
    0x00006c84 cmp r5, r3                                        |         
    0x00006c86 bne 0x6bbe                                        |         
                                                                 |     } while (r5 != r3);
                                                                 | label_41:
    0x00006c88 ldr r3, [sp, 0x44]                                |     r3 = var_44h;
    0x00006c8a ldr r2, [sp, 0x2c]                                |     r2 = var_2ch;
    0x00006c8c cmp r3, r2                                        |     
                                                                 |     if (r3 > r2) {
    0x00006c8e bhi 0x6b92                                        |         goto label_31;
                                                                 |     }
    0x00006c90 ldrd sl, fp, [sp, 0x50]                           |     __asm ("ldrd sl, fp, [var_8h]");
                                                                 | label_132:
    0x00006c94 ldr r3, [sp, 0x20]                                |     r3 = stream;
    0x00006c96 subw r4, r3, 0xaa4                                |     __asm ("subw r4, r3, 0xaa4");
    0x00006c9a ldr r0, [r4, 0x20]                                |     r0 = *((r4 + 0x20));
    0x00006c9c ldr r5, [r4, 0xc]                                 |     r5 = *((r4 + 0xc));
    0x00006c9e bl 0x91d4                                         |     fcn_000091d4 (r0);
    0x00006ca2 ldr.w r1, [pc, 0x9dc]                             |     
    0x00006ca6 mov r3, r0                                        |     r3 = r0;
    0x00006ca8 mov r2, r5                                        |     r2 = r5;
    0x00006caa movs r0, 7                                        |     r0 = 7;
    0x00006cac add r1, pc                                        |     r1 = 0xe332;
    0x00006cae bl 0x85e4                                         |     fcn_000085e4 (r0);
    0x00006cb0 ldc2 p8, c6, [sb], {0xe6}                         |     __asm ("ldc2 p8, c6, [sb], {0xe6}");
    0x00006cb4 uxth r3, r6                                       |     r3 = (int16_t) r6;
    0x00006cb6 lsls r5, r3, 1                                    |     r5 = r3 << 1;
    0x00006cb8 str r3, [sp, 0x28]                                |     var_28h = r3;
    0x00006cba adds r0, r5, r3                                   |     r0 = r5 + r3;
    0x00006cbc lsls r0, r0, 1                                    |     r0 <<= 1;
    0x00006cbe blx 0x1b0c                                        |     r0 = strerror (r0);
    0x00006cc2 mov r8, r0                                        |     r8 = r0;
    0x00006cc4 cmp r0, 0                                         |     
                                                                 |     if (r0 == 0) {
    0x00006cc6 beq.w 0x629c                                      |         goto label_32;
                                                                 |     }
    0x00006cca ldr.w r1, [pc, 0x9b8]                             |     
    0x00006cce add r5, r0                                        |     r5 += r0;
    0x00006cd0 ldr r2, [sp, 0x28]                                |     r2 = var_28h;
    0x00006cd2 movs r0, 7                                        |     r0 = 7;
    0x00006cd4 add r1, pc                                        |     r1 = 0xe35e;
    0x00006cd6 bl 0x85e4                                         |     fcn_000085e4 (r0);
    0x00006cda ldr.w lr, [r4, 0xc]                               |     
    0x00006cde movw r3, 0xfffe                                   |     r3 = 0xfffe;
    0x00006ce2 cmp lr, r3                                        |     
                                                                 |     if (lr > r3) {
    0x00006ce4 bhi.w 0x75d6                                      |         goto label_137;
                                                                 |     }
    0x00006ce8 uxth r6, r6                                       |     r6 = (int16_t) r6;
    0x00006cea ldr.w ip, [r4, 8]                                 |     ip = *((r4 + 8));
    0x00006cee cmp r6, 0                                         |     
                                                                 |     if (r6 == 0) {
    0x00006cf0 beq 0x6d7c                                        |         goto label_138;
                                                                 |     }
    0x00006cf2 movs r0, 0                                        |     r0 = 0;
    0x00006cf4 sub.w r1, ip, 4                                   |     r1 = ip - 4;
    0x00006cf8 sub.w r2, r8, 2                                   |     r2 = r8 - 2;
    0x00006cfc mov r7, r0                                        |     r7 = r0;
                                                                 |     do {
    0x00006cfe ldr r3, [r1, 4]!                                  |         r3 = *((r1 += 4));
    0x00006d02 ldrh r3, [r3, 0x3a]                               |         r3 = *((r3 + 0x3a));
    0x00006d04 strh r3, [r2, 2]!                                 |         *((r2 += 2)) = r3;
                                                                 |         if (r3 == 0) {
    0x00006d08 cbnz r3, 0x6d12                                   |             
    0x00006d0a strh.w r7, [r5, r0, lsl 1]                        |             offset_3 = r0 << 1;
                                                                 |             *((r5 + offset_3)) = r7;
    0x00006d0e adds r0, 1                                        |             r0++;
    0x00006d10 uxth r0, r0                                       |             r0 = (int16_t) r0;
                                                                 |         }
    0x00006d12 adds r7, 1                                        |         r7++;
    0x00006d14 uxth r7, r7                                       |         r7 = (int16_t) r7;
    0x00006d16 cmp r6, r7                                        |         
    0x00006d18 bne 0x6cfe                                        |         
                                                                 |     } while (r6 != r7);
    0x00006d1a ldr.w sb, [sp, 0x28]                              |     sb = var_28h;
    0x00006d1e movs r6, 0                                        |     r6 = 0;
    0x00006d20 cmp r0, 0                                         |     
                                                                 |     if (r0 == 0) {
    0x00006d22 beq.w 0x7184                                      |         goto label_139;
                                                                 |     }
                                                                 | label_33:
    0x00006d26 subs r0, 1                                        |     r0--;
    0x00006d28 add.w r1, r6, sb                                  |     r1 = r6 + sb;
    0x00006d2c uxth r0, r0                                       |     r0 = (int16_t) r0;
    0x00006d2e adds r2, r6, 1                                    |     r2 = r6 + 1;
    0x00006d30 ldrh.w r3, [r5, r0, lsl 1]                        |     offset_4 = r0 << 1;
                                                                 |     r3 = *((r5 + offset_4));
    0x00006d34 strh.w r3, [r5, r1, lsl 1]                        |     offset_5 = r1 << 1;
                                                                 |     *((r5 + offset_5)) = r3;
    0x00006d38 ldr.w r3, [ip, r3, lsl 2]                         |     offset_6 = r3 << 2;
                                                                 |     r3 = *((ip + offset_6));
    0x00006d3c ldrd r1, r4, [r3, 0x18]                           |     __asm ("ldrd r1, r4, [r3, 0x18]");
    0x00006d40 str r6, [r3, 0x34]                                |     *((r3 + 0x34)) = r6;
    0x00006d42 uxth r6, r2                                       |     r6 = (int16_t) r2;
    0x00006d44 add.w r4, r1, r4, lsl 2                           |     r4 = r1 + (r4 << 2);
    0x00006d48 cmp r1, r4                                        |     
                                                                 |     if (r1 >= r4) {
    0x00006d4a bhs 0x6d72                                        |         goto label_140;
                                                                 |     }
                                                                 |     do {
    0x00006d4c ldr r3, [r1], 4                                   |         r3 = *(r1);
                                                                 |         r1 += 4;
    0x00006d50 ldrh r2, [r3, 0x38]                               |         r2 = *((r3 + 0x38));
    0x00006d52 ldrh.w r3, [r8, r2, lsl 1]                        |         offset_7 = r2 << 1;
                                                                 |         r3 = *((r8 + offset_7));
    0x00006d56 cmp r3, 0                                         |         
                                                                 |         if (r3 == 0) {
    0x00006d58 beq.w 0x7442                                      |             goto label_141;
                                                                 |         }
    0x00006d5c subs r3, 1                                        |         r3--;
    0x00006d5e uxth r3, r3                                       |         r3 = (int16_t) r3;
    0x00006d60 strh.w r3, [r8, r2, lsl 1]                        |         offset_8 = r2 << 1;
                                                                 |         *((r8 + offset_8)) = r3;
                                                                 |         if (r3 == 0) {
    0x00006d64 cbnz r3, 0x6d6e                                   |             
    0x00006d66 strh.w r2, [r5, r0, lsl 1]                        |             offset_9 = r0 << 1;
                                                                 |             *((r5 + offset_9)) = r2;
    0x00006d6a adds r0, 1                                        |             r0++;
    0x00006d6c uxth r0, r0                                       |             r0 = (int16_t) r0;
                                                                 |         }
    0x00006d6e cmp r4, r1                                        |         
    0x00006d70 bhi 0x6d4c                                        |         
                                                                 |     } while (r4 > r1);
                                                                 | label_140:
    0x00006d72 cmp r0, 0                                         |     
                                                                 |     if (r0 != 0) {
    0x00006d74 bne 0x6d26                                        |         goto label_33;
                                                                 |     }
    0x00006d76 cmp r7, r6                                        |     
                                                                 |     if (r7 > r6) {
    0x00006d78 bhi.w 0x7184                                      |         goto label_139;
                                                                 |     }
                                                                 | label_138:
    0x00006d7c add.w r5, ip, lr, lsl 2                           |     r5 = ip + (lr << 2);
    0x00006d80 cmp ip, r5                                        |     
                                                                 |     if (ip >= r5) {
    0x00006d82 bhs 0x6da2                                        |         goto label_142;
                                                                 |     }
    0x00006d84 ldr.w r6, [pc, 0x900]                             |     r6 = *(0x00007688);
    0x00006d88 mov r4, ip                                        |     r4 = ip;
    0x00006d8a add r6, pc                                        |     r6 += pc;
                                                                 |     do {
    0x00006d8c ldr r0, [r4], 4                                   |         r0 = *(r4);
                                                                 |         r4 += 4;
    0x00006d90 ldr r3, [r0, 0x1c]                                |         r3 = *((r0 + 0x1c));
    0x00006d92 cmp r3, 1                                         |         
                                                                 |         if (r3 >= 1) {
    0x00006d94 bls 0x6d9e                                        |             
    0x00006d96 adds r0, 0x18                                     |             r0 += 0x18;
    0x00006d98 mov r1, r6                                        |             r1 = r6;
    0x00006d9a bl 0x8c08                                         |             fcn_00008c08 (r0, r1);
                                                                 |         }
    0x00006d9e cmp r5, r4                                        |         
    0x00006da0 bhi 0x6d8c                                        |         
                                                                 |     } while (r5 > r4);
                                                                 | label_142:
    0x00006da2 ldr.w r1, [pc, 0x8e8]                             |     
    0x00006da6 movs r0, 7                                        |     r0 = 7;
    0x00006da8 ldr r2, [sp, 0x28]                                |     r2 = var_28h;
    0x00006daa add r1, pc                                        |     r1 = 0xe43c;
    0x00006dac bl 0x85e4                                         |     fcn_000085e4 (r0);
    0x00006db0 mov r0, r8                                        |     r0 = r8;
    0x00006db2 blx 0x19a0                                        |     fcn_000019a0 ();
    0x00006db6 ldr r3, [sp, 0x20]                                |     r3 = stream;
    0x00006db8 movs r1, 0                                        |     r1 = 0;
    0x00006dba ldr r0, [sp, 0x18]                                |     r0 = var_18h;
    0x00006dbc subw r3, r3, 0xaa4                                |     __asm ("subw r3, r3, 0xaa4");
    0x00006dc0 ldr r3, [r3]                                      |     r3 = *(r3);
    0x00006dc2 adds r3, 4                                        |     r3 += 4;
    0x00006dc4 str r3, [sp, 0x1c]                                |     var_1ch = r3;
    0x00006dc6 blx 0x1a88                                        |     fread (r0, r1, r2, r3);
    0x00006dca ldr r3, [sp, 0x3c]                                |     r3 = var_3ch;
    0x00006dcc cmp r3, 0                                         |     
                                                                 |     if (r3 == 0) {
    0x00006dce beq.w 0x73e8                                      |         goto label_143;
                                                                 |     }
                                                                 | label_53:
    0x00006dd2 ldr.w r4, [pc, 0x8bc]                             |     r4 = *(0x00007690);
    0x00006dd6 add.w r8, sp, 0x1300                              |     r8 += ptr;
    0x00006dda ldr.w r3, [pc, 0x8b8]                             |     r3 = *(0x00007694);
    0x00006dde add.w r8, r8, 0x1c                                |     r8 += 0x1c;
    0x00006de2 ldr.w sb, [pc, 0x8b4]                             |     sb = *(0x00007698);
    0x00006de6 add r4, pc                                        |     r4 += pc;
    0x00006de8 str.w fp, [sp, 0x28]                              |     __asm ("str.w fp, [var_28h]");
    0x00006dec add r3, pc                                        |     r3 += pc;
    0x00006dee ldr r7, [sp, 0x3c]                                |     r7 = var_3ch;
    0x00006df0 add sb, pc                                        |     sb += pc;
    0x00006df2 str r4, [r3]                                      |     *(r3) = r4;
    0x00006df4 add.w r3, sp, 0x1320                              |     r3 += arg_1320h;
    0x00006df8 str.w sb, [sp, 0x2c]                              |     __asm ("str.w sb, [var_2ch]");
    0x00006dfc ldr.w fp, [sp, 0x4c]                              |     fp = var_4h;
    0x00006e00 mov sb, r3                                        |     sb = r3;
    0x00006e02 str.w r8, [sp, 0x18]                              |     __asm ("str.w r8, [var_18h]");
    0x00006e06 b 0x6e2e                                          |     
                                                                 |     while (r7 != 0) {
    0x00006e08 ldr r3, [sp, 0x2c]                                |         r3 = var_2ch;
    0x00006e0a mov r1, r7                                        |         r1 = r7;
    0x00006e0c mov r0, fp                                        |         r0 = fp;
    0x00006e0e ldr r3, [r3]                                      |         r3 = *(r3);
    0x00006e10 ldr r3, [r3, 4]                                   |         r3 = *((r3 + 4));
    0x00006e12 blx r3                                            |         uint32_t (*r3)(uint32_t, uint32_t, uint32_t) (r0, r1, r3);
                                                                 | label_45:
    0x00006e14 ldr.w r3, [pc, 0x884]                             |         r3 = *(0x0000769c);
    0x00006e18 add r3, pc                                        |         r3 += pc;
    0x00006e1a ldr r4, [r3]                                      |         r4 = *(r3);
                                                                 | label_34:
    0x00006e1c ldr r3, [r4, 8]                                   |         r3 = *((r4 + 8));
    0x00006e1e adds r4, 8                                        |         r4 += 8;
    0x00006e20 ldr.w r2, [pc, 0x87c]                             |         r2 = *(0x000076a0);
    0x00006e24 add r2, pc                                        |         r2 += pc;
    0x00006e26 str r4, [r2]                                      |         *(r2) = r4;
    0x00006e28 cmp r3, 0                                         |         
                                                                 |         if (r3 == 0) {
    0x00006e2a beq.w 0x717c                                      |             goto label_144;
                                                                 |         }
    0x00006e2e ldr r3, [sp, 0x18]                                |         r3 = var_18h;
    0x00006e30 movs r2, 0                                        |         r2 = 0;
    0x00006e32 movs r1, 0                                        |         r1 = 0;
    0x00006e34 mov r0, sb                                        |         r0 = sb;
    0x00006e36 str r2, [r3]                                      |         *(r3) = r2;
    0x00006e38 movs r2, 0xfb                                     |         r2 = 0xfb;
    0x00006e3a blx 0x1c2c                                        |         strtoull (r0, r1, r2);
    0x00006e3e cmp r7, 0                                         |         
    0x00006e40 bne 0x6e08                                        |         
                                                                 |     }
    0x00006e42 ldr r4, [r4]                                      |     r4 = *(r4);
    0x00006e44 sub.w r6, sb, 4                                   |     r6 = sb - 4;
    0x00006e48 blx 0x1b8c                                        |     fcn_00001b8c ();
    0x00006e4c ldr r3, [sp, 0x20]                                |     r3 = stream;
    0x00006e4e strd r4, r0, [sp, 4]                              |     __asm ("strd r4, r0, [sp, 4]");
    0x00006e52 mov r0, r6                                        |     r0 = r6;
    0x00006e54 subw r3, r3, 0xa18                                |     __asm ("subw r3, r3, 0xa18");
    0x00006e58 ldr r2, [r3]                                      |     r2 = *(r3);
    0x00006e5a str r2, [sp, 0x10]                                |     var_10h = r2;
    0x00006e5c movs r2, 1                                        |     r2 = 1;
    0x00006e5e ldr r3, [r3, 4]                                   |     r3 = *((r3 + 4));
    0x00006e60 str r3, [sp, 0xc]                                 |     var_ch = r3;
    0x00006e62 ldr.w r3, [pc, 0x840]                             |     
    0x00006e66 add r3, pc                                        |     r3 = 0xe510;
    0x00006e68 str r3, [sp]                                      |     *(sp) = r3;
    0x00006e6a movs r3, 0xff                                     |     r3 = 0xff;
    0x00006e6c mov r1, r3                                        |     r1 = r3;
    0x00006e6e blx 0x1dd4                                        |     fcn_00001dd4 ();
    0x00006e70 invalid                                           |     
    0x00006e72 mov.w r3, 0x1a4                                   |     r3 = 0x1a4;
    0x00006e76 movs r2, 0xc1                                     |     r2 = 0xc1;
    0x00006e78 mov r1, r6                                        |     r1 = r6;
    0x00006e7a mov r0, sl                                        |     r0 = sl;
    0x00006e7c blx 0x1bd8                                        |     r0 = sprintf_chk ();
    0x00006e80 subs r4, r0, 0                                    |     r4 = r0 - 0;
                                                                 |     if (r4 < r0) {
    0x00006e82 blt.w 0x7128                                      |         goto label_145;
                                                                 |     }
    0x00006e86 ldr.w r1, [pc, 0x820]                             |     
    0x00006e8a add r1, pc                                        |     r1 = 0xe538;
    0x00006e8c blx 0x18cc                                        |     r0 = fdopen ();
    0x00006e90 mov r5, r0                                        |     r5 = r0;
    0x00006e92 cmp r0, 0                                         |     
                                                                 |     if (r0 == 0) {
    0x00006e94 beq.w 0x74fe                                      |         goto label_146;
                                                                 |     }
    0x00006e98 ldr.w r4, [pc, 0x810]                             |     r4 = *(0x000076ac);
    0x00006e9c mov r1, r0                                        |     r1 = r0;
    0x00006e9e mov r0, fp                                        |     r0 = fp;
    0x00006ea0 add r4, pc                                        |     r4 += pc;
    0x00006ea2 ldr r3, [r4]                                      |     r3 = *(r4);
    0x00006ea4 ldr r3, [r3, 4]                                   |     r3 = *((r3 + 4));
    0x00006ea6 blx r3                                            |     r0 = uint32_t (*r3)(uint32_t, uint32_t, uint32_t) (r0, r1, r3);
    0x00006ea8 mov r8, r0                                        |     r8 = r0;
    0x00006eaa mov r0, r5                                        |     r0 = r5;
    0x00006eac blx 0x19b8                                        |     r0 = fcn_000019b8 ();
    0x00006eb0 mov r2, r0                                        |     r2 = r0;
    0x00006eb2 mov r0, r5                                        |     r0 = r5;
    0x00006eb4 mov r5, r2                                        |     r5 = r2;
    0x00006eb6 blx 0x1c84                                        |     fcn_00001c84 ();
    0x00006eba cmp.w r8, 0                                       |     
    0x00006ebe orr.w r5, r5, r0                                  |     r5 |= r0;
                                                                 |     if (r8 < 0) {
    0x00006ec2 blt.w 0x73ac                                      |         goto label_147;
                                                                 |     }
    0x00006ec6 ldr r4, [r4]                                      |     r4 = *(r4);
    0x00006ec8 mov r2, sl                                        |     r2 = sl;
    0x00006eca mov r1, r6                                        |     r1 = r6;
    0x00006ecc mov r0, sl                                        |     r0 = sl;
    0x00006ece ldr r3, [r4]                                      |     r3 = *(r4);
    0x00006ed0 blx 0x1d68                                        |     r0 = fcn_00001d68 ();
    0x00006ed4 cmp r0, 0                                         |     
                                                                 |     if (r0 != 0) {
    0x00006ed6 bne.w 0x738a                                      |         goto label_148;
                                                                 |     }
    0x00006eda cmp r5, 0                                         |     
                                                                 |     if (r5 == 0) {
    0x00006edc beq 0x6e1c                                        |         goto label_34;
                                                                 |     }
    0x00006ede ldr r4, [r4]                                      |     r4 = *(r4);
    0x00006ee0 movs r0, 0x1c                                     |     r0 = 0x1c;
    0x00006ee2 ldr.w fp, [sp, 0x28]                              |     fp = var_28h;
    0x00006ee6 blx 0x1b18                                        |     system (r0);
    0x00006eea ldr.w r1, [pc, 0x7c4]                             |     
    0x00006eee mov r2, r4                                        |     r2 = r4;
    0x00006ef0 mvn r4, 0x1b                                      |     r4 = ~0x1b;
    0x00006ef4 mov r3, r0                                        |     r3 = r0;
    0x00006ef6 movs r0, 3                                        |     r0 = 3;
    0x00006ef8 add r1, pc                                        |     r1 = 0xe5ae;
    0x00006efa bl 0x85e4                                         |     fcn_000085e4 (r0);
                                                                 | label_52:
    0x00006efe lsrs r4, r4, 0x1f                                 |     r4 >>= 0x1f;
                                                                 | label_48:
    0x00006f00 cmp.w sl, -1                                      |     
                                                                 |     if (sl == -1) {
    0x00006f04 beq.w 0x62da                                      |         goto label_35;
                                                                 |     }
    0x00006f08 mov r0, sl                                        |     r0 = sl;
    0x00006f0a blx 0x1dbc                                        |     fcn_00001dbc ();
    0x00006f0e b.w 0x62da                                        |     goto label_35;
                                                                 | label_136:
    0x00006f12 ldr r3, [sp, 0x38]                                |     r3 = var_38h;
    0x00006f14 b 0x6c4c                                          |     goto label_36;
                                                                 | label_135:
    0x00006f16 str r3, [sp, 0x40]                                |     var_40h = r3;
    0x00006f18 ldr.w r1, [pc, 0x798]                             |     
    0x00006f1c ldr r3, [sp, 0x1c]                                |     r3 = var_1ch;
    0x00006f1e str r2, [sp, 8]                                   |     var_8h_2 = r2;
    0x00006f20 mov r2, fp                                        |     r2 = fp;
    0x00006f22 strd ip, r0, [sp]                                 |     __asm ("strd ip, r0, [sp]");
    0x00006f26 add r1, pc                                        |     r1 = 0xe5de;
    0x00006f28 str r3, [sp, 0x14]                                |     var_14h_2 = r3;
    0x00006f2a movs r0, 7                                        |     r0 = 7;
    0x00006f2c str.w sl, [sp, 0x10]                              |     __asm ("str.w sl, [var_10h]");
    0x00006f30 bl 0x85e4                                         |     fcn_000085e4 (r0);
    0x00006f34 ldr r3, [sp, 0x40]                                |     r3 = var_40h;
    0x00006f36 ldrb r3, [r3, 0xa]                                |     r3 = *((r3 + 0xa));
                                                                 |     if (r3 != 0) {
    0x00006f38 cbnz r3, 0x6f7a                                   |         goto label_149;
                                                                 |     }
                                                                 | label_39:
    0x00006f3a ldr.w r2, [r8, 4]                                 |     r2 = *((r8 + 4));
    0x00006f3e b 0x6c42                                          |     goto label_37;
                                                                 | label_134:
    0x00006f40 ldr.w r1, [pc, 0x774]                             |     
    0x00006f44 mov r3, r7                                        |     r3 = r7;
    0x00006f46 ldr.w r2, [r8, 4]                                 |     r2 = *((r8 + 4));
    0x00006f4a movs r0, 7                                        |     r0 = 7;
    0x00006f4c str r6, [sp]                                      |     *(sp) = r6;
    0x00006f4e add r1, pc                                        |     r1 = 0xe60a;
    0x00006f50 bl 0x85e4                                         |     fcn_000085e4 (r0);
    0x00006f54 ldr r3, [sp, 0x28]                                |     r3 = var_28h;
    0x00006f56 add.w r3, r3, 0x1000                              |     r3 += 0x1000;
    0x00006f5a ldrb r3, [r3, 0xa]                                |     r3 = *((r3 + 0xa));
    0x00006f5c cmp r3, 0                                         |     
    0x00006f5e it ne                                             |     
                                                                 |     if (r3 == 0) {
    0x00006f60 cmpne r7, 0x57                                    |         __asm ("cmpne r7, 0x57");
                                                                 |         goto label_150;
                                                                 |     }
                                                                 |     if (r3 == 0) {
                                                                 | label_150:
    0x00006f62 beq.w 0x6c7e                                      |         goto label_38;
                                                                 |     }
    0x00006f66 ldr.w r1, [pc, 0x754]                             |     
    0x00006f6a mov r3, r6                                        |     r3 = r6;
    0x00006f6c ldr.w r2, [r8, 4]                                 |     r2 = *((r8 + 4));
    0x00006f70 movs r0, 4                                        |     r0 = 4;
    0x00006f72 add r1, pc                                        |     r1 = 0xe634;
    0x00006f74 bl 0x85e4                                         |     fcn_000085e4 (r0);
    0x00006f78 b 0x6c7e                                          |     goto label_38;
                                                                 | label_149:
    0x00006f7a ldr.w r1, [pc, 0x744]                             |     
    0x00006f7e mov r3, r6                                        |     r3 = r6;
    0x00006f80 ldr.w r2, [r8, 4]                                 |     r2 = *((r8 + 4));
    0x00006f84 movs r0, 4                                        |     r0 = 4;
    0x00006f86 add r1, pc                                        |     r1 = 0xe64c;
    0x00006f88 bl 0x85e4                                         |     fcn_000085e4 (r0);
    0x00006f8c b 0x6f3a                                          |     goto label_39;
                                                                 | label_90:
    0x00006f8e blx 0x1be4                                        |     r0 = isoc99_sscanf ();
    0x00006f92 ldr r7, [r0]                                      |     r7 = *(r0);
    0x00006f94 rsbs r7, r7, 0                                    |     r7 -= ;
                                                                 | label_46:
    0x00006f96 ldr r3, [sp, 0x20]                                |     r3 = stream;
    0x00006f98 subw r3, r3, 0xaa4                                |     __asm ("subw r3, r3, 0xaa4");
    0x00006f9c ldr r0, [r3, 0x18]                                |     r0 = *((r3 + 0x18));
    0x00006f9e bl 0x8c50                                         |     fcn_00008c50 (r0);
    0x00006fa2 b.w 0x641c                                        |     goto label_40;
                                                                 | label_101:
    0x00006fa6 ldr r2, [sp, 0x20]                                |     r2 = stream;
    0x00006fa8 ldrb.w r3, [r2, 0x7e2]                            |     r3 = *((r2 + 0x7e2));
    0x00006fac add.w r6, r2, 0x7d8                               |     r6 = r2 + 0x7d8;
    0x00006fb0 cmp r3, 0                                         |     
                                                                 |     if (r3 == 0) {
    0x00006fb2 beq.w 0x6224                                      |         goto label_16;
                                                                 |     }
    0x00006fb6 ldr.w r1, [pc, 0x70c]                             |     
    0x00006fba movs r0, 4                                        |     r0 = 4;
    0x00006fbc add r1, pc                                        |     r1 = 0xe686;
    0x00006fbe bl 0x85e4                                         |     fcn_000085e4 (r0);
    0x00006fc2 ldr r3, [sp, 0x40]                                |     r3 = var_40h;
    0x00006fc4 strb r3, [r6, 0xa]                                |     *((r6 + 0xa)) = r3;
    0x00006fc6 b.w 0x6224                                        |     goto label_16;
                                                                 | label_133:
    0x00006fca ldr.w r1, [pc, 0x6fc]                             |     
    0x00006fce movs r0, 7                                        |     r0 = 7;
    0x00006fd0 add r1, pc                                        |     r1 = 0xe69e;
    0x00006fd2 bl 0x85e4                                         |     fcn_000085e4 (r0);
    0x00006fd6 b 0x6c88                                          |     goto label_41;
                                                                 | label_130:
    0x00006fd8 ldr.w r1, [pc, 0x6f0]                             |     
    0x00006fdc movs r0, 6                                        |     r0 = 6;
    0x00006fde str.w sl, [sp]                                    |     __asm ("str.w sl, [sp]");
    0x00006fe2 ldr r3, [r7]                                      |     r3 = *(r7);
    0x00006fe4 ldr r2, [sp, 0x2c]                                |     r2 = var_2ch;
    0x00006fe6 add r1, pc                                        |     r1 = 0xe6b6;
    0x00006fe8 bl 0x85e4                                         |     fcn_000085e4 (r0);
    0x00006fec b.w 0x6538                                        |     goto label_28;
                                                                 | label_82:
    0x00006ff0 blx 0x1be4                                        |     r0 = isoc99_sscanf ();
    0x00006ff4 ldr r0, [r0]                                      |     r0 = *(r0);
    0x00006ff6 blx 0x1b18                                        |     system (r0);
    0x00006ffa ldr.w r1, [pc, 0x6d4]                             |     
    0x00006ffe mov r2, r0                                        |     r2 = r0;
    0x00007000 movs r0, 2                                        |     r0 = 2;
    0x00007002 add r1, pc                                        |     r1 = 0xe6d8;
    0x00007004 bl 0x85e4                                         |     fcn_000085e4 (r0);
    0x00007008 b.w 0x5e46                                        |     goto label_11;
                                                                 | label_86:
    0x0000700c blx 0x1be4                                        |     isoc99_sscanf ();
    0x00007010 ldr.w r1, [pc, 0x6c0]                             |     
    0x00007014 mov r2, r6                                        |     r2 = r6;
    0x00007016 ldr r3, [r0]                                      |     r3 = *(r0);
    0x00007018 movs r0, 3                                        |     r0 = 3;
    0x0000701a add r1, pc                                        |     r1 = 0xe6f2;
    0x0000701c rsbs r6, r3, 0                                    |     r6 = r3 - ;
    0x0000701e bl 0x85e4                                         |     fcn_000085e4 (r0);
    0x00007022 b.w 0x60ac                                        |     goto label_30;
                                                                 | label_114:
    0x00007026 mov r2, r0                                        |     r2 = r0;
    0x00007028 mov r1, r0                                        |     r1 = r0;
    0x0000702a add.w r7, sp, 0x1300                              |     r7 += ptr;
    0x0000702e mov r0, r5                                        |     r0 = r5;
    0x00007030 blx 0x1d80                                        |     fcn_00001d80 ();
    0x00007034 rsbs r4, r4, 0                                    |     r4 -= ;
    0x00007036 ldr.w sb, [sp, 0x20]                              |     sb = stream;
    0x0000703a adds r7, 0x1c                                     |     r7 += 0x1c;
    0x0000703c b 0x7060                                          |     
                                                                 |     while (r0 != 0) {
    0x0000703e mov r0, r6                                        |         r0 = r6;
    0x00007040 blx 0x1bb0                                        |         r0 = fcn_00001bb0 ();
                                                                 |         if (r0 != 0) {
    0x00007044 cbz r0, 0x705e                                    |             
    0x00007046 subw r2, sb, 0xaa4                                |             __asm ("subw r2, sb, 0xaa4");
    0x0000704a adds r3, r7, r0                                   |             r3 = r7 + r0;
    0x0000704c ldr r0, [r2, 0x18]                                |             r0 = *((r2 + 0x18));
    0x0000704e movs r2, 0                                        |             r2 = 0;
    0x00007050 mov r1, r6                                        |             r1 = r6;
    0x00007052 strb r2, [r3, -0x1]                               |             *((r3 - 0x1)) = r2;
    0x00007056 bl 0x8f6c                                         |             r0 = fcn_00008f6c (r0, r1);
                                                                 |             if (r0 == 0) {
    0x0000705a cbz r0, 0x705e                                    |                 goto label_151;
                                                                 |             }
    0x0000705c str r4, [r0, 0x30]                                |             *((r0 + 0x30)) = r4;
                                                                 |         }
                                                                 | label_151:
    0x0000705e adds r4, 1                                        |         r4++;
    0x00007060 mov r2, r5                                        |         r2 = r5;
    0x00007062 mov.w r1, 0x1000                                  |         r1 = 0x1000;
    0x00007066 mov r0, r6                                        |         r0 = r6;
    0x00007068 blx 0x19ac                                        |         r0 = fcn_000019ac ();
    0x0000706c cmp r0, 0                                         |         
    0x0000706e bne 0x703e                                        |         
                                                                 |     }
    0x00007070 ldr r3, [sp, 0x28]                                |     r3 = var_28h;
    0x00007072 mov r8, r0                                        |     r8 = r0;
    0x00007074 ldr.w r1, [pc, 0x660]                             |     r1 = *(0x000076d8);
    0x00007078 sub.w r0, r3, 0x1c                                |     r0 = r3 - 0x1c;
    0x0000707c add r1, pc                                        |     r1 += pc;
    0x0000707e bl 0x8c08                                         |     fcn_00008c08 (r0, r1);
    0x00007082 ldr r3, [sp, 0x20]                                |     r3 = stream;
    0x00007084 subw r3, r3, 0xaa4                                |     __asm ("subw r3, r3, 0xaa4");
    0x00007088 ldr r1, [r3, 0xc]                                 |     r1 = *((r3 + 0xc));
    0x0000708a cmp r1, 0                                         |     
                                                                 |     if (r1 == 0) {
    0x0000708c beq.w 0x664c                                      |         goto label_42;
                                                                 |     }
    0x00007090 ldr r3, [r3, 8]                                   |     r3 = *((r3 + 8));
    0x00007092 mov r0, r8                                        |     r0 = r8;
    0x00007094 subs r3, 4                                        |     r3 -= 4;
                                                                 |     do {
    0x00007096 ldr r2, [r3, 4]!                                  |         r2 = *((r3 += 4));
    0x0000709a strh r0, [r2, 0x38]                               |         *((r2 + 0x38)) = r0;
    0x0000709c adds r0, 1                                        |         r0++;
    0x0000709e cmp r0, r1                                        |         
    0x000070a0 bne 0x7096                                        |         
                                                                 |     } while (r0 != r1);
    0x000070a2 b.w 0x664c                                        |     goto label_42;
                                                                 | label_79:
    0x000070a6 ldr.w r1, [pc, 0x634]                             |     
    0x000070aa movs r0, 2                                        |     r0 = 2;
    0x000070ac add r1, pc                                        |     r1 = 0xe78e;
    0x000070ae bl 0x85e4                                         |     fcn_000085e4 (r0);
    0x000070b2 b.w 0x5e46                                        |     goto label_11;
                                                                 | label_97:
    0x000070b6 rsbs r0, r0, 0                                    |     r0 -= ;
    0x000070b8 ldr.w fp, [sp, 0x1c]                              |     fp = var_1ch;
    0x000070bc blx 0x1b18                                        |     system (r0);
    0x000070c0 ldr.w r1, [pc, 0x61c]                             |     
    0x000070c4 mov r3, r0                                        |     r3 = r0;
    0x000070c6 mov r2, r7                                        |     r2 = r7;
    0x000070c8 movs r0, 2                                        |     r0 = 2;
    0x000070ca add r1, pc                                        |     r1 = 0xe7ae;
    0x000070cc bl 0x85e4                                         |     fcn_000085e4 (r0);
    0x000070d0 b.w 0x629c                                        |     goto label_32;
                                                                 | label_98:
    0x000070d4 rsbs r0, r0, 0                                    |     r0 -= ;
    0x000070d6 ldr.w fp, [sp, 0x1c]                              |     fp = var_1ch;
    0x000070da blx 0x1b18                                        |     system (r0);
    0x000070de ldr.w r1, [pc, 0x604]                             |     
    0x000070e2 mov r3, r0                                        |     r3 = r0;
    0x000070e4 mov r2, r7                                        |     r2 = r7;
    0x000070e6 movs r0, 2                                        |     r0 = 2;
    0x000070e8 add r1, pc                                        |     r1 = 0xe7d2;
    0x000070ea bl 0x85e4                                         |     fcn_000085e4 (r0);
    0x000070ee ldr.w r0, [r8]                                    |     r0 = *(r8);
    0x000070f2 bl 0xcd5c                                         |     fcn_0000cd5c (r0);
    0x000070f6 b.w 0x629c                                        |     goto label_32;
                                                                 | label_99:
    0x000070fa ldr.w sl, [sp, 0x2c]                              |     sl = var_2ch;
    0x000070fe ldr.w fp, [sp, 0x1c]                              |     fp = var_1ch;
    0x00007102 b.w 0x65b2                                        |     goto label_43;
                                                                 | label_112:
    0x00007106 rsbs r0, r0, 0                                    |     r0 -= ;
    0x00007108 blx 0x1b18                                        |     system (r0);
    0x0000710c ldr.w r1, [pc, 0x5d8]                             |     
    0x00007110 mov r2, r0                                        |     r2 = r0;
    0x00007112 movs r0, 2                                        |     r0 = 2;
    0x00007114 add r1, pc                                        |     r1 = 0xe800;
    0x00007116 bl 0x85e4                                         |     fcn_000085e4 (r0);
    0x0000711a b.w 0x629c                                        |     goto label_32;
                                                                 | label_119:
    0x0000711e ldr.w r3, [pc, 0x5cc]                             |     r3 = *(0x000076ec);
    0x00007122 add r3, pc                                        |     r3 += pc;
    0x00007124 b.w 0x673e                                        |     goto label_44;
                                                                 | label_145:
    0x00007128 movs r2, 0xc1                                     |     r2 = 0xc1;
    0x0000712a mov.w r1, 0x1a4                                   |     r1 = 0x1a4;
    0x0000712e strd r2, r1, [sp]                                 |     __asm ("strd r2, r1, [sp]");
    0x00007132 mov r3, r6                                        |     r3 = r6;
    0x00007134 ldr.w r1, [pc, 0x5b8]                             |     
    0x00007138 movs r0, 3                                        |     r0 = 3;
    0x0000713a ldr r2, [sp, 0x1c]                                |     r2 = var_1ch;
    0x0000713c add r1, pc                                        |     r1 = 0xe830;
    0x0000713e bl 0x85e4                                         |     fcn_000085e4 (r0);
    0x00007142 b 0x6e14                                          |     goto label_45;
                                                                 | label_91:
    0x00007144 blx 0x1be4                                        |     r0 = isoc99_sscanf ();
    0x00007148 ldr r3, [r0]                                      |     r3 = *(r0);
    0x0000714a ldr r0, [r7, 0x1c]                                |     r0 = *((r7 + 0x1c));
    0x0000714c rsbs r7, r3, 0                                    |     r7 = r3 - ;
    0x0000714e bl 0x8c50                                         |     fcn_00008c50 (r0);
    0x00007152 b 0x6f96                                          |     goto label_46;
                                                                 | label_110:
    0x00007154 ldr.w r1, [pc, 0x59c]                             |     
    0x00007158 ldr r0, [sp, 0x34]                                |     r0 = var_34h;
    0x0000715a add r1, pc                                        |     r1 = 0xe852;
    0x0000715c bl 0x5590                                         |     fcn_00005590 (r0, r1);
    0x00007160 b.w 0x6580                                        |     goto label_47;
                                                                 | label_111:
    0x00007164 rsbs r0, r0, 0                                    |     r0 -= ;
    0x00007166 blx 0x1b18                                        |     system (r0);
    0x0000716a ldr.w r1, [pc, 0x58c]                             |     
    0x0000716e mov r2, r0                                        |     r2 = r0;
    0x00007170 movs r0, 2                                        |     r0 = 2;
    0x00007172 add r1, pc                                        |     r1 = 0xe870;
    0x00007174 bl 0x85e4                                         |     fcn_000085e4 (r0);
    0x00007178 b.w 0x629c                                        |     goto label_32;
                                                                 | label_144:
    0x0000717c ldr.w fp, [sp, 0x28]                              |     fp = var_28h;
    0x00007180 mov r4, r3                                        |     r4 = r3;
    0x00007182 b 0x6f00                                          |     goto label_48;
                                                                 | label_139:
    0x00007184 ldr r3, [sp, 0x28]                                |     r3 = var_28h;
    0x00007186 cmp r3, 0                                         |     
                                                                 |     if (r3 == 0) {
    0x00007188 beq.w 0x764c                                      |         goto label_152;
                                                                 |     }
    0x0000718c ldr r3, [sp, 0x20]                                |     r3 = stream;
    0x0000718e movs r4, 0                                        |     r4 = 0;
    0x00007190 mov r6, r8                                        |     r6 = r8;
    0x00007192 mov sb, r4                                        |     sb = r4;
    0x00007194 mov sl, r4                                        |     sl = r4;
    0x00007196 subw r7, r3, 0xaa4                                |     __asm ("subw r7, r3, 0xaa4");
                                                                 |     do {
    0x0000719a ldrh r3, [r6], 2                                  |         r3 = *(r6);
                                                                 |         r6 += 2;
                                                                 |         if (r3 != 0) {
    0x0000719e cbz r3, 0x71b6                                    |             
    0x000071a0 ldr r3, [r7, 8]                                   |             r3 = *((r7 + 8));
    0x000071a2 mov r0, sb                                        |             r0 = sb;
    0x000071a4 ldr r1, [r3, r4]                                  |             r1 = *((r3 + r4));
    0x000071a6 bl 0xa350                                         |             r0 = fcn_0000a350 (r0, r1);
    0x000071aa cmp r0, 0                                         |             
                                                                 |             if (r0 == 0) {
    0x000071ac beq.w 0x7430                                      |                 goto label_153;
                                                                 |             }
    0x000071b0 add.w sl, sl, 1                                   |             sl++;
    0x000071b4 mov sb, r0                                        |             sb = r0;
                                                                 |         }
    0x000071b6 cmp r5, r6                                        |         
    0x000071b8 add.w r4, r4, 4                                   |         r4 += 4;
    0x000071bc bne 0x719a                                        |         
                                                                 |     } while (r5 != r6);
    0x000071be str.w sb, [sp, 0x1c]                              |     __asm ("str.w sb, [var_1ch]");
    0x000071c2 str.w sl, [sp, 0x28]                              |     __asm ("str.w sl, [var_28h]");
                                                                 | label_60:
    0x000071c6 ldr r3, [sp, 0x28]                                |     r3 = var_28h;
    0x000071c8 lsls r0, r3, 2                                    |     r0 = r3 << 2;
    0x000071ca blx 0x1b0c                                        |     strerror (r0);
    0x000071ce str r0, [sp, 0x2c]                                |     var_2ch = r0;
    0x000071d0 cmp r0, 0                                         |     
                                                                 |     if (r0 == 0) {
    0x000071d2 beq.w 0x7634                                      |         goto label_154;
                                                                 |     }
    0x000071d6 movs r1, 0                                        |     r1 = 0;
    0x000071d8 movs r0, 0x10                                     |     r0 = 0x10;
    0x000071da bl 0x8c14                                         |     fcn_00008c14 (r0, r1);
    0x000071de str r0, [sp, 0x3c]                                |     var_3ch = r0;
    0x000071e0 cmp r0, 0                                         |     
                                                                 |     if (r0 == 0) {
    0x000071e2 beq.w 0x7640                                      |         goto label_155;
                                                                 |     }
    0x000071e6 ldr.w r3, [pc, 0x514]                             |     
    0x000071ea ldr.w sl, [sp, 0x28]                              |     sl = var_28h;
    0x000071ee str.w fp, [sp, 0x30]                              |     __asm ("str.w fp, [var_30h]");
    0x000071f2 add r3, pc                                        |     r3 = 0xe8f4;
    0x000071f4 str.w r8, [sp, 0x38]                              |     __asm ("str.w r8, [var_38h]");
    0x000071f8 str r3, [sp, 0x48]                                |     var_0h = r3;
    0x000071fa ldr.w r3, [pc, 0x504]                             |     
    0x000071fe add r3, pc                                        |     r3 = 0xe904;
    0x00007200 str r3, [sp, 0x50]                                |     var_8h = r3;
    0x00007202 add.w r3, sp, 0x1300                              |     r3 += ptr;
    0x00007206 adds r3, 0x1c                                     |     r3 += 0x1c;
    0x00007208 str r3, [sp, 0x44]                                |     var_44h = r3;
                                                                 | label_49:
    0x0000720a ldr r3, [sp, 0x1c]                                |     r3 = var_1ch;
    0x0000720c cmp r3, 0                                         |     
                                                                 |     if (r3 == 0) {
    0x0000720e beq.w 0x7416                                      |         goto label_156;
                                                                 |     }
    0x00007212 ldr r3, [sp, 0x1c]                                |     r3 = var_1ch;
    0x00007214 mov r0, r3                                        |     r0 = r3;
    0x00007216 ldr r4, [r3, 8]                                   |     r4 = *((r3 + 8));
    0x00007218 bl 0xa3ec                                         |     fcn_0000a3ec (r0);
    0x0000721c str r0, [sp, 0x1c]                                |     var_1ch = r0;
    0x0000721e movs r0, 8                                        |     r0 = 8;
    0x00007220 blx 0x1b0c                                        |     strerror (r0);
    0x00007224 str r0, [sp, 0x40]                                |     var_40h = r0;
    0x00007226 cmp r0, 0                                         |     
                                                                 |     if (r0 == 0) {
    0x00007228 beq.w 0x75c2                                      |         goto label_157;
                                                                 |     }
    0x0000722c ldr r3, [sp, 0x40]                                |     r3 = var_40h;
    0x0000722e movs r5, 0                                        |     r5 = 0;
    0x00007230 mov r0, r5                                        |     r0 = r5;
    0x00007232 str r4, [r3, 4]                                   |     *((r3 + 4)) = r4;
    0x00007234 mov r1, r3                                        |     r1 = r3;
    0x00007236 str r5, [r3]                                      |     *(r3) = r5;
    0x00007238 bl 0xa350                                         |     r0 = fcn_0000a350 (r0, r1);
    0x0000723c mov r4, r0                                        |     r4 = r0;
    0x0000723e cmp r0, 0                                         |     
                                                                 |     if (r0 == 0) {
    0x00007240 beq.w 0x75ae                                      |         goto label_158;
                                                                 |     }
    0x00007244 ldr r3, [sp, 0x40]                                |     r3 = var_40h;
    0x00007246 ldr r2, [sp, 0x2c]                                |     r2 = var_2ch;
    0x00007248 str r5, [sp, 0x28]                                |     var_28h = r5;
    0x0000724a movs r5, 1                                        |     r5 = 1;
    0x0000724c mov r8, r3                                        |     r8 = r3;
    0x0000724e str r3, [r2]                                      |     *(r2) = r3;
                                                                 | label_51:
    0x00007250 ldr.w r1, [r8, 4]                                 |     r1 = *((r8 + 4));
    0x00007254 ldrb.w r3, [r1, 0x3c]                             |     r3 = *((r1 + 0x3c));
                                                                 |     if (r3 != 0) {
    0x00007258 cbz r3, 0x7262                                    |         
    0x0000725a ldr r3, [sp, 0x40]                                |         r3 = var_40h;
    0x0000725c ldr r3, [r3, 4]                                   |         r3 = *((r3 + 4));
    0x0000725e cmp r1, r3                                        |         
                                                                 |         if (r1 == r3) {
    0x00007260 beq 0x7326                                        |             goto label_159;
                                                                 |         }
                                                                 |     }
    0x00007262 ldr r3, [r1, 0x1c]                                |     r3 = *((r1 + 0x1c));
    0x00007264 movs r2, 1                                        |     r2 = 1;
    0x00007266 strb.w r2, [r1, 0x3c]                             |     *((r1 + 0x3c)) = r2;
    0x0000726a cmp r3, 0                                         |     
                                                                 |     if (r3 == 0) {
    0x0000726c beq 0x730c                                        |         goto label_160;
                                                                 |     }
    0x0000726e ldr r6, [r1, 0x18]                                |     r6 = *((r1 + 0x18));
    0x00007270 add.w sb, r6, r3, lsl 2                           |     sb = r6 + (r3 << 2);
    0x00007274 cmp r6, sb                                        |     
                                                                 |     if (r6 >= sb) {
    0x00007276 bhs.w 0x75aa                                      |         goto label_161;
                                                                 |     }
    0x0000727a add.w r7, r5, 0x40000000                          |     r7 = r5 + 0x40000000;
    0x0000727e ldrd r5, r3, [sp, 0x28]                           |     __asm ("ldrd r5, r3, [var_28h]");
    0x00007282 subs r7, 2                                        |     r7 -= 2;
    0x00007284 add.w r7, r3, r7, lsl 2                           |     r7 = r3 + (r7 << 2);
    0x00007288 b 0x7290                                          |     
                                                                 |     while (r0 != 0) {
    0x0000728a cmp sb, r6                                        |         
    0x0000728c mov r4, r0                                        |         r4 = r0;
                                                                 |         if (sb < r6) {
    0x0000728e bls 0x7316                                        |             goto label_56;
                                                                 |         }
    0x00007290 movs r0, 8                                        |         r0 = 8;
    0x00007292 ldr fp, [r6], 4                                   |         fp = *(r6);
                                                                 |         r6 += 4;
    0x00007296 blx 0x1b0c                                        |         r0 = strerror (r0);
    0x0000729a mov r1, r0                                        |         r1 = r0;
    0x0000729c cmp r0, 0                                         |         
                                                                 |         if (r0 == 0) {
    0x0000729e beq.w 0x759a                                      |             goto label_162;
                                                                 |         }
    0x000072a2 cmp sl, r5                                        |         
    0x000072a4 strd r8, fp, [r0]                                 |         __asm ("strd r8, fp, [r0]");
                                                                 |         if (sl < r5) {
    0x000072a8 bls.w 0x7620                                      |             goto label_163;
                                                                 |         }
    0x000072ac str r0, [r7, 4]!                                  |         *((r7 += 4)) = r0;
    0x000072b0 mov r0, r4                                        |         r0 = r4;
    0x000072b2 adds r5, 1                                        |         r5++;
    0x000072b4 bl 0xa350                                         |         r0 = fcn_0000a350 (r0, r1);
    0x000072b8 cmp r0, 0                                         |         
    0x000072ba bne 0x728a                                        |         
                                                                 |     }
    0x000072bc mvn r5, 0xb                                       |     r5 = ~0xb;
    0x000072c0 ldr r1, [sp, 0x50]                                |     r1 = var_8h;
    0x000072c2 movs r0, 3                                        |     r0 = 3;
    0x000072c4 bl 0x85e4                                         |     fcn_000085e4 (r0);
                                                                 |     do {
                                                                 | label_50:
    0x000072c8 ldr r6, [r4, 8]                                   |         r6 = *((r4 + 8));
    0x000072ca mov r0, r4                                        |         r0 = r4;
    0x000072cc bl 0xa3ec                                         |         r0 = fcn_0000a3ec (r0);
    0x000072d0 mov r4, r0                                        |         r4 = r0;
    0x000072d2 mov r0, r6                                        |         r0 = r6;
    0x000072d4 blx 0x19a0                                        |         fcn_000019a0 ();
    0x000072d8 cmp r4, 0                                         |         
    0x000072da bne 0x72c8                                        |         
                                                                 |     } while (r4 != 0);
    0x000072dc cmp r5, 0                                         |     
                                                                 |     if (r5 >= 0) {
    0x000072de bge 0x720a                                        |         goto label_49;
                                                                 |     }
    0x000072e0 ldr.w fp, [sp, 0x30]                              |     fp = var_30h;
    0x000072e4 ldr.w r8, [sp, 0x38]                              |     r8 = var_38h;
                                                                 | label_54:
    0x000072e8 ldr r0, [sp, 0x3c]                                |     r0 = var_3ch;
    0x000072ea bl 0x8c50                                         |     fcn_00008c50 (r0);
                                                                 | label_55:
    0x000072ee ldr r3, [sp, 0x1c]                                |     r3 = var_1ch;
    0x000072f0 ldr r0, [sp, 0x1c]                                |     r0 = var_1ch;
                                                                 |     if (r3 == 0) {
    0x000072f2 cbz r3, 0x72fc                                    |         goto label_164;
                                                                 |     }
                                                                 |     do {
    0x000072f4 bl 0xa3ec                                         |         r0 = fcn_0000a3ec (r0);
    0x000072f8 cmp r0, 0                                         |         
    0x000072fa bne 0x72f4                                        |         
                                                                 |     } while (r0 != 0);
                                                                 | label_164:
    0x000072fc ldr r0, [sp, 0x2c]                                |     r0 = var_2ch;
    0x000072fe blx 0x19a0                                        |     fcn_000019a0 ();
    0x00007302 mov r0, r8                                        |     r0 = r8;
    0x00007304 blx 0x19a0                                        |     fcn_000019a0 ();
    0x00007308 b.w 0x629c                                        |     goto label_32;
                                                                 | label_160:
    0x0000730c ldr r0, [sp, 0x1c]                                |     r0 = var_1ch;
    0x0000730e bl 0xa454                                         |     fcn_0000a454 (r0, r1);
    0x00007312 ldr r5, [sp, 0x28]                                |     r5 = var_28h;
    0x00007314 str r0, [sp, 0x1c]                                |     var_1ch = r0;
                                                                 | label_56:
    0x00007316 cmp r5, 0                                         |     
                                                                 |     if (r5 == 0) {
    0x00007318 beq 0x72c8                                        |         goto label_50;
                                                                 |     }
    0x0000731a ldr r2, [sp, 0x2c]                                |     r2 = var_2ch;
    0x0000731c subs r3, r5, 1                                    |     r3 = r5 - 1;
    0x0000731e str r3, [sp, 0x28]                                |     var_28h = r3;
    0x00007320 ldr.w r8, [r2, r3, lsl 2]                         |     offset_10 = r3 << 2;
                                                                 |     r8 = *((r2 + offset_10));
    0x00007324 b 0x7250                                          |     goto label_51;
                                                                 | label_159:
    0x00007326 ldr r3, [sp, 0x48]                                |     r3 = var_0h;
    0x00007328 ldm.w r3, {r0, r1}                                |     r0 = *(r3);
                                                                 |     r1 = *((r3 + 4));
    0x0000732c add.w r3, sp, 0x1320                              |     r3 += arg_1320h;
    0x0000732e strh r1, [r3, r6]                                 |     *((r3 + r6)) = r1;
    0x00007330 strb r1, [r3]                                     |     *(r3) = r1;
    0x00007332 movs r1, 3                                        |     r1 = 3;
    0x00007334 ldr r3, [sp, 0x44]                                |     r3 = var_44h;
    0x00007336 str r0, [r3]                                      |     *(r3) = r0;
    0x00007338 ldr r0, [sp, 0x18]                                |     r0 = var_18h;
    0x0000733a bl 0x8b68                                         |     fcn_00008b68 (r0, r1);
    0x0000733e ldr.w r6, [r8]                                    |     r6 = *(r8);
    0x00007342 cmp r6, 0                                         |     
                                                                 |     if (r6 == 0) {
    0x00007344 beq.w 0x7526                                      |         goto label_165;
                                                                 |     }
    0x00007348 mov.w sb, 0                                       |     sb = 0;
    0x0000734c mov r3, r8                                        |     r3 = r8;
    0x0000734e mov r7, sb                                        |     r7 = sb;
    0x00007350 mov r8, r4                                        |     r8 = r4;
    0x00007352 ldr.w fp, [sp, 0x3c]                              |     fp = var_3ch;
    0x00007356 mov r4, sb                                        |     r4 = sb;
    0x00007358 mov sb, r3                                        |     sb = r3;
    0x0000735a b 0x7364                                          |     
                                                                 |     while (r0 == 0) {
    0x0000735c ldr r6, [r6]                                      |         r6 = *(r6);
    0x0000735e adds r4, 1                                        |         r4++;
    0x00007360 cmp r6, 0                                         |         
                                                                 |         if (r6 == 0) {
    0x00007362 beq 0x745a                                        |             goto label_166;
                                                                 |         }
    0x00007364 ldr r2, [r6, 4]                                   |         r2 = *((r6 + 4));
    0x00007366 mov r1, r6                                        |         r1 = r6;
    0x00007368 ldr r0, [sp, 0x18]                                |         r0 = var_18h;
    0x0000736a ldr r2, [r2, 0x2c]                                |         r2 = *((r2 + 0x2c));
    0x0000736c subs r2, 1                                        |         r2--;
    0x0000736e add r7, r2                                        |         r7 += r2;
    0x00007370 bl 0x8b98                                         |         fcn_00008b98 (r0, r1);
    0x00007372 invalid                                           |         
    0x00007374 ldr r1, [r6, 4]                                   |         r1 = *((r6 + 4));
    0x00007376 movs r2, 0                                        |         r2 = 0;
    0x00007378 mov r0, fp                                        |         r0 = fp;
    0x0000737a adds r1, 0x44                                     |         r1 += 0x44;
    0x0000737c bl 0x8cc0                                         |         r0 = fcn_00008cc0 (r0, r1, r2);
    0x00007380 mov r5, r0                                        |         r5 = r0;
    0x00007382 cmp r0, 0                                         |         
    0x00007384 beq 0x735c                                        |         
                                                                 |     }
    0x00007386 mov r4, r8                                        |     r4 = r8;
    0x00007388 b 0x72c8                                          |     goto label_50;
                                                                 | label_148:
    0x0000738a blx 0x1be4                                        |     isoc99_sscanf ();
    0x0000738e ldr r3, [r4]                                      |     r3 = *(r4);
    0x00007390 ldr r2, [sp, 0x1c]                                |     r2 = var_1ch;
    0x00007392 ldr r1, [pc, 0x370]                               |     
    0x00007394 ldr r4, [r0]                                      |     r4 = *(r0);
    0x00007396 movs r0, 2                                        |     r0 = 2;
    0x00007398 str r3, [sp, 4]                                   |     var_4h_2 = r3;
    0x0000739a mov r3, r6                                        |     r3 = r6;
    0x0000739c add r1, pc                                        |     r1 = 0xeaa6;
    0x0000739e str r2, [sp]                                      |     *(sp) = r2;
    0x000073a0 ldr.w fp, [sp, 0x28]                              |     fp = var_28h;
    0x000073a4 rsbs r4, r4, 0                                    |     r4 -= ;
    0x000073a6 bl 0x85e4                                         |     fcn_000085e4 (r0);
    0x000073aa b 0x6efe                                          |     goto label_52;
                                                                 | label_147:
    0x000073ac ldr r2, [sp, 0x3c]                                |     r2 = var_3ch;
    0x000073ae mov r1, r6                                        |     r1 = r6;
    0x000073b0 mov r0, sl                                        |     r0 = sl;
    0x000073b2 ldr.w fp, [sp, 0x28]                              |     fp = var_28h;
    0x000073b6 mov r4, r8                                        |     r4 = r8;
    0x000073b8 blx 0x1984                                        |     r0 = fcn_00001984 ();
    0x000073bc cmp r0, 0                                         |     
                                                                 |     if (r0 != 0) {
    0x000073be bne.w 0x74ee                                      |         goto label_167;
                                                                 |     }
                                                                 | label_57:
    0x000073c2 ldr r3, [pc, 0x344]                               |     
    0x000073c4 rsbs r0, r4, 0                                    |     r0 = r4 - ;
    0x000073c6 add r3, pc                                        |     
    0x000073c8 ldr r3, [r3]                                      |     r3 = *(0xead4);
    0x000073ca ldr r4, [r3]                                      |     r4 = *(0xead4);
    0x000073cc blx 0x1b18                                        |     system (r0);
    0x000073d0 ldr r1, [pc, 0x338]                               |     
    0x000073d2 mov r3, r0                                        |     r3 = r0;
    0x000073d4 mov r2, r4                                        |     r2 = r4;
    0x000073d6 movs r0, 3                                        |     r0 = 3;
    0x000073d8 add r1, pc                                        |     r1 = 0xeae8;
    0x000073da bl 0x85e4                                         |     r0 = fcn_000085e4 (r0);
    0x000073de blx 0x1be4                                        |     r0 = isoc99_sscanf ();
    0x000073e2 ldr r4, [r0]                                      |     r4 = *(r0);
    0x000073e4 rsbs r4, r4, 0                                    |     r4 -= ;
    0x000073e6 b 0x6efe                                          |     goto label_52;
                                                                 | label_143:
    0x000073e8 ldr r1, [sp, 0x3c]                                |     r1 = var_3ch;
    0x000073ea ldr r0, [sp, 0x1c]                                |     r0 = var_1ch;
    0x000073ec blx 0x1ad0                                        |     r0 = fstatat64 ();
    0x000073f0 subs.w sl, r0, 0                                  |     sl = r0 - 0;
                                                                 |     if (sl >= r0) {
    0x000073f4 bge.w 0x6dd2                                      |         goto label_53;
                                                                 |     }
    0x000073f8 blx 0x1be4                                        |     isoc99_sscanf ();
    0x000073fc ldr r1, [pc, 0x310]                               |     
    0x000073fe ldr r4, [r0]                                      |     r4 = *(r0);
    0x00007400 movs r0, 2                                        |     r0 = 2;
    0x00007402 ldr r2, [sp, 0x1c]                                |     r2 = var_1ch;
    0x00007404 add r1, pc                                        |     r1 = 0xeb18;
    0x00007406 cmp r4, 0                                         |     
    0x00007408 ite le                                            |     
                                                                 |     if (r4 > 0) {
    0x0000740a movle r4, 0                                       |         r4 = 0;
                                                                 |     }
                                                                 |     if (r4 <= 0) {
    0x0000740c movgt r4, 1                                       |         r4 = 1;
                                                                 |     }
    0x0000740e bl 0x85e4                                         |     fcn_000085e4 (r0);
    0x00007412 b.w 0x62da                                        |     goto label_35;
                                                                 | label_156:
    0x00007416 ldrd r8, r0, [sp, 0x38]                           |     __asm ("ldrd r8, r0, [var_38h]");
    0x0000741a ldr.w fp, [sp, 0x30]                              |     fp = var_30h;
    0x0000741e bl 0x91d4                                         |     fcn_000091d4 (r0);
    0x00007422 ldr r1, [pc, 0x2f0]                               |     
    0x00007424 mov r2, r0                                        |     r2 = r0;
    0x00007426 movs r0, 3                                        |     r0 = 3;
    0x00007428 add r1, pc                                        |     r1 = 0xeb42;
    0x0000742a bl 0x85e4                                         |     fcn_000085e4 (r0);
    0x0000742e b 0x72e8                                          |     goto label_54;
                                                                 | label_153:
    0x00007430 ldr r1, [pc, 0x2e4]                               |     
    0x00007432 str r0, [sp, 0x2c]                                |     var_2ch = r0;
    0x00007434 movs r0, 3                                        |     r0 = 3;
    0x00007436 str.w sb, [sp, 0x1c]                              |     __asm ("str.w sb, [var_1ch]");
    0x0000743a add r1, pc                                        |     r1 = 0xeb56;
    0x0000743c bl 0x85e4                                         |     fcn_000085e4 (r0);
    0x00007440 b 0x72ee                                          |     goto label_55;
                                                                 | label_141:
    0x00007442 ldr r3, [pc, 0x2d8]                               |     
    0x00007444 movw r2, 0x785                                    |     r2 = 0x785;
    0x00007448 ldr r1, [pc, 0x2d4]                               |     
    0x0000744a ldr r0, [pc, 0x2d8]                               |     
    0x0000744c add r3, pc                                        |     r3 = 0xeb6e;
    0x0000744e add r1, pc                                        |     r1 = 0xeb72;
    0x00007450 add r0, pc                                        |     r0 = 0xeb7a;
    0x00007452 blx 0x1de0                                        |     fcn_00001de0 ();
                                                                 | label_77:
    0x00007456 blx 0x1a1c                                        |     stat64 ();
                                                                 | label_166:
    0x0000745a mov r3, sb                                        |     r3 = sb;
    0x0000745c mov sb, r4                                        |     sb = r4;
    0x0000745e mov r4, r8                                        |     r4 = r8;
    0x00007460 mov r8, r3                                        |     r8 = r3;
                                                                 | label_58:
    0x00007462 ldr.w r3, [r8, 4]                                 |     r3 = *((r8 + 4));
    0x00007466 movs r5, 0                                        |     r5 = 0;
    0x00007468 ldr r0, [r3, 0x2c]                                |     r0 = *((r3 + 0x2c));
    0x0000746a add r0, r7                                        |     r0 += r7;
    0x0000746c add.w r0, r0, sb, lsl 2                           |     r0 += (sb << 2);
    0x0000746e lsls r1, r1, 2                                    |     r1 <<= 2;
    0x00007470 blx 0x1b0c                                        |     strerror (r0);
    0x00007474 ldr r3, [sp, 0x20]                                |     r3 = stream;
    0x00007476 mov r6, r0                                        |     r6 = r0;
    0x00007478 subw sb, r3, 0xa18                                |     __asm ("subw sb, r3, 0xa18");
    0x0000747c ldr.w r7, [sb, 4]                                 |     r7 = *((sb + 4));
    0x00007480 subs r7, 1                                        |     r7--;
                                                                 |     if (r7 < 1) {
    0x00007482 bmi 0x74c6                                        |         goto label_168;
                                                                 |     }
    0x00007484 mov fp, r8                                        |     
    0x00007486 mov r8, r4                                        |     r8 = r4;
                                                                 |     do {
    0x00007488 ldr.w r2, [sb]                                    |         r2 = *(sb);
    0x0000748c adds r0, r6, r5                                   |         r0 = r6 + r5;
    0x0000748e ldr.w r4, [r2, r7, lsl 2]                         |         offset_11 = r7 << 2;
                                                                 |         r4 = *((r2 + offset_11));
    0x00007492 subs r7, 1                                        |         r7--;
    0x00007494 ldr r1, [r4, 4]                                   |         r1 = *((r4 + 4));
    0x00007496 ldr r2, [r1, 0x2c]                                |         r2 = *((r1 + 0x2c));
    0x00007498 adds r1, 0x44                                     |         r1 += 0x44;
    0x0000749a subs r2, 1                                        |         r2--;
    0x0000749c str r2, [sp, 0x54]                                |         var_54h = r2;
    0x0000749e blx 0x19c8                                        |         mmap64 ()
    0x000074a2 ldr r3, [sp, 0x44]                                |         r3 = var_44h;
    0x000074a4 ldr r2, [sp, 0x54]                                |         r2 = var_54h;
    0x000074a6 ldr r0, [r3]                                      |         r0 = *(r3);
    0x000074a8 add r2, r5                                        |         r2 += r5;
    0x000074aa ldrb r5, [r3, 4]                                  |         r5 = *((r3 + 4));
    0x000074ac adds r1, r6, r2                                   |         r1 = r6 + r2;
    0x000074ae str r0, [r6, r2]                                  |         *((r6 + r2)) = r0;
    0x000074b0 strb r5, [r1, 4]                                  |         *((r1 + 4)) = r5;
    0x000074b2 adds r5, r2, 4                                    |         r5 = r2 + 4;
    0x000074b4 ldr r0, [sp, 0x1c]                                |         r0 = var_1ch;
    0x000074b6 ldr r1, [r4, 4]                                   |         r1 = *((r4 + 4));
    0x000074b8 bl 0xa454                                         |         fcn_0000a454 (r0, r1);
    0x000074bc str r0, [sp, 0x1c]                                |         var_1ch = r0;
    0x000074be adds r0, r7, 1                                    |         r0 = r7 + 1;
    0x000074c0 bne 0x7488                                        |         
                                                                 |     } while (r0 != r7);
    0x000074c2 mov r4, r8                                        |     r4 = r8;
    0x000074c4 mov r8, fp                                        |     r8 = fp;
                                                                 | label_168:
    0x000074c6 ldr.w r1, [r8, 4]                                 |     r1 = *((r8 + 4));
    0x000074ca adds r0, r6, r5                                   |     r0 = r6 + r5;
    0x000074cc ldr r5, [sp, 0x28]                                |     r5 = var_28h;
    0x000074ce adds r1, 0x44                                     |     r1 += 0x44;
    0x000074d0 blx 0x1a7c                                        |     gettimeofday ();
    0x000074d4 ldr r1, [pc, 0x250]                               |     
    0x000074d6 mov r2, r6                                        |     r2 = r6;
    0x000074d8 movs r0, 3                                        |     r0 = 3;
    0x000074da add r1, pc                                        |     r1 = 0xec06;
    0x000074dc bl 0x85e4                                         |     fcn_000085e4 (r0);
    0x000074e0 mov r0, r6                                        |     r0 = r6;
    0x000074e2 blx 0x19a0                                        |     fcn_000019a0 ();
    0x000074e6 ldr r0, [sp, 0x18]                                |     r0 = var_18h;
    0x000074e8 bl 0x8bf4                                         |     fcn_00008bf4 (r0);
    0x000074ec b 0x7316                                          |     goto label_56;
                                                                 | label_167:
    0x000074ee ldr r1, [pc, 0x23c]                               |     
    0x000074f0 mov r3, r6                                        |     r3 = r6;
    0x000074f2 ldr r2, [sp, 0x1c]                                |     r2 = var_1ch;
    0x000074f4 movs r0, 3                                        |     r0 = 3;
    0x000074f6 add r1, pc                                        |     r1 = 0xec28;
    0x000074f8 bl 0x85e4                                         |     fcn_000085e4 (r0);
    0x000074fc b 0x73c2                                          |     goto label_57;
                                                                 | label_146:
    0x000074fe ldr r1, [pc, 0x230]                               |     
    0x00007500 mov r2, r4                                        |     r2 = r4;
    0x00007502 ldr r3, [sp, 0x1c]                                |     r3 = var_1ch;
    0x00007504 movs r0, 3                                        |     r0 = 3;
    0x00007506 str r6, [sp]                                      |     *(sp) = r6;
    0x00007508 add r1, pc                                        |     r1 = 0xec3e;
    0x0000750a bl 0x85e4                                         |     fcn_000085e4 (r0);
    0x0000750e mov r0, r4                                        |     r0 = r4;
    0x00007510 blx 0x1dbc                                        |     fcn_00001dbc ();
    0x00007514 b 0x6e14                                          |     goto label_45;
                                                                 | label_122:
    0x00007516 ldr r1, [pc, 0x21c]                               |     
    0x00007518 mov r2, r5                                        |     r2 = r5;
    0x0000751a movs r0, 3                                        |     r0 = 3;
    0x0000751c add r1, pc                                        |     r1 = 0xec56;
    0x0000751e bl 0x85e4                                         |     fcn_000085e4 (r0);
    0x00007522 b.w 0x6780                                        |     goto label_27;
                                                                 | label_165:
    0x00007526 mov sb, r6                                        |     sb = r6;
    0x00007528 mov r7, r6                                        |     r7 = r6;
    0x0000752a b 0x7462                                          |     goto label_58;
                                                                 | label_102:
    0x0000752c blx 0x1be4                                        |     isoc99_sscanf ();
    0x00007530 ldr r1, [pc, 0x204]                               |     
    0x00007532 ldr r6, [r0]                                      |     r6 = *(r0);
    0x00007534 movs r0, 7                                        |     r0 = 7;
    0x00007536 ldr r2, [sp, 0x40]                                |     r2 = var_40h;
    0x00007538 add r1, pc                                        |     r1 = 0xec74;
    0x0000753a bl 0x85e4                                         |     fcn_000085e4 (r0);
    0x0000753e cmp r6, 0                                         |     
                                                                 |     if (r6 <= 0) {
    0x00007540 ble.w 0x6224                                      |         goto label_16;
                                                                 |     }
    0x00007544 mov r0, r6                                        |     r0 = r6;
    0x00007546 blx 0x1b18                                        |     system (r0);
    0x0000754a ldr r1, [pc, 0x1f0]                               |     
    0x0000754c mov r3, r0                                        |     r3 = r0;
    0x0000754e ldr r2, [sp, 0x40]                                |     r2 = var_40h;
    0x00007550 movs r0, 2                                        |     r0 = 2;
    0x00007552 add r1, pc                                        |     r1 = 0xec94;
    0x00007554 bl 0x85e4                                         |     fcn_000085e4 (r0);
    0x00007558 b.w 0x5e46                                        |     goto label_11;
                                                                 | label_131:
    0x0000755c ldr r1, [pc, 0x1e0]                               |     
    0x0000755e movs r0, 3                                        |     r0 = 3;
    0x00007560 add r1, pc                                        |     r1 = 0xeca4;
    0x00007562 bl 0x85e4                                         |     fcn_000085e4 (r0);
    0x00007566 b.w 0x6538                                        |     goto label_28;
                                                                 | label_93:
    0x0000756a blx 0x1be4                                        |     isoc99_sscanf ();
    0x0000756e ldr r1, [pc, 0x1d4]                               |     
    0x00007570 ldr r6, [r0]                                      |     r6 = *(r0);
    0x00007572 movs r0, 7                                        |     r0 = 7;
    0x00007574 ldr r2, [sp, 0x38]                                |     r2 = var_38h;
    0x00007576 add r1, pc                                        |     r1 = 0xecc0;
    0x00007578 bl 0x85e4                                         |     fcn_000085e4 (r0);
    0x0000757c cmp r6, 0                                         |     
                                                                 |     if (r6 <= 0) {
    0x0000757e ble.w 0x6224                                      |         goto label_16;
                                                                 |     }
    0x00007582 mov r0, r6                                        |     r0 = r6;
    0x00007584 blx 0x1b18                                        |     system (r0);
    0x00007588 ldr r1, [pc, 0x1bc]                               |     
    0x0000758a mov r3, r0                                        |     r3 = r0;
    0x0000758c ldr r2, [sp, 0x38]                                |     r2 = var_38h;
    0x0000758e movs r0, 2                                        |     r0 = 2;
    0x00007590 add r1, pc                                        |     r1 = 0xecdc;
    0x00007592 bl 0x85e4                                         |     fcn_000085e4 (r0);
    0x00007596 b.w 0x5e46                                        |     goto label_11;
                                                                 | label_162:
    0x0000759a ldr r1, [pc, 0x1b0]                               |     
    0x0000759c movs r0, 3                                        |     r0 = 3;
    0x0000759e mvn r5, 0xb                                       |     r5 = ~0xb;
    0x000075a2 add r1, pc                                        |     r1 = 0xecf4;
    0x000075a4 bl 0x85e4                                         |     fcn_000085e4 (r0);
    0x000075a8 b 0x72c8                                          |     goto label_50;
                                                                 | label_161:
    0x000075aa ldr r5, [sp, 0x28]                                |     r5 = var_28h;
    0x000075ac b 0x7316                                          |     goto label_56;
                                                                 | label_158:
    0x000075ae ldr r1, [pc, 0x1a0]                               |     
    0x000075b0 movs r0, 3                                        |     r0 = 3;
    0x000075b2 ldr.w fp, [sp, 0x30]                              |     fp = var_30h;
    0x000075b6 ldr.w r8, [sp, 0x38]                              |     r8 = var_38h;
    0x000075ba add r1, pc                                        |     r1 = 0xed10;
    0x000075bc bl 0x85e4                                         |     fcn_000085e4 (r0);
    0x000075c0 b 0x72e8                                          |     goto label_54;
                                                                 | label_157:
    0x000075c2 ldr r1, [pc, 0x190]                               |     
    0x000075c4 movs r0, 3                                        |     r0 = 3;
    0x000075c6 ldr.w fp, [sp, 0x30]                              |     fp = var_30h;
    0x000075ca ldr.w r8, [sp, 0x38]                              |     r8 = var_38h;
    0x000075ce add r1, pc                                        |     r1 = 0xed28;
    0x000075d0 bl 0x85e4                                         |     fcn_000085e4 (r0);
    0x000075d4 b 0x72e8                                          |     goto label_54;
                                                                 | label_137:
    0x000075d6 ldr r3, [pc, 0x180]                               |     
    0x000075d8 mov.w r2, 0x768                                   |     r2 = 0x768;
    0x000075dc ldr r1, [pc, 0x17c]                               |     
    0x000075de ldr r0, [pc, 0x180]                               |     
    0x000075e0 add r3, pc                                        |     r3 = 0xed3e;
    0x000075e2 add r1, pc                                        |     r1 = 0xed42;
    0x000075e4 add r0, pc                                        |     r0 = 0xed4a;
    0x000075e6 blx 0x1de0                                        |     fcn_00001de0 ();
                                                                 | label_80:
    0x000075ea ldr r2, [sp, 0x1c]                                |     r2 = var_1ch;
    0x000075ec movs r1, 1                                        |     r1 = 1;
    0x000075ee ldr r3, [pc, 0x174]                               |     
    0x000075f0 ldr r0, [pc, 0x174]                               |     
    0x000075f2 ldr r3, [r2, r3]                                  |     r3 = *((r2 + r3));
    0x000075f4 movs r2, 0x15                                     |     r2 = 0x15;
    0x000075f6 add r0, pc                                        |     r0 = 0xed62;
    0x000075f8 ldr r3, [r3]                                      |     r3 = *(0x7766);
    0x000075fa blx 0x1a58                                        |     lseek64 ();
    0x000075fe b.w 0x5e46                                        |     goto label_11;
                                                                 | label_106:
    0x00007602 ldr r1, [pc, 0x168]                               |     
    0x00007604 movs r0, 3                                        |     r0 = 3;
    0x00007606 ldr r2, [sp, 0x2c]                                |     r2 = var_2ch;
    0x00007608 add r1, pc                                        |     r1 = 0xed7a;
    0x0000760a bl 0x85e4                                         |     fcn_000085e4 (r0);
    0x0000760e b.w 0x6554                                        |     goto label_59;
                                                                 | label_129:
    0x00007612 ldr r1, [pc, 0x15c]                               |     
    0x00007614 movs r0, 3                                        |     r0 = 3;
    0x00007616 add r1, pc                                        |     r1 = 0xed8c;
    0x00007618 bl 0x85e4                                         |     fcn_000085e4 (r0);
    0x0000761c b.w 0x6538                                        |     goto label_28;
                                                                 | label_163:
    0x00007620 ldr r3, [pc, 0x150]                               |     
    0x00007622 movw r2, 0x701                                    |     r2 = 0x701;
    0x00007626 ldr r1, [pc, 0x150]                               |     
    0x00007628 ldr r0, [pc, 0x150]                               |     
    0x0000762a add r3, pc                                        |     r3 = 0xeda2;
    0x0000762c add r1, pc                                        |     r1 = 0xedaa;
    0x0000762e add r0, pc                                        |     r0 = 0xedae;
    0x00007630 blx 0x1de0                                        |     fcn_00001de0 ();
                                                                 | label_154:
    0x00007634 ldr r1, [pc, 0x148]                               |     
    0x00007636 movs r0, 3                                        |     r0 = 3;
    0x00007638 add r1, pc                                        |     r1 = 0xedbc;
    0x0000763a bl 0x85e4                                         |     fcn_000085e4 (r0);
    0x0000763e b 0x72ee                                          |     goto label_55;
                                                                 | label_155:
    0x00007640 ldr r1, [pc, 0x140]                               |     
    0x00007642 movs r0, 3                                        |     r0 = 3;
    0x00007644 add r1, pc                                        |     r1 = 0xedcc;
    0x00007646 bl 0x85e4                                         |     fcn_000085e4 (r0);
    0x0000764a b 0x72ee                                          |     goto label_55;
                                                                 | label_152:
    0x0000764c str r3, [sp, 0x1c]                                |     var_1ch = r3;
    0x0000764e b 0x71c6                                          |     goto label_60;
                                                                 | }
    ; assembly                                                   | /* r2dec pseudo code output */
                                                                 | /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/bin/kmod @ 0x7788 */
                                                                 | #include <stdint.h>
                                                                 |  
    ; (fcn) fcn.00007788 ()                                      | void fcn_00007788 (int16_t arg1, int16_t arg2, int16_t arg3, int16_t arg4) {
                                                                 |     int16_t var_0h;
                                                                 |     int16_t var_8h;
                                                                 |     int16_t var_ch;
                                                                 |     int16_t var_10h;
                                                                 |     int32_t var_10h_2;
                                                                 |     r0 = arg1;
                                                                 |     r1 = arg2;
                                                                 |     r2 = arg3;
                                                                 |     r3 = arg4;
    0x00007788 push.w {r4, r5, r6, r7, r8, sb, sl, fp, lr}       |     
    0x0000778c sub sp, 0x1c                                      |     
    0x0000778e ldrb r4, [r1]                                     |     r4 = *(r1);
    0x00007790 mov fp, r1                                        |     
    0x00007792 mov sl, r0                                        |     sl = r0;
    0x00007794 strd r2, r3, [sp, 0x10]                           |     __asm ("strd r2, r3, [var_10h]");
                                                                 |     if (r4 == 0) {
    0x00007798 cbz r4, 0x77c6                                    |         goto label_3;
                                                                 |     }
    0x0000779a ldr r6, [pc, 0x158]                               |     
    0x0000779c mov r3, r4                                        |     r3 = r4;
    0x0000779e mov r5, r1                                        |     r5 = r1;
    0x000077a0 mov r4, r1                                        |     r4 = r1;
    0x000077a2 add r6, pc                                        |     r6 = 0xf09c;
    0x000077a4 b 0x77ac                                          |     
                                                                 |     while (r1 >= r3) {
    0x000077a6 ldrb r3, [r5, 1]!                                 |         r3 = *((r5 += 1));
                                                                 |         if (r3 == 0) {
    0x000077aa cbz r3, 0x77c4                                    |             goto label_4;
                                                                 |         }
                                                                 | label_0:
    0x000077ac lsls r1, r3, 0x18                                 |         r1 = r3 << 0x18;
    0x000077ae bpl 0x77a6                                        |         
                                                                 |     }
    0x000077b0 mov r2, r3                                        |     r2 = r3;
    0x000077b2 mov r1, r6                                        |     r1 = r6;
    0x000077b4 movs r0, 2                                        |     r0 = 2;
    0x000077b6 str r4, [sp]                                      |     *(sp) = r4;
    0x000077b8 bl 0x85e4                                         |     fcn_000085e4 (r0);
    0x000077bc ldrb r3, [r5, 1]!                                 |     r3 = *((r5 += 1));
    0x000077c0 cmp r3, 0                                         |     
                                                                 |     if (r3 != 0) {
    0x000077c2 bne 0x77ac                                        |         goto label_0;
                                                                 |     }
                                                                 | label_4:
    0x000077c4 mov fp, r4                                        |     
                                                                 | label_3:
    0x000077c6 ldr r3, [sp, 0x10]                                |     r3 = var_10h;
    0x000077c8 ldrb r3, [r3]                                     |     r3 = *(r3);
                                                                 |     if (r3 == 0) {
    0x000077ca cbz r3, 0x77f4                                    |         goto label_5;
                                                                 |     }
    0x000077cc ldr r5, [pc, 0x128]                               |     
    0x000077ce ldr r6, [sp, 0x10]                                |     r6 = var_10h;
    0x000077d0 add r5, pc                                        |     r5 = 0xf0cc;
    0x000077d2 mov r4, r6                                        |     r4 = r6;
    0x000077d4 b 0x77dc                                          |     
                                                                 |     while (r2 >= r3) {
    0x000077d6 ldrb r3, [r4, 1]!                                 |         r3 = *((r4 += 1));
                                                                 |         if (r3 == 0) {
    0x000077da cbz r3, 0x77f4                                    |             goto label_5;
                                                                 |         }
                                                                 | label_1:
    0x000077dc lsls r2, r3, 0x18                                 |         r2 = r3 << 0x18;
    0x000077de bpl 0x77d6                                        |         
                                                                 |     }
    0x000077e0 mov r2, r3                                        |     r2 = r3;
    0x000077e2 mov r1, r5                                        |     r1 = r5;
    0x000077e4 movs r0, 2                                        |     r0 = 2;
    0x000077e6 str r6, [sp]                                      |     *(sp) = r6;
    0x000077e8 bl 0x85e4                                         |     fcn_000085e4 (r0);
    0x000077ec ldrb r3, [r4, 1]!                                 |     r3 = *((r4 += 1));
    0x000077f0 cmp r3, 0                                         |     
                                                                 |     if (r3 != 0) {
    0x000077f2 bne 0x77dc                                        |         goto label_1;
                                                                 |     }
                                                                 | label_5:
    0x000077f4 movs r0, 0                                        |     r0 = 0;
    0x000077f6 str.w fp, [sp, 8]                                 |     __asm ("str.w fp, [var_8h]");
                                                                 | label_2:
    0x000077fa ldr.w fp, [sl]                                    |     fp = *(sl);
    0x000077fe mov r5, r0                                        |     r5 = r0;
    0x00007800 ldr r3, [sp, 8]                                   |     r3 = var_8h;
    0x00007802 mov sb, r0                                        |     sb = r0;
    0x00007804 ldrb.w r4, [fp]                                   |     r4 = *(fp);
    0x00007808 adds r7, r3, r0                                   |     r7 = r3 + r0;
                                                                 |     if (r4 == 0) {
    0x0000780a cbz r4, 0x7872                                    |         goto label_6;
                                                                 |     }
    0x0000780c adds r2, r3, r0                                   |     r2 = r3 + r0;
    0x0000780e mov r8, fp                                        |     r8 = fp;
    0x00007810 movs r6, 0                                        |     r6 = 0;
    0x00007812 b 0x781e                                          |     
                                                                 |     while (r3 == r4) {
    0x00007814 ldrb r4, [r8, 1]!                                 |         r4 = *((r8 += 1));
    0x00007818 adds r6, 1                                        |         r6++;
    0x0000781a adds r5, 1                                        |         r5++;
                                                                 |         if (r4 == 0) {
    0x0000781c cbz r4, 0x7886                                    |             goto label_7;
                                                                 |         }
    0x0000781e mov r7, r2                                        |         r7 = r2;
    0x00007820 ldrb r3, [r2], 1                                  |         r3 = *(r2);
                                                                 |         r2++;
    0x00007824 mov sb, r5                                        |         sb = r5;
    0x00007826 cmp r3, r4                                        |         
    0x00007828 beq 0x7814                                        |         
                                                                 |     }
    0x0000782a movs r1, 1                                        |     r1 = 1;
    0x0000782c mov.w r0, 0x20c                                   |     r0 = 0x20c;
    0x00007830 blx 0x18d8                                        |     calloc (r0, r1);
    0x00007834 mov.w r2, 0x20c                                   |     r2 = 0x20c;
    0x00007838 mov r1, sl                                        |     r1 = sl;
    0x0000783a str r0, [sp, 0xc]                                 |     var_ch = r0;
    0x0000783c blx 0x19c8                                        |     mmap64 ()
    0x00007840 adds r0, r6, 1                                    |     r0 = r6 + 1;
    0x00007842 add r0, fp                                        |     r0 += fp;
    0x00007844 blx 0x1a10                                        |     stack_chk_fail ();
    0x00007848 ldr r6, [sp, 0xc]                                 |     r6 = var_ch;
    0x0000784a mov.w r2, 0x20c                                   |     r2 = 0x20c;
    0x0000784e movs r1, 0                                        |     r1 = 0;
    0x00007850 str r0, [r6]                                      |     *(r6) = r0;
    0x00007852 mov r0, sl                                        |     r0 = sl;
    0x00007854 blx 0x1c2c                                        |     strtoull (r0, r1, r2);
    0x00007858 add.w r2, sl, r4, lsl 2                           |     r2 = sl + (r4 << 2);
    0x0000785c mov.w r3, 0                                       |     r3 = 0;
    0x00007860 strb.w r3, [r8]                                   |     *(r8) = r3;
    0x00007864 str.w fp, [sl]                                    |     __asm ("str.w fp, [sl]");
    0x00007868 strb.w r4, [sl, 8]                                |     *((sl + 8)) = r4;
    0x0000786c strb.w r4, [sl, 9]                                |     *((sl + 9)) = r4;
    0x00007870 str r6, [r2, 0xc]                                 |     *((r2 + 0xc)) = r6;
                                                                 | label_6:
    0x00007872 ldrb r3, [r7]                                     |     r3 = *(r7);
                                                                 |     if (r3 == 0) {
    0x00007874 cbz r3, 0x7894                                    |         goto label_8;
                                                                 |     }
                                                                 |     do {
    0x00007876 add.w r4, sl, r3, lsl 2                           |         r4 = sl + (r3 << 2);
    0x0000787a ldr r2, [r4, 0xc]                                 |         r2 = *((r4 + 0xc));
                                                                 |         if (r2 == 0) {
    0x0000787c cbz r2, 0x78a6                                    |             goto label_9;
                                                                 |         }
    0x0000787e add.w r0, sb, 1                                   |         r0 = sb + 1;
    0x00007882 mov sl, r2                                        |         sl = r2;
    0x00007884 b 0x77fa                                          |         goto label_2;
                                                                 | label_7:
    0x00007886 ldr r3, [sp, 8]                                   |         r3 = var_8h;
    0x00007888 adds r5, r0, r6                                   |         r5 = r0 + r6;
    0x0000788a mov sb, r5                                        |         sb = r5;
    0x0000788c adds r7, r3, r5                                   |         r7 = r3 + r5;
    0x0000788e ldrb r3, [r7]                                     |         r3 = *(r7);
    0x00007890 cmp r3, 0                                         |         
    0x00007892 bne 0x7876                                        |         
                                                                 |     } while (r3 != 0);
                                                                 | label_8:
    0x00007894 ldrd r1, r2, [sp, 0x10]                           |     __asm ("ldrd r1, r2, [var_10h]");
    0x00007898 add.w r0, sl, 4                                   |     r0 = sl + 4;
    0x0000789c add sp, 0x1c                                      |     
    0x0000789e pop.w {r4, r5, r6, r7, r8, sb, sl, fp, lr}        |     
    0x000078a2 b.w 0x4a18                                        |     void (*0x4a18)() ();
                                                                 | label_9:
    0x000078a6 ldrb.w r2, [sl, 8]                                |     r2 = *((sl + 8));
    0x000078aa movs r1, 1                                        |     r1 = 1;
    0x000078ac ldr.w fp, [sp, 8]                                 |     fp = var_8h;
    0x000078b0 adds r5, 1                                        |     r5++;
    0x000078b2 mov.w r0, 0x20c                                   |     r0 = 0x20c;
    0x000078b6 cmp r2, r3                                        |     
    0x000078b8 ldrb.w r2, [sl, 9]                                |     r2 = *((sl + 9));
    0x000078bc it hi                                             |     
                                                                 |     if (r2 <= r3) {
    0x000078be strbhi r3, [sl, 8]                                |         *((sl + 8)) = r3;
                                                                 |     }
    0x000078c2 cmp r2, r3                                        |     
    0x000078c4 it lo                                             |     
                                                                 |     if (r2 >= r3) {
    0x000078c6 strblo r3, [sl, 9]                                |         *((sl + 9)) = r3;
                                                                 |     }
    0x000078ca blx 0x18d8                                        |     r0 = calloc (r0, r1);
    0x000078ce mov r6, r0                                        |     r6 = r0;
    0x000078d0 str r0, [r4, 0xc]                                 |     *((r4 + 0xc)) = r0;
    0x000078d2 add.w r0, fp, r5                                  |     r0 = fp + r5;
    0x000078d6 blx 0x1a10                                        |     stack_chk_fail ();
    0x000078da movs r3, 0x80                                     |     r3 = 0x80;
    0x000078dc str r0, [r6]                                      |     *(r6) = r0;
    0x000078de ldrd r1, r2, [sp, 0x10]                           |     __asm ("ldrd r1, r2, [var_10h]");
    0x000078e2 adds r0, r6, 4                                    |     r0 = r6 + 4;
    0x000078e4 strb r3, [r6, 8]                                  |     *((r6 + 8)) = r3;
    0x000078e6 bl 0x4a18                                         |     fcn_00004a18 (r0, r1, r2);
    0x000078ea movs r0, 0                                        |     r0 = 0;
    0x000078ec add sp, 0x1c                                      |     
    0x000078ee pop.w {r4, r5, r6, r7, r8, sb, sl, fp, pc}        |     
                                                                 | }
    ; assembly                                               | /* r2dec pseudo code output */
                                                             | /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/bin/kmod @ 0x80d8 */
                                                             | #include <stdint.h>
                                                             |  
    ; (fcn) fcn.000080d8 ()                                  | void fcn_000080d8 (int16_t arg_28h, int16_t arg_2ch, int16_t arg1, int16_t arg2) {
                                                             |     int16_t var_0h;
                                                             |     int16_t var_4h;
                                                             |     int16_t var_8h;
                                                             |     int16_t var_ch;
                                                             |     int16_t var_10h;
                                                             |     int16_t var_14h;
                                                             |     int16_t var_18h;
                                                             |     int16_t var_1ch;
                                                             |     int16_t var_20h;
                                                             |     int16_t var_24h;
                                                             |     r0 = arg1;
                                                             |     r1 = arg2;
    0x000080d8 ldr r2, [pc, 0xa0]                            |     
    0x000080da ldr r3, [pc, 0xa4]                            |     r3 = *(0x8182);
    0x000080dc push.w {r4, r5, r6, r7, r8, sb, lr}           |     
    0x000080e0 movs r4, 0                                    |     r4 = 0;
    0x000080e2 add r2, pc                                    |     r2 = 0x10262;
    0x000080e4 ldr r7, [r0, 0x1c]                            |     r7 = *(arg_28hx1c);
    0x000080e6 sub sp, 0xc                                   |     
    0x000080e8 mov sb, r1                                    |     sb = r1;
    0x000080ea ldr r3, [r2, r3]                              |     
    0x000080ec ldr r3, [r3]                                  |     r3 = *(0x10262);
    0x000080ee str r3, [sp, 4]                               |     var_4h = r3;
    0x000080f0 mov.w r3, 0                                   |     r3 = 0;
    0x000080f4 str r4, [sp]                                  |     *(sp) = r4;
                                                             |     if (r7 == 0) {
    0x000080f6 cbz r7, 0x8164                                |         goto label_5;
                                                             |     }
    0x000080f8 ldr r6, [r0, 0x18]                            |     r6 = *(arg_28hx18);
    0x000080fa mov r8, r0                                    |     r8 = r0;
    0x000080fc mov r5, r4                                    |     r5 = r4;
    0x000080fe subs r6, 4                                    |     r6 -= 4;
                                                             |     do {
    0x00008100 ldr r0, [r6, 4]!                              |         r0 = *((r6 += 4));
    0x00008104 adds r5, 1                                    |         r5++;
    0x00008106 bl 0x7ea0                                     |         fcn_00007ea0 (r0, r1, r2);
    0x0000810a cmp r5, r7                                    |         
    0x0000810c add.w r3, r0, 1                               |         r3 = r0 + 1;
    0x00008110 add r4, r3                                    |         r4 += r3;
    0x00008112 bne 0x8100                                    |         
                                                             |     } while (r5 != r7);
    0x00008114 str.w r4, [sb]                                |     __asm ("str.w r4, [sb]");
                                                             |     if (r4 == 0) {
    0x00008118 cbz r4, 0x8174                                |         goto label_6;
                                                             |     }
    0x0000811a lsls r0, r4, 2                                |     r0 = r4 << 2;
    0x0000811c blx 0x1b0c                                    |     r0 = strerror (r0);
    0x00008120 mov r5, r0                                    |     r5 = r0;
                                                             |     if (r0 == 0) {
    0x00008122 cbz r0, 0x8174                                |         goto label_6;
                                                             |     }
    0x00008124 mov r3, sp                                    |     r3 = sp;
    0x00008126 mov r2, r4                                    |     r2 = r4;
    0x00008128 mov r0, r8                                    |     r0 = r8;
    0x0000812a mov r1, r5                                    |     r1 = r5;
    0x0000812c bl 0x461c                                     |     r0 = fcn_0000461c (r0, r1, r2, r3);
    0x00008130 cmp r0, 0                                     |     
                                                             |     if (r0 < 0) {
    0x00008132 blt 0x816a                                    |         goto label_7;
                                                             |     }
    0x00008134 ldr r3, [pc, 0x4c]                            |     
    0x00008136 movs r2, 4                                    |     r2 = 4;
    0x00008138 ldr r1, [sp]                                  |     r1 = *(sp);
    0x0000813a mov r0, r5                                    |     r0 = r5;
    0x0000813c add r3, pc                                    |     r3 = 0x102c4;
    0x0000813e blx 0x1d5c                                    |     fcn_00001d5c ();
    0x00008142 ldr r3, [sp]                                  |     r3 = *(sp);
    0x00008144 str.w r3, [sb]                                |     __asm ("str.w r3, [sb]");
                                                             |     do {
                                                             | label_0:
    0x00008148 ldr r2, [pc, 0x3c]                            |         
    0x0000814a ldr r3, [pc, 0x34]                            |         r3 = *(0x8182);
    0x0000814c add r2, pc                                    |         r2 = 0x102d8;
    0x0000814e ldr r3, [r2, r3]                              |         r3 = *(0x102d8);
    0x00008150 ldr r2, [r3]                                  |         r2 = *(0x102d8);
    0x00008152 ldr r3, [sp, 4]                               |         r3 = var_4h;
    0x00008154 eors r2, r3                                   |         r2 ^= r3;
    0x00008156 mov.w r3, 0                                   |         r3 = 0;
                                                             |         if (r2 != r3) {
    0x0000815a bne 0x8178                                    |             goto label_8;
                                                             |         }
    0x0000815c mov r0, r5                                    |         r0 = r5;
    0x0000815e add sp, 0xc                                   |         
    0x00008160 pop.w {r4, r5, r6, r7, r8, sb, pc}            |         
                                                             | label_5:
    0x00008164 mov r5, r7                                    |         r5 = r7;
    0x00008166 str r7, [r1]                                  |         *(r1) = r7;
    0x00008168 b 0x8148                                      |         
                                                             |     } while (1);
                                                             | label_7:
    0x0000816a mov r0, r5                                    |     r0 = r5;
    0x0000816c movs r5, 0                                    |     r5 = 0;
    0x0000816e blx 0x19a0                                    |     fcn_000019a0 ();
    0x00008172 b 0x8148                                      |     goto label_0;
                                                             | label_6:
    0x00008174 movs r5, 0                                    |     r5 = 0;
    0x00008176 b 0x8148                                      |     goto label_0;
                                                             | label_8:
    0x00008178 blx 0x1a1c                                    |     stat64 ();
                                                             |     if (r5 > 0) {
    0x0000817c ble 0x81ec                                    |         
    0x0000817e movs r1, r0                                   |         r1 = r0;
    0x00008180 lsls r4, r7, 6                                |         r4 = r7 << 6;
    0x00008182 movs r0, r0                                   |         
    0x00008184 stm r4!, {r0, r4, r6, r7}                     |         *(r4!) = r0;
                                                             |         *((r4! + 4)) = r4;
                                                             |         *((r4! + 8)) = r6;
                                                             |         *((r4! + 12)) = r7;
    0x00008186 invalid                                       |         
                                                             |     }
    0x000081ec str r3, [sp, 0x24]                            |     var_24h = r3;
    0x000081ee ldr r3, [pc, 0x1a4]                           |     
    0x000081f0 add r3, pc                                    |     r3 = 0x1058a;
    0x000081f2 str r3, [sp, 0x18]                            |     var_18h = r3;
                                                             |     do {
    0x000081f4 ldr r3, [sp, 8]                               |         r3 = var_8h;
    0x000081f6 ldr r2, [sp, 4]                               |         r2 = var_4h;
    0x000081f8 ldr r3, [r3, 8]                               |         r3 = *((r3 + 8));
    0x000081fa ldr.w r8, [r3, r2, lsl 2]                     |         offset_0 = r2 << 2;
                                                             |         r8 = *((r3 + offset_0));
    0x000081fe ldr.w sb, [r8, 8]                             |         sb = *((r8 + 8));
    0x00008202 cmp.w sb, 0                                   |         
                                                             |         if (sb == 0) {
    0x00008206 bne 0x820c                                    |             
    0x00008208 ldr.w sb, [r8, 4]                             |             sb = *((r8 + 4));
                                                             |         }
    0x0000820c ldr r1, [sp, 0x10]                            |         r1 = var_10h;
    0x0000820e mov r0, r8                                    |         r0 = r8;
    0x00008210 bl 0x80d8                                     |         fcn_000080d8 (r0, r1, r2, r3);
    0x00008214 str r0, [sp, 0xc]                             |         var_ch = r0;
    0x00008216 cmp r0, 0                                     |         
                                                             |         if (r0 != 0) {
    0x00008218 bne 0x82c2                                    |             goto label_9;
                                                             |         }
    0x0000821a ldr r3, [sp, 0x28]                            |         r3 = *(arg_28h);
    0x0000821c cmp r3, 0                                     |         
                                                             |         if (r3 != 0) {
    0x0000821e bne.w 0x834a                                  |             goto label_10;
                                                             |         }
    0x00008222 mov r0, sb                                    |         r0 = sb;
    0x00008224 blx 0x1bb0                                    |         r0 = fcn_00001bb0 ();
    0x00008228 add.w sl, r0, 1                               |         sl = r0 + 1;
                                                             | label_1:
    0x0000822c add.w r0, sl, 1                               |         r0 = sl + 1;
    0x00008230 blx 0x1b0c                                    |         r0 = strerror (r0);
    0x00008234 mov r5, r0                                    |         r5 = r0;
    0x00008236 cmp r0, 0                                     |         
                                                             |         if (r0 == 0) {
    0x00008238 beq.w 0x8366                                  |             goto label_11;
                                                             |         }
    0x0000823c mov r0, sb                                    |         r0 = sb;
    0x0000823e blx 0x1bb0                                    |         r0 = fcn_00001bb0 ();
    0x00008242 mov r4, r0                                    |         r4 = r0;
    0x00008244 mov r1, sb                                    |         r1 = sb;
    0x00008246 mov r2, r0                                    |         r2 = r0;
    0x00008248 add.w sb, r4, 1                               |         sb = r4 + 1;
    0x0000824c mov r0, r5                                    |         r0 = r5;
    0x0000824e blx 0x19c8                                    |         mmap64 ()
    0x00008252 movs r3, 0x3a                                 |         r3 = 0x3a;
    0x00008254 strb r3, [r5, r4]                             |         *((r5 + r4)) = r3;
                                                             | label_2:
    0x00008256 movs r3, 0                                    |         r3 = 0;
    0x00008258 ldr r0, [sp, 0x14]                            |         r0 = var_14h;
    0x0000825a strb.w r3, [r5, sb]                           |         *((r5 + sb)) = r3;
    0x0000825e add.w r1, r8, 0x44                            |         r1 = r8 + 0x44;
    0x00008262 ldrh.w r3, [r8, 0x38]                         |         r3 = *((r8 + 0x38));
    0x00008266 mov r2, r5                                    |         r2 = r5;
    0x00008268 bl 0x7788                                     |         r0 = fcn_00007788 (r0, r1, r2, r3);
                                                             |         if (r0 != 0) {
    0x0000826c cbz r0, 0x827c                                |             
    0x0000826e ldr r3, [sp, 8]                               |             r3 = var_8h;
    0x00008270 ldr r3, [r3]                                  |             r3 = *(r3);
    0x00008272 add.w r3, r3, 0x1000                          |             r3 += 0x1000;
    0x00008276 ldrb r3, [r3, 0xb]                            |             r3 = *((r3 + 0xb));
    0x00008278 cmp r3, 0                                     |             
                                                             |             if (r3 != 0) {
    0x0000827a bne 0x8356                                    |                 goto label_12;
                                                             |             }
                                                             |         }
                                                             | label_4:
    0x0000827c mov r0, r5                                    |         r0 = r5;
    0x0000827e blx 0x19a0                                    |         fcn_000019a0 ();
    0x00008282 ldr r0, [sp, 0xc]                             |         r0 = var_ch;
    0x00008284 blx 0x19a0                                    |         fcn_000019a0 ();
                                                             | label_3:
    0x00008288 ldr r3, [sp, 8]                               |         r3 = var_8h;
    0x0000828a ldr r2, [sp, 4]                               |         r2 = var_4h;
    0x0000828c ldr r3, [r3, 0xc]                             |         r3 = *((r3 + 0xc));
    0x0000828e adds r2, 1                                    |         r2++;
    0x00008290 str r2, [sp, 4]                               |         var_4h = r2;
    0x00008292 cmp r2, r3                                    |         
    0x00008294 blo 0x81f4                                    |         
                                                             |     } while (r2 <= r3);
    0x00008296 ldr r4, [sp, 0x14]                            |     r4 = var_14h;
    0x00008298 ldr r1, [sp, 0x1c]                            |     r1 = var_1ch;
    0x0000829a mov r0, r4                                    |     r0 = r4;
    0x0000829c bl 0x50b8                                     |     fcn_000050b8 (r0, r1);
    0x000082a0 mov r0, r4                                    |     r0 = r4;
    0x000082a2 bl 0x4694                                     |     fcn_00004694 (r0);
    0x000082a6 ldr r2, [pc, 0xf0]                            |     
    0x000082a8 ldr r3, [pc, 0xd0]                            |     r3 = *(0x837c);
    0x000082aa add r2, pc                                    |     r2 = 0x10648;
    0x000082ac ldr r3, [r2, r3]                              |     r3 = *(0x10648);
    0x000082ae ldr r2, [r3]                                  |     r2 = *(0x10648);
    0x000082b0 ldr r3, [sp, 0x2c]                            |     r3 = *(arg_2ch);
    0x000082b2 eors r2, r3                                   |     r2 ^= r3;
    0x000082b4 mov.w r3, 0                                   |     r3 = 0;
                                                             |     if (r2 != r3) {
    0x000082b8 bne 0x8362                                    |         goto label_13;
                                                             |     }
    0x000082ba movs r0, 0                                    |     r0 = 0;
    0x000082bc add sp, 0x34                                  |     
    0x000082be pop.w {r4, r5, r6, r7, r8, sb, sl, fp, pc}    |     
                                                             | label_9:
    0x000082c2 mov r0, sb                                    |     r0 = sb;
    0x000082c4 blx 0x1bb0                                    |     fcn_00001bb0 ();
    0x000082c8 ldr r6, [sp, 0x28]                            |     r6 = *(arg_28h);
    0x000082ca adds r3, r0, 1                                |     r3 = r0 + 1;
    0x000082cc mov r7, r0                                    |     r7 = r0;
    0x000082ce mov fp, r3                                    |     
    0x000082d0 mov sl, r3                                    |     sl = r3;
    0x000082d2 cmp r6, 0                                     |     
                                                             |     if (r6 == 0) {
    0x000082d4 beq 0x822c                                    |         goto label_1;
                                                             |     }
    0x000082d6 ldr r5, [sp, 0xc]                             |     r5 = var_ch;
    0x000082d8 mov r4, r5                                    |     r4 = r5;
    0x000082da add.w r6, r5, r6, lsl 2                       |     r6 = r5 + (r6 << 2);
                                                             |     do {
    0x000082de ldr r3, [r5], 4                               |         r3 = *(r5);
                                                             |         r5 += 4;
    0x000082e2 ldr r0, [r3, 8]                               |         r0 = *((r3 + 8));
                                                             |         if (r0 == 0) {
    0x000082e4 cbnz r0, 0x82e8                               |             
    0x000082e6 ldr r0, [r3, 4]                               |             r0 = *((r3 + 4));
                                                             |         }
    0x000082e8 blx 0x1bb0                                    |         fcn_00001bb0 ();
    0x000082ec cmp r6, r5                                    |         
    0x000082ee add.w r0, r0, 1                               |         r0++;
    0x000082f2 add sl, r0                                    |         sl += r0;
    0x000082f4 bne 0x82de                                    |         
                                                             |     } while (r6 != r5);
    0x000082f6 add.w r0, sl, 1                               |     r0 = sl + 1;
    0x000082fa blx 0x1b0c                                    |     r0 = strerror (r0);
    0x000082fe mov r5, r0                                    |     r5 = r0;
                                                             |     if (r0 == 0) {
    0x00008300 cbz r0, 0x8366                                |         goto label_11;
                                                             |     }
    0x00008302 mov r1, sb                                    |     r1 = sb;
    0x00008304 mov r2, r7                                    |     r2 = r7;
    0x00008306 mov sb, fp                                    |     sb = fp;
    0x00008308 mov.w sl, 0x20                                |     sl = 0x20;
    0x0000830c blx 0x19c8                                    |     mmap64 ()
    0x00008310 movs r3, 0x3a                                 |     r3 = 0x3a;
    0x00008312 strb r3, [r5, r7]                             |     *((r5 + r7)) = r3;
                                                             |     do {
    0x00008314 ldr r3, [r4], 4                               |         r3 = *(r4);
                                                             |         r4 += 4;
    0x00008318 strb.w sl, [r5, sb]                           |         *((r5 + sb)) = sl;
    0x0000831c add.w sb, sb, 1                               |         sb++;
    0x00008320 ldr.w fp, [r3, 8]                             |         fp = *((r3 + 8));
    0x00008324 cmp.w fp, 0                                   |         
                                                             |         if (fp == 0) {
    0x00008328 bne 0x832e                                    |             
    0x0000832a ldr.w fp, [r3, 4]                             |             fp = *((r3 + 4));
                                                             |         }
    0x0000832e mov r0, fp                                    |         r0 = fp;
    0x00008330 blx 0x1bb0                                    |         fcn_00001bb0 ();
    0x00008334 mov r1, fp                                    |         r1 = fp;
    0x00008336 mov r7, r0                                    |         r7 = r0;
    0x00008338 mov r2, r0                                    |         r2 = r0;
    0x0000833a add.w r0, r5, sb                              |         r0 = r5 + sb;
    0x0000833e blx 0x19c8                                    |         mmap64 ()
    0x00008342 cmp r6, r4                                    |         
    0x00008344 add sb, r7                                    |         sb += r7;
    0x00008346 bne 0x8314                                    |         
                                                             |     } while (r6 != r4);
    0x00008348 b 0x8256                                      |     goto label_2;
                                                             | label_10:
    0x0000834a ldr r1, [sp, 0x18]                            |     r1 = var_18h;
    0x0000834c mov r2, sb                                    |     r2 = sb;
    0x0000834e movs r0, 3                                    |     r0 = 3;
    0x00008350 bl 0x85e4                                     |     fcn_000085e4 (r0);
    0x00008354 b 0x8288                                      |     goto label_3;
                                                             | label_12:
    0x00008356 ldr r1, [sp, 0x20]                            |     r1 = var_20h;
    0x00008358 mov r2, r5                                    |     r2 = r5;
    0x0000835a movs r0, 4                                    |     r0 = 4;
    0x0000835c bl 0x85e4                                     |     fcn_000085e4 (r0);
    0x00008360 b 0x827c                                      |     goto label_4;
                                                             | label_13:
    0x00008362 blx 0x1a1c                                    |     stat64 ();
                                                             | label_11:
    0x00008366 ldr r0, [sp, 0xc]                             |     r0 = var_ch;
    0x00008368 blx 0x19a0                                    |     fcn_000019a0 ();
    0x0000836c ldr r1, [sp, 0x24]                            |     r1 = var_24h;
    0x0000836e movs r0, 3                                    |     r0 = 3;
    0x00008370 bl 0x85e4                                     |     fcn_000085e4 (r0);
    0x00008374 b 0x8288                                      |     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/bin/kmod @ 0x925c */
                                                 | #include <stdint.h>
                                                 |  
    ; (fcn) fcn.0000925c ()                      | void fcn_0000925c (int16_t arg1, uint32_t errnum) {
                                                 |     r0 = arg1;
                                                 |     r1 = errnum;
    0x0000925c push {r3, r4, r5, r6, r7, lr}     |     
    0x0000925e ldr r7, [r0, 4]                   |     r7 = *((r0 + 4));
    0x00009260 cmp r7, r1                        |     
    0x00009262 it hs                             |     
                                                 |     if (r7 < r1) {
    0x00009264 movhs r0, 0                       |         r0 = 0;
                                                 |     }
                                                 |     if (r7 >= r1) {
    0x00009266 bhs 0x928c                        |         goto label_0;
                                                 |     }
    0x00009268 ldrb r3, [r0, 8]                  |     r3 = *((r0 + 8));
    0x0000926a mov r4, r0                        |     r4 = r0;
    0x0000926c mov r5, r1                        |     r5 = r1;
                                                 |     if (r3 != 0) {
    0x0000926e cbnz r3, 0x928e                   |         goto label_1;
                                                 |     }
    0x00009270 mov r0, r1                        |     r0 = r1;
    0x00009272 blx 0x1b0c                        |     strerror (r0);
    0x00009274 mcrr p6, 0, r4, ip, c6            |     __asm ("mcrr p6, 0, r4, ip, c6");
                                                 |     if (r0 == 0) {
    0x00009278 cbz r0, 0x929a                    |         goto label_2;
                                                 |     }
    0x0000927a ldr r1, [r4]                      |     r1 = *(r4);
    0x0000927c mov r2, r7                        |     r2 = r7;
    0x0000927e blx 0x19c8                        |     mmap64 ()
                                                 |     do {
    0x00009282 movs r0, 0                        |         r0 = 0;
    0x00009284 movs r3, 1                        |         r3 = 1;
    0x00009286 strd r6, r5, [r4]                 |         __asm ("strd r6, r5, [r4]");
    0x0000928a strb r3, [r4, 8]                  |         *((r4 + 8)) = r3;
                                                 | label_0:
    0x0000928c pop {r3, r4, r5, r6, r7, pc}      |         
                                                 | label_1:
    0x0000928e ldr r0, [r0]                      |         r0 = *(r0);
    0x00009290 blx 0x1a34                        |         r0 = regexec ();
    0x00009294 mov r6, r0                        |         r6 = r0;
    0x00009296 cmp r0, 0                         |         
    0x00009298 bne 0x9282                        |         
                                                 |     } while (r0 != 0);
                                                 | label_2:
    0x0000929a mvn r0, 0xb                       |     r0 = ~0xb;
    0x0000929e pop {r3, r4, r5, r6, r7, pc}      |     
                                                 | }
    ; assembly                                       | /* r2dec pseudo code output */
                                                     | /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/bin/kmod @ 0x960c */
                                                     | #include <stdint.h>
                                                     |  
    ; (fcn) fcn.0000960c ()                          | void fcn_0000960c (int16_t arg1) {
                                                     |     r0 = arg1;
    0x0000960c push.w {r4, r5, r6, r7, r8, lr}       |     
    0x00009610 ldrb r3, [r0]                         |     r3 = *(r0);
    0x00009612 cmp r3, 0x2f                          |     
                                                     |     if (r3 != 0x2f) {
    0x00009614 beq 0x9662                            |         
    0x00009616 mov r7, r0                            |         r7 = r0;
    0x00009618 blx 0x1918                            |         r0 = fcn_00001918 ();
    0x0000961c mov r4, r0                            |         r4 = r0;
    0x0000961e mov r5, r0                            |         r5 = r0;
                                                     |         if (r0 != 0) {
    0x00009620 cbz r0, 0x9656                        |             
    0x00009622 mov r0, r7                            |             r0 = r7;
    0x00009624 blx 0x1bb0                            |             r0 = fcn_00001bb0 ();
    0x00009628 mov r8, r0                            |             r8 = r0;
    0x0000962a mov r0, r4                            |             r0 = r4;
    0x0000962c blx 0x1bb0                            |             r0 = fcn_00001bb0 ();
    0x00009630 add.w r1, r8, r0                      |             r1 = r8 + r0;
    0x00009634 mov r6, r0                            |             r6 = r0;
    0x00009636 adds r1, 2                            |             r1 += 2;
    0x00009638 mov r0, r4                            |             r0 = r4;
    0x0000963a blx 0x1a34                            |             r0 = regexec ();
    0x0000963e mov r5, r0                            |             r5 = r0;
                                                     |             if (r0 == 0) {
    0x00009640 cbz r0, 0x9656                        |                 goto label_0;
                                                     |             }
    0x00009642 movs r3, 0x2f                         |             r3 = 0x2f;
    0x00009644 movs r4, 0                            |             r4 = 0;
    0x00009646 strb r3, [r0, r6]                     |             *((r0 + r6)) = r3;
    0x00009648 adds r0, r6, 1                        |             r0 = r6 + 1;
    0x0000964a add.w r2, r8, 1                       |             r2 = r8 + 1;
    0x0000964e mov r1, r7                            |             r1 = r7;
    0x00009650 add r0, r5                            |             r0 += r5;
    0x00009652 blx 0x19c8                            |             mmap64 ()
                                                     |         }
                                                     | label_0:
    0x00009656 mov r0, r4                            |         r0 = r4;
    0x00009658 blx 0x19a0                            |         fcn_000019a0 ();
    0x0000965c mov r0, r5                            |         r0 = r5;
    0x0000965e pop.w {r4, r5, r6, r7, r8, pc}        |         
                                                     |     }
    0x00009662 movs r4, 0                            |     r4 = 0;
    0x00009664 blx 0x1a10                            |     r0 = stack_chk_fail ();
    0x00009668 mov r5, r0                            |     r5 = r0;
    0x0000966a mov r0, r4                            |     r0 = r4;
    0x0000966c blx 0x19a0                            |     fcn_000019a0 ();
    0x00009670 mov r0, r5                            |     r0 = r5;
    0x00009672 pop.w {r4, r5, r6, r7, r8, pc}        |     
                                                     | }
    ; assembly                                           | /* r2dec pseudo code output */
                                                         | /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/bin/kmod @ 0x97b0 */
                                                         | #include <stdint.h>
                                                         |  
                                                         | #define BIT_MASK(t,v) ((t)(-((v)!= 0)))&(((t)-1)>>((sizeof(t)*CHAR_BIT)-(v)))
                                                         |  
    ; (fcn) fcn.000097b0 ()                              | void fcn_000097b0 (int16_t arg1, int16_t arg2) {
                                                         |     int16_t var_0h;
                                                         |     r0 = arg1;
                                                         |     r1 = arg2;
                                                         |     if (? >= ?) {
                                                         | label_7:
    0x00009678 ldrbmi lr, [r0, sp, lsr 18]!              |         
                                                         |     }
    0x0000967c sub sp, 0x70                              |     
    0x0000967e ldr r6, [pc, 0x124]                       |     
    0x00009680 add r7, sp, 0                             |     r7 += var_0h;
    0x00009682 mov r5, r1                                |     r5 = r1;
    0x00009684 ldr r3, [pc, 0x120]                       |     r3 = *(0x97a8);
    0x00009686 mov r4, r0                                |     r4 = r0;
    0x00009688 add r6, pc                                |     r6 = 0x12e32;
    0x0000968a mov sb, r2                                |     sb = r2;
    0x0000968c mov.w r8, 0                               |     r8 = 0;
    0x00009690 ldr r3, [r6, r3]                          |     
    0x00009692 mov r6, r7                                |     r6 = r7;
    0x00009694 ldr r3, [r3]                              |     r3 = *(0x12e32);
    0x00009696 str r3, [r7, 0x6c]                        |     *((r7 + 0x6c)) = r3;
    0x00009698 mov.w r3, 0                               |     r3 = 0;
    0x0000969c blx 0x1c90                                |     r0 = fcn_00001c90 ();
    0x000096a0 add.w r3, r0, 8                           |     r3 = r0 + 8;
    0x000096a4 mov r2, r0                                |     r2 = r0;
    0x000096a6 bic r3, r3, 7                             |     r3 = BIT_MASK (r3, 7);
    0x000096aa mov r1, r4                                |     r1 = r4;
    0x000096ac sub.w sp, sp, r3                          |     
    0x000096b0 mov r3, sp                                |     r3 = sp;
    0x000096b2 lsrs r3, r3, 3                            |     r3 >>= 3;
    0x000096b4 strb.w r8, [r0, r3, lsl 3]                |     offset_0 = r3 << 3;
                                                         |     *((r0 + offset_0)) = r8;
    0x000096b8 mov r0, sp                                |     r0 = sp;
    0x000096ba blx 0x19c8                                |     r0 = mmap64 ()
    0x000096be add r5, r0                                |     r5 += r0;
    0x000096c0 mov sl, r0                                |     sl = r0;
    0x000096c2 mov r4, r5                                |     r4 = r5;
                                                         |     do {
                                                         | label_0:
    0x000096c4 mov r1, r6                                |         r1 = r6;
    0x000096c6 mov r0, sl                                |         r0 = sl;
    0x000096c8 blx 0x1a28                                |         r0 = realloc (r0, r1);
    0x000096cc cmp r0, 0                                 |         
                                                         |         if (r0 >= 0) {
    0x000096ce bge 0x9720                                |             goto label_8;
                                                         |         }
                                                         | label_3:
    0x000096d0 blx 0x1be4                                |         r0 = isoc99_sscanf ();
    0x000096d4 ldr r3, [r0]                              |         r3 = *(r0);
    0x000096d6 rsbs r3, r3, 0                            |         r3 -= ;
    0x000096d8 cmp r3, 0                                 |         
                                                         |         if (r3 > 0) {
    0x000096da bgt 0x9734                                |             goto label_9;
                                                         |         }
                                                         |         if (r3 == 0) {
                                                         | label_4:
    0x000096dc beq 0x9794                                |             goto label_10;
                                                         |         }
    0x000096de cmp r4, sl                                |         
                                                         |         if (r4 == sl) {
    0x000096e0 beq 0x979a                                |             goto label_11;
                                                         |         }
    0x000096e2 strb.w r8, [r4]                           |         *(r4) = r8;
    0x000096e6 bls 0x96c4                                |         
                                                         |     } while (r4 < sl);
    0x000096e8 add.w ip, r4, -1                          |     
    0x000096ec b 0x96f0                                  |     goto label_12;
                                                         | label_1:
    0x000096ee mov ip, r3                                |     
                                                         | label_12:
    0x000096f0 cmp ip, sl                                |     
    0x000096f2 mov r4, ip                                |     r4 = ip;
                                                         |     if (ip == sl) {
    0x000096f4 beq 0x96c4                                |         goto label_0;
                                                         |     }
    0x000096f6 mov r3, ip                                |     r3 = ip;
    0x000096f8 ldrb r2, [r3], -1                         |     r2 = *(r3);
                                                         |     r3 += -1;
    0x000096fc cmp r2, 0x2f                              |     
                                                         |     if (r2 != 0x2f) {
    0x000096fe bne 0x96ee                                |         goto label_1;
                                                         |     }
    0x00009700 b 0x9704                                  |     goto label_13;
                                                         | label_2:
    0x00009702 subs r3, 1                                |     r3--;
                                                         | label_13:
    0x00009704 ldrb r2, [r3]                             |     r2 = *(r3);
    0x00009706 mov r4, ip                                |     r4 = ip;
    0x00009708 mov ip, r3                                |     
    0x0000970a cmp r2, 0x2f                              |     
                                                         |     if (r2 != 0x2f) {
    0x0000970c bne 0x96c4                                |         goto label_0;
                                                         |     }
    0x0000970e cmp sl, r3                                |     
                                                         |     if (sl <= r3) {
    0x00009710 blo 0x9702                                |         goto label_2;
                                                         |     }
    0x00009712 mov r1, r6                                |     r1 = r6;
    0x00009714 mov r0, sl                                |     r0 = sl;
    0x00009716 mov r4, r3                                |     r4 = r3;
    0x00009718 blx 0x1a28                                |     r0 = realloc (r0, r1);
    0x0000971c cmp r0, 0                                 |     
                                                         |     if (r0 < 0) {
    0x0000971e blt 0x96d0                                |         goto label_3;
                                                         |     }
                                                         | label_8:
    0x00009720 ldr r3, [r7, 0x10]                        |     r3 = *((r7 + 0x10));
    0x00009722 and r3, r3, 0xf000                        |     r3 &= 0xf000;
    0x00009726 sub.w r3, r3, 0x4000                      |     r3 -= 0x4000;
    0x0000972a clz r3, r3                                |     r3 &= r3;
    0x0000972e lsrs r3, r3, 5                            |     r3 >>= 5;
    0x00009730 cmp r3, 0                                 |     
                                                         |     if (r3 <= 0) {
    0x00009732 ble 0x96dc                                |         goto label_4;
                                                         |     }
                                                         | label_9:
    0x00009734 mov r0, r4                                |     r0 = r4;
    0x00009736 blx 0x1bb0                                |     r0 = fcn_00001bb0 ();
    0x0000973a adds r6, r4, r0                           |     r6 = r4 + r0;
    0x0000973c cmp r5, r6                                |     
    0x0000973e itt ne                                    |     
                                                         |     if (r5 == r6) {
    0x00009740 movne r3, 0x2f                            |         r3 = 0x2f;
                                                         |     }
                                                         |     if (r5 == r6) {
    0x00009742 strbne r3, [r4, r0]                       |         *((r4 + r0)) = r3;
                                                         |     }
                                                         |     if (r5 == r6) {
    0x00009744 beq 0x9776                                |         goto label_14;
                                                         |     }
                                                         | label_6:
    0x00009746 cmp r6, r5                                |     
                                                         |     if (r6 >= r5) {
    0x00009748 bhs 0x9776                                |         goto label_14;
                                                         |     }
    0x0000974a movs r4, 0x2f                             |     r4 = 0x2f;
    0x0000974c b 0x975c                                  |     
                                                         |     while (r0 >= 0) {
                                                         | label_5:
    0x0000974e mov r0, r6                                |         r0 = r6;
    0x00009750 blx 0x1bb0                                |         r0 = fcn_00001bb0 ();
    0x00009754 add r6, r0                                |         r6 += r0;
    0x00009756 cmp r5, r6                                |         
    0x00009758 strb r4, [r6]                             |         *(r6) = r4;
                                                         |         if (r5 < r6) {
    0x0000975a bls 0x9776                                |             goto label_14;
                                                         |         }
    0x0000975c mov r1, sb                                |         r1 = sb;
    0x0000975e mov r0, sl                                |         r0 = sl;
    0x00009760 blx 0x1c14                                |         r0 = memset (r0, r1, r2);
    0x00009764 cmp r0, 0                                 |         
    0x00009766 bge 0x974e                                |         
                                                         |     }
    0x00009768 blx 0x1be4                                |     r0 = isoc99_sscanf ();
    0x0000976c ldr r0, [r0]                              |     r0 = *(r0);
    0x0000976e cmp r0, 0x11                              |     
                                                         |     if (r0 == 0x11) {
    0x00009770 beq 0x974e                                |         goto label_5;
                                                         |     }
    0x00009772 rsbs r0, r0, 0                            |     r0 -= ;
    0x00009774 b 0x9778                                  |     goto label_15;
                                                         | label_14:
    0x00009776 movs r0, 0                                |     r0 = 0;
                                                         |     do {
                                                         | label_15:
    0x00009778 ldr r2, [pc, 0x30]                        |         
    0x0000977a ldr r3, [pc, 0x2c]                        |         r3 = *(0x97aa);
    0x0000977c add r2, pc                                |         r2 = "alias symbol:%s %s\n";
    0x0000977e ldr r3, [r2, r3]                          |         r3 = "alias symbol:%s %s\n";
    0x00009780 ldr r2, [r3]                              |         r2 = "alias symbol:%s %s\n";
    0x00009782 ldr r3, [r7, 0x6c]                        |         r3 = *((r7 + 0x6c));
    0x00009784 eors r2, r3                               |         r2 ^= r3;
    0x00009786 mov.w r3, 0                               |         r3 = 0;
                                                         |         if (r2 != r3) {
    0x0000978a bne 0x979e                                |             goto label_16;
                                                         |         }
    0x0000978c adds r7, 0x70                             |         r7 += 0x70;
    0x0000978e mov sp, r7                                |         
    0x00009790 pop.w {r4, r5, r6, r7, r8, sb, sl, pc}    |         
                                                         | label_10:
    0x00009794 mvn r0, 0x13                              |         r0 = ~0x13;
    0x00009798 b 0x9778                                  |         
                                                         |     } while (1);
                                                         | label_11:
    0x0000979a mov r6, sl                                |     r6 = sl;
    0x0000979c b 0x9746                                  |     goto label_6;
                                                         | label_16:
    0x0000979e blx 0x1a1c                                |     stat64 ();
    0x000097a2 nop                                       |     
    0x000097a4 stm r7!, {r4, r7}                         |     *(r7!) = r4;
                                                         |     *((r7! + 4)) = r7;
    0x000097a6 movs r1, r0                               |     r1 = r0;
    0x000097a8 lsls r4, r7, 6                            |     r4 = r7 << 6;
    0x000097aa movs r0, r0                               |     
    0x000097ac stm r6!, {r2, r3, r4, r7}                 |     *(r6!) = r2;
                                                         |     *((r6! + 4)) = r3;
                                                         |     *((r6! + 8)) = r4;
                                                         |     *((r6! + 12)) = r7;
    0x000097ae movs r1, r0                               |     r1 = r0;
    0x000097b0 push {r3, r4, r5, lr}                     |     
    0x000097b2 mov r5, r1                                |     r5 = r1;
    0x000097b4 movs r1, 0x2f                             |     r1 = 0x2f;
    0x000097b6 mov r4, r0                                |     r4 = r0;
    0x000097b8 blx 0x1cd0                                |     r0 = fcn_00001cd0 ();
                                                         |     if (r0 != 0) {
    0x000097bc cbz r0, 0x97cc                            |         
    0x000097be subs r1, r0, r4                           |         r1 = r0 - r4;
    0x000097c0 mov r2, r5                                |         r2 = r5;
    0x000097c2 mov r0, r4                                |         r0 = r4;
    0x000097c4 pop.w {r3, r4, r5, lr}                    |         
    0x000097c8 b.w 0x9678                                |         goto label_7;
                                                         |     }
    0x000097cc pop {r3, r4, r5, pc}                      |     
                                                         | }
    ; assembly                                                   | /* r2dec pseudo code output */
                                                                 | /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/bin/kmod @ 0xa610 */
                                                                 | #include <stdint.h>
                                                                 |  
    ; (fcn) fcn.0000a610 ()                                      | void fcn_0000a610 (int16_t arg1, int16_t arg2, int16_t arg3) {
                                                                 |     int16_t var_4h;
                                                                 |     r0 = arg1;
                                                                 |     r1 = arg2;
                                                                 |     r2 = arg3;
    0x0000a610 push.w {r4, r5, r6, r7, r8, sb, sl, lr}           |     
    0x0000a614 mov r7, r0                                        |     r7 = r0;
    0x0000a616 sub sp, 8                                         |     
    0x0000a618 mov r8, r1                                        |     r8 = r1;
    0x0000a61a mov r5, r2                                        |     r5 = r2;
    0x0000a61c mov.w sb, 0                                       |     sb = 0;
                                                                 |     if (r2 == 0) {
    0x0000a620 cbz r2, 0xa65c                                    |         goto label_5;
                                                                 |     }
                                                                 | label_0:
    0x0000a622 ldr r6, [r7]                                      |     r6 = *(r7);
    0x0000a624 mov.w r3, -1                                      |     r3 = -1;
    0x0000a628 mov r4, r6                                        |     r4 = r6;
                                                                 |     do {
    0x0000a62a mov r0, r5                                        |         r0 = r5;
                                                                 |         if (r4 == 0) {
    0x0000a62c cbz r4, 0xa696                                    |             goto label_6;
                                                                 |         }
    0x0000a62e ldr r1, [r4, 8]                                   |         r1 = *((r4 + 8));
    0x0000a630 adds r1, 5                                        |         r1 += 5;
    0x0000a632 blx 0x1924                                        |         r0 = fcn_00001924 ();
    0x0000a636 subs r3, r0, 0                                    |         r3 = r0 - 0;
                                                                 |         if (r3 <= r0) {
    0x0000a638 ble 0xa696                                        |             goto label_6;
                                                                 |         }
    0x0000a63a ldr r4, [r4]                                      |         r4 = *(r4);
    0x0000a63c cmp r4, r6                                        |         
    0x0000a63e bne 0xa62a                                        |         
                                                                 |     } while (r4 != r6);
    0x0000a640 mov r0, r5                                        |     r0 = r5;
    0x0000a642 blx 0x1bb0                                        |     r0 = fcn_00001bb0 ();
    0x0000a646 mov r4, r0                                        |     r4 = r0;
    0x0000a648 adds r0, 9                                        |     r0 += 9;
    0x0000a64a blx 0x1b0c                                        |     r0 = strerror (r0);
    0x0000a64e mov sl, r0                                        |     sl = r0;
                                                                 |     if (r0 != 0) {
    0x0000a650 cbnz r0, 0xa66a                                   |         goto label_7;
                                                                 |     }
                                                                 | label_1:
    0x0000a652 mvn r0, 0xb                                       |     r0 = ~0xb;
                                                                 |     do {
    0x0000a656 add sp, 8                                         |         
    0x0000a658 pop.w {r4, r5, r6, r7, r8, sb, sl, pc}            |         
    0x0000a65a strh r0, [r6, 0x3e]                               |         *((r6 + 0x3e)) = r0;
                                                                 | label_5:
    0x0000a65c mov r0, r1                                        |         r0 = r1;
    0x0000a65e mov.w sb, 1                                       |         sb = 1;
    0x0000a662 blx 0x1948                                        |         r0 = fcn_00001948 ();
    0x0000a666 mov r5, r0                                        |         r5 = r0;
    0x0000a668 b 0xa622                                          |         goto label_0;
                                                                 | label_7:
    0x0000a66a adds r2, r4, 1                                    |         r2 = r4 + 1;
    0x0000a66c mov r1, r5                                        |         r1 = r5;
    0x0000a66e add.w r0, sl, 5                                   |         r0 = sl + 5;
    0x0000a672 blx 0x19c8                                        |         mmap64 ()
    0x0000a676 str.w r8, [sl]                                    |         __asm ("str.w r8, [sl]");
    0x0000a67a strb.w sb, [sl, 4]                                |         *((sl + 4)) = sb;
                                                                 | label_2:
    0x0000a67e mov r1, sl                                        |         r1 = sl;
    0x0000a680 mov r0, r6                                        |         r0 = r6;
    0x0000a682 bl 0xa350                                         |         r0 = fcn_0000a350 (r0, r1);
    0x0000a686 mov r3, r0                                        |         r3 = r0;
    0x0000a688 cmp r0, 0                                         |         
                                                                 |         if (r0 == 0) {
    0x0000a68a beq 0xa6f6                                        |             goto label_8;
                                                                 |         }
                                                                 | label_3:
    0x0000a68c movs r0, 0                                        |         r0 = 0;
    0x0000a68e str r3, [r7]                                      |         *(r7) = r3;
    0x0000a690 add sp, 8                                         |         
    0x0000a692 pop.w {r4, r5, r6, r7, r8, sb, sl, pc}            |         
                                                                 | label_6:
    0x0000a696 mvn r0, 0x10                                      |         r0 = ~0x10;
    0x0000a69a cmp r3, 0                                         |         
    0x0000a69c beq 0xa656                                        |         
                                                                 |     } while (r3 == 0);
    0x0000a69e mov r0, r5                                        |     r0 = r5;
    0x0000a6a0 blx 0x1bb0                                        |     r0 = fcn_00001bb0 ();
    0x0000a6a4 mov r2, r0                                        |     r2 = r0;
    0x0000a6a6 adds r0, 9                                        |     r0 += 9;
    0x0000a6a8 str r2, [sp, 4]                                   |     var_4h = r2;
    0x0000a6aa blx 0x1b0c                                        |     strerror (r0);
    0x0000a6ae ldr r2, [sp, 4]                                   |     r2 = var_4h;
    0x0000a6b0 mov sl, r0                                        |     sl = r0;
    0x0000a6b2 cmp r0, 0                                         |     
                                                                 |     if (r0 == 0) {
    0x0000a6b4 beq 0xa652                                        |         goto label_1;
                                                                 |     }
    0x0000a6b6 adds r2, 1                                        |     r2++;
    0x0000a6b8 mov r1, r5                                        |     r1 = r5;
    0x0000a6ba adds r0, 5                                        |     r0 += 5;
    0x0000a6bc blx 0x19c8                                        |     mmap64 ()
    0x0000a6c0 str.w r8, [sl]                                    |     __asm ("str.w r8, [sl]");
    0x0000a6c4 strb.w sb, [sl, 4]                                |     *((sl + 4)) = sb;
    0x0000a6c8 cmp r4, 0                                         |     
                                                                 |     if (r4 == 0) {
    0x0000a6ca beq 0xa67e                                        |         goto label_2;
                                                                 |     }
    0x0000a6cc cmp r6, r4                                        |     
    0x0000a6ce mov r1, sl                                        |     r1 = sl;
    0x0000a6d0 mov r0, r4                                        |     r0 = r4;
                                                                 |     if (r6 == r4) {
    0x0000a6d2 beq 0xa6ec                                        |         goto label_9;
                                                                 |     }
    0x0000a6d4 bl 0xa378                                         |     r0 = fcn_0000a378 (r0, r1);
    0x0000a6d8 mov r3, r0                                        |     r3 = r0;
                                                                 |     if (r3 == 0) {
    0x0000a6da cbz r3, 0xa6f6                                    |         goto label_8;
                                                                 |     }
                                                                 | label_4:
    0x0000a6dc ldr r2, [r7]                                      |     r2 = *(r7);
    0x0000a6de cmp r4, r2                                        |     
    0x0000a6e0 it ne                                             |     
                                                                 |     if (r4 != r2) {
    0x0000a6e2 movne r0, 0                                       |         r0 = 0;
                                                                 |         goto label_10;
                                                                 |     }
                                                                 |     if (r4 == r2) {
                                                                 | label_10:
    0x0000a6e4 beq 0xa68c                                        |         goto label_3;
                                                                 |     }
    0x0000a6e6 add sp, 8                                         |     
    0x0000a6e8 pop.w {r4, r5, r6, r7, r8, sb, sl, pc}            |     
                                                                 | label_9:
    0x0000a6ec bl 0xa3c8                                         |     r0 = fcn_0000a3c8 (r0, r1);
    0x0000a6f0 mov r3, r0                                        |     r3 = r0;
    0x0000a6f2 cmp r3, 0                                         |     
                                                                 |     if (r3 != 0) {
    0x0000a6f4 bne 0xa6dc                                        |         goto label_4;
                                                                 |     }
                                                                 | label_8:
    0x0000a6f6 mov r0, sl                                        |     r0 = sl;
    0x0000a6f8 blx 0x19a0                                        |     fcn_000019a0 ();
    0x0000a6fc b 0xa652                                          |     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/bin/kmod @ 0xa700 */
                                                                 | #include <stdint.h>
                                                                 |  
    ; (fcn) fcn.0000a700 ()                                      | void fcn_0000a700 (int16_t arg1, int16_t arg2, int16_t arg3) {
                                                                 |     r0 = arg1;
                                                                 |     r1 = arg2;
                                                                 |     r2 = arg3;
    0x0000a700 push.w {r4, r5, r6, r7, r8, sb, sl, lr}           |     
    0x0000a704 mov r6, r1                                        |     r6 = r1;
    0x0000a706 mov r8, r2                                        |     r8 = r2;
    0x0000a708 mov sb, r0                                        |     sb = r0;
    0x0000a70a blx 0x1bb0                                        |     r0 = fcn_00001bb0 ();
    0x0000a70e add.w sl, r0, 1                                   |     sl = r0 + 1;
    0x0000a712 mov r4, r0                                        |     r4 = r0;
    0x0000a714 mov r0, r6                                        |     r0 = r6;
    0x0000a716 blx 0x1bb0                                        |     r0 = fcn_00001bb0 ();
    0x0000a71a adds r7, r0, 1                                    |     r7 = r0 + 1;
    0x0000a71c add.w r0, sl, r7                                  |     r0 = sl + r7;
    0x0000a720 adds r0, 4                                        |     r0 += 4;
    0x0000a722 blx 0x1b0c                                        |     r0 = strerror (r0);
    0x0000a726 mov r5, r0                                        |     r5 = r0;
                                                                 |     if (r0 != 0) {
    0x0000a728 cbz r0, 0xa756                                    |         
    0x0000a72a adds r4, 5                                        |         r4 += 5;
    0x0000a72c mov r2, sl                                        |         r2 = sl;
    0x0000a72e add r4, r0                                        |         r4 += r0;
    0x0000a730 mov r1, sb                                        |         r1 = sb;
    0x0000a732 str r4, [r0], 4                                   |         *(r0) = r4;
                                                                 |         r0 += 4;
    0x0000a736 blx 0x19c8                                        |         mmap64 ()
    0x0000a73a mov r1, r6                                        |         r1 = r6;
    0x0000a73c mov r2, r7                                        |         r2 = r7;
    0x0000a73e mov r0, r4                                        |         r0 = r4;
    0x0000a740 blx 0x19c8                                        |         mmap64 ()
    0x0000a744 ldr.w r0, [r8]                                    |         r0 = *(r8);
    0x0000a748 mov r1, r5                                        |         r1 = r5;
    0x0000a74a bl 0xa350                                         |         r0 = fcn_0000a350 (r0, r1);
                                                                 |         if (r0 == 0) {
    0x0000a74e cbz r0, 0xa756                                    |             goto label_0;
                                                                 |         }
    0x0000a750 movs r5, 0                                        |         r5 = 0;
    0x0000a752 str.w r0, [r8]                                    |         __asm ("str.w r0, [r8]");
                                                                 |     }
                                                                 | label_0:
    0x0000a756 mov r0, r5                                        |     r0 = r5;
    0x0000a758 pop.w {r4, r5, r6, r7, r8, sb, sl, lr}            |     
    0x0000a75c b.w 0x199c                                        |     return void (*0x199c)() ();
                                                                 | }
    ; assembly                                                   | /* r2dec pseudo code output */
                                                                 | /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/bin/kmod @ 0xa760 */
                                                                 | #include <stdint.h>
                                                                 |  
    ; (fcn) fcn.0000a760 ()                                      | void fcn_0000a760 (int16_t arg1, int16_t arg2, int16_t arg3) {
                                                                 |     r0 = arg1;
                                                                 |     r1 = arg2;
                                                                 |     r2 = arg3;
    0x0000a760 push.w {r4, r5, r6, r7, r8, sb, sl, lr}           |     
    0x0000a764 mov r6, r2                                        |     r6 = r2;
    0x0000a766 mov r8, r0                                        |     r8 = r0;
    0x0000a768 mov r0, r1                                        |     r0 = r1;
    0x0000a76a mov sb, r1                                        |     sb = r1;
    0x0000a76c blx 0x1bb0                                        |     r0 = fcn_00001bb0 ();
    0x0000a770 add.w sl, r0, 1                                   |     sl = r0 + 1;
    0x0000a774 mov r4, r0                                        |     r4 = r0;
    0x0000a776 mov r0, r6                                        |     r0 = r6;
    0x0000a778 blx 0x1bb0                                        |     r0 = fcn_00001bb0 ();
    0x0000a77c adds r7, r0, 1                                    |     r7 = r0 + 1;
    0x0000a77e add.w r0, sl, r7                                  |     r0 = sl + r7;
    0x0000a782 adds r0, 4                                        |     r0 += 4;
    0x0000a784 blx 0x1b0c                                        |     r0 = strerror (r0);
    0x0000a788 mov r5, r0                                        |     r5 = r0;
                                                                 |     if (r0 != 0) {
    0x0000a78a cbz r0, 0xa7c2                                    |         
    0x0000a78c adds r4, 5                                        |         r4 += 5;
    0x0000a78e mov r2, sl                                        |         r2 = sl;
    0x0000a790 add r4, r0                                        |         r4 += r0;
    0x0000a792 mov r1, sb                                        |         r1 = sb;
    0x0000a794 str r4, [r0], 4                                   |         *(r0) = r4;
                                                                 |         r0 += 4;
    0x0000a798 blx 0x19c8                                        |         mmap64 ()
    0x0000a79c mov r2, r7                                        |         r2 = r7;
    0x0000a79e mov r1, r6                                        |         r1 = r6;
    0x0000a7a0 mov r0, r4                                        |         r0 = r4;
    0x0000a7a2 blx 0x19c8                                        |         mmap64 ()
    0x0000a7a6 movs r1, 9                                        |         r1 = 9;
    0x0000a7a8 ldr r0, [r5]                                      |         r0 = *(r5);
    0x0000a7aa movs r2, 0x20                                     |         r2 = 0x20;
    0x0000a7ac bl 0x92c8                                         |         fcn_000092c8 (r0, r1, r2);
    0x0000a7b0 ldr.w r0, [r8, 0xc]                               |         r0 = *((r8 + 0xc));
    0x0000a7b4 mov r1, r5                                        |         r1 = r5;
    0x0000a7b6 bl 0xa350                                         |         r0 = fcn_0000a350 (r0, r1);
                                                                 |         if (r0 == 0) {
    0x0000a7ba cbz r0, 0xa7c2                                    |             goto label_0;
                                                                 |         }
    0x0000a7bc movs r5, 0                                        |         r5 = 0;
    0x0000a7be str.w r0, [r8, 0xc]                               |         __asm ("str.w r0, [r8, 0xc]");
                                                                 |     }
                                                                 | label_0:
    0x0000a7c2 mov r0, r5                                        |     r0 = r5;
    0x0000a7c4 pop.w {r4, r5, r6, r7, r8, sb, sl, lr}            |     
    0x0000a7c8 b.w 0x199c                                        |     return void (*0x199c)() ();
                                                                 | }
    ; assembly                                                       | /* r2dec pseudo code output */
                                                                     | /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/bin/kmod @ 0xa8a8 */
                                                                     | #include <stdint.h>
                                                                     |  
    ; (fcn) fcn.0000a8a8 ()                                          | void fcn_0000a8a8 (int16_t arg1, int16_t arg2, int16_t arg3) {
                                                                     |     int16_t var_bp_c8h;
                                                                     |     int16_t var_bp_60h;
                                                                     |     int16_t var_4h;
                                                                     |     int32_t var_0h_2;
                                                                     |     int32_t var_0h_3;
                                                                     |     int16_t var_8h;
                                                                     |     int16_t var_10h;
                                                                     |     int32_t var_10h_2;
                                                                     |     int16_t var_18h;
                                                                     |     int16_t var_1ch;
                                                                     |     int16_t var_20h;
                                                                     |     int16_t var_24h;
                                                                     |     int16_t var_28h;
                                                                     |     int16_t var_2ch;
                                                                     |     int16_t var_30h;
                                                                     |     int16_t var_34h;
                                                                     |     int16_t var_38h;
                                                                     |     int16_t var_3ch;
                                                                     |     int16_t var_40h;
                                                                     |     int16_t var_44h;
                                                                     |     int16_t var_48h;
                                                                     |     int16_t errnum;
                                                                     |     int16_t var_50h;
                                                                     |     int16_t var_54h;
                                                                     |     int16_t var_5ch;
                                                                     |     size_t size;
                                                                     |     int16_t var_c8h;
                                                                     |     int16_t var_138h;
                                                                     |     int16_t var_1120h;
                                                                     |     int32_t var_0h;
                                                                     |     r0 = arg1;
                                                                     |     r1 = arg2;
                                                                     |     r2 = arg3;
    0x0000a8a8 push.w {r4, r5, r6, r7, r8, sb, sl, fp, lr}           |     
    0x0000a8ac mov sb, r2                                            |     sb = r2;
    0x0000a8ae ldr.w r2, [pc, 0xa04]                                 |     r2 = *(0x0000b2b4);
    0x0000a8b2 sub.w sp, sp, 0x1120                                  |     
    0x0000a8b6 sub sp, 0x1c                                          |     
    0x0000a8b8 movs r7, 0                                            |     r7 = 0;
    0x0000a8ba ldr.w r3, [pc, 0x9fc]                                 |     
    0x0000a8be add.w fp, sp, 0x138                                   |     
    0x0000a8c2 add r2, pc                                            |     r2 += pc;
    0x0000a8c4 strd r0, r1, [sp, 0x2c]                               |     __asm ("strd r0, r1, [var_30h]");
    0x0000a8c8 add.w r1, sp, 0x1120                                  |     r1 += var_1120h;
    0x0000a8cc add.w r8, sp, 0x5c                                    |     r8 += var_5ch;
    0x0000a8d0 ldr r3, [r2, r3]                                      |     r3 = *((r2 + r3));
    0x0000a8d2 adds r1, 0x14                                         |     r1 += 0x14;
    0x0000a8d4 ldr r3, [r3]                                          |     r3 = *(0xb2ba);
    0x0000a8d6 str r3, [r1]                                          |     *(r1) = r3;
    0x0000a8d8 mov.w r3, 0                                           |     r3 = 0;
    0x0000a8dc str r7, [fp, -0xdc]                                   |     var_5ch = r7;
    0x0000a8e0 bl 0x9af8                                             |     fcn_00009af8 (r0);
    0x0000a8e4 ldr.w r2, [pc, 0x9d4]                                 |     
    0x0000a8e8 mov r1, r0                                            |     r1 = r0;
    0x0000a8ea mov r0, r8                                            |     r0 = r8;
    0x0000a8ec add r2, pc                                            |     r2 = 0x15bac;
    0x0000a8ee bl 0xa610                                             |     fcn_0000a610 (r0, r1, r2);
    0x0000a8f2 ldr.w r5, [sb]                                        |     r5 = *(sb);
    0x0000a8f6 cmp r5, 0                                             |     
                                                                     |     if (r5 == 0) {
    0x0000a8f8 beq.w 0xb290                                          |         goto label_18;
                                                                     |     }
    0x0000a8fc ldr.w r3, [pc, 0x9c0]                                 |     
    0x0000a900 add.w sl, sp, 0x60                                    |     sl += size;
    0x0000a904 str r7, [sp, 0x18]                                    |     var_18h = r7;
    0x0000a906 add r3, pc                                            |     r3 = 0x15bca;
    0x0000a908 str r3, [sp, 0x28]                                    |     var_28h = r3;
    0x0000a90a ldr.w r3, [pc, 0x9b8]                                 |     
    0x0000a90e add r3, pc                                            |     r3 = 0x15bd8;
    0x0000a910 str r3, [sp, 0x1c]                                    |     var_1ch = r3;
    0x0000a912 b 0xa928                                              |     
                                                                     |     while (r0 != 0) {
    0x0000a914 blx 0x1be4                                            |         r0 = isoc99_sscanf ();
    0x0000a918 ldr r3, [r0]                                          |         r3 = *(r0);
    0x0000a91a cmp r3, 0                                             |         
                                                                     |         if (r3 <= 0) {
    0x0000a91c ble.w 0xabfa                                          |             goto label_19;
                                                                     |         }
                                                                     | label_3:
    0x0000a920 ldr r5, [sb, 4]!                                      |         r5 = *((sb += 4));
    0x0000a924 cmp r5, 0                                             |         
                                                                     |         if (r5 == 0) {
    0x0000a926 beq 0xa99a                                            |             goto label_20;
                                                                     |         }
                                                                     | label_0:
    0x0000a928 mov r1, sl                                            |         r1 = sl;
    0x0000a92a mov r0, r5                                            |         r0 = r5;
    0x0000a92c blx 0x1a28                                            |         r0 = realloc (r0, r1);
    0x0000a930 mov r4, r0                                            |         r4 = r0;
    0x0000a932 cmp r0, 0                                             |         
    0x0000a934 bne 0xa914                                            |         
                                                                     |     }
    0x0000a936 mov r0, sl                                            |     r0 = sl;
    0x0000a938 bl 0x97d0                                             |     fcn_000097d0 (r0);
    0x0000a93c ldr r3, [fp, -0xc8]                                   |     r3 = var_bp_c8h;
    0x0000a940 strd r0, r1, [sp, 0x10]                               |     __asm ("strd r0, r1, [var_10h]");
    0x0000a944 and r3, r3, 0xf000                                    |     r3 &= 0xf000;
    0x0000a948 cmp.w r3, 0x4000                                      |     
                                                                     |     if (r3 == 0x4000) {
    0x0000a94c beq.w 0xab66                                          |         goto label_21;
                                                                     |     }
    0x0000a950 mov r2, r4                                            |     r2 = r4;
    0x0000a952 mov r1, r5                                            |     r1 = r5;
    0x0000a954 mov r0, r8                                            |     r0 = r8;
    0x0000a956 bl 0xa610                                             |     fcn_0000a610 (r0, r1, r2);
                                                                     | label_4:
    0x0000a95a mov r0, r5                                            |     r0 = r5;
    0x0000a95c blx 0x1bb0                                            |     r0 = fcn_00001bb0 ();
    0x0000a960 mov r2, r0                                            |     r2 = r0;
    0x0000a962 adds r0, 9                                            |     r0 += 9;
    0x0000a964 adds r6, r2, 1                                        |     r6 = r2 + 1;
    0x0000a966 blx 0x1b0c                                            |     r0 = strerror (r0);
    0x0000a96a mov r4, r0                                            |     r4 = r0;
    0x0000a96c cmp r0, 0                                             |     
                                                                     |     if (r0 == 0) {
    0x0000a96e beq.w 0xb296                                          |         goto label_22;
                                                                     |     }
    0x0000a972 mov r1, r5                                            |     r1 = r5;
    0x0000a974 mov r2, r6                                            |     r2 = r6;
    0x0000a976 ldrd r5, r6, [sp, 0x10]                               |     __asm ("ldrd r5, r6, [var_10h]");
    0x0000a97a strd r5, r6, [r0], 8                                  |     __asm ("strd r5, r6, [r0], 8");
    0x0000a97e blx 0x19c8                                            |     mmap64 ()
    0x0000a982 ldr r0, [sp, 0x18]                                    |     r0 = var_18h;
    0x0000a984 mov r1, r4                                            |     r1 = r4;
    0x0000a986 bl 0xa350                                             |     r0 = fcn_0000a350 (r0, r1);
    0x0000a98a cmp r0, 0                                             |     
                                                                     |     if (r0 == 0) {
    0x0000a98c beq.w 0xaf92                                          |         goto label_23;
                                                                     |     }
    0x0000a990 ldr r5, [sb, 4]!                                      |     r5 = *((sb += 4));
    0x0000a994 str r0, [sp, 0x18]                                    |     var_18h = r0;
    0x0000a996 cmp r5, 0                                             |     
                                                                     |     if (r5 != 0) {
    0x0000a998 bne 0xa928                                            |         goto label_0;
                                                                     |     }
                                                                     | label_20:
    0x0000a99a ldr r7, [sp, 0x18]                                    |     r7 = var_18h;
                                                                     | label_16:
    0x0000a99c movs r1, 0x20                                         |     r1 = 0x20;
    0x0000a99e movs r0, 1                                            |     r0 = 1;
    0x0000a9a0 blx 0x18d8                                            |     calloc (r0, r1);
    0x0000a9a4 ldr r2, [sp, 0x30]                                    |     r2 = var_30h;
    0x0000a9a6 str r0, [sp, 0x24]                                    |     var_24h = r0;
    0x0000a9a8 str r0, [r2]                                          |     *(r2) = r0;
    0x0000a9aa ldr r2, [fp, -0xdc]                                   |     r2 = var_5ch;
    0x0000a9ae str r2, [sp, 0x10]                                    |     var_10h = r2;
    0x0000a9b0 cmp r0, 0                                             |     
                                                                     |     if (r0 == 0) {
    0x0000a9b2 beq.w 0xaf9a                                          |         goto label_17;
                                                                     |     }
    0x0000a9b6 ldr r1, [sp, 0x2c]                                    |     r1 = var_2ch;
    0x0000a9b8 str r7, [r0, 0x1c]                                    |     *((r0 + 0x1c)) = r7;
    0x0000a9ba str r1, [r0]                                          |     *(r0) = r1;
    0x0000a9bc cmp r2, 0                                             |     
                                                                     |     if (r2 == 0) {
    0x0000a9be beq.w 0xacf0                                          |         goto label_24;
                                                                     |     }
    0x0000a9c2 ldr.w r3, [pc, 0x904]                                 |     
    0x0000a9c6 str.w fp, [sp, 0x1c]                                  |     __asm ("str.w fp, [var_1ch]");
    0x0000a9ca add r3, pc                                            |     r3 = 0x15c98;
    0x0000a9cc str r3, [sp, 0x38]                                    |     var_38h = r3;
    0x0000a9ce ldr.w r3, [pc, 0x8fc]                                 |     
    0x0000a9d2 add r3, pc                                            |     r3 = 0x15ca4;
    0x0000a9d4 str r3, [sp, 0x3c]                                    |     var_3ch = r3;
    0x0000a9d6 b 0xa9f2                                              |     
                                                                     |     while (r4 < r0) {
                                                                     | label_5:
    0x0000a9d8 ldr r0, [sp, 0x18]                                    |         r0 = var_18h;
    0x0000a9da blx 0x19a0                                            |         fcn_000019a0 ();
    0x0000a9de ldr r0, [sp, 0x10]                                    |         r0 = var_10h;
    0x0000a9e0 bl 0xa3ec                                             |         fcn_0000a3ec (r0);
    0x0000a9e4 ldr r2, [sp, 0x1c]                                    |         r2 = var_1ch;
    0x0000a9e6 str r0, [sp, 0x10]                                    |         var_10h = r0;
    0x0000a9e8 str r0, [r2, -0xdc]                                   |         *((r2 - 0xdc)) = r0;
    0x0000a9ec cmp r0, 0                                             |         
                                                                     |         if (r0 == 0) {
    0x0000a9ee beq.w 0xacee                                          |             goto label_25;
                                                                     |         }
    0x0000a9f2 ldr r3, [sp, 0x10]                                    |         r3 = var_10h;
    0x0000a9f4 ldr r2, [r3, 8]                                       |         r2 = *((r3 + 8));
    0x0000a9f6 ldrb r3, [r2, 4]                                      |         r3 = *((r2 + 4));
    0x0000a9f8 ldr r0, [r2]                                          |         r0 = *(r2);
    0x0000a9fa str r2, [sp, 0x18]                                    |         var_18h = r2;
    0x0000a9fc cmp r3, 0                                             |         
                                                                     |         if (r3 == 0) {
    0x0000a9fe beq.w 0xac0c                                          |             goto label_26;
                                                                     |         }
                                                                     | label_6:
    0x0000aa02 mov.w r1, 0x80000                                     |         r1 = 0x80000;
    0x0000aa06 blx 0x1ad0                                            |         r0 = fstatat64 ();
    0x0000aa0a subs r4, r0, 0                                        |         r4 = r0 - 0;
    0x0000aa0c blt 0xa9d8                                            |         
                                                                     |     }
    0x0000aa0e ldr r2, [sp, 0x1c]                                    |     r2 = var_1ch;
    0x0000aa10 movs r3, 0                                            |     r3 = 0;
    0x0000aa12 ldr.w r1, [pc, 0x8bc]                                 |     
    0x0000aa16 str r3, [r2, -0xd8]                                   |     *((r2 - 0xd8)) = r3;
    0x0000aa1a add r1, pc                                            |     r1 = 0x15cf0;
    0x0000aa1c blx 0x18cc                                            |     r0 = fdopen ();
    0x0000aa20 mov sb, r0                                            |     sb = r0;
    0x0000aa22 cmp r0, 0                                             |     
                                                                     |     if (r0 == 0) {
    0x0000aa24 beq.w 0xb29a                                          |         goto label_27;
                                                                     |     }
    0x0000aa28 ldr.w r3, [pc, 0x8a8]                                 |     
    0x0000aa2c add.w sl, sp, 0x60                                    |     sl += size;
    0x0000aa30 ldr.w fp, [pc, 0x8a4]                                 |     
    0x0000aa34 add r3, pc                                            |     r3 = 0x15d0c;
    0x0000aa36 add fp, pc                                            |     fp = 0x15d12;
    0x0000aa38 str r3, [sp, 0x20]                                    |     var_20h = r3;
    0x0000aa3a b 0xaaa6                                              |     goto label_28;
                                                                     | label_2:
    0x0000aa3c ldr.w r1, [pc, 0x89c]                                 |     
    0x0000aa40 mov r0, r6                                            |     r0 = r6;
    0x0000aa42 add r1, pc                                            |     r1 = 0x15d22;
    0x0000aa44 blx 0x1924                                            |     r0 = fcn_00001924 ();
    0x0000aa48 mov r5, r0                                            |     r5 = r0;
    0x0000aa4a cmp r0, 0                                             |     
                                                                     |     if (r0 == 0) {
    0x0000aa4c beq.w 0xac3c                                          |         goto label_29;
                                                                     |     }
    0x0000aa50 ldr.w r1, [pc, 0x88c]                                 |     
    0x0000aa54 mov r0, r6                                            |     r0 = r6;
    0x0000aa56 add r1, pc                                            |     r1 = 0x15d3a;
    0x0000aa58 blx 0x1924                                            |     r0 = fcn_00001924 ();
    0x0000aa5c mov r5, r0                                            |     r5 = r0;
    0x0000aa5e cmp r0, 0                                             |     
                                                                     |     if (r0 == 0) {
    0x0000aa60 beq.w 0xac72                                          |         goto label_30;
                                                                     |     }
    0x0000aa64 ldr.w r1, [pc, 0x87c]                                 |     
    0x0000aa68 mov r0, r6                                            |     r0 = r6;
    0x0000aa6a add r1, pc                                            |     r1 = 0x15d52;
    0x0000aa6c blx 0x1924                                            |     r0 = fcn_00001924 ();
    0x0000aa70 mov r5, r0                                            |     r5 = r0;
    0x0000aa72 cmp r0, 0                                             |     
                                                                     |     if (r0 == 0) {
    0x0000aa74 beq.w 0xacae                                          |         goto label_31;
                                                                     |     }
    0x0000aa78 ldr.w r1, [pc, 0x86c]                                 |     
    0x0000aa7c mov r0, r6                                            |     r0 = r6;
    0x0000aa7e add r1, pc                                            |     r1 = 0x15d6a;
    0x0000aa80 blx 0x1924                                            |     r0 = fcn_00001924 ();
    0x0000aa84 mov r5, r0                                            |     r5 = r0;
    0x0000aa86 cmp r0, 0                                             |     
                                                                     |     if (r0 == 0) {
    0x0000aa88 beq.w 0xaf54                                          |         goto label_32;
                                                                     |     }
    0x0000aa8c ldr.w r1, [pc, 0x85c]                                 |     
    0x0000aa90 mov r0, r6                                            |     r0 = r6;
    0x0000aa92 add r1, pc                                            |     r1 = 0x15d82;
    0x0000aa94 blx 0x1924                                            |     r0 = fcn_00001924 ();
    0x0000aa98 mov r5, r0                                            |     r5 = r0;
    0x0000aa9a cmp r0, 0                                             |     
                                                                     |     if (r0 == 0) {
    0x0000aa9c beq.w 0xafd0                                          |         goto label_33;
                                                                     |     }
                                                                     |     do {
                                                                     | label_1:
    0x0000aaa0 mov r0, r4                                            |         r0 = r4;
    0x0000aaa2 blx 0x19a0                                            |         fcn_000019a0 ();
                                                                     | label_28:
    0x0000aaa6 mov r1, sl                                            |         r1 = sl;
    0x0000aaa8 mov r0, sb                                            |         r0 = sb;
    0x0000aaaa bl 0x9550                                             |         r0 = fcn_00009550 (r0, r1);
    0x0000aaae mov r4, r0                                            |         r4 = r0;
    0x0000aab0 cmp r0, 0                                             |         
                                                                     |         if (r0 == 0) {
    0x0000aab2 beq.w 0xac04                                          |             goto label_34;
                                                                     |         }
    0x0000aab6 ldrb r3, [r4]                                         |         r3 = *(r4);
    0x0000aab8 cmp r3, 0x23                                          |         
    0x0000aaba it ne                                                 |         
                                                                     |         if (r3 != 0x23) {
    0x0000aabc cmpne r3, 0                                           |             __asm ("cmpne r3, 0");
                                                                     |         }
    0x0000aabe beq 0xaaa0                                            |         
                                                                     |     } while (r3 == 0x23);
    0x0000aac0 add r7, sp, 0xc8                                      |     r7 += var_c8h;
    0x0000aac2 mov r1, fp                                            |     r1 = fp;
    0x0000aac4 mov r2, r7                                            |     r2 = r7;
    0x0000aac6 blx 0x1aac                                            |     r0 = opendir ();
    0x0000aaca mov r6, r0                                            |     r6 = r0;
    0x0000aacc cmp r0, 0                                             |     
                                                                     |     if (r0 == 0) {
    0x0000aace beq 0xaaa0                                            |         goto label_1;
                                                                     |     }
    0x0000aad0 ldr r1, [sp, 0x20]                                    |     r1 = var_20h;
    0x0000aad2 blx 0x1924                                            |     r0 = fcn_00001924 ();
    0x0000aad6 mov r5, r0                                            |     r5 = r0;
    0x0000aad8 cmp r0, 0                                             |     
                                                                     |     if (r0 != 0) {
    0x0000aada bne 0xaa3c                                            |         goto label_2;
                                                                     |     }
    0x0000aadc mov r2, r7                                            |     r2 = r7;
    0x0000aade mov r1, fp                                            |     r1 = fp;
    0x0000aae0 blx 0x1aac                                            |     opendir ();
    0x0000aae4 mov r2, r7                                            |     r2 = r7;
    0x0000aae6 mov r6, r0                                            |     r6 = r0;
    0x0000aae8 mov r1, fp                                            |     r1 = fp;
    0x0000aaea mov r0, r5                                            |     r0 = r5;
    0x0000aaec blx 0x1aac                                            |     r0 = opendir ();
    0x0000aaf0 mov r7, r0                                            |     r7 = r0;
    0x0000aaf2 mov r0, r6                                            |     r0 = r6;
    0x0000aaf4 bl 0x9344                                             |     r0 = fcn_00009344 (r0);
    0x0000aaf8 cmp r0, 0                                             |     
                                                                     |     if (r0 < 0) {
    0x0000aafa blt 0xaaa0                                            |         goto label_1;
                                                                     |     }
    0x0000aafc mov r0, r7                                            |     r0 = r7;
    0x0000aafe bl 0x9344                                             |     r0 = fcn_00009344 (r0);
    0x0000ab02 cmp r0, 0                                             |     
                                                                     |     if (r0 < 0) {
    0x0000ab04 blt 0xaaa0                                            |         goto label_1;
                                                                     |     }
    0x0000ab06 mov r0, r6                                            |     r0 = r6;
    0x0000ab08 blx 0x1bb0                                            |     r0 = fcn_00001bb0 ();
    0x0000ab0c adds r3, r0, 1                                        |     r3 = r0 + 1;
    0x0000ab0e mov r0, r7                                            |     r0 = r7;
    0x0000ab10 str r3, [sp, 0x28]                                    |     var_28h = r3;
    0x0000ab12 blx 0x1bb0                                            |     fcn_00001bb0 ();
    0x0000ab14 strex fp, sb, [lr, 0x28]                              |     __asm ("strex fp, sb, [lr, 0x28]");
    0x0000ab18 adds r2, r0, 1                                        |     r2 = r0 + 1;
    0x0000ab1a mov r8, r0                                            |     r8 = r0;
    0x0000ab1c str r2, [sp, 0x2c]                                    |     var_2ch = r2;
    0x0000ab1e adds r0, r3, r2                                       |     r0 = r3 + r2;
    0x0000ab20 adds r0, 4                                            |     r0 += 4;
    0x0000ab22 blx 0x1b0c                                            |     r0 = strerror (r0);
    0x0000ab26 mov r3, r0                                            |     r3 = r0;
                                                                     |     if (r0 != 0) {
    0x0000ab28 cbz r0, 0xab5e                                        |         
    0x0000ab2a add.w r8, r8, 5                                       |         r8 += 5;
    0x0000ab2e ldr r2, [sp, 0x2c]                                    |         r2 = var_2ch;
    0x0000ab30 add r8, r0                                            |         r8 += r0;
    0x0000ab32 mov r1, r7                                            |         r1 = r7;
    0x0000ab34 str r0, [sp, 0x2c]                                    |         var_2ch = r0;
    0x0000ab36 str r8, [r0], 4                                       |         *(r0) = r8;
                                                                     |         r0 += 4;
    0x0000ab3a blx 0x19c8                                            |         mmap64 ()
    0x0000ab3e mov r1, r6                                            |         r1 = r6;
    0x0000ab40 ldr r2, [sp, 0x28]                                    |         r2 = var_28h;
    0x0000ab42 mov r0, r8                                            |         r0 = r8;
    0x0000ab44 blx 0x19c8                                            |         mmap64 ()
    0x0000ab48 ldr r3, [sp, 0x2c]                                    |         r3 = var_2ch;
    0x0000ab4a ldr r6, [sp, 0x24]                                    |         r6 = var_24h;
    0x0000ab4c mov r1, r3                                            |         r1 = r3;
    0x0000ab4e str r3, [sp, 0x28]                                    |         var_28h = r3;
    0x0000ab50 ldr r0, [r6, 4]                                       |         r0 = *((r6 + 4));
    0x0000ab52 bl 0xa350                                             |         fcn_0000a350 (r0, r1);
    0x0000ab56 ldr r3, [sp, 0x28]                                    |         r3 = var_28h;
                                                                     |         if (r0 == 0) {
    0x0000ab58 cbz r0, 0xab5e                                        |             goto label_35;
                                                                     |         }
    0x0000ab5a mov r3, r5                                            |         r3 = r5;
    0x0000ab5c str r0, [r6, 4]                                       |         *((r6 + 4)) = r0;
                                                                     |     }
                                                                     | label_35:
    0x0000ab5e mov r0, r3                                            |     r0 = r3;
    0x0000ab60 blx 0x19a0                                            |     fcn_000019a0 ();
    0x0000ab64 b 0xaaa0                                              |     goto label_1;
                                                                     | label_21:
    0x0000ab66 mov r0, r5                                            |     r0 = r5;
    0x0000ab68 blx 0x1ab8                                            |     r0 = fnmatch ();
    0x0000ab6c mov r6, r0                                            |     r6 = r0;
    0x0000ab6e cmp r0, 0                                             |     
                                                                     |     if (r0 == 0) {
    0x0000ab70 beq.w 0xa920                                          |         goto label_3;
                                                                     |     }
    0x0000ab74 blx 0x1cf4                                            |     r0 = fcn_00001cf4 ();
                                                                     |     if (r0 == 0) {
    0x0000ab78 cbz r0, 0xabf2                                        |         goto label_36;
                                                                     |     }
    0x0000ab7a strd sb, sl, [sp, 0x20]                               |     __asm ("strd sb, sl, [var_24h]");
    0x0000ab7e add r3, sp, 0xc8                                      |     r3 += var_c8h;
    0x0000ab80 ldr.w sb, [sp, 0x28]                                  |     sb = var_28h;
    0x0000ab84 mov sl, r0                                            |     sl = r0;
    0x0000ab86 mov r7, r3                                            |     r7 = r3;
                                                                     |     do {
    0x0000ab88 add.w r4, sl, 0x13                                    |         r4 = sl + 0x13;
    0x0000ab8c mov r0, r4                                            |         r0 = r4;
    0x0000ab8e blx 0x1bb0                                            |         fcn_00001bb0 ();
    0x0000ab92 ldrb.w r2, [sl, 0x13]                                 |         r2 = *((sl + 0x13));
    0x0000ab94 movs r0, 0x13                                         |         r0 = 0x13;
    0x0000ab96 mov sl, r0                                            |         sl = r0;
    0x0000ab98 cmp r2, 0x2e                                          |         
                                                                     |         if (r2 != 0x2e) {
    0x0000ab9a beq 0xabe2                                            |             
    0x0000ab9c cmp r0, 5                                             |             
                                                                     |             if (r0 < 5) {
    0x0000ab9e bls 0xabe2                                            |                 goto label_37;
                                                                     |             }
    0x0000aba0 subs r0, 5                                            |             r0 -= 5;
    0x0000aba2 mov r1, sb                                            |             r1 = sb;
    0x0000aba4 add r0, r4                                            |             r0 += r4;
    0x0000aba6 blx 0x1924                                            |             fcn_00001924 ();
    0x0000aba8 mrc p1, 5, fp, c14, c0, 1                             |             __asm ("mrc p1, 5, fp, c14, c0, 1");
    0x0000abac sub.w r0, sl, 6                                       |             r0 = sl - 6;
    0x0000abb0 ldr r1, [sp, 0x1c]                                    |             r1 = var_1ch;
    0x0000abb2 add r0, r4                                            |             r0 += r4;
    0x0000abb4 blx 0x1924                                            |             r0 = fcn_00001924 ();
                                                                     |             if (r0 != 0) {
    0x0000abb8 cbnz r0, 0xabe2                                       |                 goto label_37;
                                                                     |             }
    0x0000abba mov r0, r6                                            |             r0 = r6;
    0x0000abbc blx 0x1d40                                            |             renameat ();
    0x0000abc0 movs r3, 0                                            |             r3 = 0;
    0x0000abc2 mov r2, r7                                            |             r2 = r7;
    0x0000abc4 mov r1, r4                                            |             r1 = r4;
    0x0000abc6 blx 0x1adc                                            |             asprintf_chk ();
    0x0000abca ldr r3, [fp, -0x60]                                   |             r3 = var_bp_60h;
    0x0000abce and r3, r3, 0xf000                                    |             r3 &= 0xf000;
    0x0000abd2 cmp.w r3, 0x4000                                      |             
                                                                     |             if (r3 == 0x4000) {
    0x0000abd6 beq 0xabe2                                            |                 goto label_37;
                                                                     |             }
    0x0000abd8 mov r2, r4                                            |             r2 = r4;
    0x0000abda mov r1, r5                                            |             r1 = r5;
    0x0000abdc mov r0, r8                                            |             r0 = r8;
    0x0000abde bl 0xa610                                             |             fcn_0000a610 (r0, r1, r2);
                                                                     |         }
                                                                     | label_37:
    0x0000abe2 mov r0, r6                                            |         r0 = r6;
    0x0000abe4 blx 0x1cf4                                            |         r0 = fcn_00001cf4 ();
    0x0000abe8 mov sl, r0                                            |         sl = r0;
    0x0000abea cmp r0, 0                                             |         
    0x0000abec bne 0xab88                                            |         
                                                                     |     } while (r0 != 0);
    0x0000abee ldrd sb, sl, [sp, 0x20]                               |     __asm ("ldrd sb, sl, [var_24h]");
                                                                     | label_36:
    0x0000abf2 mov r0, r6                                            |     r0 = r6;
    0x0000abf4 blx 0x1dc8                                            |     fcn_00001dc8 ();
    0x0000abf8 b 0xa95a                                              |     goto label_4;
                                                                     | label_19:
    0x0000abfa vmov.i32 d16, 0                                       |     __asm ("vmov.i32 d16, 0");
    0x0000abfe vstr d16, [sp, 0x10]                                  |     __asm ("vstr d16, [sp, 0x10]");
    0x0000ac02 b 0xa95a                                              |     goto label_4;
                                                                     | label_34:
    0x0000ac04 mov r0, sb                                            |     r0 = sb;
    0x0000ac06 blx 0x1c84                                            |     fcn_00001c84 ();
    0x0000ac0a b 0xa9d8                                              |     goto label_5;
                                                                     | label_26:
    0x0000ac0c ldr r3, [sp, 0x1c]                                    |     r3 = var_1ch;
    0x0000ac0e subs r4, r3, 4                                        |     r4 = r3 - 4;
    0x0000ac10 mov r3, r2                                            |     r3 = r2;
    0x0000ac12 adds r3, 5                                            |     r3 += 5;
    0x0000ac14 movs r2, 1                                            |     r2 = 1;
    0x0000ac16 str r3, [sp, 8]                                       |     var_8h = r3;
    0x0000ac18 ldr.w r3, [pc, 0x6d4]                                 |     
    0x0000ac1c add r3, pc                                            |     r3 = 0x15f10;
    0x0000ac1e strd r3, r0, [sp]                                     |     __asm ("strd r3, r0, [sp]");
    0x0000ac22 mov.w r3, 0x1000                                      |     r3 = 0x1000;
    0x0000ac26 mov r1, r3                                            |     r1 = r3;
    0x0000ac28 mov r0, r4                                            |     r0 = r4;
    0x0000ac2a blx 0x1dd4                                            |     r0 = fcn_00001dd4 ();
    0x0000ac2e cmp.w r0, 0x1000                                      |     
    0x0000ac32 it lt                                                 |     
                                                                     |     if (r0 < 0x1000) {
    0x0000ac34 movlt r0, r4                                          |         r0 = r4;
                                                                     |         goto label_38;
                                                                     |     }
                                                                     |     if (r0 < 0x1000) {
                                                                     | label_38:
    0x0000ac36 blt.w 0xaa02                                          |         goto label_6;
                                                                     |     }
    0x0000ac3a b 0xa9d8                                              |     goto label_5;
                                                                     | label_29:
    0x0000ac3c mov r2, r7                                            |     r2 = r7;
    0x0000ac3e mov r1, fp                                            |     r1 = fp;
    0x0000ac40 blx 0x1aac                                            |     r0 = opendir ();
    0x0000ac44 mov r6, r0                                            |     r6 = r0;
    0x0000ac46 bl 0x9344                                             |     r0 = fcn_00009344 (r0);
    0x0000ac4a cmp r0, 0                                             |     
                                                                     |     if (r0 < 0) {
    0x0000ac4c blt.w 0xaaa0                                          |         goto label_1;
                                                                     |     }
    0x0000ac50 mov r0, r6                                            |     r0 = r6;
    0x0000ac52 blx 0x1a10                                            |     r0 = stack_chk_fail ();
    0x0000ac56 mov r6, r0                                            |     r6 = r0;
                                                                     |     if (r0 != 0) {
    0x0000ac58 cbz r0, 0xac6a                                        |         
    0x0000ac5a ldr r7, [sp, 0x24]                                    |         r7 = var_24h;
    0x0000ac5c mov r1, r6                                            |         r1 = r6;
    0x0000ac5e ldr r0, [r7, 8]                                       |         r0 = *((r7 + 8));
    0x0000ac60 bl 0xa350                                             |         r0 = fcn_0000a350 (r0, r1);
                                                                     |         if (r0 == 0) {
    0x0000ac64 cbz r0, 0xac6a                                        |             goto label_39;
                                                                     |         }
    0x0000ac66 mov r6, r5                                            |         r6 = r5;
    0x0000ac68 str r0, [r7, 8]                                       |         *((r7 + 8)) = r0;
                                                                     |     }
                                                                     | label_39:
    0x0000ac6a mov r0, r6                                            |     r0 = r6;
    0x0000ac6c blx 0x19a0                                            |     fcn_000019a0 ();
    0x0000ac70 b 0xaaa0                                              |     goto label_1;
                                                                     | label_30:
    0x0000ac72 mov r2, r7                                            |     r2 = r7;
    0x0000ac74 mov r1, fp                                            |     r1 = fp;
    0x0000ac76 blx 0x1aac                                            |     opendir ();
    0x0000ac7a ldr.w r1, [pc, 0x678]                                 |     
    0x0000ac7e mov r3, r0                                            |     r3 = r0;
    0x0000ac80 mov r2, r7                                            |     r2 = r7;
    0x0000ac82 mov r0, r5                                            |     r0 = r5;
    0x0000ac84 mov r5, r3                                            |     r5 = r3;
    0x0000ac86 add r1, pc                                            |     r1 = 0x15f80;
    0x0000ac88 blx 0x1aac                                            |     r0 = opendir ();
    0x0000ac8c mov r6, r0                                            |     r6 = r0;
    0x0000ac8e mov r0, r5                                            |     r0 = r5;
    0x0000ac90 bl 0x9344                                             |     fcn_00009344 (r0);
    0x0000ac94 clz r3, r6                                            |     r3 &= r6;
    0x0000ac98 lsrs r3, r3, 5                                        |     r3 >>= 5;
    0x0000ac9a orrs.w r3, r3, r0, lsr 31                             |     r3 |= (r0 >> 31);
                                                                     |     if (r3 != r3) {
    0x0000ac9e bne.w 0xaaa0                                          |         goto label_1;
                                                                     |     }
    0x0000aca2 ldr r0, [sp, 0x24]                                    |     r0 = var_24h;
    0x0000aca4 mov r2, r6                                            |     r2 = r6;
    0x0000aca6 mov r1, r5                                            |     r1 = r5;
    0x0000aca8 bl 0xa760                                             |     fcn_0000a760 (r0, r1, r2);
    0x0000acac b 0xaaa0                                              |     goto label_1;
                                                                     | label_31:
    0x0000acae mov r2, r7                                            |     r2 = r7;
    0x0000acb0 mov r1, fp                                            |     r1 = fp;
    0x0000acb2 blx 0x1aac                                            |     opendir ();
    0x0000acb6 ldr.w r1, [pc, 0x640]                                 |     
    0x0000acba mov r3, r0                                            |     r3 = r0;
    0x0000acbc mov r2, r7                                            |     r2 = r7;
    0x0000acbe mov r0, r5                                            |     r0 = r5;
    0x0000acc0 mov r5, r3                                            |     r5 = r3;
    0x0000acc2 add r1, pc                                            |     r1 = 0x15fc0;
    0x0000acc4 blx 0x1aac                                            |     r0 = opendir ();
    0x0000acc8 mov r6, r0                                            |     r6 = r0;
    0x0000acca mov r0, r5                                            |     r0 = r5;
    0x0000accc bl 0x9344                                             |     fcn_00009344 (r0);
    0x0000acd0 clz r3, r6                                            |     r3 &= r6;
    0x0000acd4 lsrs r3, r3, 5                                        |     r3 >>= 5;
    0x0000acd6 orrs.w r3, r3, r0, lsr 31                             |     r3 |= (r0 >> 31);
                                                                     |     if (r3 != r3) {
    0x0000acda bne.w 0xaaa0                                          |         goto label_1;
                                                                     |     }
    0x0000acde ldr r3, [sp, 0x24]                                    |     r3 = var_24h;
    0x0000ace0 mov r1, r6                                            |     r1 = r6;
    0x0000ace2 mov r0, r5                                            |     r0 = r5;
    0x0000ace4 add.w r2, r3, 0x14                                    |     r2 = r3 + 0x14;
    0x0000ace8 bl 0xa700                                             |     fcn_0000a700 (r0, r1, r2);
    0x0000acec b 0xaaa0                                              |     goto label_1;
                                                                     | label_25:
    0x0000acee mov fp, r2                                            |     
                                                                     | label_24:
    0x0000acf0 ldr.w r0, [pc, 0x608]                                 |     
    0x0000acf4 mov.w r1, 0x80000                                     |     r1 = 0x80000;
    0x0000acf8 add r0, pc                                            |     r0 = 0x15ff8;
    0x0000acfa blx 0x1ad0                                            |     r0 = fstatat64 ();
    0x0000acfe subs r5, r0, 0                                        |     r5 = r0 - 0;
                                                                     |     if (r5 < r0) {
    0x0000ad00 blt.w 0xae1a                                          |         goto label_15;
                                                                     |     }
    0x0000ad04 sub.w r4, fp, 4                                       |     r4 = fp - 4;
    0x0000ad08 mov.w r2, 0x1000                                      |     r2 = 0x1000;
    0x0000ad0c mov r1, r4                                            |     r1 = r4;
    0x0000ad0e bl 0x9440                                             |     r0 = fcn_00009440 (r0, r1, r2);
    0x0000ad12 mov r6, r0                                            |     r6 = r0;
    0x0000ad14 mov r0, r5                                            |     r0 = r5;
    0x0000ad16 blx 0x1dbc                                            |     fcn_00001dbc ();
    0x0000ad1a cmp r6, 0                                             |     
                                                                     |     if (r6 < 0) {
    0x0000ad1c blt.w 0xb288                                          |         goto label_40;
                                                                     |     }
    0x0000ad20 ldr.w r3, [pc, 0x5dc]                                 |     
    0x0000ad24 movs r6, 0                                            |     r6 = 0;
    0x0000ad26 mov r7, r6                                            |     r7 = r6;
    0x0000ad28 mov r0, r6                                            |     r0 = r6;
    0x0000ad2a mov r8, r4                                            |     r8 = r4;
    0x0000ad2c movs r2, 1                                            |     r2 = 1;
    0x0000ad2e mov r5, r6                                            |     r5 = r6;
    0x0000ad30 add r3, pc                                            |     r3 = 0x16034;
    0x0000ad32 str r3, [sp, 0x10]                                    |     var_10h = r3;
                                                                     |     do {
                                                                     | label_7:
    0x0000ad34 mov r1, r4                                            |         r1 = r4;
    0x0000ad36 ldrb r3, [r4], 1                                      |         r3 = *(r4);
                                                                     |         r4++;
    0x0000ad3a cmp r3, 0x2e                                          |         
                                                                     |         if (r3 > 0x2e) {
    0x0000ad3c bhi.w 0xae62                                          |             goto label_41;
                                                                     |         }
    0x0000ad40 cmp r3, 0x2e                                          |         
    0x0000ad42 bhi 0xad34                                            |         
                                                                     |     } while (r3 > 0x2e);
    0x0000ad44 addw ip, pc, 8                                        |     __asm ("addw ip, pc, 8");
    0x0000ad48 ldr.w r3, [ip, r3, lsl 2]                             |     offset_0 = r3 << 2;
                                                                     |     r3 = *((ip + offset_0));
    0x0000ad4c add ip, r3                                            |     
    0x0000ad4e bx ip                                                 |     return void (*ip)() ();
                                                                     | label_15:
    0x0000ae1a movs r0, 0                                            |     r0 = 0;
                                                                     | label_8:
    0x0000ae1c ldr.w r2, [pc, 0x4e4]                                 |     r2 = *(0x0000b304);
    0x0000ae20 add.w r1, sp, 0x1120                                  |     r1 += var_1120h;
    0x0000ae24 ldr.w r3, [pc, 0x490]                                 |     r3 = *(0xb2b8);
    0x0000ae28 adds r1, 0x14                                         |     r1 += 0x14;
    0x0000ae2a add r2, pc                                            |     r2 += pc;
    0x0000ae2c ldr r3, [r2, r3]                                      |     r3 = *((r2 + r3));
    0x0000ae2e ldr r2, [r3]                                          |     r2 = *(0xb2b8);
    0x0000ae30 ldr r3, [r1]                                          |     r3 = *(r1);
    0x0000ae32 eors r2, r3                                           |     r2 ^= r3;
    0x0000ae34 mov.w r3, 0                                           |     r3 = 0;
                                                                     |     if (r2 != r3) {
    0x0000ae38 bne.w 0xb2a4                                          |         goto label_42;
                                                                     |     }
    0x0000ae3c add.w sp, sp, 0x1120                                  |     
    0x0000ae40 add sp, 0x1c                                          |     
    0x0000ae42 pop.w {r4, r5, r6, r7, r8, sb, sl, fp, pc}            |     
                                                                     | label_41:
    0x0000ae62 cmp r3, 0x3d                                          |     
                                                                     |     if (r3 != 0x3d) {
    0x0000ae64 bne.w 0xad34                                          |         goto label_7;
                                                                     |     }
    0x0000ae68 cmp r2, 2                                             |     
                                                                     |     if (r2 == 2) {
    0x0000ae6a beq.w 0xb230                                          |         goto label_43;
                                                                     |     }
    0x0000ae6e cmp r2, 1                                             |     
    0x0000ae70 it eq                                                 |     
                                                                     |     if (r2 != 1) {
    0x0000ae72 moveq r2, 0                                           |         r2 = 0;
                                                                     |     }
    0x0000ae74 b 0xad34                                              |     goto label_7;
                                                                     | label_32:
    0x0000af54 mov r2, r7                                            |     r2 = r7;
    0x0000af56 mov r1, fp                                            |     r1 = fp;
    0x0000af58 blx 0x1aac                                            |     opendir ();
    0x0000af5c ldr r1, [pc, 0x3b0]                                   |     
    0x0000af5e mov r3, r0                                            |     r3 = r0;
    0x0000af60 mov r2, r7                                            |     r2 = r7;
    0x0000af62 mov r0, r5                                            |     r0 = r5;
    0x0000af64 mov r5, r3                                            |     r5 = r3;
    0x0000af66 add r1, pc                                            |     r1 = 0x1627a;
    0x0000af68 blx 0x1aac                                            |     r0 = opendir ();
    0x0000af6c mov r6, r0                                            |     r6 = r0;
    0x0000af6e mov r0, r5                                            |     r0 = r5;
    0x0000af70 bl 0x9344                                             |     fcn_00009344 (r0);
    0x0000af72 invalid                                               |     
    0x0000af76 usat sb, 0x1b, r6, lsl 1                              |     __asm ("usat sb, 0x1b, r6, lsl 1");
    0x0000af7a orrs.w r3, r3, r0, lsr 31                             |     r3 |= (r0 >> 31);
                                                                     |     if (r3 != r3) {
    0x0000af7e bne.w 0xaaa0                                          |         goto label_1;
                                                                     |     }
    0x0000af82 ldr r3, [sp, 0x24]                                    |     r3 = var_24h;
    0x0000af84 mov r1, r6                                            |     r1 = r6;
    0x0000af86 mov r0, r5                                            |     r0 = r5;
    0x0000af88 add.w r2, r3, 0x10                                    |     r2 = r3 + 0x10;
    0x0000af8c bl 0xa700                                             |     fcn_0000a700 (r0, r1, r2);
    0x0000af90 b 0xaaa0                                              |     goto label_1;
                                                                     | label_23:
    0x0000af92 mov r0, r4                                            |     r0 = r4;
    0x0000af94 ldr r7, [sp, 0x18]                                    |     r7 = var_18h;
    0x0000af96 blx 0x19a0                                            |     fcn_000019a0 ();
                                                                     | label_17:
    0x0000af9a ldr r4, [fp, -0xdc]                                   |     r4 = var_5ch;
                                                                     |     if (r4 == 0) {
    0x0000af9e cbz r4, 0xafb6                                        |         goto label_44;
                                                                     |     }
                                                                     |     do {
    0x0000afa0 ldr r0, [r4, 8]                                       |         r0 = *((r4 + 8));
    0x0000afa2 blx 0x19a0                                            |         fcn_000019a0 ();
    0x0000afa6 mov r0, r4                                            |         r0 = r4;
    0x0000afa8 bl 0xa3ec                                             |         r0 = fcn_0000a3ec (r0);
    0x0000afac mov r4, r0                                            |         r4 = r0;
    0x0000afae str r0, [fp, -0xdc]                                   |         var_5ch = r0;
    0x0000afb2 cmp r0, 0                                             |         
    0x0000afb4 bne 0xafa0                                            |         
                                                                     |     } while (r0 != 0);
                                                                     |     if (r7 == 0) {
                                                                     | label_44:
    0x0000afb6 cbz r7, 0xafca                                        |         goto label_45;
                                                                     |     }
                                                                     |     do {
    0x0000afb8 ldr r0, [r7, 8]                                       |         r0 = *((r7 + 8));
    0x0000afba blx 0x19a0                                            |         fcn_000019a0 ();
    0x0000afbe mov r0, r7                                            |         r0 = r7;
    0x0000afc0 bl 0xa3ec                                             |         r0 = fcn_0000a3ec (r0);
    0x0000afc4 mov r7, r0                                            |         r7 = r0;
    0x0000afc6 cmp r7, 0                                             |         
    0x0000afc8 bne 0xafb8                                            |         
                                                                     |     } while (r7 != 0);
                                                                     | label_45:
    0x0000afca mvn r0, 0xb                                           |     r0 = ~0xb;
    0x0000afce b 0xae1c                                              |     goto label_8;
                                                                     | label_33:
    0x0000afd0 mov r2, r7                                            |     r2 = r7;
    0x0000afd2 mov r1, fp                                            |     r1 = fp;
    0x0000afd4 blx 0x1aac                                            |     opendir ();
    0x0000afd8 ldr r1, [pc, 0x338]                                   |     
    0x0000afda mov r3, r0                                            |     r3 = r0;
    0x0000afdc mov r2, r7                                            |     r2 = r7;
    0x0000afde mov r0, r5                                            |     r0 = r5;
    0x0000afe0 mov r5, r3                                            |     r5 = r3;
    0x0000afe2 str r3, [sp, 0x48]                                    |     var_48h = r3;
    0x0000afe4 add r1, pc                                            |     r1 = 0x162fc;
    0x0000afe6 blx 0x1aac                                            |     r0 = opendir ();
    0x0000afea mov r7, r0                                            |     r7 = r0;
    0x0000afec mov r0, r5                                            |     r0 = r5;
    0x0000afee bl 0x9344                                             |     fcn_00009344 (r0);
    0x0000aff2 clz r3, r7                                            |     r3 &= r7;
    0x0000aff6 lsrs r3, r3, 5                                        |     r3 >>= 5;
    0x0000aff8 orrs.w r3, r3, r0, lsr 31                             |     r3 |= (r0 >> 31);
                                                                     |     if (r3 != r3) {
    0x0000affc bne.w 0xaaa0                                          |         goto label_1;
                                                                     |     }
    0x0000b000 mov r0, r5                                            |     r0 = r5;
    0x0000b002 mov r6, r7                                            |     r6 = r7;
    0x0000b004 blx 0x1bb0                                            |     r0 = fcn_00001bb0 ();
    0x0000b008 mov r3, r0                                            |     r3 = r0;
    0x0000b00a mov r5, r7                                            |     r5 = r7;
    0x0000b00c adds r3, 1                                            |     r3++;
    0x0000b00e mov r8, r7                                            |     r8 = r7;
    0x0000b010 str r3, [sp, 0x54]                                    |     var_54h = r3;
    0x0000b012 mov r3, r7                                            |     r3 = r7;
    0x0000b014 movs r2, 0                                            |     r2 = 0;
    0x0000b016 str r0, [sp, 0x50]                                    |     var_50h = r0;
    0x0000b018 str r2, [sp, 0x28]                                    |     var_28h = r2;
    0x0000b01a strd r2, r2, [sp, 0x30]                               |     __asm ("strd r2, r2, [var_30h]");
    0x0000b01e strd r2, r2, [sp, 0x40]                               |     __asm ("strd r2, r2, [var_44h]");
    0x0000b022 str r4, [sp, 0x4c]                                    |     errnum = r4;
                                                                     |     do {
                                                                     | label_9:
    0x0000b024 mov r2, r6                                            |         r2 = r6;
    0x0000b026 ldrb r4, [r6], 1                                      |         r4 = *(r6);
                                                                     |         r6++;
                                                                     |         if (r4 == 0) {
    0x0000b02a cbz r4, 0xb054                                        |             goto label_46;
                                                                     |         }
    0x0000b02c str r2, [sp, 0x2c]                                    |         var_2ch = r2;
    0x0000b02e blx 0x1b80                                            |         r0 = fcn_00001b80 ();
    0x0000b032 ldr r0, [r0]                                          |         r0 = *(r0);
    0x0000b034 ldrh.w r0, [r0, r4, lsl 1]                            |         offset_1 = r4 << 1;
                                                                     |         r0 = *((r0 + offset_1));
    0x0000b038 ands r0, r0, 0x2000                                   |         r0 &= 0x2000;
                                                                     |         if (r0 == r0) {
    0x0000b03c beq.w 0xb1d6                                          |             goto label_47;
                                                                     |         }
    0x0000b040 ldrd r3, r2, [sp, 0x28]                               |         __asm ("ldrd r3, r2, [var_28h]");
    0x0000b044 cmp r3, 0                                             |         
                                                                     |         if (r3 != 0) {
    0x0000b046 bne.w 0xb22c                                          |             goto label_48;
                                                                     |         }
    0x0000b04a cmp r2, r8                                            |         
    0x0000b04c mov.w r3, 1                                           |         r3 = 1;
    0x0000b050 str r3, [sp, 0x28]                                    |         var_28h = r3;
    0x0000b052 bls 0xb024                                            |         
                                                                     |     } while (r2 < r8);
                                                                     | label_46:
    0x0000b054 sub.w r2, r2, r8                                      |     r2 -= r8;
    0x0000b058 cmp r2, 4                                             |     
                                                                     |     if (r2 == 4) {
    0x0000b05a beq.w 0xb18c                                          |         goto label_49;
                                                                     |     }
    0x0000b05e cmp r2, 5                                             |     
                                                                     |     if (r2 == 5) {
    0x0000b060 beq.w 0xb1be                                          |         goto label_50;
                                                                     |     }
                                                                     | label_11:
    0x0000b064 ldr r1, [sp, 0x28]                                    |     r1 = var_28h;
    0x0000b066 cmp r4, 0                                             |     
    0x0000b068 ite ne                                                |     
                                                                     |     if (r4 == 0) {
    0x0000b06a movne r1, 0                                           |         r1 = 0;
                                                                     |     }
                                                                     |     if (r4 != 0) {
    0x0000b06c andeq r1, r1, 1                                       |         r1 &= 1;
                                                                     |     }
                                                                     |     if (r1 != 0) {
    0x0000b070 cbnz r1, 0xb094                                       |         goto label_51;
                                                                     |     }
    0x0000b072 ldr r3, [sp, 0x30]                                    |     r3 = var_30h;
    0x0000b074 cmp r3, 1                                             |     
                                                                     |     if (r3 == 1) {
    0x0000b076 beq.w 0xb1da                                          |         goto label_52;
                                                                     |     }
    0x0000b07a ldr r3, [sp, 0x30]                                    |     r3 = var_30h;
    0x0000b07c cmp r3, 2                                             |     
                                                                     |     if (r3 == 2) {
    0x0000b07e bne 0xb08e                                            |         
    0x0000b080 ldr r1, [sp, 0x34]                                    |         r1 = var_34h;
    0x0000b082 adds r1, 1                                            |         r1++;
    0x0000b084 adds r3, r2, r1                                       |         r3 = r2 + r1;
    0x0000b086 str r3, [sp, 0x34]                                    |         var_34h = r3;
    0x0000b088 ldr r3, [sp, 0x44]                                    |         r3 = var_44h;
    0x0000b08a adds r3, 1                                            |         r3++;
    0x0000b08c str r3, [sp, 0x44]                                    |         var_44h = r3;
                                                                     |     }
                                                                     | label_12:
    0x0000b08e mov r8, r6                                            |     r8 = r6;
    0x0000b090 cmp r4, 0                                             |     
                                                                     |     if (r4 != 0) {
    0x0000b092 bne 0xb024                                            |         goto label_9;
                                                                     |     }
                                                                     | label_51:
    0x0000b094 ldrd r4, r0, [sp, 0x4c]                               |     __asm ("ldrd r4, r0, [var_50h]");
    0x0000b098 ldr r3, [sp, 0x34]                                    |     r3 = var_34h;
    0x0000b09a ldr r2, [sp, 0x44]                                    |     r2 = var_44h;
    0x0000b09c adds r0, 0x15                                         |     r0 += 0x15;
    0x0000b09e add r0, r3                                            |     r0 += r3;
    0x0000b0a0 ldr r3, [sp, 0x40]                                    |     r3 = var_40h;
    0x0000b0a2 lsls r6, r2, 2                                        |     r6 = r2 << 2;
    0x0000b0a4 lsl.w r8, r3, 2                                       |     r8 = r3 << 2;
    0x0000b0a8 add r0, r8                                            |     r0 += r8;
    0x0000b0aa add r0, r6                                            |     r0 += r6;
    0x0000b0ac blx 0x1b0c                                            |     strerror (r0);
    0x0000b0b0 str r0, [sp, 0x30]                                    |     var_30h = r0;
    0x0000b0b2 cmp r0, 0                                             |     
                                                                     |     if (r0 == 0) {
    0x0000b0b4 beq.w 0xaaa0                                          |         goto label_1;
                                                                     |     }
    0x0000b0b8 ldr r2, [sp, 0x44]                                    |     r2 = var_44h;
    0x0000b0ba ldr r3, [sp, 0x40]                                    |     r3 = var_40h;
    0x0000b0bc ldr r1, [sp, 0x48]                                    |     r1 = var_48h;
    0x0000b0be str r2, [r0, 0x10]                                    |     *((r0 + 0x10)) = r2;
    0x0000b0c0 add.w r2, r0, 0x14                                    |     r2 = r0 + 0x14;
    0x0000b0c4 str r3, [r0, 0xc]                                     |     *((r0 + 0xc)) = r3;
    0x0000b0c6 add.w r3, r2, r8                                      |     r3 = r2 + r8;
    0x0000b0ca str r2, [r0, 4]                                       |     *((r0 + 4)) = r2;
    0x0000b0cc adds r0, r3, r6                                       |     r0 = r3 + r6;
    0x0000b0ce ldr.w r8, [sp, 0x54]                                  |     r8 = var_54h;
    0x0000b0d2 ldr r6, [sp, 0x30]                                    |     r6 = var_30h;
    0x0000b0d4 mov r2, r8                                            |     r2 = r8;
    0x0000b0d6 str r3, [r6, 8]                                       |     *((r6 + 8)) = r3;
    0x0000b0d8 str r0, [r6]                                          |     *(r6) = r0;
    0x0000b0da blx 0x19c8                                            |     mmap64 ()
    0x0000b0de ldr r3, [r6]                                          |     r3 = *(r6);
    0x0000b0e0 mov r2, r8                                            |     r2 = r8;
    0x0000b0e2 mov.w r8, 0                                           |     r8 = 0;
    0x0000b0e6 str.w r8, [sp, 0x2c]                                  |     __asm ("str.w r8, [var_2ch]");
    0x0000b0ea add r2, r3                                            |     r2 += r3;
    0x0000b0ec strd r8, r8, [sp, 0x40]                               |     __asm ("strd r8, r8, [var_44h]");
    0x0000b0f0 str r2, [sp, 0x34]                                    |     var_34h = r2;
                                                                     |     do {
                                                                     | label_10:
    0x0000b0f2 mov r2, r5                                            |         r2 = r5;
    0x0000b0f4 ldrb r6, [r5], 1                                      |         r6 = *(r5);
                                                                     |         r5++;
                                                                     |         if (r6 == 0) {
    0x0000b0f8 cbz r6, 0xb120                                        |             goto label_53;
                                                                     |         }
    0x0000b0fa str r2, [sp, 0x28]                                    |         var_28h = r2;
    0x0000b0fc blx 0x1b80                                            |         r0 = fcn_00001b80 ();
    0x0000b100 ldr r3, [r0]                                          |         r3 = *(r0);
    0x0000b102 ldrh.w r3, [r3, r6, lsl 1]                            |         offset_2 = r6 << 1;
                                                                     |         r3 = *((r3 + offset_2));
    0x0000b106 ands r3, r3, 0x2000                                   |         r3 &= 0x2000;
                                                                     |         if (r3 == r3) {
    0x0000b10a beq.w 0xb224                                          |             goto label_54;
                                                                     |         }
    0x0000b10e ldr r2, [sp, 0x28]                                    |         r2 = var_28h;
    0x0000b110 cmp.w r8, 0                                           |         
                                                                     |         if (r8 != 0) {
    0x0000b114 bne.w 0xb228                                          |             goto label_55;
                                                                     |         }
    0x0000b118 cmp r2, r7                                            |         
    0x0000b11a mov.w r8, 1                                           |         r8 = 1;
    0x0000b11e bls 0xb0f2                                            |         
                                                                     |     } while (r2 < r7);
                                                                     | label_53:
    0x0000b120 subs r2, r2, r7                                       |     r2 -= r7;
    0x0000b122 cmp r2, 4                                             |     
                                                                     |     if (r2 == 4) {
    0x0000b124 beq 0xb1ea                                            |         goto label_56;
                                                                     |     }
    0x0000b126 cmp r2, 5                                             |     
                                                                     |     if (r2 == 5) {
    0x0000b128 beq 0xb20e                                            |         goto label_57;
                                                                     |     }
                                                                     | label_13:
    0x0000b12a cmp r6, 0                                             |     
    0x0000b12c ite ne                                                |     
                                                                     |     if (r6 == 0) {
    0x0000b12e movne r3, 0                                           |         r3 = 0;
                                                                     |     }
                                                                     |     if (r6 != 0) {
    0x0000b130 andeq r3, r8, 1                                       |         r3 = r8 & 1;
                                                                     |     }
                                                                     |     if (r3 != 0) {
    0x0000b134 cbnz r3, 0xb14c                                       |         goto label_58;
                                                                     |     }
    0x0000b136 ldr r1, [sp, 0x2c]                                    |     r1 = var_2ch;
    0x0000b138 cmp r1, 1                                             |     
                                                                     |     if (r1 == 1) {
    0x0000b13a beq.w 0xb244                                          |         goto label_59;
                                                                     |     }
    0x0000b13e ldr r1, [sp, 0x2c]                                    |     r1 = var_2ch;
    0x0000b140 cmp r1, 2                                             |     
                                                                     |     if (r1 == 2) {
    0x0000b142 beq.w 0xb272                                          |         goto label_60;
                                                                     |     }
                                                                     | label_14:
    0x0000b146 mov r7, r5                                            |     r7 = r5;
    0x0000b148 cmp r6, 0                                             |     
                                                                     |     if (r6 != 0) {
    0x0000b14a bne 0xb0f2                                            |         goto label_10;
                                                                     |     }
                                                                     | label_58:
    0x0000b14c ldr r3, [sp, 0x24]                                    |     r3 = var_24h;
    0x0000b14e ldr r1, [sp, 0x30]                                    |     r1 = var_30h;
    0x0000b150 ldr r0, [r3, 0x18]                                    |     r0 = *((r3 + 0x18));
    0x0000b152 bl 0xa350                                             |     r0 = fcn_0000a350 (r0, r1);
    0x0000b156 cmp r0, 0                                             |     
                                                                     |     if (r0 == 0) {
    0x0000b158 beq.w 0xb2a8                                          |         goto label_61;
                                                                     |     }
    0x0000b15c ldr r3, [sp, 0x24]                                    |     r3 = var_24h;
    0x0000b15e str r0, [r3, 0x18]                                    |     *((r3 + 0x18)) = r0;
    0x0000b160 b 0xaaa0                                              |     goto label_1;
                                                                     | label_49:
    0x0000b18c ldrb.w r0, [r8]                                       |     r0 = *(r8);
    0x0000b190 cmp r0, 0x70                                          |     
                                                                     |     if (r0 != 0x70) {
    0x0000b192 bne.w 0xb064                                          |         goto label_11;
                                                                     |     }
    0x0000b196 ldrb.w r0, [r8, 1]                                    |     r0 = *((r8 + 1));
    0x0000b19a add.w r1, r8, 1                                       |     r1 = r8 + 1;
    0x0000b19e cmp r0, 0x72                                          |     
                                                                     |     if (r0 != 0x72) {
    0x0000b1a0 bne.w 0xb064                                          |         goto label_11;
                                                                     |     }
    0x0000b1a4 ldrb r0, [r1, 1]!                                     |     r0 = *((r1 += 1));
    0x0000b1a8 cmp r0, 0x65                                          |     
                                                                     |     if (r0 != 0x65) {
    0x0000b1aa bne.w 0xb064                                          |         goto label_11;
                                                                     |     }
    0x0000b1ae ldrb r1, [r1, 1]                                      |     r1 = *((r1 + 1));
    0x0000b1b0 cmp r1, 0x3a                                          |     
    0x0000b1b2 itt eq                                                |     
                                                                     |     if (r1 != 0x3a) {
    0x0000b1b4 moveq r3, 1                                           |         r3 = 1;
                                                                     |     }
                                                                     |     if (r1 == 0x3a) {
    0x0000b1b6 streq r3, [sp, 0x30]                                  |         var_30h = r3;
                                                                     |         goto label_62;
                                                                     |     }
                                                                     |     if (r1 != 0x3a) {
                                                                     | label_62:
    0x0000b1b8 bne.w 0xb064                                          |         goto label_11;
                                                                     |     }
    0x0000b1bc b 0xb08e                                              |     goto label_12;
                                                                     | label_50:
    0x0000b1be ldr r1, [sp, 0x38]                                    |     r1 = var_38h;
    0x0000b1c0 mov r0, r8                                            |     r0 = r8;
    0x0000b1c2 str r2, [sp, 0x2c]                                    |     var_2ch = r2;
    0x0000b1c4 blx 0x19f8                                            |     uname ();
    0x0000b1c8 ldr r2, [sp, 0x2c]                                    |     r2 = var_2ch;
    0x0000b1ca cmp r0, 0                                             |     
                                                                     |     if (r0 != 0) {
    0x0000b1cc bne.w 0xb064                                          |         goto label_11;
                                                                     |     }
    0x0000b1d0 movs r3, 2                                            |     r3 = 2;
    0x0000b1d2 str r3, [sp, 0x30]                                    |     var_30h = r3;
    0x0000b1d4 b 0xb08e                                              |     goto label_12;
                                                                     | label_47:
    0x0000b1d6 str r0, [sp, 0x28]                                    |     var_28h = r0;
    0x0000b1d8 b 0xb024                                              |     goto label_9;
                                                                     | label_52:
    0x0000b1da ldr r1, [sp, 0x34]                                    |     r1 = var_34h;
    0x0000b1dc adds r1, 1                                            |     r1++;
    0x0000b1de adds r3, r1, r2                                       |     r3 = r1 + r2;
    0x0000b1e0 str r3, [sp, 0x34]                                    |     var_34h = r3;
    0x0000b1e2 ldr r3, [sp, 0x40]                                    |     r3 = var_40h;
    0x0000b1e4 adds r3, 1                                            |     r3++;
    0x0000b1e6 str r3, [sp, 0x40]                                    |     var_40h = r3;
    0x0000b1e8 b 0xb08e                                              |     goto label_12;
                                                                     | label_56:
    0x0000b1ea ldrb r3, [r7]                                         |     r3 = *(r7);
    0x0000b1ec cmp r3, 0x70                                          |     
                                                                     |     if (r3 != 0x70) {
    0x0000b1ee bne 0xb12a                                            |         goto label_13;
                                                                     |     }
    0x0000b1f0 ldrb r3, [r7, 1]                                      |     r3 = *((r7 + 1));
    0x0000b1f2 adds r1, r7, 1                                        |     r1 = r7 + 1;
    0x0000b1f4 cmp r3, 0x72                                          |     
                                                                     |     if (r3 != 0x72) {
    0x0000b1f6 bne 0xb12a                                            |         goto label_13;
                                                                     |     }
    0x0000b1f8 ldrb r3, [r1, 1]!                                     |     r3 = *((r1 += 1));
    0x0000b1fc cmp r3, 0x65                                          |     
                                                                     |     if (r3 != 0x65) {
    0x0000b1fe bne 0xb12a                                            |         goto label_13;
                                                                     |     }
    0x0000b200 ldrb r3, [r1, 1]                                      |     r3 = *((r1 + 1));
    0x0000b202 cmp r3, 0x3a                                          |     
    0x0000b204 itt eq                                                |     
                                                                     |     if (r3 != 0x3a) {
    0x0000b206 moveq r3, 1                                           |         r3 = 1;
                                                                     |     }
                                                                     |     if (r3 == 0x3a) {
    0x0000b208 streq r3, [sp, 0x2c]                                  |         var_2ch = r3;
                                                                     |         goto label_63;
                                                                     |     }
                                                                     |     if (r3 != 0x3a) {
                                                                     | label_63:
    0x0000b20a bne 0xb12a                                            |         goto label_13;
                                                                     |     }
    0x0000b20c b 0xb146                                              |     goto label_14;
                                                                     | label_57:
    0x0000b20e ldr r1, [sp, 0x3c]                                    |     r1 = var_3ch;
    0x0000b210 mov r0, r7                                            |     r0 = r7;
    0x0000b212 str r2, [sp, 0x28]                                    |     var_28h = r2;
    0x0000b214 blx 0x19f8                                            |     uname ();
    0x0000b218 ldr r2, [sp, 0x28]                                    |     r2 = var_28h;
    0x0000b21a cmp r0, 0                                             |     
                                                                     |     if (r0 != 0) {
    0x0000b21c bne 0xb12a                                            |         goto label_13;
                                                                     |     }
    0x0000b21e movs r3, 2                                            |     r3 = 2;
    0x0000b220 str r3, [sp, 0x2c]                                    |     var_2ch = r3;
    0x0000b222 b 0xb146                                              |     goto label_14;
                                                                     | label_54:
    0x0000b224 mov r8, r3                                            |     r8 = r3;
    0x0000b226 b 0xb0f2                                              |     goto label_10;
                                                                     | label_55:
    0x0000b228 mov r7, r5                                            |     r7 = r5;
    0x0000b22a b 0xb0f2                                              |     goto label_10;
                                                                     | label_48:
    0x0000b22c mov r8, r6                                            |     r8 = r6;
    0x0000b22e b 0xb024                                              |     goto label_9;
                                                                     | label_43:
    0x0000b230 mov r6, r4                                            |     r6 = r4;
    0x0000b232 movs r2, 3                                            |     r2 = 3;
    0x0000b234 b 0xad34                                              |     goto label_7;
                                                                     | label_59:
    0x0000b244 str r3, [sp, 0x48]                                    |     var_48h = r3;
    0x0000b246 mov r1, r7                                            |     r1 = r7;
    0x0000b248 ldr r3, [sp, 0x30]                                    |     r3 = var_30h;
    0x0000b24a ldr r6, [sp, 0x34]                                    |     r6 = var_34h;
    0x0000b24c ldr r0, [r3, 4]                                       |     r0 = *((r3 + 4));
    0x0000b24e ldr r3, [sp, 0x40]                                    |     r3 = var_40h;
    0x0000b250 str.w r6, [r0, r3, lsl 2]                             |     __asm ("str.w r6, [r0, r3, lsl 2]");
    0x0000b254 adds r3, 1                                            |     r3++;
    0x0000b256 str r3, [sp, 0x40]                                    |     var_40h = r3;
                                                                     |     do {
    0x0000b258 mov r0, r6                                            |         r0 = r6;
    0x0000b25a str r2, [sp, 0x28]                                    |         var_28h = r2;
    0x0000b25c blx 0x19c8                                            |         mmap64 ()
    0x0000b260 ldr r2, [sp, 0x28]                                    |         r2 = var_28h;
    0x0000b262 ldr r3, [sp, 0x48]                                    |         r3 = var_48h;
    0x0000b264 strb r3, [r6, r2]                                     |         *((r6 + r2)) = r3;
    0x0000b266 adds r2, 1                                            |         r2++;
    0x0000b268 adds r3, r6, r2                                       |         r3 = r6 + r2;
    0x0000b26a str r3, [sp, 0x34]                                    |         var_34h = r3;
    0x0000b26c ldrb r6, [r5, -0x1]                                   |         r6 = *((r5 - 0x1));
    0x0000b270 b 0xb146                                              |         goto label_14;
                                                                     | label_60:
    0x0000b272 str r3, [sp, 0x48]                                    |         var_48h = r3;
    0x0000b274 mov r1, r7                                            |         r1 = r7;
    0x0000b276 ldr r3, [sp, 0x30]                                    |         r3 = var_30h;
    0x0000b278 ldr r6, [sp, 0x34]                                    |         r6 = var_34h;
    0x0000b27a ldr r0, [r3, 8]                                       |         r0 = *((r3 + 8));
    0x0000b27c ldr r3, [sp, 0x44]                                    |         r3 = var_44h;
    0x0000b27e str.w r6, [r0, r3, lsl 2]                             |         __asm ("str.w r6, [r0, r3, lsl 2]");
    0x0000b282 adds r3, 1                                            |         r3++;
    0x0000b284 str r3, [sp, 0x44]                                    |         var_44h = r3;
    0x0000b286 b 0xb258                                              |         
                                                                     |     } while (1);
                                                                     | label_40:
    0x0000b288 rsbs r0, r6, 0                                        |     r0 = r6 - ;
    0x0000b28a blx 0x1b18                                            |     system (r0);
    0x0000b28e b 0xae1a                                              |     goto label_15;
                                                                     | label_18:
    0x0000b290 mov r7, r5                                            |     r7 = r5;
    0x0000b292 b.w 0xa99c                                            |     goto label_16;
                                                                     | label_22:
    0x0000b296 ldr r7, [sp, 0x18]                                    |     r7 = var_18h;
    0x0000b298 b 0xaf9a                                              |     goto label_17;
                                                                     | label_27:
    0x0000b29a mov r0, r4                                            |     r0 = r4;
    0x0000b29c blx 0x1dbc                                            |     fcn_00001dbc ();
    0x0000b2a0 b.w 0xa9d8                                            |     goto label_5;
                                                                     | label_42:
    0x0000b2a4 blx 0x1a1c                                            |     stat64 ();
                                                                     | label_61:
    0x0000b2a8 ldr r0, [sp, 0x30]                                    |     r0 = var_30h;
    0x0000b2aa blx 0x19a0                                            |     fcn_000019a0 ();
    0x0000b2ae b.w 0xaaa0                                            |     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/bin/kmod @ 0xb4e8 */
                                                                     | #include <stdint.h>
                                                                     |  
                                                                     | #define SWAP32(n) ((uint32_t) (((n & 0x000000ff) << 24) | \
                                                                     |                                ((n & 0x0000ff00) <<  8) | \
                                                                     |                                ((n & 0x00ff0000) >>  8) | \
                                                                     |                                ((n & 0xff000000) >> 24)))
                                                                     |  
    ; (fcn) fcn.0000b4e8 ()                                          | void fcn_0000b4e8 (int16_t arg_3d8h, int16_t arg1, uint32_t arg2) {
                                                                     |     int16_t var_4h;
                                                                     |     int16_t var_ch;
                                                                     |     int16_t var_0h;
                                                                     |     int16_t var_90h;
                                                                     |     int16_t var_118h;
                                                                     |     int16_t var_20ch;
                                                                     |     int16_t var_214h;
                                                                     |     r0 = arg1;
                                                                     |     r1 = arg2;
    0x0000b4e8 ldr r2, [pc, 0x15c]                                   |     
    0x0000b4ea ldr r3, [pc, 0x160]                                   |     r3 = *(0xb64e);
    0x0000b4ec push.w {r4, r5, r6, r7, r8, sb, sl, fp, lr}           |     
    0x0000b4f0 sub.w sp, sp, 0x214                                   |     
    0x0000b4f4 add r2, pc                                            |     r2 = 0x16b40;
    0x0000b4f6 ldr r5, [r0, 4]                                       |     r5 = *((r0 + 4));
    0x0000b4f8 ldr r3, [r2, r3]                                      |     
    0x0000b4fa ldr r3, [r3]                                          |     r3 = *(0x16b40);
    0x0000b4fc str r3, [sp, 0x20c]                                   |     var_20ch = r3;
    0x0000b4fe mov.w r3, 0                                           |     r3 = 0;
    0x0000b502 bics r3, r1, 0xf0000000                               |     __asm ("bics r3, r1, 0xf0000000");
                                                                     |     if (? == ?) {
    0x0000b506 beq.w 0xb63c                                          |         goto label_4;
                                                                     |     }
    0x0000b50a cmp r1, 0                                             |     
    0x0000b50c mov fp, r0                                            |     
    0x0000b50e mov r6, r1                                            |     r6 = r1;
    0x0000b510 add r5, r3                                            |     r5 += r3;
                                                                     |     if (r1 < 0) {
    0x0000b512 blt 0xb5ec                                            |         goto label_5;
                                                                     |     }
    0x0000b514 ldr r3, [pc, 0x138]                                   |     
    0x0000b516 ands r4, r6, 0x20000000                               |     r4 = r6 & 0x20000000;
    0x0000b51a add r3, pc                                            |     r3 = 0x16b6e;
    0x0000b51c str r3, [sp, 4]                                       |     var_4h = r3;
                                                                     |     if (r4 == r6) {
    0x0000b51e beq 0xb600                                            |         goto label_6;
                                                                     |     }
                                                                     | label_0:
    0x0000b520 ldrb.w sb, [r5]                                       |     sb = *(r5);
    0x0000b524 adds r7, r5, 2                                        |     r7 = r5 + 2;
    0x0000b526 ldrb.w sl, [r5, 1]                                    |     sl = *((r5 + 1));
    0x0000b52a sub.w lr, sl, sb                                      |     lr = sl - sb;
    0x0000b52e add.w r4, lr, 1                                       |     r4 = lr + 1;
    0x0000b532 add.w r0, lr, 6                                       |     r0 = lr + 6;
    0x0000b536 cmp r4, 0                                             |     
    0x0000b538 mov ip, r4                                            |     
                                                                     |     if (r4 <= 0) {
    0x0000b53a ble.w 0xb640                                          |         goto label_7;
                                                                     |     }
    0x0000b53e add.w lr, r5, lr, lsl 2                               |     lr = r5 + (lr << 2);
    0x0000b542 mov r2, r7                                            |     r2 = r7;
    0x0000b544 add r5, sp, 0xc                                       |     r5 += var_ch;
    0x0000b546 add.w lr, lr, 6                                       |     lr += 6;
                                                                     |     do {
    0x0000b54a ldr r3, [r2], 4                                       |         r3 = *(r2);
                                                                     |         r2 += 4;
    0x0000b54e cmp lr, r2                                            |         
    0x0000b550 rev r3, r3                                            |         r3 = SWAP32 (r3);
    0x0000b552 str r3, [r5], 4                                       |         *(r5) = r3;
                                                                     |         r5 += 4;
    0x0000b556 bne 0xb54a                                            |         
                                                                     |     } while (lr != r2);
    0x0000b558 add.w r5, r7, ip, lsl 2                               |     r5 = r7 + (ip << 2);
                                                                     | label_3:
    0x0000b55c lsls r3, r6, 1                                        |     r3 = r6 << 1;
                                                                     |     if (r3 >= r6) {
    0x0000b55e bpl 0xb60e                                            |         goto label_8;
                                                                     |     }
                                                                     | label_1:
    0x0000b560 ldr r7, [r5], 4                                       |     r7 = *(r5);
                                                                     |     r5 += 4;
    0x0000b564 rev r7, r7                                            |     r7 = SWAP32 (r7);
    0x0000b566 add.w r8, r7, r7, lsl 1                               |     r8 = r7 + (r7 << 1);
    0x0000b56a add r0, r8                                            |     r0 += r8;
    0x0000b56c lsls r0, r0, 2                                        |     r0 <<= 2;
    0x0000b56e blx 0x1b0c                                            |     r0 = strerror (r0);
    0x0000b572 mov r6, r0                                            |     r6 = r0;
    0x0000b574 cmp r0, 0                                             |     
                                                                     |     if (r0 == 0) {
    0x0000b576 beq 0xb63c                                            |         goto label_4;
                                                                     |     }
    0x0000b578 ldr r3, [sp, 4]                                       |     r3 = var_4h;
    0x0000b57a lsls r2, r4, 2                                        |     r2 = r4 << 2;
    0x0000b57c str.w fp, [r0]                                        |     __asm ("str.w fp, [r0]");
    0x0000b580 adds r0, 0x14                                         |     r0 += 0x14;
    0x0000b582 str r3, [r0, -0x10]                                   |     *((r0 - 0x10)) = r3;
    0x0000b586 cmp r7, 0                                             |     
                                                                     |     if (r7 == 0) {
    0x0000b588 beq 0xb626                                            |         goto label_9;
                                                                     |     }
    0x0000b58a add.w r4, r2, 0x14                                    |     r4 = r2 + 0x14;
    0x0000b58e add r1, sp, 0xc                                       |     r1 += var_ch;
    0x0000b590 add r4, r6                                            |     r4 += r6;
    0x0000b592 strb.w sb, [r6, 0x10]                                 |     *((r6 + 0x10)) = sb;
    0x0000b596 strb.w sl, [r6, 0x11]                                 |     *((r6 + 0x11)) = sl;
    0x0000b59a str r7, [r6, 0xc]                                     |     *((r6 + 0xc)) = r7;
    0x0000b59c str r4, [r6, 8]                                       |     *((r6 + 8)) = r4;
    0x0000b59e blx 0x19c8                                            |     mmap64 ()
    0x0000b5a2 cmp r7, 0                                             |     
                                                                     |     if (r7 <= 0) {
    0x0000b5a4 ble 0xb5ce                                            |         goto label_2;
                                                                     |     }
    0x0000b5a6 add.w r8, r4, r8, lsl 2                               |     r8 = r4 + (r8 << 2);
                                                                     |     do {
    0x0000b5aa ldr r3, [r5], 4                                       |         r3 = *(r5);
                                                                     |         r5 += 4;
    0x0000b5ae adds r4, 0xc                                          |         r4 += 0xc;
    0x0000b5b0 rev r3, r3                                            |         r3 = SWAP32 (r3);
    0x0000b5b2 mov r0, r5                                            |         r0 = r5;
    0x0000b5b4 str r3, [r4, -0xc]                                    |         *((r4 - 0xc)) = r3;
    0x0000b5b8 blx 0x1bb0                                            |         fcn_00001bb0 ();
    0x0000b5bc cmp r8, r4                                            |         
    0x0000b5be add.w r3, r0, 1                                       |         r3 = r0 + 1;
    0x0000b5c2 str r5, [r4, -0x4]                                    |         *((r4 - 0x4)) = r5;
    0x0000b5c6 add r5, r3                                            |         r5 += r3;
    0x0000b5c8 str r0, [r4, -0x8]                                    |         *((r4 - 0x8)) = r0;
    0x0000b5cc bne 0xb5aa                                            |         
                                                                     |     } while (r8 != r4);
                                                                     | label_2:
    0x0000b5ce ldr r2, [pc, 0x84]                                    |     
    0x0000b5d0 ldr r3, [pc, 0x78]                                    |     r3 = *(0xb64c);
    0x0000b5d2 add r2, pc                                            |     r2 = 0x16c2c;
    0x0000b5d4 ldr r3, [r2, r3]                                      |     r3 = *(0x16c2c);
    0x0000b5d6 ldr r2, [r3]                                          |     r2 = *(0x16c2c);
    0x0000b5d8 ldr r3, [sp, 0x20c]                                   |     r3 = var_20ch;
    0x0000b5da eors r2, r3                                           |     r2 ^= r3;
    0x0000b5dc mov.w r3, 0                                           |     r3 = 0;
                                                                     |     if (r2 != r3) {
    0x0000b5e0 bne 0xb644                                            |         goto label_10;
                                                                     |     }
    0x0000b5e2 mov r0, r6                                            |     r0 = r6;
    0x0000b5e4 add.w sp, sp, 0x214                                   |     
    0x0000b5e8 pop.w {r4, r5, r6, r7, r8, sb, sl, fp, pc}            |     
                                                                     | label_5:
    0x0000b5ec mov r0, r5                                            |     r0 = r5;
    0x0000b5ee str r5, [sp, 4]                                       |     var_4h = r5;
    0x0000b5f0 blx 0x1bb0                                            |     fcn_00001bb0 ();
    0x0000b5f4 ands r4, r6, 0x20000000                               |     r4 = r6 & 0x20000000;
    0x0000b5f8 add.w r0, r0, 1                                       |     r0++;
    0x0000b5fc add r5, r0                                            |     r5 += r0;
                                                                     |     if (r4 != r6) {
    0x0000b5fe bne 0xb520                                            |         goto label_0;
                                                                     |     }
                                                                     | label_6:
    0x0000b600 lsls r3, r6, 1                                        |     r3 = r6 << 1;
    0x0000b602 mov.w r0, 5                                           |     r0 = 5;
    0x0000b606 mov sl, r4                                            |     sl = r4;
    0x0000b608 mov.w sb, 0x80                                        |     sb = 0x80;
                                                                     |     if (r3 < r6) {
    0x0000b60c bmi 0xb560                                            |         goto label_1;
                                                                     |     }
                                                                     | label_8:
    0x0000b60e lsls r0, r0, 2                                        |     r0 <<= 2;
    0x0000b610 blx 0x1b0c                                            |     r0 = strerror (r0);
    0x0000b614 mov r6, r0                                            |     r6 = r0;
                                                                     |     if (r0 != 0) {
    0x0000b616 cbz r0, 0xb63c                                        |         
    0x0000b618 ldr r3, [sp, 4]                                       |         r3 = var_4h;
    0x0000b61a lsls r2, r4, 2                                        |         r2 = r4 << 2;
    0x0000b61c add.w r0, r6, 0x14                                    |         r0 = r6 + 0x14;
    0x0000b620 str.w fp, [r6]                                        |         __asm ("str.w fp, [r6]");
    0x0000b624 str r3, [r6, 4]                                       |         *((r6 + 4)) = r3;
                                                                     | label_9:
    0x0000b626 movs r3, 0                                            |         r3 = 0;
    0x0000b628 add r1, sp, 0xc                                       |         r1 += var_ch;
    0x0000b62a strb.w sb, [r6, 0x10]                                 |         *((r6 + 0x10)) = sb;
    0x0000b62e strb.w sl, [r6, 0x11]                                 |         *((r6 + 0x11)) = sl;
    0x0000b632 strd r3, r3, [r6, 8]                                  |         __asm ("strd r3, r3, [r6, 8]");
    0x0000b636 blx 0x19c8                                            |         mmap64 ()
    0x0000b63a b 0xb5ce                                              |         goto label_2;
                                                                     |     }
                                                                     | label_4:
    0x0000b63c movs r6, 0                                            |     r6 = 0;
    0x0000b63e b 0xb5ce                                              |     goto label_2;
                                                                     | label_7:
    0x0000b640 mov r5, r7                                            |     r5 = r7;
    0x0000b642 b 0xb55c                                              |     goto label_3;
                                                                     | label_10:
    0x0000b644 blx 0x1a1c                                            |     stat64 ();
    0x0000b648 add r1, sp, 0x90                                      |     r1 += var_90h;
    0x0000b64a movs r1, r0                                           |     r1 = r0;
    0x0000b64c lsls r4, r7, 6                                        |     r4 = r7 << 6;
    0x0000b64e movs r0, r0                                           |     
    0x0000b650 str r4, [sp, 0x3d8]                                   |     *(arg_3d8h) = r4;
    0x0000b652 movs r0, r0                                           |     
    0x0000b654 add r0, sp, 0x118                                     |     r0 += var_118h;
    0x0000b656 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/bin/kmod @ 0xb658 */
                                                             | #include <stdint.h>
                                                             |  
    ; (fcn) fcn.0000b658 ()                                  | void fcn_0000b658 (int16_t arg1, int16_t arg2, int16_t arg3, int16_t arg4) {
                                                             |     r0 = arg1;
                                                             |     r1 = arg2;
                                                             |     r2 = arg3;
                                                             |     r3 = arg4;
    0x0000b658 invalid                                       |     
    0x0000b65c mov r5, r0                                    |     r5 = r0;
    0x0000b65e ldr r4, [r0]                                  |     r4 = *(r0);
    0x0000b660 mov sb, r1                                    |     sb = r1;
    0x0000b662 mov r8, r2                                    |     r8 = r2;
    0x0000b664 mov r6, r3                                    |     r6 = r3;
                                                             |     if (r4 != 0) {
    0x0000b666 cbnz r4, 0xb670                               |         goto label_0;
                                                             |     }
    0x0000b668 b 0xb676                                      |     goto label_1;
                                                             |     do {
    0x0000b66a mov r5, r4                                    |         r5 = r4;
    0x0000b66c ldr r4, [r4]                                  |         r4 = *(r4);
                                                             |         if (r4 == 0) {
    0x0000b66e cbz r4, 0xb676                                |             goto label_1;
                                                             |         }
                                                             | label_0:
    0x0000b670 ldr r3, [r4, 4]                               |         r3 = *((r4 + 4));
    0x0000b672 cmp r3, r6                                    |         
    0x0000b674 blo 0xb66a                                    |         
                                                             |     } while (r3 <= r6);
                                                             | label_1:
    0x0000b676 add.w r0, r8, 0xd                             |     r0 = r8 + 0xd;
    0x0000b67a blx 0x1b0c                                    |     r0 = strerror (r0);
    0x0000b67e mov r7, r0                                    |     r7 = r0;
                                                             |     if (r0 != 0) {
    0x0000b680 cbz r0, 0xb69e                                |         
    0x0000b682 str.w r8, [r0, 8]                             |         __asm ("str.w r8, [r0, 8]");
    0x0000b686 mov r2, r8                                    |         r2 = r8;
    0x0000b688 str r4, [r0]                                  |         *(r0) = r4;
    0x0000b68a mov r1, sb                                    |         r1 = sb;
    0x0000b68c str r6, [r0, 4]                               |         *((r0 + 4)) = r6;
    0x0000b68e adds r0, 0xc                                  |         r0 += 0xc;
    0x0000b690 blx 0x19c8                                    |         mmap64 ()
    0x0000b694 add r8, r7                                    |         r8 += r7;
    0x0000b696 movs r3, 0                                    |         r3 = 0;
    0x0000b698 strb.w r3, [r8, 0xc]                          |         *((r8 + 0xc)) = r3;
    0x0000b69c str r7, [r5]                                  |         *(r5) = r7;
                                                             |     }
    0x0000b69e pop.w {r3, r4, r5, r6, r7, r8, sb, pc}        |     
                                                             | }
    ; assembly                                               | /* r2dec pseudo code output */
                                                             | /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/bin/kmod @ 0xc4d4 */
                                                             | #include <stdint.h>
                                                             |  
    ; (fcn) fcn.0000c4d4 ()                                  | void fcn_0000c4d4 (int16_t arg1, int16_t arg2, char * arg3, char * arg4) {
                                                             |     int16_t var_20h;
                                                             |     r0 = arg1;
                                                             |     r1 = arg2;
                                                             |     r2 = arg3;
                                                             |     r3 = arg4;
    0x0000c4d4 invalid                                       |     
    0x0000c4d8 mov r7, r0                                    |     r7 = r0;
    0x0000c4da ldr r5, [sp, 0x20]                            |     r5 = var_20h;
    0x0000c4dc mov r6, r2                                    |     r6 = r2;
    0x0000c4de mov sb, r1                                    |     sb = r1;
    0x0000c4e0 mov r8, r3                                    |     r8 = r3;
    0x0000c4e2 adds r0, r5, 6                                |     r0 = r5 + 6;
    0x0000c4e4 add r0, r2                                    |     r0 += r2;
    0x0000c4e6 blx 0x1b0c                                    |     r0 = strerror (r0);
    0x0000c4ea mov r4, r0                                    |     r4 = r0;
                                                             |     if (r0 == 0) {
    0x0000c4ec cbz r0, 0xc538                                |         goto label_0;
                                                             |     }
    0x0000c4ee adds r0, r5, 5                                |     r0 = r5 + 5;
    0x0000c4f0 mov r1, sb                                    |     r1 = sb;
    0x0000c4f2 add r0, r4                                    |     r0 += r4;
    0x0000c4f4 mov r2, r6                                    |     r2 = r6;
    0x0000c4f6 str r0, [r4]                                  |     *(r4) = r0;
    0x0000c4f8 blx 0x19c8                                    |     mmap64 ()
    0x0000c4fc mov r0, r4                                    |     r0 = r4;
    0x0000c4fe mov r1, r8                                    |     r1 = r8;
    0x0000c500 ldr r3, [r0], 4                               |     r3 = *(r0);
                                                             |     r0 += 4;
    0x0000c504 mov.w r8, 0                                   |     r8 = 0;
    0x0000c508 mov r2, r5                                    |     r2 = r5;
    0x0000c50a add r5, r4                                    |     r5 += r4;
    0x0000c50c strb.w r8, [r3, r6]                           |     *((r3 + r6)) = r8;
    0x0000c510 blx 0x19c8                                    |     mmap64 ()
    0x0000c514 strb.w r8, [r5, 4]                            |     *((r5 + 4)) = r8;
    0x0000c518 mov r1, r4                                    |     r1 = r4;
    0x0000c51a ldr r0, [r7]                                  |     r0 = *(r7);
    0x0000c51c bl 0xa350                                     |     r0 = fcn_0000a350 (r0, r1);
    0x0000c520 mov r5, r0                                    |     r5 = r0;
                                                             |     if (r0 == 0) {
    0x0000c522 cbz r0, 0xc52c                                |         goto label_1;
                                                             |     }
    0x0000c524 str r0, [r7]                                  |     *(r7) = r0;
                                                             |     do {
    0x0000c526 mov r0, r5                                    |         r0 = r5;
    0x0000c528 pop.w {r3, r4, r5, r6, r7, r8, sb, pc}        |         
                                                             | label_1:
    0x0000c52c mov r0, r4                                    |         r0 = r4;
    0x0000c52e blx 0x19a0                                    |         fcn_000019a0 ();
    0x0000c532 mov r0, r5                                    |         r0 = r5;
    0x0000c534 pop.w {r3, r4, r5, r6, r7, r8, sb, pc}        |         
                                                             | label_0:
    0x0000c538 mov r5, r0                                    |         r5 = r0;
    0x0000c53a b 0xc526                                      |         
                                                             |     } 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/bin/kmod @ 0xc7f0 */
                                                                 | #include <stdint.h>
                                                                 |  
    ; (fcn) fcn.0000c7f0 ()                                      | void fcn_0000c7f0 (int16_t arg_20h, int16_t arg_24h, int16_t arg1, int16_t arg2, int16_t arg3, int16_t arg4) {
                                                                 |     r0 = arg1;
                                                                 |     r1 = arg2;
                                                                 |     r2 = arg3;
                                                                 |     r3 = arg4;
    0x0000c7f0 push.w {r3, r4, r5, r6, r7, r8, sb, lr}           |     
    0x0000c7f4 mov r7, r0                                        |     r7 = r0;
    0x0000c7f6 mov r5, r2                                        |     r5 = r2;
    0x0000c7f8 mov r8, r3                                        |     r8 = r3;
    0x0000c7fa mov sb, r1                                        |     sb = r1;
    0x0000c7fc bl 0x9c64                                         |     r0 = fcn_00009c64 (r0, r1);
    0x0000c800 cmp r0, 0                                         |     
                                                                 |     if (r0 != 0) {
    0x0000c802 bne 0xc874                                        |         goto label_0;
                                                                 |     }
    0x0000c804 cmp.w r8, 0                                       |     
                                                                 |     if (r8 == 0) {
    0x0000c808 beq 0xc884                                        |         goto label_1;
                                                                 |     }
    0x0000c80a ldr r3, [sp, 0x20]                                |     r3 = *(arg_20h);
    0x0000c80c mov r6, r0                                        |     r6 = r0;
    0x0000c80e add.w r8, r3, 2                                   |     r8 = r3 + 2;
    0x0000c810 lsrs r2, r0, 0x20                                 |     r2 = r0 >> 0x20;
    0x0000c812 add r8, r5                                        |     r8 += r5;
    0x0000c814 lsl.w r0, r8, 1                                   |     r0 = r8 << 1;
    0x0000c816 lsls r0, r1, 1                                    |     r0 = r1 << 1;
    0x0000c818 adds r0, 0x3c                                     |     r0 += 0x3c;
    0x0000c81a blx 0x1b0c                                        |     strerror (r0);
    0x0000c81c ldrd r4, r6, [r8, -0x10]!                         |     __asm ("ldrd r4, r6, [r8, -0x10]!");
    0x0000c81e mov r4, r0                                        |     r4 = r0;
    0x0000c820 cmp r0, 0                                         |     
                                                                 |     if (r0 == 0) {
    0x0000c822 beq 0xc8ba                                        |         goto label_2;
                                                                 |     }
    0x0000c824 movs r2, 0x3c                                     |     r2 = 0x3c;
    0x0000c826 mov r1, r6                                        |     r1 = r6;
    0x0000c828 blx 0x1c2c                                        |     strtoull (r0, r1, r2);
    0x0000c82c mov r0, r7                                        |     r0 = r7;
    0x0000c82e bl 0x9afc                                         |     fcn_00009afc (r0);
    0x0000c832 mov r3, r4                                        |     r3 = r4;
    0x0000c834 mov r2, r8                                        |     r2 = r8;
    0x0000c836 str r0, [r3], 0x3c                                |     *(r3) = r0;
                                                                 |     r3 += 0x3c;
    0x0000c838 lsrs r4, r7, 0xc                                  |     r4 = r7 >> 0xc;
    0x0000c83a mov r1, sb                                        |     r1 = sb;
    0x0000c83c mov r0, r3                                        |     r0 = r3;
    0x0000c83e str r3, [r4, 8]                                   |     *((r4 + 8)) = r3;
    0x0000c840 blx 0x19c8                                        |     mmap64 ()
    0x0000c844 strb r6, [r0, r5]                                 |     *((r0 + r5)) = r6;
    0x0000c846 adds r5, 1                                        |     r5++;
    0x0000c848 ldr r0, [r4, 8]                                   |     r0 = *((r4 + 8));
    0x0000c84a mov r1, sb                                        |     r1 = sb;
    0x0000c84c mov r2, r8                                        |     r2 = r8;
    0x0000c84e add r5, r0                                        |     r5 += r0;
    0x0000c850 add r0, r8                                        |     r0 += r8;
    0x0000c852 str r5, [r4, 0x20]                                |     *((r4 + 0x20)) = r5;
    0x0000c854 str r0, [r4, 4]                                   |     *((r4 + 4)) = r0;
    0x0000c856 blx 0x19c8                                        |     mmap64 ()
    0x0000c85a ldr r5, [r4, 4]                                   |     r5 = *((r4 + 4));
                                                                 |     do {
    0x0000c85c movs r3, 1                                        |         r3 = 1;
    0x0000c85e mov r0, r7                                        |         r0 = r7;
    0x0000c860 str r3, [r4, 0x2c]                                |         *((r4 + 0x2c)) = r3;
    0x0000c862 mov r2, r5                                        |         r2 = r5;
    0x0000c864 mov r1, r4                                        |         r1 = r4;
    0x0000c866 bl 0x9c6c                                         |         fcn_00009c6c (r0, r1, r2);
    0x0000c86a ldr r3, [sp, 0x24]                                |         r3 = *(arg_24h);
    0x0000c86c movs r0, 0                                        |         r0 = 0;
    0x0000c86e str r4, [r3]                                      |         *(r3) = r4;
    0x0000c870 pop.w {r3, r4, r5, r6, r7, r8, sb, pc}            |         
                                                                 | label_0:
    0x0000c874 bl 0xc7e4                                         |         fcn_0000c7e4 (r0);
    0x0000c878 ldr r2, [sp, 0x24]                                |         r2 = *(arg_24h);
    0x0000c87a mov r3, r0                                        |         r3 = r0;
    0x0000c87c movs r0, 0                                        |         r0 = 0;
    0x0000c87e str r3, [r2]                                      |         *(r2) = r3;
    0x0000c880 pop.w {r3, r4, r5, r6, r7, r8, sb, pc}            |         
                                                                 | label_1:
    0x0000c884 add.w r0, r5, 0x3d                                |         r0 = r5 + 0x3d;
    0x0000c888 adds r6, r5, 1                                    |         r6 = r5 + 1;
    0x0000c88a blx 0x1b0c                                        |         r0 = strerror (r0);
    0x0000c88e mov r4, r0                                        |         r4 = r0;
                                                                 |         if (r0 == 0) {
    0x0000c890 cbz r0, 0xc8ba                                    |             goto label_2;
                                                                 |         }
    0x0000c892 movs r2, 0x3c                                     |         r2 = 0x3c;
    0x0000c894 mov r1, r8                                        |         r1 = r8;
    0x0000c896 mov r5, r4                                        |         r5 = r4;
    0x0000c898 blx 0x1c2c                                        |         strtoull (r0, r1, r2);
    0x0000c89a strd r4, r6, [r8, 0xe0]                           |         __asm ("strd r4, r6, [r8, 0xe0]");
    0x0000c89e bl 0x9afc                                         |         fcn_00009afc (r0);
    0x0000c8a2 mov r2, r6                                        |         r2 = r6;
    0x0000c8a4 str r0, [r5], 0x3c                                |         *(r5) = r0;
                                                                 |         r5 += 0x3c;
    0x0000c8a8 mov r1, sb                                        |         r1 = sb;
    0x0000c8aa mov r0, r5                                        |         r0 = r5;
    0x0000c8ac str r5, [r4, 8]                                   |         *((r4 + 8)) = r5;
    0x0000c8ae blx 0x19c8                                        |         mmap64 ()
    0x0000c8b2 str r5, [r4, 4]                                   |         *((r4 + 4)) = r5;
    0x0000c8b4 str.w r8, [r4, 0x20]                              |         __asm ("str.w r8, [r4, 0x20]");
    0x0000c8b8 b 0xc85c                                          |         
                                                                 |     } while (1);
                                                                 | label_2:
    0x0000c8ba mvn r0, 0xb                                       |     r0 = ~0xb;
    0x0000c8be pop.w {r3, r4, r5, r6, r7, r8, sb, pc}            |     
                                                                 | }
    ; assembly                                                   | /* r2dec pseudo code output */
                                                                 | /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/bin/kmod @ 0xca04 */
                                                                 | #include <stdint.h>
                                                                 |  
    ; (fcn) fcn.0000ca04 ()                                      | void fcn_0000ca04 (int16_t arg1, int16_t arg2, int16_t arg3, int16_t arg4) {
                                                                 |     int16_t var_0h;
                                                                 |     void * ptr;
                                                                 |     int16_t var_10h;
                                                                 |     int16_t var_230h;
                                                                 |     int16_t var_1000h;
                                                                 |     r0 = arg1;
                                                                 |     r1 = arg2;
                                                                 |     r2 = arg3;
                                                                 |     r3 = arg4;
    0x0000ca04 push.w {r4, r5, r6, r7, r8, sb, sl, lr}           |     
    0x0000ca08 mov r5, r1                                        |     r5 = r1;
    0x0000ca0a ldr r1, [pc, 0xa4]                                |     
    0x0000ca0c mov r7, r2                                        |     r7 = r2;
    0x0000ca0e mov r8, r0                                        |     r8 = r0;
    0x0000ca10 mov r0, r2                                        |     r0 = r2;
    0x0000ca12 ldr r2, [pc, 0xa0]                                |     r2 = *(0xcab6);
    0x0000ca14 sub.w sp, sp, 0x1000                              |     
    0x0000ca18 add r1, pc                                        |     r1 = 0x194ce;
    0x0000ca1a sub sp, 0x10                                      |     
    0x0000ca1c add.w r4, sp, 0x1000                              |     r4 += var_1000h;
    0x0000ca20 mov sb, r3                                        |     sb = r3;
    0x0000ca22 ldr r2, [r1, r2]                                  |     
    0x0000ca24 adds r4, 0xc                                      |     r4 += 0xc;
    0x0000ca26 ldr r2, [r2]                                      |     r2 = *(0x194ce);
    0x0000ca28 str r2, [r4]                                      |     *(r4) = r2;
    0x0000ca2a mov.w r2, 0                                       |     r2 = 0;
    0x0000ca2e blx 0x1bb0                                        |     r0 = fcn_00001bb0 ();
    0x0000ca32 mov r4, r0                                        |     r4 = r0;
    0x0000ca34 mov r0, r5                                        |     r0 = r5;
    0x0000ca36 blx 0x1bb0                                        |     r0 = fcn_00001bb0 ();
    0x0000ca3a adds r2, r4, r0                                   |     r2 = r4 + r0;
    0x0000ca3c adds r2, 2                                        |     r2 += 2;
    0x0000ca3e cmp.w r2, 0x1000                                  |     
                                                                 |     if (r2 > 0x1000) {
    0x0000ca42 bhi 0xcaa6                                        |         goto label_0;
                                                                 |     }
    0x0000ca44 add.w sl, sp, 0xc                                 |     sl += ptr;
    0x0000ca48 mov r6, r0                                        |     r6 = r0;
    0x0000ca4a mov r1, r7                                        |     r1 = r7;
    0x0000ca4c mov.w r3, 0x1000                                  |     r3 = 0x1000;
    0x0000ca50 mov r2, r4                                        |     r2 = r4;
    0x0000ca52 mov r0, sl                                        |     r0 = sl;
    0x0000ca54 blx 0x1a4c                                        |     fwrite (r0, r1, r2, r3);
    0x0000ca58 adds r0, r4, 1                                    |     r0 = r4 + 1;
    0x0000ca5a adds r2, r6, 1                                    |     r2 = r6 + 1;
    0x0000ca5c mov r1, r5                                        |     r1 = r5;
    0x0000ca5e add r7, sp, 0x10                                  |     r7 += var_10h;
    0x0000ca60 add r0, sl                                        |     r0 += sl;
    0x0000ca62 add r7, r4                                        |     r7 += r4;
    0x0000ca64 blx 0x19c8                                        |     mmap64 ()
    0x0000ca66 vext.16 d4, d0, d18, 3                            |     __asm ("vext.16 d4, d0, d18, 3");
    0x0000ca6a movs r4, 0x5c                                     |     r4 = 0x5c;
    0x0000ca6c strd r6, sb, [sp]                                 |     __asm ("strd r6, sb, [sp]");
    0x0000ca70 mov r3, r5                                        |     r3 = r5;
    0x0000ca72 mov r1, sl                                        |     r1 = sl;
    0x0000ca74 mov r0, r8                                        |     r0 = r8;
    0x0000ca76 strb r4, [r7, -0x4]                               |     *((r7 - 0x4)) = r4;
    0x0000ca7a bl 0xc7f0                                         |     r0 = fcn_0000c7f0 (r0, r1, r2, r3, r4, r5);
    0x0000ca7e and.w r0, r0, r0, asr 31                          |     r0 &= (r0 >> 31);
                                                                 |     do {
    0x0000ca82 ldr r2, [pc, 0x34]                                |         
    0x0000ca84 add.w r1, sp, 0x1000                              |         r1 += var_1000h;
    0x0000ca88 ldr r3, [pc, 0x28]                                |         r3 = *(0xcab4);
    0x0000ca8a adds r1, 0xc                                      |         r1 += 0xc;
    0x0000ca8c add r2, pc                                        |         r2 = 0x1954a;
    0x0000ca8e ldr r3, [r2, r3]                                  |         r3 = *(0x1954a);
    0x0000ca90 ldr r2, [r3]                                      |         r2 = *(0x1954a);
    0x0000ca92 ldr r3, [r1]                                      |         r3 = *(r1);
    0x0000ca94 eors r2, r3                                       |         r2 ^= r3;
    0x0000ca96 mov.w r3, 0                                       |         r3 = 0;
                                                                 |         if (r2 != r3) {
    0x0000ca9a bne 0xcaac                                        |             goto label_1;
                                                                 |         }
    0x0000ca9c add.w sp, sp, 0x1000                              |         
    0x0000caa0 add sp, 0x10                                      |         
    0x0000caa2 pop.w {r4, r5, r6, r7, r8, sb, sl, pc}            |         
                                                                 | label_0:
    0x0000caa6 mvn r0, 0x23                                      |         r0 = ~0x23;
    0x0000caaa b 0xca82                                          |         
                                                                 |     } while (1);
                                                                 | label_1:
    0x0000caac blx 0x1a1c                                        |     stat64 ();
    0x0000cab0 str r4, [sp]                                      |     *(sp) = r4;
    0x0000cab2 movs r1, r0                                       |     r1 = r0;
    0x0000cab4 lsls r4, r7, 6                                    |     r4 = r7 << 6;
    0x0000cab6 movs r0, r0                                       |     
    0x0000cab8 str r3, [sp, 0x230]                               |     var_230h = r3;
    0x0000caba 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/bin/kmod @ 0xcb70 */
                                                                     | #include <stdint.h>
                                                                     |  
                                                                     | #define BIT_MASK(t,v) ((t)(-((v)!= 0)))&(((t)-1)>>((sizeof(t)*CHAR_BIT)-(v)))
                                                                     |  
    ; (fcn) fcn.0000cb70 ()                                          | void fcn_0000cb70 (int16_t arg1, int16_t arg2) {
                                                                     |     int16_t var_0h;
                                                                     |     int16_t var_4h;
                                                                     |     int16_t var_8h;
                                                                     |     int16_t var_ch;
                                                                     |     int16_t var_ch_2;
                                                                     |     int32_t var_8h_2;
                                                                     |     FILE * stream;
                                                                     |     int16_t var_20h;
                                                                     |     int16_t var_190h;
                                                                     |     int16_t var_270h;
                                                                     |     int16_t var_1000h;
                                                                     |     int32_t var_0h_2;
                                                                     |     int16_t var_1020h;
                                                                     |     r0 = arg1;
                                                                     |     r1 = arg2;
    0x0000cb70 blmi 0x1cdf540                                        |     __asm ("blmi 0x1cdf540");
    0x0000cb74 push.w {r4, r5, r6, r7, r8, sb, sl, fp, lr}           |     
    0x0000cb78 sub.w sp, sp, 0x1020                                  |     
    0x0000cb7c add r2, pc                                            |     r2 += pc;
    0x0000cb7e sub sp, 4                                             |     
    0x0000cb80 mov r6, r0                                            |     r6 = r0;
    0x0000cb82 add.w r0, sp, 0x1000                                  |     r0 += var_1000h;
    0x0000cb86 ldr r3, [r2, r3]                                      |     r3 = *((r2 + r3));
    0x0000cb88 adds r0, 0x1c                                         |     r0 += 0x1c;
    0x0000cb8a ldr r3, [r3]                                          |     r3 = *(r3);
    0x0000cb8c str r3, [r0]                                          |     *(r0) = r3;
    0x0000cb8e mov.w r3, 0                                           |     r3 = 0;
    0x0000cb92 ldrb.w r3, [r6, 0x30]                                 |     r3 = *((r6 + 0x30));
    0x0000cb96 lsls r2, r3, 0x1f                                     |     r2 = r3 << 0x1f;
    0x0000cb98 it mi                                                 |     
                                                                     |     if (r2 >= r3) {
    0x0000cb9a ldrmi r4, [r6, 0x28]                                  |         r4 = *((r6 + 0x28));
                                                                     |     }
                                                                     |     if (r2 < r3) {
    0x0000cb9c bmi.w 0xccaa                                          |         goto label_2;
                                                                     |     }
    0x0000cba0 ldr r5, [r6, 0x10]                                    |     r5 = *((r6 + 0x10));
    0x0000cba2 ldr.w sb, [r6]                                        |     sb = *(r6);
    0x0000cba6 cmp r5, 0                                             |     
                                                                     |     if (r5 != 0) {
    0x0000cba8 bne.w 0xcd28                                          |         goto label_6;
                                                                     |     }
    0x0000cbac mov r4, r1                                            |     r4 = r1;
    0x0000cbae orr r3, r3, 1                                         |     r3 |= 1;
    0x0000cbb2 movs r1, 0x3a                                         |     r1 = 0x3a;
    0x0000cbb4 mov r0, r4                                            |     r0 = r4;
    0x0000cbb6 strb.w r3, [r6, 0x30]                                 |     *((r6 + 0x30)) = r3;
    0x0000cbba blx 0x1bbc                                            |     r0 = fcn_00001bbc ();
    0x0000cbbe mov r8, r0                                            |     r8 = r0;
    0x0000cbc0 cmp r0, 0                                             |     
                                                                     |     if (r0 == 0) {
    0x0000cbc2 beq.w 0xcce6                                          |         goto label_4;
                                                                     |     }
    0x0000cbc6 strb r5, [r0]                                         |     *(r0) = r5;
    0x0000cbc8 ldr r0, [r6]                                          |     r0 = *(r6);
    0x0000cbca bl 0x9af8                                             |     r0 = fcn_00009af8 (r0);
    0x0000cbce mov r7, r0                                            |     r7 = r0;
    0x0000cbd0 blx 0x1bb0                                            |     r0 = fcn_00001bb0 ();
    0x0000cbd4 adds r3, r0, 2                                        |     r3 = r0 + 2;
    0x0000cbd6 mov sl, r0                                            |     sl = r0;
    0x0000cbd8 cmp.w r3, 0x1000                                      |     
    0x0000cbdc str r3, [sp]                                          |     *(sp) = r3;
                                                                     |     if (r3 >= 0x1000) {
    0x0000cbde bhs.w 0xcce6                                          |         goto label_4;
                                                                     |     }
    0x0000cbe2 mov r1, r7                                            |     r1 = r7;
    0x0000cbe4 add r7, sp, 0x20                                      |     r7 += var_20h;
    0x0000cbe6 subs r3, r7, 4                                        |     r3 -= stream;
    0x0000cbe8 mov r2, sl                                            |     r2 = sl;
    0x0000cbea mov r0, r3                                            |     r0 = r3;
    0x0000cbec str r3, [sp, 4]                                       |     var_4h = r3;
    0x0000cbee mov.w r3, 0x1000                                      |     r3 = 0x1000;
    0x0000cbf2 add.w fp, sl, 1                                       |     
    0x0000cbf6 blx 0x1a4c                                            |     fwrite (r0, r1, r2, r3);
    0x0000cbfa ldr r3, [r6, 0xc]                                     |     r3 = *((r6 + 0xc));
    0x0000cbfc movs r2, 0x2f                                         |     r2 = 0x2f;
    0x0000cbfe add sl, r7                                            |     sl += r7;
    0x0000cc00 strb r2, [sl, -0x4]                                   |     *((sl - 0x4)) = r2;
    0x0000cc04 add.w r2, r7, fp                                      |     r2 = r7 + fp;
    0x0000cc08 strb r5, [r2, -0x4]                                   |     *((r2 - 0x4)) = r5;
    0x0000cc0c cmp r3, 0                                             |     
                                                                     |     if (r3 == 0) {
    0x0000cc0e beq 0xccd0                                            |         goto label_7;
                                                                     |     }
                                                                     | label_3:
    0x0000cc10 ldr r1, [pc, 0x130]                                   |     
    0x0000cc12 sub.w sl, r7, 0xc                                     |     sl -= var_ch_2;
    0x0000cc16 add.w r0, r8, 1                                       |     r0 = r8 + 1;
    0x0000cc1a mov r2, sl                                            |     r2 = sl;
    0x0000cc1c add r1, pc                                            |     r1 = 0x19964;
    0x0000cc1e blx 0x1aac                                            |     r0 = opendir ();
    0x0000cc22 cmp r0, 0                                             |     
                                                                     |     if (r0 == 0) {
    0x0000cc24 beq 0xcd1e                                            |         goto label_8;
                                                                     |     }
    0x0000cc26 ldr r3, [sp, 4]                                       |     r3 = var_4h;
    0x0000cc28 mov.w r8, 0                                           |     r8 = 0;
    0x0000cc2c str r6, [sp, 0xc]                                     |     var_ch = r6;
    0x0000cc2e mov r4, r8                                            |     r4 = r8;
    0x0000cc30 mov r6, r0                                            |     r6 = r0;
    0x0000cc32 add r3, fp                                            |     r3 += fp;
    0x0000cc34 ldr.w fp, [pc, 0x110]                                 |     
    0x0000cc38 str r3, [sp, 8]                                       |     var_8h = r3;
    0x0000cc3a add fp, pc                                            |     fp = 0x19986;
    0x0000cc3c b 0xcc7a                                              |     goto label_9;
                                                                     | label_0:
    0x0000cc3e mov r1, r6                                            |     r1 = r6;
    0x0000cc40 adds r2, r0, 1                                        |     r2 = r0 + 1;
    0x0000cc42 ldr r0, [sp, 8]                                       |     r0 = var_8h;
    0x0000cc44 blx 0x19c8                                            |     mmap64 ()
    0x0000cc48 ldr r6, [sp, 4]                                       |     r6 = var_4h;
                                                                     |     do {
    0x0000cc4a mov r1, r6                                            |         r1 = r6;
    0x0000cc4c sub.w r2, r7, 8                                       |         r2 -= var_8h_2;
    0x0000cc50 mov r0, sb                                            |         r0 = sb;
    0x0000cc52 bl 0xc8c4                                             |         r0 = fcn_0000c8c4 (r0, r1, r2);
    0x0000cc56 subs r4, r0, 0                                        |         r4 = r0 - 0;
                                                                     |         if (r4 < r0) {
    0x0000cc58 blt 0xccea                                            |             goto label_10;
                                                                     |         }
    0x0000cc5a ldr r1, [r7, -0x8]                                    |         r1 = *((r7 - 0x8));
    0x0000cc5e mov r0, r5                                            |         r0 = r5;
    0x0000cc60 bl 0xa3c8                                             |         fcn_0000a3c8 (r0, r1);
    0x0000cc64 mov r2, sl                                            |         r2 = sl;
    0x0000cc66 mov r5, r0                                            |         r5 = r0;
    0x0000cc68 mov r1, fp                                            |         r1 = fp;
    0x0000cc6a movs r0, 0                                            |         r0 = 0;
    0x0000cc6c blx 0x1aac                                            |         opendir ();
    0x0000cc70 add.w r8, r8, 1                                       |         r8++;
    0x0000cc74 mov r6, r0                                            |         r6 = r0;
    0x0000cc76 cmp r0, 0                                             |         
                                                                     |         if (r0 == 0) {
    0x0000cc78 beq 0xccf4                                            |             goto label_11;
                                                                     |         }
                                                                     | label_9:
    0x0000cc7a movs r3, 0                                            |         r3 = 0;
    0x0000cc7c str r3, [r7, -0x8]                                    |         *((r7 - 0x8)) = r3;
    0x0000cc80 ldrb r3, [r6]                                         |         r3 = *(r6);
    0x0000cc82 cmp r3, 0x2f                                          |         
    0x0000cc84 beq 0xcc4a                                            |         
                                                                     |     } while (r3 == 0x2f);
    0x0000cc86 mov r0, r6                                            |     r0 = r6;
    0x0000cc88 blx 0x1bb0                                            |     fcn_00001bb0 ();
    0x0000cc8c ldr r3, [sp]                                          |     r3 = *(sp);
    0x0000cc8e add r3, r0                                            |     r3 += r0;
    0x0000cc90 cmp.w r3, 0x1000                                      |     
                                                                     |     if (r3 <= 0x1000) {
    0x0000cc94 blo 0xcc3e                                            |         goto label_0;
                                                                     |     }
    0x0000cc96 ldr r6, [sp, 0xc]                                     |     r6 = var_ch;
                                                                     | label_1:
    0x0000cc98 mov r0, r5                                            |     r0 = r5;
    0x0000cc9a bl 0xcb50                                             |     fcn_0000cb50 (r0);
    0x0000cc9e ldrb.w r3, [r6, 0x30]                                 |     r3 = *((r6 + 0x30));
    0x0000cca2 bfc r3, 0, 1                                          |     value_0 = BIT_MASK (1, );
                                                                     |     value_0 = ~value_0;
                                                                     |     r3 &= value_0;
    0x0000cca6 strb.w r3, [r6, 0x30]                                 |     *((r6 + 0x30)) = r3;
                                                                     |     do {
                                                                     | label_2:
    0x0000ccaa ldr r2, [pc, 0xa0]                                    |         
    0x0000ccac add.w r1, sp, 0x1000                                  |         r1 += var_1000h;
    0x0000ccb0 ldr r3, [pc, 0x8c]                                    |         r3 = *(0xcd40);
    0x0000ccb2 adds r1, 0x1c                                         |         r1 += 0x1c;
    0x0000ccb4 add r2, pc                                            |         r2 = 0x19a06;
    0x0000ccb6 ldr r3, [r2, r3]                                      |         r3 = *(0x19a06);
    0x0000ccb8 ldr r2, [r3]                                          |         r2 = *(0x19a06);
    0x0000ccba ldr r3, [r1]                                          |         r3 = *(r1);
    0x0000ccbc eors r2, r3                                           |         r2 ^= r3;
    0x0000ccbe mov.w r3, 0                                           |         r3 = 0;
                                                                     |         if (r2 != r3) {
    0x0000ccc2 bne 0xcd24                                            |             goto label_12;
                                                                     |         }
    0x0000ccc4 mov r0, r4                                            |         r0 = r4;
    0x0000ccc6 add.w sp, sp, 0x1020                                  |         
    0x0000ccca add sp, 4                                             |         
    0x0000cccc pop.w {r4, r5, r6, r7, r8, sb, sl, fp, pc}            |         
                                                                     | label_7:
    0x0000ccd0 ldrb r3, [r4]                                         |         r3 = *(r4);
    0x0000ccd2 cmp r3, 0x2f                                          |         
                                                                     |         if (r3 == 0x2f) {
    0x0000ccd4 beq 0xcd0e                                            |             goto label_13;
                                                                     |         }
    0x0000ccd6 mov r0, r4                                            |         r0 = r4;
    0x0000ccd8 blx 0x1bb0                                            |         fcn_00001bb0 ();
    0x0000ccdc ldr r3, [sp]                                          |         r3 = *(sp);
    0x0000ccde add r3, r0                                            |         r3 += r0;
    0x0000cce0 cmp.w r3, 0x1000                                      |         
    0x0000cce2 ldrsh r0, [r0, r6]                                    |         r0 = *((r0 + r6));
                                                                     |         if (r3 <= 0x1000) {
    0x0000cce4 blo 0xcd00                                            |             goto label_14;
                                                                     |         }
                                                                     | label_4:
    0x0000cce6 movs r4, 0                                            |         r4 = 0;
    0x0000cce8 b 0xccaa                                              |         
                                                                     |     } while (1);
                                                                     | label_10:
    0x0000ccea rsbs r0, r4, 0                                        |     r0 = r4 - ;
    0x0000ccec ldr r6, [sp, 0xc]                                     |     r6 = var_ch;
    0x0000ccee blx 0x1b18                                            |     system (r0);
    0x0000ccf2 b 0xcc98                                              |     goto label_1;
                                                                     | label_11:
    0x0000ccf4 ldr r6, [sp, 0xc]                                     |     r6 = var_ch;
                                                                     | label_5:
    0x0000ccf6 mov r4, r8                                            |     r4 = r8;
    0x0000ccf8 str r5, [r6, 0x10]                                    |     *((r6 + 0x10)) = r5;
    0x0000ccfa str.w r8, [r6, 0x28]                                  |     __asm ("str.w r8, [r6, 0x28]");
    0x0000ccfe b 0xccaa                                              |     goto label_2;
                                                                     | label_14:
    0x0000cd00 mov r1, r4                                            |     r1 = r4;
    0x0000cd02 ldr r4, [sp, 4]                                       |     r4 = var_4h;
    0x0000cd04 adds r2, r0, 1                                        |     r2 = r0 + 1;
    0x0000cd06 add.w r0, r4, fp                                      |     r0 = r4 + fp;
    0x0000cd0a blx 0x19c8                                            |     mmap64 ()
                                                                     | label_13:
    0x0000cd0e mov r0, r4                                            |     r0 = r4;
    0x0000cd10 blx 0x1a10                                            |     stack_chk_fail ();
    0x0000cd14 str r0, [r6, 0xc]                                     |     *((r6 + 0xc)) = r0;
    0x0000cd16 cmp r0, 0                                             |     
                                                                     |     if (r0 != 0) {
    0x0000cd18 bne.w 0xcc10                                          |         goto label_3;
                                                                     |     }
    0x0000cd1c b 0xcce6                                              |     goto label_4;
                                                                     | label_8:
    0x0000cd1e mov r5, r0                                            |     r5 = r0;
    0x0000cd20 mov r8, r0                                            |     r8 = r0;
    0x0000cd22 b 0xccf6                                              |     goto label_5;
                                                                     | label_12:
    0x0000cd24 blx 0x1a1c                                            |     stat64 ();
                                                                     | label_6:
    0x0000cd28 ldr r3, [pc, 0x24]                                    |     
    0x0000cd2a movs r2, 0x95                                         |     r2 = 0x95;
    0x0000cd2c ldr r1, [pc, 0x24]                                    |     
    0x0000cd2e ldr r0, [pc, 0x28]                                    |     
    0x0000cd30 add r3, pc                                            |     r3 = 0x19a84;
    0x0000cd32 add r1, pc                                            |     r1 = 0x19a8a;
    0x0000cd34 add r0, pc                                            |     r0 = 0x19a92;
    0x0000cd36 blx 0x1de0                                            |     fcn_00001de0 ();
    0x0000cd3a nop                                                   |     
    0x0000cd3c str r2, [sp, 0x270]                                   |     var_270h = r2;
    0x0000cd3e movs r1, r0                                           |     r1 = r0;
    0x0000cd40 lsls r4, r7, 6                                        |     r4 = r7 << 6;
    0x0000cd42 movs r0, r0                                           |     
    0x0000cd44 ldr r0, [r6, 0x48]                                    |     r0 = *((r6 + 0x48));
    0x0000cd46 movs r0, r0                                           |     
    0x0000cd48 ldr r2, [r2, 0x48]                                    |     r2 = *((r2 + 0x48));
    0x0000cd4a movs r0, r0                                           |     
    0x0000cd4c str r1, [sp, 0x190]                                   |     var_190h = r1;
    0x0000cd4e movs r1, r0                                           |     r1 = r0;
    0x0000cd50 ldrb r0, [r1, 0x1b]                                   |     r0 = *((r1 + 0x1b));
    0x0000cd52 movs r0, r0                                           |     
    0x0000cd54 ldrb r2, [r4, 0x14]                                   |     r2 = *((r4 + 0x14));
    0x0000cd56 movs r0, r0                                           |     
    0x0000cd58 ldrb r0, [r0, 0x15]                                   |     r0 = *((r0 + 0x15));
    0x0000cd5a 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/bin/kmod @ 0xd1cc */
                                                                     | #include <stdint.h>
                                                                     |  
    ; (fcn) fcn.0000d1cc ()                                          | void fcn_0000d1cc (int16_t arg_0h, uint32_t arg1) {
                                                                     |     r0 = arg1;
    0x0000d1cc svcmi 0xf8e92d                                        |     __asm ("svcmi 0xf8e92d");
    0x0000d1d0 mov r5, r0                                            |     r5 = r0;
    0x0000d1d2 cmp r0, 0                                             |     
                                                                     |     if (arg_0h == ) {
    0x0000d1d4 beq 0xd276                                            |         goto label_2;
                                                                     |     }
    0x0000d1d6 ldrb.w r6, [r0, 0x30]                                 |     r6 = *(arg_0hx30);
    0x0000d1da ubfx r6, r6, 1, 1                                     |     r6 = (r6 >> 1) & ((1 << 1) - 1);
                                                                     |     if (r6 != 0) {
    0x0000d1de cbz r6, 0xd1ea                                        |         
    0x0000d1e0 ldr.w sb, [r0, 0x14]                                  |         sb = *(arg_0hx14);
                                                                     | label_1:
    0x0000d1e4 mov r0, sb                                            |         r0 = sb;
    0x0000d1e6 pop.w {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc}        |         
                                                                     |     }
    0x0000d1ea ldr r0, [r0]                                          |     r0 = *(r0);
    0x0000d1ec mov sb, r6                                            |     sb = r6;
    0x0000d1ee bl 0xa34c                                             |     fcn_0000a34c (r0);
    0x0000d1f2 ldr r4, [r0, 0xc]                                     |     r4 = *((r0 + 0xc));
    0x0000d1f4 mov r8, r0                                            |     r8 = r0;
                                                                     |     if (r4 == 0) {
                                                                     |         do {
    0x0000d1f6 cbz r4, 0xd25c                                        |             goto label_3;
                                                                     |         }
    0x0000d1f8 mov r0, r4                                            |         r0 = r4;
    0x0000d1fa bl 0xa7d4                                             |         fcn_0000a7d4 (r0);
    0x0000d1fe ldr r1, [r5, 8]                                       |         r1 = *((r5 + 8));
    0x0000d200 mov r7, r0                                            |         r7 = r0;
    0x0000d202 blx 0x1924                                            |         fcn_00001924 ();
    0x0000d206 ldr r1, [r5, 0x20]                                    |         r1 = *((r5 + 0x20));
                                                                     |         if (r0 != 0) {
    0x0000d208 cbz r0, 0xd214                                        |             
                                                                     |             if (r1 == 0) {
    0x0000d20a cbz r1, 0xd252                                        |                 goto label_4;
                                                                     |             }
    0x0000d20c mov r0, r7                                            |             r0 = r7;
    0x0000d20e blx 0x1924                                            |             r0 = fcn_00001924 ();
                                                                     |             if (r0 != 0) {
    0x0000d212 cbnz r0, 0xd252                                       |                 goto label_4;
                                                                     |             }
                                                                     |         }
    0x0000d214 mov r0, r4                                            |         r0 = r4;
    0x0000d216 bl 0xa4f4                                             |         r0 = fcn_0000a4f4 (r0);
    0x0000d21a mov r7, r0                                            |         r7 = r0;
    0x0000d21c blx 0x1bb0                                            |         r0 = fcn_00001bb0 ();
    0x0000d220 mov sl, r0                                            |         sl = r0;
                                                                     |         if (r0 != 0) {
    0x0000d222 cbz r0, 0xd252                                        |             
    0x0000d224 adds r1, r6, 2                                        |             r1 = r6 + 2;
    0x0000d226 add r1, r0                                            |             r1 += r0;
    0x0000d228 mov r0, sb                                            |             r0 = sb;
    0x0000d22a blx 0x1a34                                            |             r0 = regexec ();
    0x0000d22e mov fp, r0                                            |             
                                                                     |             if (r0 == 0) {
    0x0000d230 cbz r0, 0xd27a                                        |                 goto label_5;
                                                                     |             }
                                                                     |             if (r6 == 0) {
    0x0000d232 cbz r6, 0xd272                                        |                 goto label_6;
                                                                     |             }
    0x0000d234 mov.w r3, 0x20                                        |             r3 = 0x20;
    0x0000d238 strb r3, [r0, r6]                                     |             *((r0 + r6)) = r3;
    0x0000d23a adds r6, 1                                            |             r6++;
    0x0000d23c add r0, r6                                            |             r0 += r6;
    0x0000d23e add r6, sl                                            |             r6 += sl;
                                                                     | label_0:
    0x0000d240 mov r2, sl                                            |             r2 = sl;
    0x0000d242 mov r1, r7                                            |             r1 = r7;
    0x0000d244 mov sb, fp                                            |             sb = fp;
    0x0000d246 blx 0x19c8                                            |             mmap64 ()
    0x0000d24a mov.w r3, 0                                           |             r3 = 0;
    0x0000d24e strb.w r3, [fp, r6]                                   |             *((fp + r6)) = r3;
                                                                     |         }
                                                                     | label_4:
    0x0000d252 ldr r4, [r4]                                          |         r4 = *(r4);
    0x0000d254 ldr.w r3, [r8, 0xc]                                   |         r3 = *((r8 + 0xc));
    0x0000d258 cmp r4, r3                                            |         
    0x0000d25a bne 0xd1f6                                            |         
                                                                     |     } while (r4 != r3);
                                                                     | label_3:
    0x0000d25c ldrb.w r3, [r5, 0x30]                                 |     r3 = *((r5 + 0x30));
    0x0000d260 mov r0, sb                                            |     r0 = sb;
    0x0000d262 str.w sb, [r5, 0x14]                                  |     __asm ("str.w sb, [r5, 0x14]");
    0x0000d266 orr r3, r3, 2                                         |     r3 |= 2;
    0x0000d26a strb.w r3, [r5, 0x30]                                 |     *((r5 + 0x30)) = r3;
    0x0000d26e pop.w {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc}        |     
                                                                     | label_6:
    0x0000d272 mov r6, sl                                            |     r6 = sl;
    0x0000d274 b 0xd240                                              |     goto label_0;
                                                                     | label_2:
    0x0000d276 mov sb, r0                                            |     sb = r0;
    0x0000d278 b 0xd1e4                                              |     goto label_1;
                                                                     | label_5:
    0x0000d27a mov r0, sb                                            |     r0 = sb;
    0x0000d27c mov sb, fp                                            |     sb = fp;
    0x0000d27e blx 0x19a0                                            |     fcn_000019a0 ();
    0x0000d282 b 0xd1e4                                              |     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/bin/kmod @ 0xd77c */
                                                                     | #include <stdint.h>
                                                                     |  
    ; (fcn) fcn.0000d77c ()                                          | void fcn_0000d77c (int16_t arg_38h, int16_t arg_78h, int16_t arg_7ch, 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_18h;
                                                                     |     int16_t var_1ch;
                                                                     |     int16_t var_20h;
                                                                     |     int16_t var_24h;
                                                                     |     int16_t var_28h;
                                                                     |     int16_t var_2ch;
                                                                     |     int16_t var_30h;
                                                                     |     int32_t var_30h_2;
                                                                     |     int16_t var_38h;
                                                                     |     int16_t var_3ch;
                                                                     |     int16_t var_44h;
                                                                     |     int16_t var_48h;
                                                                     |     int16_t var_4ch;
                                                                     |     r0 = arg1;
                                                                     |     r1 = arg2;
                                                                     |     r2 = arg3;
                                                                     |     r3 = arg4;
    0x0000d77c push.w {r4, r5, r6, r7, r8, sb, sl, fp, lr}           |     
    0x0000d780 sub sp, 0x54                                          |     
    0x0000d782 str r2, [sp, 0x1c]                                    |     var_1ch = r2;
    0x0000d784 ldr.w r2, [pc, 0x488]                                 |     r2 = *(0x0000dc10);
    0x0000d788 str r3, [sp, 0x28]                                    |     var_28h = r3;
    0x0000d78a ldr.w r3, [pc, 0x488]                                 |     
    0x0000d78e add r2, pc                                            |     r2 += pc;
    0x0000d790 str r1, [sp, 8]                                       |     var_8h = r1;
    0x0000d792 ldr r3, [r2, r3]                                      |     r3 = *((r2 + r3));
    0x0000d794 ldr r3, [r3]                                          |     r3 = *(0xdc16);
    0x0000d796 str r3, [sp, 0x4c]                                    |     var_4ch = r3;
    0x0000d798 mov.w r3, 0                                           |     r3 = 0;
    0x0000d79c movs r3, 0                                            |     r3 = 0;
    0x0000d79e str r3, [sp, 0x44]                                    |     var_44h = r3;
    0x0000d7a0 ldr r3, [sp, 0x78]                                    |     r3 = *(arg_78h);
    0x0000d7a2 str r0, [sp, 0xc]                                     |     var_ch = r0;
    0x0000d7a4 str r3, [sp, 0x2c]                                    |     var_2ch = r3;
    0x0000d7a6 ldr r3, [sp, 0x7c]                                    |     r3 = *(arg_7ch);
    0x0000d7a8 str r3, [sp, 0x18]                                    |     var_18h = r3;
    0x0000d7aa cmp r0, 0                                             |     
                                                                     |     if (r0 == 0) {
    0x0000d7ac beq.w 0xdb9e                                          |         goto label_22;
                                                                     |     }
    0x0000d7b0 ands r3, r1, 8                                        |     r3 = r1 & 8;
    0x0000d7b4 str r3, [sp, 0x24]                                    |     var_24h = r3;
                                                                     |     if (r3 == r1) {
    0x0000d7b6 beq.w 0xdb02                                          |         goto label_23;
                                                                     |     }
                                                                     | label_17:
    0x0000d7ba ldr r3, [sp, 0xc]                                     |     r3 = var_ch;
    0x0000d7bc ldr r3, [r3, 0x20]                                    |     r3 = *((r3 + 0x20));
    0x0000d7be cmp r3, 0                                             |     
                                                                     |     if (r3 == 0) {
    0x0000d7c0 beq.w 0xd8f4                                          |         goto label_24;
                                                                     |     }
    0x0000d7c4 ldr r3, [sp, 8]                                       |     r3 = var_8h;
    0x0000d7c6 ands r5, r3, 0x40000                                  |     r5 = r3 & 0x40000;
                                                                     |     if (r5 == r3) {
    0x0000d7ca beq.w 0xd8f4                                          |         goto label_24;
                                                                     |     }
                                                                     | label_0:
    0x0000d7ce ldr r0, [sp, 0xc]                                     |     r0 = var_ch;
    0x0000d7d0 bl 0xc53c                                             |     r0 = fcn_0000c53c (r0);
    0x0000d7d4 cmp r0, 0                                             |     
                                                                     |     if (r0 != 0) {
    0x0000d7d6 bne 0xd8d6                                            |         goto label_2;
                                                                     |     }
                                                                     | label_1:
    0x0000d7d8 ldr r4, [sp, 0xc]                                     |     r4 = var_ch;
    0x0000d7da movs r1, 0                                            |     r1 = 0;
    0x0000d7dc ldr r0, [r4]                                          |     r0 = *(r4);
    0x0000d7de bl 0xa060                                             |     fcn_0000a060 (r0, r1);
    0x0000d7e2 ldr r0, [r4]                                          |     r0 = *(r4);
    0x0000d7e4 movs r1, 0                                            |     r1 = 0;
    0x0000d7e6 bl 0xa0c4                                             |     fcn_0000a0c4 (r0, r1);
    0x0000d7ea ldrb.w r3, [r4, 0x38]                                 |     r3 = *((r4 + 0x38));
    0x0000d7ee lsls r0, r3, 0x1f                                     |     r0 = r3 << 0x1f;
                                                                     |     if (r0 >= r3) {
    0x0000d7f0 bpl.w 0xd908                                          |         goto label_25;
                                                                     |     }
    0x0000d7f4 movs r3, 0                                            |     r3 = 0;
    0x0000d7f6 mov r5, r3                                            |     r5 = r3;
    0x0000d7f8 str r3, [sp, 0x20]                                    |     var_20h = r3;
    0x0000d7fa ldr r3, [sp, 8]                                       |     r3 = var_8h;
    0x0000d7fc lsls r2, r3, 0xf                                      |     r2 = r3 << 0xf;
                                                                     |     if (r2 < r3) {
    0x0000d7fe bmi.w 0xdb28                                          |         goto label_26;
                                                                     |     }
                                                                     | label_18:
    0x0000d802 ldr.w r3, [pc, 0x414]                                 |     
    0x0000d806 add r3, pc                                            |     r3 = 0x1b424;
    0x0000d808 str r3, [sp, 0x3c]                                    |     var_3ch = r3;
    0x0000d80a ldr r3, [sp, 0x20]                                    |     r3 = var_20h;
    0x0000d80c str r3, [sp, 4]                                       |     var_4h = r3;
                                                                     |     do {
    0x0000d80e ldr r3, [sp, 4]                                       |         r3 = var_4h;
    0x0000d810 cmp r3, 0                                             |         
                                                                     |         if (r3 == 0) {
    0x0000d812 beq 0xd8d0                                            |             goto label_5;
                                                                     |         }
    0x0000d814 ldr r3, [sp, 4]                                       |         r3 = var_4h;
    0x0000d816 ldr.w fp, [r3, 8]                                     |         fp = *((r3 + 8));
    0x0000d81a mov r0, fp                                            |         r0 = fp;
    0x0000d81c bl 0xd1cc                                             |         r0 = fcn_0000d1cc (r0, r1);
    0x0000d820 mov r4, r0                                            |         r4 = r0;
    0x0000d822 mov r0, fp                                            |         r0 = fp;
    0x0000d824 bl 0xd284                                             |         fcn_0000d284 (r0);
    0x0000d828 ldr r3, [sp, 0x24]                                    |         r3 = var_24h;
    0x0000d82a mov r7, r0                                            |         r7 = r0;
    0x0000d82c cmp r3, 0                                             |         
                                                                     |         if (r3 == 0) {
    0x0000d82e beq.w 0xd99e                                          |             goto label_27;
                                                                     |         }
                                                                     | label_7:
    0x0000d832 ldr r3, [sp, 0xc]                                     |         r3 = var_ch;
    0x0000d834 cmp r3, fp                                            |         
                                                                     |         if (r3 == fp) {
    0x0000d836 beq.w 0xd9b2                                          |             goto label_28;
                                                                     |         }
    0x0000d83a cmp r4, 0                                             |         
                                                                     |         if (r4 == 0) {
    0x0000d83c beq.w 0xd9d6                                          |             goto label_29;
                                                                     |         }
    0x0000d840 mov r0, r4                                            |         r0 = r4;
    0x0000d842 blx 0x1bb0                                            |         r0 = fcn_00001bb0 ();
    0x0000d846 mov sb, r0                                            |         sb = r0;
                                                                     | label_10:
    0x0000d848 cmp.w sb, 0                                           |         
                                                                     |         if (sb == 0) {
    0x0000d84c beq.w 0xd9d6                                          |             goto label_29;
                                                                     |         }
    0x0000d850 add.w r0, sb, 2                                       |         r0 = sb + 2;
    0x0000d854 mov.w r8, 0                                           |         r8 = 0;
    0x0000d858 blx 0x1b0c                                            |         strerror (r0);
    0x0000d85c mov r6, r8                                            |         r6 = r8;
    0x0000d85e mov sl, r0                                            |         sl = r0;
                                                                     | label_21:
    0x0000d860 mov r1, r4                                            |         r1 = r4;
    0x0000d862 mov r2, sb                                            |         r2 = sb;
    0x0000d864 mov r0, sl                                            |         r0 = sl;
    0x0000d866 blx 0x19c8                                            |         mmap64 ()
    0x0000d86a movs r3, 0x20                                         |         r3 = 0x20;
    0x0000d86c add.w r0, sb, 1                                       |         r0 = sb + 1;
    0x0000d870 adds r4, r0, r6                                       |         r4 = r0 + r6;
    0x0000d872 strb.w r3, [sl, sb]                                   |         *((sl + sb)) = r3;
    0x0000d876 cmp.w r8, 0                                           |         
                                                                     |         if (r8 != 0) {
    0x0000d87a bne.w 0xd992                                          |             goto label_30;
                                                                     |         }
                                                                     | label_6:
    0x0000d87e mov.w r3, 0                                           |         r3 = 0;
    0x0000d882 strb.w r3, [sl, r4]                                   |         *((sl + r4)) = r3;
    0x0000d886 cmp r7, 0                                             |         
                                                                     |         if (r7 == 0) {
    0x0000d888 beq 0xd926                                            |             goto label_31;
                                                                     |         }
    0x0000d88a ldrb.w r3, [fp, 0x38]                                 |         r3 = *(arg_38h);
    0x0000d88e lsls r1, r3, 0x1e                                     |         r1 = r3 << 0x1e;
                                                                     |         if (r1 < r3) {
    0x0000d890 bmi 0xd926                                            |             goto label_31;
                                                                     |         }
    0x0000d892 ldr r3, [sp, 0x18]                                    |         r3 = var_18h;
                                                                     |         if (r3 != 0) {
    0x0000d894 cbz r3, 0xd8a8                                        |             
    0x0000d896 cmp.w sl, 0                                           |             
                                                                     |             if (sl == 0) {
    0x0000d89a beq.w 0xdb92                                          |                 goto label_32;
                                                                     |             }
    0x0000d89e mov r2, sl                                            |             r2 = sl;
                                                                     | label_12:
    0x0000d8a0 ldr r3, [sp, 0x18]                                    |             r3 = var_18h;
    0x0000d8a2 movs r1, 1                                            |             r1 = 1;
    0x0000d8a4 mov r0, fp                                            |             r0 = fp;
    0x0000d8a6 blx r3                                                |             uint32_t (*r3)(uint32_t, uint32_t, uint32_t, uint32_t) (r0, r1, r2, r3);
                                                                     |         }
                                                                     | label_11:
    0x0000d8a8 ldr r3, [sp, 8]                                       |         r3 = var_8h;
    0x0000d8aa ands r3, r3, 0x10                                     |         r3 &= 0x10;
    0x0000d8ae mov r6, r3                                            |         r6 = r3;
                                                                     |         if (r3 == r3) {
    0x0000d8b0 beq.w 0xda20                                          |             goto label_33;
                                                                     |         }
                                                                     | label_3:
    0x0000d8b4 mov r0, sl                                            |         r0 = sl;
    0x0000d8b6 blx 0x19a0                                            |         fcn_000019a0 ();
    0x0000d8ba ldrb.w r3, [fp, 0x38]                                 |         r3 = *(arg_38h);
    0x0000d8be lsls r3, r3, 0x1d                                     |         r3 <<= 0x1d;
                                                                     |         if (r3 >= r3) {
    0x0000d8c0 bmi 0xd8c4                                            |             
                                                                     | label_4:
    0x0000d8c2 movs r5, 0                                            |             r5 = 0;
                                                                     |         }
                                                                     | label_15:
    0x0000d8c4 ldr r3, [sp, 4]                                       |         r3 = var_4h;
    0x0000d8c6 ldr r2, [sp, 0x20]                                    |         r2 = var_20h;
    0x0000d8c8 ldr r3, [r3]                                          |         r3 = *(r3);
    0x0000d8ca cmp r3, r2                                            |         
    0x0000d8cc str r3, [sp, 4]                                       |         var_4h = r3;
    0x0000d8ce bne 0xd80e                                            |         
                                                                     |     } while (r3 != r2);
                                                                     | label_5:
    0x0000d8d0 ldr r0, [sp, 0x20]                                    |     r0 = var_20h;
    0x0000d8d2 bl 0xcb50                                             |     fcn_0000cb50 (r0);
                                                                     | label_2:
    0x0000d8d6 ldr r2, [pc, 0x344]                                   |     
    0x0000d8d8 ldr r3, [pc, 0x338]                                   |     r3 = *(0xdc14);
    0x0000d8da add r2, pc                                            |     r2 = 0x1b4fc;
    0x0000d8dc ldr r3, [r2, r3]                                      |     r3 = *(0x1b4fc);
    0x0000d8de ldr r2, [r3]                                          |     r2 = *(0x1b4fc);
    0x0000d8e0 ldr r3, [sp, 0x4c]                                    |     r3 = var_4ch;
    0x0000d8e2 eors r2, r3                                           |     r2 ^= r3;
    0x0000d8e4 mov.w r3, 0                                           |     r3 = 0;
                                                                     |     if (r2 != r3) {
    0x0000d8e8 bne.w 0xdc0a                                          |         goto label_34;
                                                                     |     }
    0x0000d8ec mov r0, r5                                            |     r0 = r5;
    0x0000d8ee add sp, 0x54                                          |     
    0x0000d8f0 pop.w {r4, r5, r6, r7, r8, sb, sl, fp, pc}            |     
                                                                     | label_24:
    0x0000d8f4 ldr r3, [sp, 8]                                       |     r3 = var_8h;
    0x0000d8f6 ands r5, r3, 0x10000                                  |     r5 = r3 & 0x10000;
                                                                     |     if (r5 != r3) {
    0x0000d8fa bne.w 0xd7ce                                          |         goto label_0;
                                                                     |     }
    0x0000d8fe ands r5, r3, 0x20000                                  |     r5 = r3 & 0x20000;
                                                                     |     if (r5 != r3) {
    0x0000d902 bne.w 0xd7ce                                          |         goto label_0;
                                                                     |     }
    0x0000d906 b 0xd7d8                                              |     goto label_1;
                                                                     | label_25:
    0x0000d908 ldr r2, [sp, 8]                                       |     r2 = var_8h;
    0x0000d90a add r3, sp, 0x44                                      |     r3 += var_44h;
    0x0000d90c ldr r0, [sp, 0xc]                                     |     r0 = var_ch;
    0x0000d90e movs r1, 1                                            |     r1 = 1;
    0x0000d910 ubfx r2, r2, 2, 1                                     |     r2 = (r2 >> 2) & ((1 << 1) - 1);
    0x0000d914 bl 0xd4ec                                             |     r0 = fcn_0000d4ec (r0, r1, r2, r3);
    0x0000d918 subs r5, r0, 0                                        |     r5 = r0 - 0;
                                                                     |     if (r5 >= r0) {
    0x0000d91a bge.w 0xdb1c                                          |         goto label_35;
                                                                     |     }
    0x0000d91e ldr r0, [sp, 0x44]                                    |     r0 = var_44h;
    0x0000d920 bl 0xcb50                                             |     fcn_0000cb50 (r0);
    0x0000d924 b 0xd8d6                                              |     goto label_2;
                                                                     | label_31:
    0x0000d926 ldr r3, [sp, 0x18]                                    |     r3 = var_18h;
                                                                     |     if (r3 != 0) {
    0x0000d928 cbz r3, 0xd93c                                        |         
    0x0000d92a cmp.w sl, 0                                           |         
                                                                     |         if (sl == 0) {
    0x0000d92e beq.w 0xdbf0                                          |             goto label_36;
                                                                     |         }
    0x0000d932 mov r2, sl                                            |         r2 = sl;
                                                                     | label_14:
    0x0000d934 ldr r3, [sp, 0x18]                                    |         r3 = var_18h;
    0x0000d936 movs r1, 0                                            |         r1 = 0;
    0x0000d938 mov r0, fp                                            |         r0 = fp;
    0x0000d93a blx r3                                                |         uint32_t (*r3)(uint32_t, uint32_t, uint32_t, uint32_t) (r0, r1, r2, r3);
                                                                     |     }
                                                                     | label_13:
    0x0000d93c ldr r3, [sp, 8]                                       |     r3 = var_8h;
    0x0000d93e lsls r6, r3, 0x1b                                     |     r6 = r3 << 0x1b;
                                                                     |     if (r6 < r3) {
    0x0000d940 bmi 0xd8b4                                            |         goto label_3;
                                                                     |     }
    0x0000d942 mov r1, r3                                            |     r1 = r3;
    0x0000d944 mov r2, sl                                            |     r2 = sl;
    0x0000d946 mov r0, fp                                            |     r0 = fp;
    0x0000d948 bl 0xd050                                             |     fcn_0000d050 (r0, r1, r2);
    0x0000d94c ldr r3, [sp, 0xc]                                     |     r3 = var_ch;
    0x0000d94e mov r5, r0                                            |     r5 = r0;
    0x0000d950 cmp r3, fp                                            |     
    0x0000d952 it eq                                                 |     
                                                                     |     if (r3 == fp) {
    0x0000d954 cmneq r0, 0x11                                        |         __asm ("cmneq r0, 0x11");
                                                                     |     }
    0x0000d958 ite eq                                                |     
                                                                     |     if (r3 != fp) {
    0x0000d95a moveq r4, 1                                           |         r4 = 1;
                                                                     |     }
                                                                     |     if (r3 == fp) {
    0x0000d95c movne r4, 0                                           |         r4 = 0;
                                                                     |     }
                                                                     | label_16:
    0x0000d95e mov r0, sl                                            |     r0 = sl;
    0x0000d960 blx 0x19a0                                            |     fcn_000019a0 ();
    0x0000d964 cmp r4, 0                                             |     
                                                                     |     if (r4 == 0) {
    0x0000d966 beq 0xda06                                            |         goto label_37;
                                                                     |     }
                                                                     | label_8:
    0x0000d968 ldr r3, [sp, 8]                                       |     r3 = var_8h;
    0x0000d96a lsls r0, r3, 0x1a                                     |     r0 = r3 << 0x1a;
                                                                     |     if (r0 >= r3) {
    0x0000d96c bpl 0xd8c2                                            |         goto label_4;
                                                                     |     }
    0x0000d96e mvn r5, 0x10                                          |     r5 = ~0x10;
    0x0000d972 b 0xd8d0                                              |     goto label_5;
                                                                     | label_9:
    0x0000d974 ldr r3, [sp, 0x1c]                                    |     r3 = var_1ch;
                                                                     |     if (r3 == 0) {
    0x0000d976 cbz r3, 0xd9d6                                        |         goto label_29;
                                                                     |     }
    0x0000d978 ldr r0, [sp, 0x1c]                                    |     r0 = var_1ch;
    0x0000d97a blx 0x1bb0                                            |     r0 = fcn_00001bb0 ();
    0x0000d97e mov r6, r0                                            |     r6 = r0;
                                                                     |     if (r0 == 0) {
    0x0000d980 cbz r0, 0xd9d6                                        |         goto label_29;
                                                                     |     }
    0x0000d982 adds r0, 2                                            |     r0 += 2;
    0x0000d984 blx 0x1b0c                                            |     strerror (r0);
    0x0000d988 ldr.w r8, [sp, 0x1c]                                  |     r8 = var_1ch;
    0x0000d98c mov sl, r0                                            |     sl = r0;
    0x0000d98e mov r0, r4                                            |     r0 = r4;
    0x0000d990 mov r4, r6                                            |     r4 = r6;
                                                                     | label_30:
    0x0000d992 mov r2, r6                                            |     r2 = r6;
    0x0000d994 mov r1, r8                                            |     r1 = r8;
    0x0000d996 add r0, sl                                            |     r0 += sl;
    0x0000d998 blx 0x19c8                                            |     mmap64 ()
    0x0000d99c b 0xd87e                                              |     goto label_6;
                                                                     | label_27:
    0x0000d99e mov r0, fp                                            |     r0 = fp;
    0x0000d9a0 bl 0xd74c                                             |     r0 = fcn_0000d74c (r0);
    0x0000d9a4 cmp r0, 1                                             |     
                                                                     |     if (r0 > 1) {
    0x0000d9a6 bhi.w 0xd832                                          |         goto label_7;
                                                                     |     }
    0x0000d9aa ldr r3, [sp, 0xc]                                     |     r3 = var_ch;
    0x0000d9ac cmp r3, fp                                            |     
                                                                     |     if (r3 == fp) {
    0x0000d9ae beq 0xd968                                            |         goto label_8;
                                                                     |     }
    0x0000d9b0 b 0xd8c2                                              |     goto label_4;
                                                                     | label_28:
    0x0000d9b2 cmp r4, 0                                             |     
                                                                     |     if (r4 == 0) {
    0x0000d9b4 beq 0xd974                                            |         goto label_9;
                                                                     |     }
    0x0000d9b6 mov r0, r4                                            |     r0 = r4;
    0x0000d9b8 blx 0x1bb0                                            |     fcn_00001bb0 ();
    0x0000d9bc ldr r3, [sp, 0x1c]                                    |     r3 = var_1ch;
    0x0000d9be mov sb, r0                                            |     sb = r0;
    0x0000d9c0 cmp r3, 0                                             |     
                                                                     |     if (r3 == 0) {
    0x0000d9c2 beq.w 0xd848                                          |         goto label_10;
                                                                     |     }
    0x0000d9c4 add r7, sp, 0x104                                     |     r7 = sp + 0x104;
    0x0000d9c6 ldr r0, [sp, 0x1c]                                    |     r0 = var_1ch;
    0x0000d9c8 blx 0x1bb0                                            |     r0 = fcn_00001bb0 ();
    0x0000d9cc orrs.w r3, sb, r0                                     |     r3 = sb | r0;
    0x0000d9d0 mov r6, r0                                            |     r6 = r0;
                                                                     |     if (r3 != sb) {
    0x0000d9d2 bne.w 0xdbde                                          |         goto label_38;
                                                                     |     }
                                                                     |     if (r7 == 0) {
                                                                     | label_29:
    0x0000d9d6 cbz r7, 0xd9f4                                        |         goto label_39;
                                                                     |     }
    0x0000d9d8 ldrb.w r3, [fp, 0x38]                                 |     r3 = *(arg_38h);
    0x0000d9dc ubfx r3, r3, 1, 1                                     |     r3 = (r3 >> 1) & ((1 << 1) - 1);
                                                                     |     if (r3 != 0) {
    0x0000d9e0 cbnz r3, 0xd9f4                                       |         goto label_39;
                                                                     |     }
    0x0000d9e2 ldr r2, [sp, 0x18]                                    |     r2 = var_18h;
    0x0000d9e4 mov sl, r2                                            |     sl = r2;
    0x0000d9e6 cmp r2, 0                                             |     
                                                                     |     if (r2 == 0) {
    0x0000d9e8 beq.w 0xd8a8                                          |         goto label_11;
                                                                     |     }
    0x0000d9ec ldr r2, [pc, 0x230]                                   |     
    0x0000d9ee mov sl, r3                                            |     sl = r3;
    0x0000d9f0 add r2, pc                                            |     r2 = 0x1b614;
    0x0000d9f2 b 0xd8a0                                              |     goto label_12;
                                                                     | label_39:
    0x0000d9f4 ldr r3, [sp, 0x18]                                    |     r3 = var_18h;
    0x0000d9f6 mov sl, r3                                            |     sl = r3;
    0x0000d9f8 cmp r3, 0                                             |     
                                                                     |     if (r3 == 0) {
    0x0000d9fa beq 0xd93c                                            |         goto label_13;
                                                                     |     }
    0x0000d9fc ldr r2, [pc, 0x224]                                   |     
    0x0000d9fe mov.w sl, 0                                           |     sl = 0;
    0x0000da02 add r2, pc                                            |     r2 = 0x1b62a;
    0x0000da04 b 0xd934                                              |     goto label_14;
                                                                     | label_37:
    0x0000da06 cmn.w r5, 0x11                                        |     
                                                                     |     if (r5 == 0x11) {
    0x0000da0a beq.w 0xd8c2                                          |         goto label_4;
                                                                     |     }
    0x0000da0e ldrb.w r3, [fp, 0x38]                                 |     r3 = *(arg_38h);
    0x0000da12 lsls r1, r3, 0x1d                                     |     r1 = r3 << 0x1d;
                                                                     |     if (r1 >= r3) {
    0x0000da14 bpl.w 0xd8c2                                          |         goto label_4;
                                                                     |     }
    0x0000da18 cmp r5, 0                                             |     
                                                                     |     if (r5 >= 0) {
    0x0000da1a bge.w 0xd8c4                                          |         goto label_15;
                                                                     |     }
    0x0000da1e b 0xd8d0                                              |     goto label_5;
                                                                     | label_33:
    0x0000da20 mov r0, fp                                            |     r0 = fp;
    0x0000da22 bl 0xd284                                             |     r0 = fcn_0000d284 (r0);
    0x0000da26 mov r4, r0                                            |     r4 = r0;
    0x0000da28 cmp r0, 0                                             |     
                                                                     |     if (r0 == 0) {
    0x0000da2a beq.w 0xdbf6                                          |         goto label_40;
                                                                     |     }
    0x0000da2e cmp.w sl, 0                                           |     
                                                                     |     if (sl == 0) {
    0x0000da32 beq.w 0xdb52                                          |         goto label_41;
                                                                     |     }
    0x0000da36 mov r0, sl                                            |     r0 = sl;
    0x0000da38 blx 0x1bb0                                            |     r0 = fcn_00001bb0 ();
    0x0000da3c mov r6, r0                                            |     r6 = r0;
    0x0000da3e str.w sl, [sp, 0x14]                                  |     __asm ("str.w sl, [var_14h]");
                                                                     | label_19:
    0x0000da42 mov r0, r4                                            |     r0 = r4;
    0x0000da44 blx 0x1bb0                                            |     r0 = fcn_00001bb0 ();
    0x0000da48 mov r7, r0                                            |     r7 = r0;
    0x0000da4a mov r0, r4                                            |     r0 = r4;
    0x0000da4c adds r1, r7, 1                                        |     r1 = r7 + 1;
    0x0000da4e bl 0x92ac                                             |     fcn_000092ac (r0, r1);
    0x0000da52 ldr r3, [sp, 0xc]                                     |     r3 = var_ch;
    0x0000da54 mov sb, r0                                            |     sb = r0;
    0x0000da56 sub.w r3, r3, fp                                      |     r3 -= fp;
    0x0000da5a clz r3, r3                                            |     r3 &= r3;
    0x0000da5e lsrs r3, r3, 5                                        |     r3 >>= 5;
    0x0000da60 str r3, [sp, 0x38]                                    |     var_38h = r3;
    0x0000da62 cmp r0, 0                                             |     
                                                                     |     if (r0 == 0) {
    0x0000da64 beq.w 0xdbae                                          |         goto label_42;
                                                                     |     }
    0x0000da68 sub.w r2, r6, 0xd                                     |     r2 = r6 - 0xd;
    0x0000da6c strd fp, sl, [sp, 0x30]                               |     __asm ("strd fp, sl, [var_30h]");
    0x0000da70 str r2, [sp, 0x10]                                    |     var_10h = r2;
    0x0000da72 mov sl, r6                                            |     sl = r6;
    0x0000da74 ldr.w fp, [sp, 0x3c]                                  |     fp = var_3ch;
    0x0000da78 b 0xdaca                                              |     
                                                                     |     while (r0 != 0) {
    0x0000da7a ldr r3, [sp, 0x10]                                    |         r3 = var_10h;
    0x0000da7c sub.w r8, r7, 0xd                                     |         r8 = r7 - 0xd;
    0x0000da80 sub.w r6, r0, sb                                      |         r6 = r0 - sb;
    0x0000da84 add.w r5, r0, 0xd                                     |         r5 = r0 + 0xd;
    0x0000da88 sub.w r8, r8, r6                                      |         r8 -= r6;
    0x0000da8c add r7, r3                                            |         r7 += r3;
    0x0000da8e adds r0, r7, 1                                        |         r0 = r7 + 1;
    0x0000da90 blx 0x1b0c                                            |         r0 = strerror (r0);
    0x0000da94 mov r4, r0                                            |         r4 = r0;
    0x0000da96 cmp r0, 0                                             |         
                                                                     |         if (r0 == 0) {
    0x0000da98 beq.w 0xdba4                                          |             goto label_43;
                                                                     |         }
    0x0000da9c mov r1, sb                                            |         r1 = sb;
    0x0000da9e mov r2, r6                                            |         r2 = r6;
    0x0000daa0 blx 0x19c8                                            |         mmap64 ()
    0x0000daa4 ldr r1, [sp, 0x14]                                    |         r1 = var_14h;
    0x0000daa6 mov r2, sl                                            |         r2 = sl;
    0x0000daa8 adds r0, r4, r6                                       |         r0 = r4 + r6;
    0x0000daaa blx 0x19c8                                            |         mmap64 ()
    0x0000daae add.w r0, sl, r6                                      |         r0 = sl + r6;
    0x0000dab2 mov r2, r8                                            |         r2 = r8;
    0x0000dab4 mov r1, r5                                            |         r1 = r5;
    0x0000dab6 add r0, r4                                            |         r0 += r4;
    0x0000dab8 blx 0x19c8                                            |         mmap64 ()
    0x0000dabc mov r0, sb                                            |         r0 = sb;
    0x0000dabe mov.w r3, 0                                           |         r3 = 0;
    0x0000dac2 mov sb, r4                                            |         sb = r4;
    0x0000dac4 strb r3, [r4, r7]                                     |         *((r4 + r7)) = r3;
    0x0000dac6 blx 0x19a0                                            |         fcn_000019a0 ();
    0x0000daca mov r1, fp                                            |         r1 = fp;
    0x0000dacc mov r0, sb                                            |         r0 = sb;
    0x0000dace blx 0x18e4                                            |         r0 = strstr (r0, r1);
    0x0000dad2 cmp r0, 0                                             |         
    0x0000dad4 bne 0xda7a                                            |         
                                                                     |     }
    0x0000dad6 ldr r3, [sp, 0x28]                                    |     r3 = var_28h;
    0x0000dad8 ldrd fp, sl, [sp, 0x30]                               |     __asm ("ldrd fp, sl, [var_30h]");
    0x0000dadc cmp r3, 0                                             |     
                                                                     |     if (r3 == 0) {
    0x0000dade beq 0xdb5a                                            |         goto label_44;
                                                                     |     }
    0x0000dae0 ldr r2, [sp, 0x2c]                                    |     r2 = var_2ch;
    0x0000dae2 mov r1, sb                                            |     r1 = sb;
    0x0000dae4 mov r0, fp                                            |     r0 = fp;
    0x0000dae6 blx r3                                                |     uint32_t (*r3)(uint32_t, uint32_t, uint32_t) (r0, r1, r2);
    0x0000dae8 ldr r3, [sp, 0x38]                                    |     r3 = var_38h;
    0x0000daea cmn.w r0, 0x11                                        |     
    0x0000daee ite ne                                                |     
                                                                     |     if (r0 == 0x11) {
    0x0000daf0 movne r4, 0                                           |         r4 = 0;
                                                                     |     }
                                                                     |     if (r0 != 0x11) {
    0x0000daf2 moveq r4, 1                                           |         r4 = 1;
                                                                     |     }
    0x0000daf4 mov r5, r0                                            |     r5 = r0;
    0x0000daf6 ands r3, r4                                           |     r3 &= r4;
    0x0000daf8 mov r4, r3                                            |     r4 = r3;
                                                                     | label_20:
    0x0000dafa mov r0, sb                                            |     r0 = sb;
    0x0000dafc blx 0x19a0                                            |     fcn_000019a0 ();
    0x0000db00 b 0xd95e                                              |     goto label_16;
                                                                     | label_23:
    0x0000db02 bl 0xd74c                                             |     r0 = fcn_0000d74c (r0);
    0x0000db06 cmp r0, 1                                             |     
                                                                     |     if (r0 > 1) {
    0x0000db08 bhi.w 0xd7ba                                          |         goto label_17;
                                                                     |     }
    0x0000db0c ldr r3, [sp, 8]                                       |     r3 = var_8h;
    0x0000db0e tst.w r3, 0x20                                        |     
    0x0000db12 ite ne                                                |     
                                                                     |     if ((r3 & 0x20) == 0) {
    0x0000db14 mvnne r5, 0x10                                        |         r5 = ~0x10;
                                                                     |     }
                                                                     |     if ((r3 & 0x20) == 0) {
    0x0000db18 movs r5, 0                                            |         r5 = 0;
                                                                     |     }
    0x0000db1a b 0xd8d6                                              |     goto label_2;
                                                                     | label_35:
    0x0000db1c ldr r3, [sp, 0x44]                                    |     r3 = var_44h;
    0x0000db1e str r3, [sp, 0x20]                                    |     var_20h = r3;
    0x0000db20 ldr r3, [sp, 8]                                       |     r3 = var_8h;
    0x0000db22 lsls r2, r3, 0xf                                      |     r2 = r3 << 0xf;
                                                                     |     if (r2 >= r3) {
    0x0000db24 bpl.w 0xd802                                          |         goto label_18;
                                                                     |     }
                                                                     | label_26:
    0x0000db28 ldr r3, [sp, 0xc]                                     |     r3 = var_ch;
    0x0000db2a movs r1, 1                                            |     r1 = 1;
    0x0000db2c ldr r4, [sp, 0x20]                                    |     r4 = var_20h;
    0x0000db2e ldr r0, [r3]                                          |     r0 = *(r3);
    0x0000db30 movs r3, 0                                            |     r3 = 0;
    0x0000db32 str r3, [sp, 0x48]                                    |     var_48h = r3;
    0x0000db34 mov r2, r4                                            |     r2 = r4;
    0x0000db36 add r3, sp, 0x48                                      |     r3 += var_48h;
    0x0000db38 bl 0xd13c                                             |     r0 = fcn_0000d13c (r0, r1, r2, r3);
    0x0000db3c subs r5, r0, 0                                        |     r5 = r0 - 0;
                                                                     |     if (r5 < r0) {
    0x0000db3e blt.w 0xd8d6                                          |         goto label_2;
                                                                     |     }
    0x0000db42 mov r0, r4                                            |     r0 = r4;
    0x0000db44 bl 0xcb50                                             |     fcn_0000cb50 (r0);
    0x0000db48 ldr r3, [sp, 0x48]                                    |     r3 = var_48h;
    0x0000db4a str r3, [sp, 0x20]                                    |     var_20h = r3;
                                                                     |     if (r3 != 0) {
    0x0000db4c cbz r3, 0xdb98                                        |         
    0x0000db4e str r3, [sp, 0x44]                                    |         var_44h = r3;
    0x0000db50 b 0xd802                                              |         goto label_18;
                                                                     | label_41:
    0x0000db52 ldr r3, [pc, 0xd4]                                    |         
    0x0000db54 add r3, pc                                            |         r3 = 0x1b782;
    0x0000db56 str r3, [sp, 0x14]                                    |         var_14h = r3;
    0x0000db58 b 0xda42                                              |         goto label_19;
                                                                     | label_44:
    0x0000db5a ldr r4, [pc, 0xd0]                                    |         
    0x0000db5c mov r0, fp                                            |         r0 = fp;
    0x0000db5e bl 0xcfb4                                             |         fcn_0000cfb4 (r0);
    0x0000db62 movs r2, 1                                            |         r2 = 1;
    0x0000db64 mov r1, r0                                            |         r1 = r0;
    0x0000db66 add r4, pc                                            |         r4 = 0x1b798;
    0x0000db68 mov r0, r4                                            |         r0 = r4;
    0x0000db6a blx 0x1bcc                                            |         errno_location ();
    0x0000db6e mov r0, sb                                            |         r0 = sb;
    0x0000db70 blx 0x1b24                                            |         vfprintf_chk ();
    0x0000db72 invalid                                               |         
    0x0000db76 mov r0, r4                                            |         r0 = r4;
    0x0000db78 blx 0x1d8c                                            |         fcn_00001d8c ();
    0x0000db7c adds r2, r5, 1                                        |         r2 = r5 + 1;
    0x0000db7e it eq                                                 |         
                                                                     |         if (r2 != r5) {
    0x0000db80 moveq r0, sb                                          |             r0 = sb;
                                                                     |         }
                                                                     |         if (r2 == r5) {
    0x0000db82 beq 0xdbc4                                            |             goto label_45;
                                                                     |         }
    0x0000db84 ubfx r5, r5, 8, 8                                     |         r5 = (r5 >> 8) & ((1 << 8) - 1);
    0x0000db88 mov r0, sb                                            |         r0 = sb;
                                                                     |         if (r5 != 0) {
    0x0000db8a cbnz r5, 0xdbc4                                       |             goto label_45;
                                                                     |         }
    0x0000db8c blx 0x19a0                                            |         fcn_000019a0 ();
    0x0000db90 b 0xd8b4                                              |         goto label_3;
                                                                     | label_32:
    0x0000db92 ldr r2, [pc, 0x9c]                                    |         
    0x0000db94 add r2, pc                                            |         r2 = 0x1b7ca;
    0x0000db96 b 0xd8a0                                              |         goto label_12;
                                                                     |     }
    0x0000db98 mov.w r5, 0x10000                                     |     r5 = 0x10000;
    0x0000db9c b 0xd8d6                                              |     goto label_2;
                                                                     | label_22:
    0x0000db9e mvn r5, 1                                             |     r5 = ~1;
    0x0000dba2 b 0xd8d6                                              |     goto label_2;
                                                                     | label_43:
    0x0000dba4 ldrd fp, sl, [sp, 0x30]                               |     __asm ("ldrd fp, sl, [var_30h]");
    0x0000dba8 mvn r5, 0xb                                           |     r5 = ~0xb;
    0x0000dbac b 0xdafa                                              |     goto label_20;
                                                                     | label_42:
    0x0000dbae mov r0, sl                                            |     r0 = sl;
    0x0000dbb0 blx 0x19a0                                            |     fcn_000019a0 ();
    0x0000dbb4 ldrb.w r3, [fp, 0x38]                                 |     r3 = *(arg_38h);
    0x0000dbb8 lsls r7, r3, 0x1d                                     |     r7 = r3 << 0x1d;
                                                                     |     if (r7 >= r3) {
    0x0000dbba bpl.w 0xd8c2                                          |         goto label_4;
                                                                     |     }
    0x0000dbbe mvn r5, 0xb                                           |     r5 = ~0xb;
    0x0000dbc2 b 0xd8d0                                              |     goto label_5;
                                                                     | label_45:
    0x0000dbc4 blx 0x19a0                                            |     fcn_000019a0 ();
    0x0000dbc8 mov r0, sl                                            |     r0 = sl;
    0x0000dbca blx 0x19a0                                            |     fcn_000019a0 ();
    0x0000dbce ldrb.w r3, [fp, 0x38]                                 |     r3 = *(arg_38h);
    0x0000dbd2 lsls r3, r3, 0x1d                                     |     r3 <<= 0x1d;
                                                                     |     if (r3 >= r3) {
    0x0000dbd4 bpl.w 0xd8c2                                          |         goto label_4;
                                                                     |     }
    0x0000dbd8 mvn r5, 0x15                                          |     r5 = ~0x15;
    0x0000dbdc b 0xd8d0                                              |     goto label_5;
                                                                     | label_38:
    0x0000dbde add.w r0, sb, r6                                      |     r0 = sb + r6;
    0x0000dbe2 adds r0, 2                                            |     r0 += 2;
    0x0000dbe4 blx 0x1b0c                                            |     strerror (r0);
    0x0000dbe8 ldr.w r8, [sp, 0x1c]                                  |     r8 = var_1ch;
    0x0000dbec mov sl, r0                                            |     sl = r0;
    0x0000dbee b 0xd860                                              |     goto label_21;
                                                                     | label_36:
    0x0000dbf0 ldr r2, [pc, 0x40]                                    |     
    0x0000dbf2 add r2, pc                                            |     r2 = 0x1b82a;
    0x0000dbf4 b 0xd934                                              |     goto label_14;
                                                                     | label_40:
    0x0000dbf6 ldr r3, [pc, 0x40]                                    |     
    0x0000dbf8 movw r2, 0x3f5                                        |     r2 = 0x3f5;
    0x0000dbfc ldr r1, [pc, 0x3c]                                    |     
    0x0000dbfe ldr r0, [pc, 0x40]                                    |     
    0x0000dc00 add r3, pc                                            |     r3 = 0x1b83e;
    0x0000dc02 add r1, pc                                            |     r1 = 0x1b842;
    0x0000dc04 add r0, pc                                            |     r0 = 0x1b84a;
    0x0000dc06 blx 0x1de0                                            |     fcn_00001de0 ();
                                                                     | label_34:
    0x0000dc0a blx 0x1a1c                                            |     stat64 ();
    0x0000dc0e nop                                                   |     
    0x0000dc10 strh r2, [r1, 0x34]                                   |     *((r1 + 0x34)) = r2;
    0x0000dc12 movs r1, r0                                           |     r1 = r0;
    0x0000dc14 lsls r4, r7, 6                                        |     r4 = r7 << 6;
    0x0000dc16 movs r0, r0                                           |     
    0x0000dc18 ldr r2, [pc, 0x1d8]                                   |     r2 = *(0xddf4);
    0x0000dc1a movs r0, r0                                           |     
    0x0000dc1c strh r6, [r7, 0x28]                                   |     *((r7 + 0x28)) = r6;
    0x0000dc1e movs r1, r0                                           |     r1 = r0;
    0x0000dc20 str r4, [r4, 0x20]                                    |     *((r4 + 0x20)) = r4;
    0x0000dc22 movs r0, r0                                           |     
    0x0000dc24 str r2, [r2, 0x20]                                    |     *((r2 + 0x20)) = r2;
    0x0000dc26 movs r0, r0                                           |     
    0x0000dc28 str r0, [r0, 0xc]                                     |     *((r0 + 0xc)) = r0;
    0x0000dc2a movs r0, r0                                           |     
    0x0000dc2c bx r5                                                 |     return uint32_t (*r5)() ();
                                                                     | }
    ; assembly                                                       | /* r2dec pseudo code output */
                                                                     | /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/bin/kmod @ 0xe230 */
                                                                     | #include <stdint.h>
                                                                     |  
    ; (fcn) fcn.0000e230 ()                                          | void fcn_0000e230 (uint32_t arg1, uint32_t arg2) {
                                                                     |     int16_t var_0h;
                                                                     |     int16_t var_4h;
                                                                     |     r0 = arg1;
                                                                     |     r1 = arg2;
    0x0000e230 stmdbhs r0, {r2, r3, r4, r5, sb, fp, lr}              |     __asm ("stmdbhs r0, {r2, r3, r4, r5, sb, fp, lr}");
    0x0000e234 it ne                                                 |     
                                                                     |     if (? != ?) {
    0x0000e236 cmpne r0, 0                                           |         __asm ("cmpne r0, 0");
                                                                     |     }
    0x0000e238 ldr r3, [pc, 0xec]                                    |     
    0x0000e23a push.w {r4, r5, r6, r7, r8, sb, sl, fp, lr}           |     
    0x0000e23e sub sp, 0xc                                           |     
    0x0000e240 add r2, pc                                            |     r2 += pc;
    0x0000e242 ldr r3, [r2, r3]                                      |     r3 = *((r2 + r3));
    0x0000e244 ldr r3, [r3]                                          |     r3 = *(0xe328);
    0x0000e246 str r3, [sp, 4]                                       |     var_4h = r3;
    0x0000e248 mov.w r3, 0                                           |     r3 = 0;
                                                                     |     if (? == ?) {
    0x0000e24c beq 0xe306                                            |         goto label_3;
                                                                     |     }
    0x0000e24e ldr r6, [r1]                                          |     r6 = *(r1);
    0x0000e250 mov r7, r1                                            |     r7 = r1;
    0x0000e252 cmp r6, 0                                             |     
                                                                     |     if (r6 != 0) {
    0x0000e254 bne 0xe30c                                            |         goto label_4;
                                                                     |     }
    0x0000e256 bl 0xcff8                                             |     r0 = fcn_0000cff8 (r0);
    0x0000e25a cmp r0, 0                                             |     
                                                                     |     if (r0 == 0) {
    0x0000e25c beq 0xe2e6                                            |         goto label_5;
                                                                     |     }
    0x0000e25e mov r1, sp                                            |     r1 = sp;
    0x0000e260 bl 0xf22c                                             |     r0 = fcn_0000f22c (r0, r1, r2);
    0x0000e264 subs.w r8, r0, 0                                      |     r8 = r0 - 0;
                                                                     |     if (r8 < r0) {
    0x0000e268 blt 0xe272                                            |         goto label_2;
                                                                     |     }
                                                                     |     if (r8 != r0) {
    0x0000e26a bne 0xe296                                            |         goto label_6;
                                                                     |     }
                                                                     |     do {
                                                                     | label_1:
    0x0000e26c ldr r0, [sp]                                          |         r0 = *(sp);
    0x0000e26e blx 0x19a0                                            |         fcn_000019a0 ();
                                                                     | label_2:
    0x0000e272 ldr r2, [pc, 0xb8]                                    |         
    0x0000e274 ldr r3, [pc, 0xb0]                                    |         r3 = *(0xe328);
    0x0000e276 add r2, pc                                            |         r2 = 0x1c5a8;
    0x0000e278 ldr r3, [r2, r3]                                      |         r3 = *(0x1c5a8);
    0x0000e27a ldr r2, [r3]                                          |         r2 = *(0x1c5a8);
    0x0000e27c ldr r3, [sp, 4]                                       |         r3 = var_4h;
    0x0000e27e eors r2, r3                                           |         r2 ^= r3;
    0x0000e280 mov.w r3, 0                                           |         r3 = 0;
                                                                     |         if (r2 != r3) {
    0x0000e284 bne 0xe320                                            |             goto label_7;
                                                                     |         }
    0x0000e286 mov r0, r8                                            |         r0 = r8;
    0x0000e288 add sp, 0xc                                           |         
    0x0000e28a pop.w {r4, r5, r6, r7, r8, sb, sl, fp, pc}            |         
                                                                     | label_0:
    0x0000e28e adds r6, 1                                            |         r6++;
    0x0000e290 str r0, [r7]                                          |         *(r7) = r0;
    0x0000e292 cmp r8, r6                                            |         
    0x0000e294 beq 0xe26c                                            |         
                                                                     |     } while (r8 == r6);
                                                                     | label_6:
    0x0000e296 ldr r3, [sp]                                          |     r3 = *(sp);
    0x0000e298 add.w r3, r3, r6, lsl 4                               |     r3 += (r6 << 4);
    0x0000e29a asrs r6, r0, 0xc                                      |     r6 = r0 >> 0xc;
    0x0000e29c ldr.w sb, [r3, 0xc]                                   |     sb = *((r3 + 0xc));
    0x0000e29e str r0, [sp, 0x30]                                    |     *((sp + 0x30)) = r0;
    0x0000e2a0 ldrd sl, fp, [r3]                                     |     __asm ("ldrd sl, fp, [r3]");
    0x0000e2a4 mov r0, sb                                            |     r0 = sb;
    0x0000e2a6 blx 0x1bb0                                            |     r0 = fcn_00001bb0 ();
    0x0000e2aa mov r2, r0                                            |     r2 = r0;
    0x0000e2ac adds r0, 9                                            |     r0 += 9;
    0x0000e2ae adds r4, r2, 1                                        |     r4 = r2 + 1;
    0x0000e2b0 blx 0x1b0c                                            |     strerror (r0);
    0x0000e2b2 stc p6, c4, [ip], -0x14                               |     __asm ("stc p6, c4, [ip], -0x14");
                                                                     |     if (r0 == 0) {
    0x0000e2b6 cbz r0, 0xe2f2                                        |         goto label_8;
                                                                     |     }
    0x0000e2b8 mov r2, r4                                            |     r2 = r4;
    0x0000e2ba mov r1, sb                                            |     r1 = sb;
    0x0000e2bc strd sl, fp, [r0], 8                                  |     __asm ("strd sl, fp, [r0], 8");
    0x0000e2c0 blx 0x19c8                                            |     mmap64 ()
    0x0000e2c4 ldr r0, [r7]                                          |     r0 = *(r7);
    0x0000e2c6 mov r1, r5                                            |     r1 = r5;
    0x0000e2c8 bl 0xa350                                             |     r0 = fcn_0000a350 (r0, r1);
    0x0000e2cc mov r4, r0                                            |     r4 = r0;
    0x0000e2ce cmp r0, 0                                             |     
                                                                     |     if (r0 != 0) {
    0x0000e2d0 bne 0xe28e                                            |         goto label_0;
                                                                     |     }
    0x0000e2d2 mov r0, r5                                            |     r0 = r5;
    0x0000e2d4 mvn r8, 0xb                                           |     r8 = ~0xb;
    0x0000e2d8 blx 0x19a0                                            |     fcn_000019a0 ();
    0x0000e2dc ldr r0, [r7]                                          |     r0 = *(r7);
    0x0000e2de bl 0xe214                                             |     fcn_0000e214 (r0);
    0x0000e2e2 str r4, [r7]                                          |     *(r7) = r4;
    0x0000e2e4 b 0xe26c                                              |     goto label_1;
                                                                     | label_5:
    0x0000e2e6 blx 0x1be4                                            |     r0 = isoc99_sscanf ();
    0x0000e2ea ldr r3, [r0]                                          |     r3 = *(r0);
    0x0000e2ec rsb.w r8, r3, 0                                       |     r8 = r3 - ;
    0x0000e2f0 b 0xe272                                              |     goto label_2;
                                                                     | label_8:
    0x0000e2f2 blx 0x1be4                                            |     r0 = isoc99_sscanf ();
    0x0000e2f6 ldr r3, [r0]                                          |     r3 = *(r0);
    0x0000e2f8 ldr r0, [r7]                                          |     r0 = *(r7);
    0x0000e2fa rsb.w r8, r3, 0                                       |     r8 = r3 - ;
    0x0000e2fc lsrs r0, r0, 0x20                                     |     r0 >>= 0x20;
    0x0000e2fe bl 0xe214                                             |     fcn_0000e214 (r0);
    0x0000e302 str r5, [r7]                                          |     *(r7) = r5;
    0x0000e304 b 0xe26c                                              |     goto label_1;
                                                                     | label_3:
    0x0000e306 mvn r8, 1                                             |     r8 = ~1;
    0x0000e30a b 0xe272                                              |     goto label_2;
                                                                     | label_4:
    0x0000e30c ldr r3, [pc, 0x20]                                    |     
    0x0000e30e movw r2, 0x9bc                                        |     r2 = 0x9bc;
    0x0000e312 ldr r1, [pc, 0x20]                                    |     
    0x0000e314 ldr r0, [pc, 0x20]                                    |     
    0x0000e316 add r3, pc                                            |     r3 = 0x1c64a;
    0x0000e318 add r1, pc                                            |     r1 = 0x1c652;
    0x0000e31a add r0, pc                                            |     r0 = 0x1c656;
    0x0000e31c blx 0x1de0                                            |     fcn_00001de0 ();
                                                                     | label_7:
    0x0000e320 blx 0x1a1c                                            |     stat64 ();
    0x0000e324 ldrb r0, [r3, 0xf]                                    |     r0 = *((r3 + 0xf));
    0x0000e326 movs r1, r0                                           |     r1 = r0;
    0x0000e328 lsls r4, r7, 6                                        |     r4 = r7 << 6;
    0x0000e32a movs r0, r0                                           |     
    0x0000e32c ldrb r2, [r4, 0xe]                                    |     r2 = *((r4 + 0xe));
    0x0000e32e movs r1, r0                                           |     r1 = r0;
    0x0000e330 ldr r6, [r6, 4]                                       |     r6 = *((r6 + 4));
    0x0000e332 movs r0, r0                                           |     
    0x0000e334 str r4, [r7, 0x70]                                    |     *((r7 + 0x70)) = r4;
    0x0000e336 movs r0, r0                                           |     
    0x0000e338 str r6, [r3, 0x58]                                    |     *((r3 + 0x58)) = r6;
    0x0000e33a 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/bin/kmod @ 0xe378 */
                                                                     | #include <stdint.h>
                                                                     |  
    ; (fcn) fcn.0000e378 ()                                          | void fcn_0000e378 (uint32_t arg1, uint32_t arg2) {
                                                                     |     int16_t var_0h;
                                                                     |     int16_t var_4h;
                                                                     |     r0 = arg1;
                                                                     |     r1 = arg2;
    0x0000e378 stmdbhs r0, {r2, r3, r4, r5, sb, fp, lr}              |     __asm ("stmdbhs r0, {r2, r3, r4, r5, sb, fp, lr}");
    0x0000e37c it ne                                                 |     
                                                                     |     if (? != ?) {
    0x0000e37e cmpne r0, 0                                           |         __asm ("cmpne r0, 0");
                                                                     |     }
    0x0000e380 ldr r3, [pc, 0xec]                                    |     
    0x0000e382 push.w {r4, r5, r6, r7, r8, sb, sl, fp, lr}           |     
    0x0000e386 sub sp, 0xc                                           |     
    0x0000e388 add r2, pc                                            |     r2 += pc;
    0x0000e38a ldr r3, [r2, r3]                                      |     r3 = *((r2 + r3));
    0x0000e38c ldr r3, [r3]                                          |     r3 = *(0xe470);
    0x0000e38e str r3, [sp, 4]                                       |     var_4h = r3;
    0x0000e390 mov.w r3, 0                                           |     r3 = 0;
                                                                     |     if (? == ?) {
    0x0000e394 beq 0xe44e                                            |         goto label_3;
                                                                     |     }
    0x0000e396 ldr r6, [r1]                                          |     r6 = *(r1);
    0x0000e398 mov r7, r1                                            |     r7 = r1;
    0x0000e39a cmp r6, 0                                             |     
                                                                     |     if (r6 != 0) {
    0x0000e39c bne 0xe454                                            |         goto label_4;
                                                                     |     }
    0x0000e39e bl 0xcff8                                             |     r0 = fcn_0000cff8 (r0);
    0x0000e3a2 cmp r0, 0                                             |     
                                                                     |     if (r0 == 0) {
    0x0000e3a4 beq 0xe42e                                            |         goto label_5;
                                                                     |     }
    0x0000e3a6 mov r1, sp                                            |     r1 = sp;
    0x0000e3a8 bl 0xf7bc                                             |     r0 = fcn_0000f7bc (r0, r1, r2, r3);
    0x0000e3ac subs.w r8, r0, 0                                      |     r8 = r0 - 0;
    0x0000e3ae lsrs r0, r0, 0x20                                     |     r0 >>= 0x20;
                                                                     |     if (r0 < r0) {
    0x0000e3b0 blt 0xe3ba                                            |         goto label_2;
                                                                     |     }
                                                                     |     if (r0 != r0) {
    0x0000e3b2 bne 0xe3de                                            |         goto label_6;
                                                                     |     }
                                                                     |     do {
                                                                     | label_1:
    0x0000e3b4 ldr r0, [sp]                                          |         r0 = *(sp);
    0x0000e3b6 blx 0x19a0                                            |         fcn_000019a0 ();
                                                                     | label_2:
    0x0000e3ba ldr r2, [pc, 0xb8]                                    |         
    0x0000e3bc ldr r3, [pc, 0xb0]                                    |         r3 = *(0xe470);
    0x0000e3be add r2, pc                                            |         r2 = 0x1c838;
    0x0000e3c0 ldr r3, [r2, r3]                                      |         r3 = *(0x1c838);
    0x0000e3c2 ldr r2, [r3]                                          |         r2 = *(0x1c838);
    0x0000e3c4 ldr r3, [sp, 4]                                       |         r3 = var_4h;
    0x0000e3c6 eors r2, r3                                           |         r2 ^= r3;
    0x0000e3c8 mov.w r3, 0                                           |         r3 = 0;
                                                                     |         if (r2 != r3) {
    0x0000e3cc bne 0xe468                                            |             goto label_7;
                                                                     |         }
    0x0000e3ce mov r0, r8                                            |         r0 = r8;
    0x0000e3d0 add sp, 0xc                                           |         
    0x0000e3d2 pop.w {r4, r5, r6, r7, r8, sb, sl, fp, pc}            |         
                                                                     | label_0:
    0x0000e3d6 adds r6, 1                                            |         r6++;
    0x0000e3d8 str r0, [r7]                                          |         *(r7) = r0;
    0x0000e3da cmp r8, r6                                            |         
    0x0000e3dc beq 0xe3b4                                            |         
                                                                     |     } while (r8 == r6);
                                                                     | label_6:
    0x0000e3de ldr r3, [sp]                                          |     r3 = *(sp);
    0x0000e3e0 add.w r3, r3, r6, lsl 4                               |     r3 += (r6 << 4);
    0x0000e3e4 ldr.w sb, [r3, 0xc]                                   |     sb = *((r3 + 0xc));
    0x0000e3e8 ldrd sl, fp, [r3]                                     |     __asm ("ldrd sl, fp, [r3]");
    0x0000e3ec mov r0, sb                                            |     r0 = sb;
    0x0000e3ee blx 0x1bb0                                            |     r0 = fcn_00001bb0 ();
    0x0000e3f2 mov r2, r0                                            |     r2 = r0;
    0x0000e3f4 adds r0, 9                                            |     r0 += 9;
    0x0000e3f6 adds r4, r2, 1                                        |     r4 = r2 + 1;
    0x0000e3f8 blx 0x1b0c                                            |     r0 = strerror (r0);
    0x0000e3fc mov r5, r0                                            |     r5 = r0;
                                                                     |     if (r0 == 0) {
    0x0000e3fe cbz r0, 0xe43a                                        |         goto label_8;
                                                                     |     }
    0x0000e400 mov r2, r4                                            |     r2 = r4;
    0x0000e402 mov r1, sb                                            |     r1 = sb;
    0x0000e404 strd sl, fp, [r0], 8                                  |     __asm ("strd sl, fp, [r0], 8");
    0x0000e408 blx 0x19c8                                            |     mmap64 ()
    0x0000e40c ldr r0, [r7]                                          |     r0 = *(r7);
    0x0000e40e mov r1, r5                                            |     r1 = r5;
    0x0000e410 bl 0xa350                                             |     r0 = fcn_0000a350 (r0, r1);
    0x0000e414 mov r4, r0                                            |     r4 = r0;
    0x0000e416 cmp r0, 0                                             |     
                                                                     |     if (r0 != 0) {
    0x0000e418 bne 0xe3d6                                            |         goto label_0;
                                                                     |     }
    0x0000e41a mov r0, r5                                            |     r0 = r5;
    0x0000e41c mvn r8, 0xb                                           |     r8 = ~0xb;
    0x0000e420 blx 0x19a0                                            |     fcn_000019a0 ();
    0x0000e424 ldr r0, [r7]                                          |     r0 = *(r7);
    0x0000e426 bl 0xe35c                                             |     fcn_0000e35c (r0);
    0x0000e42a str r4, [r7]                                          |     *(r7) = r4;
    0x0000e42c b 0xe3b4                                              |     goto label_1;
                                                                     | label_5:
    0x0000e42e blx 0x1be4                                            |     r0 = isoc99_sscanf ();
    0x0000e432 ldr r3, [r0]                                          |     r3 = *(r0);
    0x0000e434 rsb.w r8, r3, 0                                       |     r8 = r3 - ;
    0x0000e438 b 0xe3ba                                              |     goto label_2;
                                                                     | label_8:
    0x0000e43a blx 0x1be4                                            |     r0 = isoc99_sscanf ();
    0x0000e43e ldr r3, [r0]                                          |     r3 = *(r0);
    0x0000e440 ldr r0, [r7]                                          |     r0 = *(r7);
    0x0000e442 rsb.w r8, r3, 0                                       |     r8 = r3 - ;
    0x0000e446 bl 0xe35c                                             |     fcn_0000e35c (r0);
    0x0000e44a str r5, [r7]                                          |     *(r7) = r5;
    0x0000e44c b 0xe3b4                                              |     goto label_1;
                                                                     | label_3:
    0x0000e44e mvn r8, 1                                             |     r8 = ~1;
    0x0000e452 b 0xe3ba                                              |     goto label_2;
                                                                     | label_4:
    0x0000e454 ldr r3, [pc, 0x20]                                    |     
    0x0000e456 movw r2, 0xa48                                        |     r2 = 0xa48;
    0x0000e45a ldr r1, [pc, 0x20]                                    |     
    0x0000e45c ldr r0, [pc, 0x20]                                    |     
    0x0000e45e add r3, pc                                            |     r3 = 0x1c8da;
    0x0000e460 add r1, pc                                            |     r1 = 0x1c8e2;
    0x0000e462 add r0, pc                                            |     r0 = 0x1c8e6;
    0x0000e464 blx 0x1de0                                            |     fcn_00001de0 ();
                                                                     | label_7:
    0x0000e468 blx 0x1a1c                                            |     stat64 ();
    0x0000e46c ldrb r0, [r2, 0xa]                                    |     r0 = *((r2 + 0xa));
    0x0000e46e movs r1, r0                                           |     r1 = r0;
    0x0000e470 lsls r4, r7, 6                                        |     r4 = r7 << 6;
    0x0000e472 movs r0, r0                                           |     
    0x0000e474 ldrb r2, [r3, 9]                                      |     r2 = *((r3 + 9));
    0x0000e476 movs r1, r0                                           |     r1 = r0;
    0x0000e478 str r6, [r2, 0x70]                                    |     *((r2 + 0x70)) = r6;
    0x0000e47a movs r0, r0                                           |     
    0x0000e47c str r4, [r6, 0x5c]                                    |     *((r6 + 0x5c)) = r4;
    0x0000e47e movs r0, r0                                           |     
    0x0000e480 str r6, [r2, 0x44]                                    |     *((r2 + 0x44)) = r6;
    0x0000e482 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/bin/kmod @ 0xe4cc */
                                                                 | #include <stdint.h>
                                                                 |  
    ; (fcn) fcn.0000e4cc ()                                      | void fcn_0000e4cc (uint32_t arg1, uint32_t arg2) {
                                                                 |     int16_t var_0h;
                                                                 |     int16_t var_4h;
                                                                 |     r0 = arg1;
                                                                 |     r1 = arg2;
    0x0000e4cc stmdbhs r0, {r0, r6, sb, fp, lr}                  |     __asm ("stmdbhs r0, {r0, r6, sb, fp, lr}");
    0x0000e4d0 it ne                                             |     
                                                                 |     if (? != ?) {
    0x0000e4d2 cmpne r0, 0                                       |         __asm ("cmpne r0, 0");
                                                                 |     }
    0x0000e4d4 ldr r3, [pc, 0x100]                               |     
    0x0000e4d6 push.w {r4, r5, r6, r7, r8, sb, sl, lr}           |     
    0x0000e4da add r2, pc                                        |     r2 += pc;
    0x0000e4dc vpush {d8}                                        |     __asm ("vpush {d8}");
    0x0000e4e0 sub sp, 8                                         |     
    0x0000e4e2 ldr r3, [r2, r3]                                  |     r3 = *((r2 + r3));
    0x0000e4e4 ldr r3, [r3]                                      |     r3 = *(0xe5d8);
    0x0000e4e6 str r3, [sp, 4]                                   |     var_4h = r3;
    0x0000e4e8 mov.w r3, 0                                       |     r3 = 0;
                                                                 |     if (? == ?) {
    0x0000e4ec beq 0xe5b4                                        |         goto label_3;
                                                                 |     }
    0x0000e4ee ldr r6, [r1]                                      |     r6 = *(r1);
    0x0000e4f0 mov r7, r1                                        |     r7 = r1;
    0x0000e4f2 cmp r6, 0                                         |     
                                                                 |     if (r6 != 0) {
    0x0000e4f4 bne 0xe5ba                                        |         goto label_4;
                                                                 |     }
    0x0000e4f6 bl 0xcff8                                         |     r0 = fcn_0000cff8 (r0);
    0x0000e4fa cmp r0, 0                                         |     
                                                                 |     if (r0 == 0) {
    0x0000e4fc beq 0xe594                                        |         goto label_5;
                                                                 |     }
    0x0000e4fe mov r1, sp                                        |     r1 = sp;
    0x0000e500 bl 0xff58                                         |     fcn_0000ff58 (r0, r1, r2, r3, r4, r5, r6);
    0x0000e502 stc2 p1, c15, [sl, -0x2c0]!                       |     __asm ("stc2 p1, c15, [sl, -0x2c0]!");
    0x0000e506 lsrs r0, r0, 0x20                                 |     r0 >>= 0x20;
                                                                 |     if (r0 < r0) {
    0x0000e508 blt 0xe512                                        |         goto label_2;
                                                                 |     }
                                                                 |     if (r0 != r0) {
    0x0000e50a bne 0xe53a                                        |         goto label_6;
                                                                 |     }
                                                                 |     do {
                                                                 | label_1:
    0x0000e50c ldr r0, [sp]                                      |         r0 = *(sp);
    0x0000e50e blx 0x19a0                                        |         fcn_000019a0 ();
                                                                 | label_2:
    0x0000e512 ldr r2, [pc, 0xc8]                                |         
    0x0000e514 ldr r3, [pc, 0xc0]                                |         r3 = *(0xe5d8);
    0x0000e516 add r2, pc                                        |         r2 = 0x1caf8;
    0x0000e518 ldr r3, [r2, r3]                                  |         r3 = *(0x1caf8);
    0x0000e51a ldr r2, [r3]                                      |         r2 = *(0x1caf8);
    0x0000e51c ldr r3, [sp, 4]                                   |         r3 = var_4h;
    0x0000e51e eors r2, r3                                       |         r2 ^= r3;
    0x0000e520 mov.w r3, 0                                       |         r3 = 0;
                                                                 |         if (r2 != r3) {
    0x0000e524 bne 0xe5ce                                        |             goto label_7;
                                                                 |         }
    0x0000e526 mov r0, r8                                        |         r0 = r8;
    0x0000e528 add sp, 8                                         |         
    0x0000e52a vpop {d8}                                         |         __asm ("vpop {d8}");
    0x0000e52e pop.w {r4, r5, r6, r7, r8, sb, sl, pc}            |         
                                                                 | label_0:
    0x0000e532 adds r6, 1                                        |         r6++;
    0x0000e534 str r0, [r7]                                      |         *(r7) = r0;
    0x0000e536 cmp r8, r6                                        |         
    0x0000e538 beq 0xe50c                                        |         
                                                                 |     } while (r8 == r6);
                                                                 | label_6:
    0x0000e53a ldr r3, [sp]                                      |     r3 = *(sp);
    0x0000e53c add.w r3, r3, r6, lsl 4                           |     r3 += (r6 << 4);
    0x0000e540 ldr.w sb, [r3, 0xc]                               |     sb = *((r3 + 0xc));
    0x0000e544 vldr d8, [r3]                                     |     __asm ("vldr d8, [r3]");
    0x0000e548 ldrb.w sl, [r3, 8]                                |     sl = *((r3 + 8));
    0x0000e54c mov r0, sb                                        |     r0 = sb;
    0x0000e54e blx 0x1bb0                                        |     r0 = fcn_00001bb0 ();
    0x0000e552 mov r2, r0                                        |     r2 = r0;
    0x0000e554 adds r0, 0x11                                     |     r0 += 0x11;
    0x0000e556 adds r5, r2, 1                                    |     r5 = r2 + 1;
    0x0000e558 blx 0x1b0c                                        |     r0 = strerror (r0);
    0x0000e55c mov r4, r0                                        |     r4 = r0;
                                                                 |     if (r0 == 0) {
    0x0000e55e cbz r0, 0xe5a0                                    |         goto label_8;
                                                                 |     }
    0x0000e560 mov r2, r5                                        |     r2 = r5;
    0x0000e562 mov r1, sb                                        |     r1 = sb;
    0x0000e564 adds r0, 9                                        |     r0 += 9;
    0x0000e566 vstr d8, [r4]                                     |     __asm ("vstr d8, [r4]");
    0x0000e56a strb.w sl, [r4, 8]                                |     *((r4 + 8)) = sl;
    0x0000e56e blx 0x19c8                                        |     mmap64 ()
    0x0000e572 ldr r0, [r7]                                      |     r0 = *(r7);
    0x0000e574 mov r1, r4                                        |     r1 = r4;
    0x0000e576 bl 0xa350                                         |     r0 = fcn_0000a350 (r0, r1);
    0x0000e57a mov r5, r0                                        |     r5 = r0;
    0x0000e57c cmp r0, 0                                         |     
                                                                 |     if (r0 != 0) {
    0x0000e57e bne 0xe532                                        |         goto label_0;
                                                                 |     }
    0x0000e580 mov r0, r4                                        |     r0 = r4;
    0x0000e582 mvn r8, 0xb                                       |     r8 = ~0xb;
    0x0000e586 blx 0x19a0                                        |     fcn_000019a0 ();
    0x0000e58a ldr r0, [r7]                                      |     r0 = *(r7);
    0x0000e58c bl 0xe4b0                                         |     fcn_0000e4b0 (r0);
    0x0000e590 str r5, [r7]                                      |     *(r7) = r5;
    0x0000e592 b 0xe50c                                          |     goto label_1;
                                                                 | label_5:
    0x0000e594 blx 0x1be4                                        |     r0 = isoc99_sscanf ();
    0x0000e598 ldr r3, [r0]                                      |     r3 = *(r0);
    0x0000e59a rsb.w r8, r3, 0                                   |     r8 = r3 - ;
    0x0000e59e b 0xe512                                          |     goto label_2;
                                                                 | label_8:
    0x0000e5a0 blx 0x1be4                                        |     r0 = isoc99_sscanf ();
    0x0000e5a4 ldr r3, [r0]                                      |     r3 = *(r0);
    0x0000e5a6 ldr r0, [r7]                                      |     r0 = *(r7);
    0x0000e5a8 rsb.w r8, r3, 0                                   |     r8 = r3 - ;
    0x0000e5ac bl 0xe4b0                                         |     fcn_0000e4b0 (r0);
    0x0000e5b0 str r4, [r7]                                      |     *(r7) = r4;
    0x0000e5b2 b 0xe50c                                          |     goto label_1;
                                                                 | label_3:
    0x0000e5b4 mvn r8, 1                                         |     r8 = ~1;
    0x0000e5b8 b 0xe512                                          |     goto label_2;
                                                                 | label_4:
    0x0000e5ba ldr r3, [pc, 0x24]                                |     
    0x0000e5bc movw r2, 0xad7                                    |     r2 = 0xad7;
    0x0000e5c0 ldr r1, [pc, 0x20]                                |     
    0x0000e5c2 ldr r0, [pc, 0x24]                                |     
    0x0000e5c4 add r3, pc                                        |     r3 = 0x1cbaa;
    0x0000e5c6 add r1, pc                                        |     r1 = 0x1cbae;
    0x0000e5c8 add r0, pc                                        |     r0 = 0x1cbb6;
    0x0000e5ca blx 0x1de0                                        |     fcn_00001de0 ();
                                                                 | label_7:
    0x0000e5ce blx 0x1a1c                                        |     stat64 ();
    0x0000e5d2 nop                                               |     
    0x0000e5d4 ldrb r6, [r7, 4]                                  |     r6 = *((r7 + 4));
    0x0000e5d6 movs r1, r0                                       |     r1 = r0;
    0x0000e5d8 lsls r4, r7, 6                                    |     r4 = r7 << 6;
    0x0000e5da movs r0, r0                                       |     
    0x0000e5dc ldrb r2, [r0, 4]                                  |     r2 = *((r0 + 4));
    0x0000e5de movs r1, r0                                       |     r1 = r0;
    0x0000e5e0 str r4, [r1, 0x58]                                |     *((r1 + 0x58)) = r4;
    0x0000e5e2 movs r0, r0                                       |     
    0x0000e5e4 str r6, [r1, 0x48]                                |     *((r1 + 0x48)) = r6;
    0x0000e5e6 movs r0, r0                                       |     
    0x0000e5e8 str r0, [r6, 0x2c]                                |     *((r6 + 0x2c)) = r0;
    0x0000e5ea 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/bin/kmod @ 0xf09c */
                                                             | #include <stdint.h>
                                                             |  
    ; (fcn) fcn.0000f09c ()                                  | void fcn_0000f09c (int16_t arg3) {
                                                             |     int16_t var_4h;
                                                             |     int16_t var_8h;
                                                             |     int32_t var_8h_2;
                                                             |     int16_t var_14h;
                                                             |     r2 = arg3;
                                                             |     if (? >= ?) {
    0x0000f09c ldrbmi lr, [r0, sp, lsr 18]!                  |         
                                                             |     }
    0x0000f0a0 mov r8, r2                                    |     r8 = r2;
    0x0000f0a2 ldr r2, [pc, 0x17c]                           |     
    0x0000f0a4 sub sp, 0x18                                  |     
    0x0000f0a6 movs r4, 0                                    |     r4 = 0;
    0x0000f0a8 ldr r3, [pc, 0x178]                           |     r3 = *(0xf224);
    0x0000f0aa add r2, pc                                    |     r2 = 0x1e2d0;
    0x0000f0ac ldr r3, [r2, r3]                              |     
    0x0000f0ae add r2, sp, 4                                 |     r2 += var_4h;
    0x0000f0b0 ldr r3, [r3]                                  |     r3 = *(0x1e2d0);
    0x0000f0b2 str r3, [sp, 0x14]                            |     var_14h = r3;
    0x0000f0b4 mov.w r3, 0                                   |     r3 = 0;
    0x0000f0b8 add r3, sp, 8                                 |     r3 += var_8h;
    0x0000f0ba str.w r4, [r8]                                |     __asm ("str.w r4, [r8]");
    0x0000f0be bl 0xefac                                     |     r0 = fcn_0000efac (r0, r1, r2, r3);
    0x0000f0c2 cmp r0, 0                                     |     
                                                             |     if (r0 < 0) {
    0x0000f0c4 blt 0xf0f6                                    |         goto label_2;
                                                             |     }
    0x0000f0c6 ldr r6, [sp, 4]                               |     r6 = var_4h;
                                                             |     if (r6 == 0) {
    0x0000f0c8 cbz r6, 0xf0f4                                |         goto label_4;
                                                             |     }
    0x0000f0ca ldrd r4, r5, [sp, 8]                          |     __asm ("ldrd r4, r5, [var_8h]");
    0x0000f0ce orrs.w r3, r4, r5                             |     r3 = r4 | r5;
                                                             |     if (r3 == r4) {
    0x0000f0d2 beq 0xf0f4                                    |         goto label_4;
                                                             |     }
    0x0000f0d4 ldrb r3, [r6]                                 |     r3 = *(r6);
                                                             |     if (r3 != 0) {
    0x0000f0d6 cbnz r3, 0xf116                               |         goto label_5;
                                                             |     }
    0x0000f0d8 adds r3, r6, 1                                |     r3 = r6 + 1;
    0x0000f0da b 0xf0ec                                      |     
                                                             |     while (r1 != r2) {
    0x0000f0dc subs r4, 1                                    |         r4--;
    0x0000f0de mov r6, r3                                    |         r6 = r3;
    0x0000f0e0 mov r4, r2                                    |         r4 = r2;
    0x0000f0e2 ldrb r2, [r3], 1                              |         r2 = *(r3);
                                                             |         r3++;
    0x0000f0e6 sbc r5, r5, 0                                 |         __asm ("sbc r5, r5, 0");
                                                             |         if (r2 != 0) {
    0x0000f0ea cbnz r2, 0xf112                               |             goto label_6;
                                                             |         }
    0x0000f0ec subs r2, r4, 1                                |         r2 = r4 - 1;
    0x0000f0ee orrs.w r1, r2, r5                             |         r1 = r2 | r5;
    0x0000f0f2 bne 0xf0dc                                    |         
                                                             |     }
                                                             |     do {
                                                             | label_4:
    0x0000f0f4 movs r0, 0                                    |         r0 = 0;
                                                             | label_2:
    0x0000f0f6 ldr r2, [pc, 0x130]                           |         
    0x0000f0f8 ldr r3, [pc, 0x128]                           |         r3 = *(0xf224);
    0x0000f0fa add r2, pc                                    |         r2 = 0x1e328;
    0x0000f0fc ldr r3, [r2, r3]                              |         r3 = *(0x1e328);
    0x0000f0fe ldr r2, [r3]                                  |         r2 = *(0x1e328);
    0x0000f100 ldr r3, [sp, 0x14]                            |         r3 = var_14h;
    0x0000f102 eors r2, r3                                   |         r2 ^= r3;
    0x0000f104 mov.w r3, 0                                   |         r3 = 0;
                                                             |         if (r2 != r3) {
    0x0000f108 bne.w 0xf212                                  |             goto label_7;
                                                             |         }
    0x0000f10c add sp, 0x18                                  |         
    0x0000f10e pop.w {r4, r5, r6, r7, r8, sb, sl, pc}        |         
                                                             | label_6:
    0x0000f112 strd r4, r5, [sp, 8]                          |         __asm ("strd r4, r5, [var_8h]");
                                                             | label_5:
    0x0000f116 subs r3, r4, 1                                |         r3 = r4 - 1;
    0x0000f118 orrs r3, r5                                   |         r3 |= r5;
    0x0000f11a beq 0xf0f4                                    |         
                                                             |     } while (r3 == r5);
    0x0000f11c movs r7, 0                                    |     r7 = 0;
    0x0000f11e mov r3, r6                                    |     r3 = r6;
    0x0000f120 mov r2, r7                                    |     r2 = r7;
    0x0000f122 mov lr, r7                                    |     lr = r7;
    0x0000f124 rsb.w ip, r6, 1                               |     
    0x0000f128 b 0xf138                                      |     
                                                             |     while (r1 != 0) {
    0x0000f12a adds r2, 1                                    |         r2++;
    0x0000f12c movs r1, 0                                    |         r1 = 0;
    0x0000f12e cmp r2, r4                                    |         
    0x0000f130 add.w r3, r6, r2                              |         r3 = r6 + r2;
    0x0000f134 sbcs r1, r5                                   |         __asm ("sbcs r1, r5");
                                                             |         if (r2 >= r4) {
    0x0000f136 bhs 0xf16a                                    |             goto label_8;
                                                             |         }
                                                             | label_0:
    0x0000f138 ldrb r1, [r3]                                 |         r1 = *(r3);
    0x0000f13a cmp r1, 0                                     |         
    0x0000f13c bne 0xf12a                                    |         
                                                             |     }
    0x0000f13e cmp r2, r4                                    |     
    0x0000f140 sbcs.w r0, r1, r5                             |     __asm ("sbcs.w r0, r1, r5");
                                                             |     if (r2 <= r4) {
    0x0000f144 blo 0xf150                                    |         goto label_9;
                                                             |     }
    0x0000f146 b 0xf160                                      |     goto label_10;
                                                             |     do {
    0x0000f148 cmp r2, r4                                    |         
    0x0000f14a sbcs.w r0, lr, r5                             |         __asm ("sbcs.w r0, lr, r5");
                                                             |         if (r2 >= r4) {
    0x0000f14e bhs 0xf15e                                    |             goto label_11;
                                                             |         }
                                                             | label_9:
    0x0000f150 add.w r2, ip, r3                              |         r2 = ip + r3;
    0x0000f154 ldrb r0, [r3, 1]!                             |         r0 = *((r3 += 1));
    0x0000f158 movs r1, 0                                    |         r1 = 0;
    0x0000f15a cmp r0, 0                                     |         
    0x0000f15c beq 0xf148                                    |         
                                                             |     } while (r0 == 0);
                                                             | label_11:
    0x0000f15e adds r3, r6, r2                               |     r3 = r6 + r2;
                                                             | label_10:
    0x0000f160 cmp r2, r4                                    |     
    0x0000f162 add.w r7, r7, 1                               |     r7++;
    0x0000f166 sbcs r1, r5                                   |     __asm ("sbcs r1, r5");
                                                             |     if (r2 <= r4) {
    0x0000f168 blo 0xf138                                    |         goto label_0;
                                                             |     }
                                                             | label_8:
    0x0000f16a ldrb r3, [r3, -0x1]                           |     r3 = *((r3 - 0x1));
    0x0000f16e cmp r3, 0                                     |     
                                                             |     if (r3 != 0) {
    0x0000f170 bne 0xf20e                                    |         goto label_12;
                                                             |     }
                                                             | label_3:
    0x0000f172 add.w sl, r7, 1                               |     sl = r7 + 1;
    0x0000f176 adds r0, r4, 1                                |     r0 = r4 + 1;
    0x0000f178 lsl.w sl, sl, 2                               |     sl <<= 2;
    0x0000f17c add r0, sl                                    |     r0 += sl;
    0x0000f17e blx 0x1b0c                                    |     r0 = strerror (r0);
    0x0000f182 mov sb, r0                                    |     sb = r0;
    0x0000f184 str.w r0, [r8]                                |     __asm ("str.w r0, [r8]");
    0x0000f188 cmp r0, 0                                     |     
                                                             |     if (r0 == 0) {
    0x0000f18a beq 0xf216                                    |         goto label_13;
                                                             |     }
    0x0000f18c add.w r8, r0, sl                              |     r8 = r0 + sl;
    0x0000f190 mov r2, r4                                    |     r2 = r4;
    0x0000f192 mov r1, r6                                    |     r1 = r6;
    0x0000f194 mov r0, r8                                    |     r0 = r8;
    0x0000f196 blx 0x19c8                                    |     mmap64 ()
    0x0000f19a cmp r7, 1                                     |     
    0x0000f19c mov.w r2, 0                                   |     r2 = 0;
    0x0000f1a0 it hi                                         |     
                                                             |     if (r7 <= 1) {
    0x0000f1a2 movhi ip, 1                                   |         
                                                             |     }
    0x0000f1a6 strb.w r2, [r8, r4]                           |     *((r8 + r4)) = r2;
    0x0000f1aa it hi                                         |     
                                                             |     if (r7 <= 1) {
    0x0000f1ac subhi r0, ip, r6                              |         r0 = ip - r6;
                                                             |     }
    0x0000f1ae movs r6, r0                                   |     r6 = r0;
    0x0000f1b0 str r2, [r8, -0x4]                            |     *((r8 - 0x4)) = r2;
    0x0000f1b4 it hi                                         |     
                                                             |     if (r6 <= r0) {
    0x0000f1b6 movhi lr, r2                                  |         lr = r2;
                                                             |     }
    0x0000f1b8 str.w r8, [sb]                                |     __asm ("str.w r8, [sb]");
                                                             |     if (r6 > r0) {
    0x0000f1bc bhi 0xf1d0                                    |         goto label_14;
                                                             |     }
    0x0000f1be b 0xf20a                                      |     goto label_15;
                                                             |     do {
    0x0000f1c0 cmp ip, r7                                    |         
    0x0000f1c2 add.w r2, r2, 1                               |         r2++;
                                                             |         if (ip >= r7) {
    0x0000f1c6 bhs 0xf20a                                    |             goto label_15;
                                                             |         }
                                                             | label_1:
    0x0000f1c8 cmp r2, r4                                    |         
    0x0000f1ca sbcs.w r3, lr, r5                             |         __asm ("sbcs.w r3, lr, r5");
                                                             |         if (r2 >= r4) {
    0x0000f1ce bhs 0xf20a                                    |             goto label_15;
                                                             |         }
                                                             | label_14:
    0x0000f1d0 ldrb.w r3, [r8, r2]                           |         r3 = *((r8 + r2));
    0x0000f1d4 add.w sl, r8, r2                              |         sl = r8 + r2;
    0x0000f1d8 cmp r3, 0                                     |         
    0x0000f1da bne 0xf1c0                                    |         
                                                             |     } while (r3 != 0);
    0x0000f1dc ldrb r3, [r6, r2]                             |     r3 = *((r6 + r2));
    0x0000f1de adds r1, r6, r2                               |     r1 = r6 + r2;
                                                             |     if (r3 != 0) {
    0x0000f1e0 cbnz r3, 0xf1fe                               |         goto label_16;
                                                             |     }
    0x0000f1e2 cmp r2, r4                                    |     
    0x0000f1e4 sbcs r3, r5                                   |     __asm ("sbcs r3, r5");
                                                             |     if (r2 <= r4) {
    0x0000f1e6 blo 0xf1f0                                    |         goto label_17;
                                                             |     }
    0x0000f1e8 b 0xf1fe                                      |     goto label_16;
                                                             |     do {
    0x0000f1ea cmp r2, r4                                    |         
    0x0000f1ec sbcs r3, r5                                   |         __asm ("sbcs r3, r5");
                                                             |         if (r2 >= r4) {
    0x0000f1ee bhs 0xf1fa                                    |             goto label_18;
                                                             |         }
                                                             | label_17:
    0x0000f1f0 adds r2, r0, r1                               |         r2 = r0 + r1;
    0x0000f1f2 ldrb r3, [r1, 1]!                             |         r3 = *((r1 += 1));
    0x0000f1f6 cmp r3, 0                                     |         
    0x0000f1f8 beq 0xf1ea                                    |         
                                                             |     } while (r3 == 0);
                                                             | label_18:
    0x0000f1fa add.w sl, r8, r2                              |     sl = r8 + r2;
                                                             | label_16:
    0x0000f1fe str.w sl, [sb, ip, lsl 2]                     |     __asm ("str.w sl, [sb, ip, lsl 2]");
    0x0000f202 add.w ip, ip, 1                               |     
    0x0000f206 cmp ip, r7                                    |     
                                                             |     if (ip <= r7) {
    0x0000f208 blo 0xf1c8                                    |         goto label_1;
                                                             |     }
                                                             | label_15:
    0x0000f20a mov r0, r7                                    |     r0 = r7;
    0x0000f20c b 0xf0f6                                      |     goto label_2;
                                                             | label_12:
    0x0000f20e adds r7, 1                                    |     r7++;
    0x0000f210 b 0xf172                                      |     goto label_3;
                                                             | label_7:
    0x0000f212 blx 0x1a1c                                    |     stat64 ();
                                                             | label_13:
    0x0000f216 blx 0x1be4                                    |     r0 = isoc99_sscanf ();
    0x0000f21a ldr r0, [r0]                                  |     r0 = *(r0);
    0x0000f21c rsbs r0, r0, 0                                |     r0 -= ;
    0x0000f21e b 0xf0f6                                      |     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/bin/kmod @ 0xf22c */
                                                                     | #include <stdint.h>
                                                                     |  
    ; (fcn) fcn.0000f22c ()                                          | void fcn_0000f22c (int16_t arg_1h, int16_t arg1, int16_t arg2) {
                                                                     |     int16_t var_1h;
                                                                     |     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;
                                                                     |     int32_t var_20h_2;
                                                                     |     int16_t var_2ch;
                                                                     |     r0 = arg1;
                                                                     |     r1 = arg2;
    0x0000f22c ldr r3, [r0, 0x10]                                    |     r3 = *((r0 + 0x10));
    0x0000f22e push.w {r4, r5, r6, r7, r8, sb, sl, fp, lr}           |     
    0x0000f232 sub sp, 0x34                                          |     
    0x0000f234 ldr r2, [pc, 0x214]                                   |     
    0x0000f236 movs r5, 0                                            |     r5 = 0;
    0x0000f238 movs r2, r0                                           |     r2 = r0;
    0x0000f23a movs r0, r0                                           |     
    0x0000f23c str r3, [sp, 8]                                       |     var_8h = r3;
    0x0000f23e tst.w r4, 2                                           |     
    0x0000f242 ldr r3, [pc, 0x20c]                                   |     r3 = *(0xf452);
    0x0000f244 add r2, pc                                            |     r2 = 0x1e694;
    0x0000f246 str r1, [sp, 4]                                       |     var_4h = r1;
    0x0000f248 ite ne                                                |     
                                                                     |     if ((r4 & 2) == 0) {
    0x0000f24a movne r6, 4                                           |         r6 = 4;
                                                                     |     }
                                                                     |     if ((r4 & 2) != 0) {
    0x0000f24c moveq r6, 8                                           |         r6 = 8;
                                                                     |     }
    0x0000f24e ldr r3, [r2, r3]                                      |     
    0x0000f250 add r2, sp, 0x1c                                      |     r2 += var_1ch;
    0x0000f252 ldr r3, [r3]                                          |     r3 = *(0x1e694);
    0x0000f254 str r3, [sp, 0x2c]                                    |     var_2ch = r3;
    0x0000f256 mov.w r3, 0                                           |     r3 = 0;
    0x0000f25a str r5, [r1]                                          |     *(r1) = r5;
    0x0000f25c ldr r1, [pc, 0x1f4]                                   |     
    0x0000f25e add r3, sp, 0x20                                      |     r3 += var_20h;
    0x0000f260 str r6, [sp]                                          |     *(sp) = r6;
    0x0000f262 add r1, pc                                            |     r1 = 0x1e6ba;
    0x0000f264 bl 0xefac                                             |     r0 = fcn_0000efac (r0, r1, r2, r3);
    0x0000f268 subs r3, r0, 0                                        |     r3 = r0 - 0;
                                                                     |     if (r3 < r0) {
    0x0000f26a blt.w 0xf3c4                                          |         goto label_2;
                                                                     |     }
    0x0000f26e ldr r4, [sp, 0x1c]                                    |     r4 = var_1ch;
    0x0000f270 cmp r4, 0                                             |     
                                                                     |     if (r4 == 0) {
    0x0000f272 beq.w 0xf3fe                                          |         goto label_3;
                                                                     |     }
    0x0000f276 ldrd r3, r2, [sp, 0x20]                               |     __asm ("ldrd r3, r2, [var_20h]");
    0x0000f27a orrs.w r1, r3, r2                                     |     r1 = r3 | r2;
                                                                     |     if (r1 == r3) {
    0x0000f27e beq.w 0xf3e0                                          |         goto label_4;
                                                                     |     }
    0x0000f282 ands r0, r3, 0x3f                                     |     r0 = r3 & 0x3f;
    0x0000f286 str r0, [sp, 0xc]                                     |     var_ch = r0;
                                                                     |     if (r0 != r3) {
    0x0000f288 bne.w 0xf438                                          |         goto label_5;
                                                                     |     }
    0x0000f28c lsr.w r8, r3, 6                                       |     r8 = r3 >> 6;
    0x0000f290 ldr.w sb, [r7]                                        |     sb = *(r7);
    0x0000f294 orr.w r8, r8, r2, lsl 26                              |     r8 |= (r2 << 26);
    0x0000f298 sub.w r5, r4, sb                                      |     r5 = r4 - sb;
    0x0000f29c cmp.w r8, 0                                           |     
                                                                     |     if (r8 <= 0) {
    0x0000f2a0 ble.w 0xf402                                          |         goto label_6;
                                                                     |     }
    0x0000f2a4 adds r1, r5, 1                                        |     r1 = r5 + 1;
    0x0000f2a6 strd r4, r5, [sp, 0x10]                               |     __asm ("strd r4, r5, [var_10h]");
    0x0000f2aa add r1, r6                                            |     r1 += r6;
    0x0000f2ac mov r4, r8                                            |     r4 = r8;
    0x0000f2ae add.w sl, sb, r1                                      |     sl = sb + r1;
    0x0000f2b2 ldrd r6, r7, [r7, 8]                                  |     __asm ("ldrd r6, r7, [r7, 8]");
    0x0000f2b6 mov fp, sl                                            |     
    0x0000f2b8 mov r5, r0                                            |     r5 = r0;
    0x0000f2ba mov sl, r0                                            |     sl = r0;
    0x0000f2bc mov r8, r0                                            |     r8 = r0;
    0x0000f2be b 0xf2c2                                              |     
                                                                     |     while (r4 != r3) {
    0x0000f2c0 mov r8, r3                                            |         r8 = r3;
    0x0000f2c2 sub.w r3, fp, sb                                      |         r3 = fp - sb;
    0x0000f2c6 subs r3, 1                                            |         r3--;
    0x0000f2c8 cmp r3, r6                                            |         
    0x0000f2ca sbcs.w r3, sl, r7                                     |         __asm ("sbcs.w r3, sl, r7");
                                                                     |         if (r3 >= r6) {
    0x0000f2ce bhs.w 0xf414                                          |             goto label_7;
                                                                     |         }
    0x0000f2d2 ldrb r3, [fp, -0x1]                                   |         r3 = *((fp - 0x1));
    0x0000f2d6 cmp r3, 0x2e                                          |         
    0x0000f2d8 ite eq                                                |         
                                                                     |         if (r3 != 0x2e) {
    0x0000f2da moveq r0, fp                                          |             r0 = fp;
                                                                     |         }
                                                                     |         if (r3 == 0x2e) {
    0x0000f2dc subne r0, fp, 1                                       |             r0 = fp - 1;
                                                                     |         }
    0x0000f2e0 add.w fp, fp, 0x40                                    |         
    0x0000f2e4 blx 0x1bb0                                            |         fcn_00001bb0 ();
    0x0000f2e8 add.w r3, r8, 1                                       |         r3 = r8 + 1;
    0x0000f2ec adds r0, 1                                            |         r0++;
    0x0000f2ee cmp r4, r3                                            |         
    0x0000f2f0 add r5, r0                                            |         r5 += r0;
    0x0000f2f2 bne 0xf2c0                                            |         
                                                                     |     }
    0x0000f2f4 ldr r4, [sp, 0x10]                                    |     r4 = var_10h;
    0x0000f2f6 mov fp, r5                                            |     
    0x0000f2f8 str.w r8, [sp, 0x10]                                  |     __asm ("str.w r8, [var_10h]");
    0x0000f2fc lsl.w r8, r3, 4                                       |     r8 = r3 << 4;
    0x0000f300 ldr r5, [sp, 0x14]                                    |     r5 = var_14h;
    0x0000f302 add.w r0, r8, fp                                      |     r0 = r8 + fp;
    0x0000f306 str r3, [sp, 0x14]                                    |     var_14h = r3;
    0x0000f308 blx 0x1b0c                                            |     strerror (r0);
    0x0000f30c ldr r3, [sp, 4]                                       |     r3 = var_4h;
    0x0000f30e str r0, [r3]                                          |     *(r3) = r0;
    0x0000f310 ldr r3, [sp, 0x14]                                    |     r3 = var_14h;
    0x0000f312 cmp r0, 0                                             |     
                                                                     |     if (r0 == 0) {
    0x0000f314 beq.w 0xf442                                          |         goto label_8;
                                                                     |     }
    0x0000f318 ldr r2, [sp, 8]                                       |     r2 = var_8h;
    0x0000f31a add.w sl, r0, r8                                      |     sl = r0 + r8;
    0x0000f31e str r3, [sp, 0x14]                                    |     var_14h = r3;
    0x0000f320 mov r3, r7                                            |     r3 = r7;
    0x0000f322 mov r8, r0                                            |     r8 = r0;
    0x0000f324 mov r7, r6                                            |     r7 = r6;
    0x0000f326 and r2, r2, 0x10                                      |     r2 &= 0x10;
    0x0000f32a mov r6, sl                                            |     r6 = sl;
    0x0000f32c str r2, [sp, 8]                                       |     var_8h = r2;
    0x0000f32e mov.w fp, 0                                           |     
    0x0000f332 ldr r2, [sp]                                          |     r2 = *(sp);
    0x0000f334 mov sl, r3                                            |     sl = r3;
    0x0000f336 add r2, r5                                            |     r2 += r5;
    0x0000f338 add sb, r2                                            |     sb += r2;
                                                                     | label_0:
    0x0000f33a ldr r3, [sp]                                          |     r3 = *(sp);
    0x0000f33c adds r1, r5, r3                                       |     r1 = r5 + r3;
    0x0000f33e mov.w r3, 0                                           |     r3 = 0;
    0x0000f342 adc r2, r3, 0                                         |     __asm ("adc r2, r3, 0");
    0x0000f346 cmp r7, r1                                            |     
    0x0000f348 sbcs.w r2, sl, r2                                     |     __asm ("sbcs.w r2, sl, r2");
                                                                     |     if (r7 <= r1) {
    0x0000f34c blo 0xf426                                            |         goto label_9;
                                                                     |     }
    0x0000f34e ldr r3, [sp, 8]                                       |     r3 = var_8h;
    0x0000f350 cmp r3, 0                                             |     
                                                                     |     if (r3 == 0) {
    0x0000f352 beq 0xf3e4                                            |         goto label_10;
                                                                     |     }
    0x0000f354 ldr r0, [sp, 0xc]                                     |     r0 = var_ch;
    0x0000f356 mov ip, r4                                            |     
    0x0000f358 movs r2, 0                                            |     r2 = 0;
                                                                     |     do {
    0x0000f35a ldrb r3, [ip], 1                                      |         r3 = *(ip);
                                                                     |         ip++;
    0x0000f35e lsls r2, r2, 8                                        |         r2 <<= 8;
    0x0000f360 orr.w r2, r2, r0, lsr 24                              |         r2 |= (r0 >> 24);
    0x0000f364 cmp sb, ip                                            |         
    0x0000f366 orr.w r0, r3, r0, lsl 8                               |         r0 = r3 | (r0 << 8);
    0x0000f36a bne 0xf35a                                            |         
                                                                     |     } while (sb != ip);
                                                                     | label_1:
    0x0000f36c cmp r1, r7                                            |     
    0x0000f36e mov.w r3, 0                                           |     r3 = 0;
    0x0000f372 sbcs.w r1, r3, sl                                     |     __asm ("sbcs.w r1, r3, sl");
                                                                     |     if (r1 >= r7) {
    0x0000f376 bhs 0xf414                                            |         goto label_7;
                                                                     |     }
    0x0000f378 ldr r3, [sp]                                          |     r3 = *(sp);
    0x0000f37a adds r5, 0x40                                         |     r5 += 0x40;
    0x0000f37c ldrb r1, [r4, r3]                                     |     r1 = *((r4 + r3));
    0x0000f37e adds r4, 0x40                                         |     r4 += 0x40;
    0x0000f380 strd r0, r2, [r8]                                     |     __asm ("strd r0, r2, [r8]");
    0x0000f384 movs r2, 0x55                                         |     r2 = 0x55;
    0x0000f386 str.w r6, [r8, 0xc]                                   |     __asm ("str.w r6, [r8, 0xc]");
    0x0000f38a add.w r8, r8, 0x10                                    |     r8 += 0x10;
    0x0000f38e cmp r1, 0x2e                                          |     
    0x0000f390 str r2, [r8, -0x8]                                    |     *((r8 - 0x8)) = r2;
    0x0000f394 ite eq                                                |     
                                                                     |     if (r1 != 0x2e) {
    0x0000f396 addeq r1, sb, 1                                       |         r1 = sb + 1;
                                                                     |     }
                                                                     |     if (r1 != 0x2e) {
    0x0000f39a mov r1, sb                                            |         r1 = sb;
                                                                     |     }
    0x0000f39c mov r0, r1                                            |     r0 = r1;
    0x0000f39e str r1, [sp, 4]                                       |     var_4h = r1;
    0x0000f3a0 blx 0x1bb0                                            |     fcn_00001bb0 ();
    0x0000f3a4 ldr r1, [sp, 4]                                       |     r1 = var_4h;
    0x0000f3a6 adds r2, r0, 1                                        |     r2 = r0 + 1;
    0x0000f3a8 mov r0, r6                                            |     r0 = r6;
    0x0000f3aa add r6, r2                                            |     r6 += r2;
    0x0000f3ac blx 0x19c8                                            |     mmap64 ()
    0x0000f3b0 ldr r3, [sp, 0x10]                                    |     r3 = var_10h;
    0x0000f3b2 add.w sb, sb, 0x40                                    |     sb += 0x40;
    0x0000f3b6 add.w r2, fp, 1                                       |     r2 += arg_1h;
    0x0000f3ba cmp fp, r3                                            |     
                                                                     |     if (fp != r3) {
    0x0000f3bc beq 0xf3c2                                            |         
    0x0000f3be mov fp, r2                                            |         
    0x0000f3c0 b 0xf33a                                              |         goto label_0;
                                                                     |     }
    0x0000f3c2 ldr r3, [sp, 0x14]                                    |     r3 = var_14h;
                                                                     |     do {
                                                                     | label_2:
    0x0000f3c4 ldr r1, [pc, 0x90]                                    |         
    0x0000f3c6 ldr r2, [pc, 0x88]                                    |         r2 = *(0xf452);
    0x0000f3c8 add r1, pc                                            |         r1 = 0x1e824;
    0x0000f3ca ldr r2, [r1, r2]                                      |         r2 = *(0x1e824);
    0x0000f3cc ldr r1, [r2]                                          |         r1 = *(0x1e824);
    0x0000f3ce ldr r2, [sp, 0x2c]                                    |         r2 = var_2ch;
    0x0000f3d0 eors r1, r2                                           |         r1 ^= r2;
    0x0000f3d2 mov.w r2, 0                                           |         r2 = 0;
                                                                     |         if (r1 != r2) {
    0x0000f3d6 bne 0xf43e                                            |             goto label_11;
                                                                     |         }
    0x0000f3d8 mov r0, r3                                            |         r0 = r3;
    0x0000f3da add sp, 0x34                                          |         
    0x0000f3dc pop.w {r4, r5, r6, r7, r8, sb, sl, fp, pc}            |         
                                                                     | label_4:
    0x0000f3e0 mov r3, r5                                            |         r3 = r5;
    0x0000f3e2 b 0xf3c4                                              |         
                                                                     |     } while (1);
                                                                     | label_10:
    0x0000f3e4 ldrd r2, r0, [sp, 8]                                  |     __asm ("ldrd r2, r0, [var_8h]");
    0x0000f3e8 mov ip, sb                                            |     
                                                                     |     do {
    0x0000f3ea ldrb r3, [ip, -0x1]!                                  |         r3 = *((ip -= 0x1));
    0x0000f3ee lsls r2, r2, 8                                        |         r2 <<= 8;
    0x0000f3f0 orr.w r2, r2, r0, lsr 24                              |         r2 |= (r0 >> 24);
    0x0000f3f4 cmp r4, ip                                            |         
    0x0000f3f6 orr.w r0, r3, r0, lsl 8                               |         r0 = r3 | (r0 << 8);
    0x0000f3f8 movs r0, 0                                            |         r0 = 0;
    0x0000f3fa bne 0xf3ea                                            |         
                                                                     |     } while (r0 != 0);
    0x0000f3fc b 0xf36c                                              |     goto label_1;
                                                                     | label_3:
    0x0000f3fe mov r3, r4                                            |     r3 = r4;
    0x0000f400 b 0xf3c4                                              |     goto label_2;
                                                                     | label_6:
    0x0000f402 lsl.w r0, r8, 4                                       |     r0 = r8 << 4;
    0x0000f406 blx 0x1b0c                                            |     strerror (r0);
    0x0000f40a ldr r3, [sp, 4]                                       |     r3 = var_4h;
    0x0000f40c str r0, [r3]                                          |     *(r3) = r0;
                                                                     |     if (r0 != 0) {
    0x0000f40e cbz r0, 0xf442                                        |         
    0x0000f410 mov r3, r8                                            |         r3 = r8;
    0x0000f412 b 0xf3c4                                              |         goto label_2;
                                                                     | label_7:
    0x0000f414 ldr r3, [pc, 0x44]                                    |         
    0x0000f416 movs r2, 0xca                                         |         r2 = 0xca;
    0x0000f418 ldr r1, [pc, 0x44]                                    |         
    0x0000f41a ldr r0, [pc, 0x48]                                    |         
    0x0000f41c add r3, pc                                            |         r3 = 0x1e87c;
    0x0000f41e add r1, pc                                            |         r1 = 0x1e882;
    0x0000f420 add r0, pc                                            |         r0 = 0x1e88a;
    0x0000f422 blx 0x1de0                                            |         fcn_00001de0 ();
                                                                     | label_9:
    0x0000f426 ldr r3, [pc, 0x40]                                    |         
    0x0000f428 movs r2, 0x89                                         |         r2 = 0x89;
    0x0000f42a ldr r1, [pc, 0x40]                                    |         
    0x0000f42c ldr r0, [pc, 0x40]                                    |         
    0x0000f42e add r3, pc                                            |         r3 = 0x1e89c;
    0x0000f430 add r1, pc                                            |         r1 = 0x1e8a2;
    0x0000f432 add r0, pc                                            |         r0 = 0x1e8a6;
    0x0000f434 blx 0x1de0                                            |         fcn_00001de0 ();
                                                                     | label_5:
    0x0000f438 mvn r3, 0x15                                          |         r3 = ~0x15;
    0x0000f43c b 0xf3c4                                              |         goto label_2;
                                                                     | label_11:
    0x0000f43e blx 0x1a1c                                            |         stat64 ();
                                                                     |     }
                                                                     | label_8:
    0x0000f442 blx 0x1be4                                            |     r0 = isoc99_sscanf ();
    0x0000f446 ldr r3, [r0]                                          |     r3 = *(r0);
    0x0000f448 rsbs r3, r3, 0                                        |     r3 -= ;
    0x0000f44a b 0xf3c4                                              |     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/bin/kmod @ 0xf474 */
                                                                     | #include <stdint.h>
                                                                     |  
                                                                     | #define BIT_MASK(t,v) ((t)(-((v)!= 0)))&(((t)-1)>>((sizeof(t)*CHAR_BIT)-(v)))
                                                                     |  
    ; (fcn) fcn.0000f474 ()                                          | void fcn_0000f474 (int16_t arg1, int16_t arg2) {
                                                                     |     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_30h;
                                                                     |     int16_t var_3ch;
                                                                     |     r0 = arg1;
                                                                     |     r1 = arg2;
    0x0000f474 ldr r2, [pc, 0x1ec]                                   |     
    0x0000f476 ldr r3, [pc, 0x1f0]                                   |     r3 = *(0xf66a);
    0x0000f478 push.w {r4, r5, r6, r7, r8, sb, sl, fp, lr}           |     
    0x0000f47c sub sp, 0x44                                          |     
    0x0000f47e add r2, pc                                            |     r2 = 0x1eae6;
    0x0000f480 ldr.w r8, [r0, 0x38]                                  |     r8 = *((r0 + 0x38));
    0x0000f484 mov r7, r1                                            |     r7 = r1;
    0x0000f486 ldr r3, [r2, r3]                                      |     
    0x0000f488 ldr r2, [r0, 0x30]                                    |     r2 = *((r0 + 0x30));
    0x0000f48a ldr.w fp, [r0, 8]                                     |     fp = *((r0 + 8));
    0x0000f48e ldr r3, [r3]                                          |     r3 = *(0x1eae6);
    0x0000f490 str r3, [sp, 0x3c]                                    |     var_3ch = r3;
    0x0000f492 mov.w r3, 0                                           |     r3 = 0;
    0x0000f496 ldr r3, [r0, 0x3c]                                    |     r3 = *((r0 + 0x3c));
    0x0000f498 str r2, [sp, 0x14]                                    |     var_14h = r2;
    0x0000f49a ldr r2, [r0, 0xc]                                     |     r2 = *((r0 + 0xc));
    0x0000f49c cmp r8, fp                                            |     
    0x0000f49e ldr r1, [r0, 0x34]                                    |     r1 = *((r0 + 0x34));
    0x0000f4a0 sbcs r3, r2                                           |     __asm ("sbcs r3, r2");
    0x0000f4a2 str r2, [sp, 0x1c]                                    |     var_1ch = r2;
    0x0000f4a4 str r1, [sp, 0x18]                                    |     var_18h = r1;
                                                                     |     if (r8 >= fp) {
    0x0000f4a6 bhs.w 0xf648                                          |         goto label_5;
                                                                     |     }
    0x0000f4aa ldrh r6, [r0, 0x20]                                   |     r6 = *((r0 + 0x20));
    0x0000f4ac mov r4, r0                                            |     r4 = r0;
    0x0000f4ae ldr r3, [r0]                                          |     r3 = *(r0);
    0x0000f4b0 cmp r6, 1                                             |     
    0x0000f4b2 str r3, [sp, 0x10]                                    |     var_10h = r3;
                                                                     |     if (r6 < 1) {
    0x0000f4b4 bls 0xf5ac                                            |         goto label_6;
                                                                     |     }
    0x0000f4b6 movs r5, 1                                            |     r5 = 1;
    0x0000f4b8 add.w sl, sp, 0x30                                    |     sl += var_30h;
    0x0000f4bc add.w sb, sp, 0x28                                    |     sb += var_28h;
    0x0000f4c0 add r3, sp, 0x24                                      |     r3 += var_24h;
    0x0000f4c2 str r3, [sp, 0xc]                                     |     var_ch = r3;
                                                                     | label_0:
    0x0000f4c4 ldr r3, [sp, 0xc]                                     |     r3 = var_ch;
    0x0000f4c6 mov r2, sb                                            |     r2 = sb;
    0x0000f4c8 mov r1, r5                                            |     r1 = r5;
    0x0000f4ca mov r0, r4                                            |     r0 = r4;
    0x0000f4cc str r3, [sp]                                          |     *(sp) = r3;
    0x0000f4ce mov r3, sl                                            |     r3 = sl;
    0x0000f4d0 bl 0xea20                                             |     r0 = fcn_0000ea20 (r0, r1, r2, r3);
    0x0000f4d4 cmp r0, 0                                             |     
                                                                     |     if (r0 < 0) {
    0x0000f4d6 blt 0xf5a4                                            |         goto label_7;
                                                                     |     }
    0x0000f4d8 ldr r3, [sp, 0x14]                                    |     r3 = var_14h;
    0x0000f4da movs r2, 0                                            |     r2 = 0;
    0x0000f4dc ldr r1, [sp, 0x24]                                    |     r1 = var_24h;
    0x0000f4de cmp r1, r3                                            |     
    0x0000f4e0 ldr r3, [sp, 0x18]                                    |     r3 = var_18h;
    0x0000f4e2 sbcs.w r3, r2, r3                                     |     __asm ("sbcs.w r3, r2, r3");
                                                                     |     if (r1 >= r3) {
    0x0000f4e6 bhs 0xf5a4                                            |         goto label_7;
                                                                     |     }
    0x0000f4e8 ldr r3, [sp, 0x10]                                    |     r3 = var_10h;
    0x0000f4ea add r1, r8                                            |     r1 += r8;
    0x0000f4ec mov r0, r7                                            |     r0 = r7;
    0x0000f4ee add r1, r3                                            |     r1 += r3;
    0x0000f4f0 blx 0x1924                                            |     r0 = fcn_00001924 ();
    0x0000f4f4 mov r3, r0                                            |     r3 = r0;
    0x0000f4f6 cmp r0, 0                                             |     
                                                                     |     if (r0 != 0) {
    0x0000f4f8 bne 0xf5a4                                            |         goto label_7;
                                                                     |     }
    0x0000f4fa cmp r5, r6                                            |     
                                                                     |     if (r5 >= r6) {
    0x0000f4fc bhs.w 0xf654                                          |         goto label_8;
                                                                     |     }
    0x0000f500 ldrh r2, [r4, 0x22]                                   |     r2 = *((r4 + 0x22));
    0x0000f502 ldr r7, [r4, 0x18]                                    |     r7 = *((r4 + 0x18));
    0x0000f504 ldr r1, [r4, 0x1c]                                    |     r1 = *((r4 + 0x1c));
    0x0000f506 mul r2, r5, r2                                        |     r2 = r5 * r2;
    0x0000f50a adds r7, r2, r7                                       |     r7 = r2 + r7;
    0x0000f50c adc.w r1, r1, r2, asr 31                              |     __asm ("adc.w r1, r1, r2, asr 31");
    0x0000f510 ldr r2, [sp, 0x1c]                                    |     r2 = var_1ch;
    0x0000f512 cmp r7, fp                                            |     
    0x0000f514 sbcs r1, r2                                           |     __asm ("sbcs r1, r2");
                                                                     |     if (r7 >= fp) {
    0x0000f516 bhs.w 0xf648                                          |         goto label_5;
                                                                     |     }
    0x0000f51a ldr r1, [r4, 0x10]                                    |     r1 = *((r4 + 0x10));
    0x0000f51c asrs r2, r7, 0x1f                                     |     r2 = r7 >> 0x1f;
    0x0000f51e adds r7, 8                                            |     r7 += 8;
    0x0000f520 adc r2, r2, 0                                         |     __asm ("adc r2, r2, 0");
    0x0000f524 lsls r0, r1, 0x1e                                     |     r0 = r1 << 0x1e;
    0x0000f526 itt pl                                                |     
                                                                     |     if (r0 < r1) {
    0x0000f528 movpl r5, 8                                           |         r5 = 8;
                                                                     |     }
                                                                     |     if (r0 < r1) {
    0x0000f52a movpl r6, r5                                          |         r6 = r5;
                                                                     |     }
                                                                     |     if (r0 < r1) {
    0x0000f52c bmi 0xf5b2                                            |         goto label_9;
                                                                     |     }
                                                                     | label_2:
    0x0000f52e adds r0, r7, r6                                       |     r0 = r7 + r6;
    0x0000f530 adc r2, r2, 0                                         |     __asm ("adc r2, r2, 0");
    0x0000f534 cmp fp, r0                                            |     
    0x0000f536 ldr r0, [sp, 0x1c]                                    |     r0 = var_1ch;
    0x0000f538 sbcs r0, r2                                           |     __asm ("sbcs r0, r2");
                                                                     |     if (fp <= r0) {
    0x0000f53a blo.w 0xf64c                                          |         goto label_10;
                                                                     |     }
    0x0000f53e ldr r2, [sp, 0x10]                                    |     r2 = var_10h;
    0x0000f540 ands r1, r1, 0x10                                     |     r1 &= 0x10;
    0x0000f544 add.w r0, r2, r7                                      |     r0 = r2 + r7;
                                                                     |     if (r1 == r1) {
    0x0000f548 beq 0xf5b8                                            |         goto label_11;
                                                                     |     }
    0x0000f54a subs r0, 1                                            |     r0--;
    0x0000f54c movs r1, 0                                            |     r1 = 0;
    0x0000f54e add r5, r0                                            |     r5 += r0;
    0x0000f550 mov r2, r1                                            |     r2 = r1;
                                                                     |     do {
    0x0000f552 ldrb ip, [r0, 1]!                                     |         ip = *((r0 += 1));
    0x0000f556 lsls r2, r2, 8                                        |         r2 <<= 8;
    0x0000f558 orr.w r2, r2, r1, lsr 24                              |         r2 |= (r1 >> 24);
    0x0000f55c cmp r0, r5                                            |         
    0x0000f55e orr.w r1, ip, r1, lsl 8                               |         r1 = ip | (r1 << 8);
    0x0000f560 movs r1, 1                                            |         r1 = 1;
    0x0000f562 bne 0xf552                                            |         
                                                                     |     } while (r1 != 1);
    0x0000f564 bic r8, r1, 2                                         |     r8 = BIT_MASK (r1, 2);
    0x0000f568 ldr r1, [r4, 4]                                       |     r1 = *((r4 + 4));
    0x0000f56a mov r5, r2                                            |     r5 = r2;
    0x0000f56c cmp r1, 0                                             |     
                                                                     |     if (r1 == 0) {
    0x0000f56e beq 0xf622                                            |         goto label_12;
                                                                     |     }
    0x0000f570 add r1, r7                                            |     r1 += r7;
                                                                     | label_4:
    0x0000f572 add r6, r1                                            |     r6 += r1;
                                                                     |     do {
    0x0000f574 strb r8, [r6, -0x1]!                                  |         *((r6 -= 0x1)) = r8;
    0x0000f578 lsr.w r2, r8, 8                                       |         r2 = r8 >> 8;
    0x0000f57c cmp r1, r6                                            |         
    0x0000f57e orr.w r8, r2, r5, lsl 24                              |         r8 = r2 | (r5 << 24);
    0x0000f582 lsr.w r5, r5, 8                                       |         r5 >>= 8;
    0x0000f586 bne 0xf574                                            |         
                                                                     |     } while (r1 != r6);
                                                                     | label_1:
    0x0000f588 ldr r1, [pc, 0xe0]                                    |     
    0x0000f58a ldr r2, [pc, 0xdc]                                    |     r2 = *(0xf66a);
    0x0000f58c add r1, pc                                            |     r1 = 0x1ebfc;
    0x0000f58e ldr r2, [r1, r2]                                      |     r2 = *(0x1ebfc);
    0x0000f590 ldr r1, [r2]                                          |     r1 = *(0x1ebfc);
    0x0000f592 ldr r2, [sp, 0x3c]                                    |     r2 = var_3ch;
    0x0000f594 eors r1, r2                                           |     r1 ^= r2;
    0x0000f596 mov.w r2, 0                                           |     r2 = 0;
                                                                     |     if (r1 != r2) {
    0x0000f59a bne 0xf650                                            |         goto label_13;
                                                                     |     }
    0x0000f59c mov r0, r3                                            |     r0 = r3;
    0x0000f59e add sp, 0x44                                          |     
    0x0000f5a0 pop.w {r4, r5, r6, r7, r8, sb, sl, fp, pc}            |     
                                                                     | label_7:
    0x0000f5a4 adds r5, 1                                            |     r5++;
    0x0000f5a6 uxth r5, r5                                           |     r5 = (int16_t) r5;
    0x0000f5a8 cmp r5, r6                                            |     
                                                                     |     if (r5 != r6) {
    0x0000f5aa bne 0xf4c4                                            |         goto label_0;
                                                                     |     }
                                                                     | label_6:
    0x0000f5ac mvn r3, 1                                             |     r3 = ~1;
    0x0000f5b0 b 0xf588                                              |     goto label_1;
                                                                     | label_9:
    0x0000f5b2 movs r5, 4                                            |     r5 = 4;
    0x0000f5b4 mov r6, r5                                            |     r6 = r5;
    0x0000f5b6 b 0xf52e                                              |     goto label_2;
                                                                     | label_11:
    0x0000f5b8 add.w ip, r0, r5                                      |     
    0x0000f5bc mov lr, r1                                            |     lr = r1;
                                                                     |     do {
    0x0000f5be ldrb r2, [ip, -0x1]!                                  |         r2 = *((ip -= 0x1));
    0x0000f5c2 lsl.w lr, lr, 8                                       |         lr <<= 8;
    0x0000f5c4 cmp r6, 0xe                                           |         
    0x0000f5c6 orr.w lr, lr, r1, lsr 24                              |         lr |= (r1 >> 24);
    0x0000f5ca orr.w r1, r2, r1, lsl 8                               |         r1 = r2 | (r1 << 8);
    0x0000f5ce rsb.w r2, ip, 1                                       |         r2 = 1 - ip;
    0x0000f5d2 add r2, r0                                            |         r2 += r0;
    0x0000f5d4 add r2, r5                                            |         r2 += r5;
    0x0000f5d6 cmp r2, r5                                            |         
    0x0000f5d8 bls 0xf5be                                            |         
                                                                     |     } while (r2 < r5);
    0x0000f5da ldr r2, [r4, 4]                                       |     r2 = *((r4 + 4));
    0x0000f5dc bic r5, r1, 2                                         |     r5 = BIT_MASK (r1, 2);
    0x0000f5e0 mov r8, lr                                            |     r8 = lr;
                                                                     |     if (r2 == 0) {
    0x0000f5e2 cbz r2, 0xf5fc                                        |         goto label_14;
                                                                     |     }
    0x0000f5e4 add r2, r7                                            |     r2 += r7;
                                                                     | label_3:
    0x0000f5e6 add r6, r2                                            |     r6 += r2;
                                                                     |     do {
    0x0000f5e8 strb r5, [r2], 1                                      |         *(r2) = r5;
                                                                     |         r2++;
    0x0000f5ec lsrs r1, r5, 8                                        |         r1 = r5 >> 8;
    0x0000f5ee cmp r6, r2                                            |         
    0x0000f5f0 orr.w r5, r1, r8, lsl 24                              |         r5 = r1 | (r8 << 24);
    0x0000f5f4 lsr.w r8, r8, 8                                       |         r8 >>= 8;
    0x0000f5f8 bne 0xf5e8                                            |         
                                                                     |     } while (r6 != r2);
    0x0000f5fa b 0xf588                                              |     goto label_1;
                                                                     | label_14:
    0x0000f5fc mov r0, fp                                            |     r0 = fp;
    0x0000f5fe str r3, [sp, 0xc]                                     |     var_ch = r3;
    0x0000f600 blx 0x1b0c                                            |     strerror (r0);
    0x0000f604 ldr r3, [sp, 0xc]                                     |     r3 = var_ch;
    0x0000f606 mov sb, r0                                            |     sb = r0;
    0x0000f608 str r0, [r4, 4]                                       |     *((r4 + 4)) = r0;
                                                                     |     if (r0 != 0) {
    0x0000f60a cbz r0, 0xf658                                        |         
    0x0000f60c mov r2, fp                                            |         r2 = fp;
    0x0000f60e ldr r1, [sp, 0x10]                                    |         r1 = var_10h;
    0x0000f610 str r3, [sp, 0xc]                                     |         var_ch = r3;
    0x0000f612 blx 0x19c8                                            |         mmap64 ()
    0x0000f616 ldr r3, [sp, 0xc]                                     |         r3 = var_ch;
    0x0000f618 add.w r2, sb, r7                                      |         r2 = sb + r7;
    0x0000f61c str.w sb, [r4]                                        |         __asm ("str.w sb, [r4]");
    0x0000f620 b 0xf5e6                                              |         goto label_3;
                                                                     | label_12:
    0x0000f622 mov r0, fp                                            |         r0 = fp;
    0x0000f624 str r3, [sp, 0xc]                                     |         var_ch = r3;
    0x0000f626 blx 0x1b0c                                            |         strerror (r0);
    0x0000f62a ldr r3, [sp, 0xc]                                     |         r3 = var_ch;
    0x0000f62c mov sb, r0                                            |         sb = r0;
    0x0000f62e str r0, [r4, 4]                                       |         *((r4 + 4)) = r0;
                                                                     |         if (r0 == 0) {
    0x0000f630 cbz r0, 0xf658                                        |             goto label_15;
                                                                     |         }
    0x0000f632 ldr r1, [sp, 0x10]                                    |         r1 = var_10h;
    0x0000f634 mov r2, fp                                            |         r2 = fp;
    0x0000f636 str r3, [sp, 0xc]                                     |         var_ch = r3;
    0x0000f638 blx 0x19c8                                            |         mmap64 ()
    0x0000f63c ldr r3, [sp, 0xc]                                     |         r3 = var_ch;
    0x0000f63e add.w r1, sb, r7                                      |         r1 = sb + r7;
    0x0000f642 str.w sb, [r4]                                        |         __asm ("str.w sb, [r4]");
    0x0000f646 b 0xf572                                              |         goto label_4;
                                                                     | label_5:
    0x0000f648 bl 0xe9c0                                             |         fcn_0000e9c0 ();
                                                                     | label_10:
    0x0000f64c bl 0xe9e0                                             |         fcn_0000e9e0 ();
                                                                     | label_13:
    0x0000f650 blx 0x1a1c                                            |         stat64 ();
                                                                     | label_8:
    0x0000f654 bl 0xea00                                             |         fcn_0000ea00 ();
                                                                     |     }
                                                                     | label_15:
    0x0000f658 blx 0x1be4                                            |     r0 = isoc99_sscanf ();
    0x0000f65c ldr r3, [r0]                                          |     r3 = *(r0);
    0x0000f65e rsbs r3, r3, 0                                        |     r3 -= ;
    0x0000f660 b 0xf588                                              |     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/bin/kmod @ 0xf670 */
                                                                     | #include <stdint.h>
                                                                     |  
    ; (fcn) fcn.0000f670 ()                                          | void fcn_0000f670 (int16_t arg1) {
                                                                     |     int16_t var_4h;
                                                                     |     int16_t var_ch;
                                                                     |     int16_t var_10h;
                                                                     |     int32_t var_10h_2;
                                                                     |     int16_t var_1ch;
                                                                     |     r0 = arg1;
    0x0000f670 push.w {r4, r5, r6, r7, r8, sb, sl, fp, lr}           |     
    0x0000f674 sub sp, 0x24                                          |     
    0x0000f676 ldr r5, [pc, 0x130]                                   |     
    0x0000f678 add r3, sp, 0x10                                      |     r3 += var_10h;
    0x0000f67a add r2, sp, 0xc                                       |     r2 += var_ch;
    0x0000f67c mov r7, r0                                            |     r7 = r0;
    0x0000f67e ldr r4, [pc, 0x12c]                                   |     r4 = *(0xf7ae);
    0x0000f680 add r5, pc                                            |     r5 = 0x1ee2e;
    0x0000f682 ldr r1, [pc, 0x12c]                                   |     
    0x0000f684 ldr r4, [r5, r4]                                      |     
    0x0000f686 add r1, pc                                            |     r1 = 0x1ee3c;
    0x0000f688 ldr r4, [r4]                                          |     r4 = *(0x1ee2e);
    0x0000f68a str r4, [sp, 0x1c]                                    |     var_1ch = r4;
    0x0000f68c mov.w r4, 0                                           |     r4 = 0;
    0x0000f690 bl 0xefac                                             |     r0 = fcn_0000efac (r0, r1, r2, r3);
    0x0000f694 subs r3, r0, 0                                        |     r3 = r0 - 0;
                                                                     |     if (r3 < r0) {
    0x0000f696 blt 0xf6c8                                            |         goto label_0;
                                                                     |     }
    0x0000f698 ldr r6, [sp, 0xc]                                     |     r6 = var_ch;
                                                                     |     if (r6 == 0) {
    0x0000f69a cbz r6, 0xf6c6                                        |         goto label_4;
                                                                     |     }
    0x0000f69c ldrd r4, r5, [sp, 0x10]                               |     __asm ("ldrd r4, r5, [var_10h]");
    0x0000f6a0 orrs.w r3, r4, r5                                     |     r3 = r4 | r5;
                                                                     |     if (r3 == r4) {
    0x0000f6a4 beq 0xf6c6                                            |         goto label_4;
                                                                     |     }
    0x0000f6a6 ldrb r3, [r6]                                         |     r3 = *(r6);
                                                                     |     if (r3 != 0) {
    0x0000f6a8 cbnz r3, 0xf6e8                                       |         goto label_5;
                                                                     |     }
    0x0000f6aa adds r3, r6, 1                                        |     r3 = r6 + 1;
    0x0000f6ac b 0xf6be                                              |     
                                                                     |     while (r1 != r2) {
    0x0000f6ae subs r4, 1                                            |         r4--;
    0x0000f6b0 mov r6, r3                                            |         r6 = r3;
    0x0000f6b2 mov r4, r2                                            |         r4 = r2;
    0x0000f6b4 ldrb r2, [r3], 1                                      |         r2 = *(r3);
                                                                     |         r3++;
    0x0000f6b8 sbc r5, r5, 0                                         |         __asm ("sbc r5, r5, 0");
                                                                     |         if (r2 != 0) {
    0x0000f6bc cbnz r2, 0xf6e4                                       |             goto label_6;
                                                                     |         }
    0x0000f6be subs r2, r4, 1                                        |         r2 = r4 - 1;
    0x0000f6c0 orrs.w r1, r2, r5                                     |         r1 = r2 | r5;
    0x0000f6c4 bne 0xf6ae                                            |         
                                                                     |     }
                                                                     |     do {
                                                                     | label_4:
    0x0000f6c6 movs r3, 0                                            |         r3 = 0;
                                                                     | label_0:
    0x0000f6c8 ldr r1, [pc, 0xe8]                                    |         
    0x0000f6ca ldr r2, [pc, 0xe0]                                    |         r2 = *(0xf7ae);
    0x0000f6cc add r1, pc                                            |         r1 = 0x1ee84;
    0x0000f6ce ldr r2, [r1, r2]                                      |         r2 = *(0x1ee84);
    0x0000f6d0 ldr r1, [r2]                                          |         r1 = *(0x1ee84);
    0x0000f6d2 ldr r2, [sp, 0x1c]                                    |         r2 = var_1ch;
    0x0000f6d4 eors r1, r2                                           |         r1 ^= r2;
    0x0000f6d6 mov.w r2, 0                                           |         r2 = 0;
                                                                     |         if (r1 != r2) {
    0x0000f6da bne 0xf798                                            |             goto label_7;
                                                                     |         }
    0x0000f6dc mov r0, r3                                            |         r0 = r3;
    0x0000f6de add sp, 0x24                                          |         
    0x0000f6e0 pop.w {r4, r5, r6, r7, r8, sb, sl, fp, pc}            |         
                                                                     | label_6:
    0x0000f6e4 strd r4, r5, [sp, 0x10]                               |         __asm ("strd r4, r5, [var_10h]");
                                                                     | label_5:
    0x0000f6e8 subs r3, r4, 1                                        |         r3 = r4 - 1;
    0x0000f6ea orrs r3, r5                                           |         r3 |= r5;
    0x0000f6ec beq 0xf6c6                                            |         
                                                                     |     } while (r3 == r5);
    0x0000f6ee ldr.w fp, [pc, 0xc8]                                  |     
    0x0000f6f2 movs r3, 0                                            |     r3 = 0;
    0x0000f6f4 mov r2, r3                                            |     r2 = r3;
    0x0000f6f6 add fp, pc                                            |     fp = 0x1eeb4;
                                                                     |     do {
                                                                     | label_2:
    0x0000f6f8 ldrb r1, [r6, r3]                                     |         r1 = *((r6 + r3));
    0x0000f6fa adds.w r8, r3, 1                                      |         r8 = r3 + 1;
    0x0000f6fe add.w sl, r6, r3                                      |         sl = r6 + r3;
    0x0000f702 adc sb, r2, 0                                         |         __asm ("adc sb, r2, 0");
                                                                     |         if (r1 != 0) {
    0x0000f706 cbz r1, 0xf74a                                        |             
    0x0000f708 cmp r8, r4                                            |             
    0x0000f70a sbcs.w r1, sb, r5                                     |             __asm ("sbcs.w r1, sb, r5");
                                                                     |             if (r8 >= r4) {
    0x0000f70e bhs 0xf756                                            |                 goto label_8;
                                                                     |             }
    0x0000f710 adds r3, 9                                            |             r3 += 9;
    0x0000f712 adc r2, r2, 0                                         |             __asm ("adc r2, r2, 0");
    0x0000f716 cmp r3, r4                                            |             
    0x0000f718 sbcs r2, r5                                           |             __asm ("sbcs r2, r5");
                                                                     |             if (r3 >= r4) {
    0x0000f71a bhs 0xf782                                            |                 goto label_9;
                                                                     |             }
    0x0000f71c movs r2, 9                                            |             r2 = 9;
    0x0000f71e mov r1, fp                                            |             r1 = fp;
    0x0000f720 mov r0, sl                                            |             r0 = sl;
    0x0000f722 blx 0x1da4                                            |             r0 = fcn_00001da4 ();
    0x0000f726 mov r3, r0                                            |             r3 = r0;
                                                                     |             if (r0 != 0) {
    0x0000f728 cbnz r0, 0xf788                                       |                 goto label_10;
                                                                     |             }
    0x0000f72a ldr r4, [r7, 4]                                       |             r4 = *((r7 + 4));
    0x0000f72c ldr r5, [r7]                                          |             r5 = *(r7);
    0x0000f72e sub.w r6, sl, r5                                      |             r6 = sl - r5;
                                                                     |             if (r4 == 0) {
    0x0000f732 cbz r4, 0xf75c                                        |                 goto label_11;
                                                                     |             }
                                                                     | label_1:
    0x0000f734 mov r0, sl                                            |             r0 = sl;
    0x0000f736 str r3, [sp, 4]                                       |             var_4h = r3;
    0x0000f738 blx 0x1bb0                                            |             r0 = fcn_00001bb0 ();
    0x0000f73a bics.w r1, sl, r0, lsl 8                              |             __asm ("bics.w r1, sl, r0, lsl 8");
    0x0000f73e mov r2, r0                                            |             r2 = r0;
    0x0000f740 adds r0, r4, r6                                       |             r0 = r4 + r6;
    0x0000f742 blx 0x1c2c                                            |             strtoull (r0, r1, r2);
    0x0000f746 ldr r3, [sp, 4]                                       |             r3 = var_4h;
    0x0000f748 b 0xf6c8                                              |             goto label_0;
                                                                     |         }
    0x0000f74a mov r3, r8                                            |         r3 = r8;
    0x0000f74c mov r2, sb                                            |         r2 = sb;
                                                                     | label_3:
    0x0000f74e cmp r3, r4                                            |         
    0x0000f750 sbcs.w r1, r2, r5                                     |         __asm ("sbcs.w r1, r2, r5");
    0x0000f754 blo 0xf6f8                                            |         
                                                                     |     } while (r3 <= r4);
                                                                     | label_8:
    0x0000f756 mvn r3, 1                                             |     r3 = ~1;
    0x0000f75a b 0xf6c8                                              |     goto label_0;
                                                                     | label_11:
    0x0000f75c ldr.w r8, [r7, 8]                                     |     r8 = *((r7 + 8));
    0x0000f760 str r0, [sp, 4]                                       |     var_4h = r0;
    0x0000f762 mov r0, r8                                            |     r0 = r8;
    0x0000f764 blx 0x1b0c                                            |     strerror (r0);
    0x0000f768 ldr r3, [sp, 4]                                       |     r3 = var_4h;
    0x0000f76a mov r4, r0                                            |     r4 = r0;
    0x0000f76c str r0, [r7, 4]                                       |     *((r7 + 4)) = r0;
                                                                     |     if (r0 != 0) {
    0x0000f76e cbz r0, 0xf79c                                        |         
    0x0000f770 mov r2, r8                                            |         r2 = r8;
    0x0000f772 mov r1, r5                                            |         r1 = r5;
    0x0000f774 str r3, [sp, 4]                                       |         var_4h = r3;
    0x0000f776 blx 0x19c8                                            |         mmap64 ()
    0x0000f77a str r4, [r7]                                          |         *(r7) = r4;
    0x0000f77c ldr r3, [sp, 4]                                       |         r3 = var_4h;
    0x0000f77e ldr r4, [r7, 4]                                       |         r4 = *((r7 + 4));
    0x0000f780 b 0xf734                                              |         goto label_1;
                                                                     | label_9:
    0x0000f782 mov r3, r8                                            |         r3 = r8;
    0x0000f784 mov r2, sb                                            |         r2 = sb;
    0x0000f786 b 0xf6f8                                              |         goto label_2;
                                                                     | label_10:
    0x0000f788 mov r0, sl                                            |         r0 = sl;
    0x0000f78a blx 0x1bb0                                            |         r0 = fcn_00001bb0 ();
    0x0000f78e adds.w r3, r0, r8                                     |         r3 = r0 + r8;
    0x0000f792 adc r2, sb, 0                                         |         __asm ("adc r2, sb, 0");
    0x0000f796 b 0xf74e                                              |         goto label_3;
                                                                     | label_7:
    0x0000f798 blx 0x1a1c                                            |         stat64 ();
                                                                     |     }
    0x0000f79c blx 0x1be4                                            |     r0 = isoc99_sscanf ();
    0x0000f7a0 ldr r3, [r0]                                          |     r3 = *(r0);
    0x0000f7a2 rsbs r3, r3, 0                                        |     r3 -= ;
    0x0000f7a4 b 0xf6c8                                              |     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/bin/kmod @ 0xf7bc */
                                                                     | #include <stdint.h>
                                                                     |  
    ; (fcn) fcn.0000f7bc ()                                          | void fcn_0000f7bc (int16_t arg_1h, int16_t arg_4h, int16_t arg1, int16_t arg2) {
                                                                     |     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;
                                                                     |     int16_t var_24h;
                                                                     |     int16_t var_28h;
                                                                     |     int16_t var_2ch;
                                                                     |     int16_t var_30h;
                                                                     |     int16_t var_34h;
                                                                     |     int16_t var_38h;
                                                                     |     int16_t var_3ch;
                                                                     |     int16_t var_40h;
                                                                     |     int16_t var_44h;
                                                                     |     int16_t var_48h;
                                                                     |     int16_t var_4ch;
                                                                     |     int16_t var_50h;
                                                                     |     int16_t var_54h;
                                                                     |     int16_t var_58h;
                                                                     |     int16_t var_5ch;
                                                                     |     int16_t var_60h;
                                                                     |     int16_t var_64h;
                                                                     |     int16_t var_6ch;
                                                                     |     int16_t var_70h;
                                                                     |     int16_t var_74h;
                                                                     |     int16_t var_78h;
                                                                     |     int16_t var_7ch;
                                                                     |     int16_t var_80h;
                                                                     |     int32_t var_80h_2;
                                                                     |     int16_t var_88h;
                                                                     |     int16_t var_8ch;
                                                                     |     int16_t var_90h;
                                                                     |     int16_t var_94h;
                                                                     |     int16_t var_9ch;
                                                                     |     r0 = arg1;
                                                                     |     r1 = arg2;
    0x0000f7bc push.w {r4, r5, r6, r7, r8, sb, sl, fp, lr}           |     
    0x0000f7c0 mov r5, r0                                            |     r5 = r0;
    0x0000f7c2 vpush {d8}                                            |     __asm ("vpush {d8}");
    0x0000f7c6 sub sp, 0xa4                                          |     
    0x0000f7c8 add r3, sp, 0x78                                      |     r3 += var_78h;
    0x0000f7ca add r2, sp, 0x6c                                      |     r2 += var_6ch;
    0x0000f7cc ldr.w r4, [pc, 0x758]                                 |     r4 = *(0x0000ff28);
    0x0000f7d0 strd r0, r1, [sp, 0x38]                               |     __asm ("strd r0, r1, [var_38h]");
    0x0000f7d4 ldr.w r1, [pc, 0x754]                                 |     
    0x0000f7d8 add r4, pc                                            |     r4 += pc;
    0x0000f7da ldr r1, [r4, r1]                                      |     r1 = *((r4 + r1));
    0x0000f7dc ldr r1, [r1]                                          |     r1 = *(0xff2c);
    0x0000f7de str r1, [sp, 0x9c]                                    |     var_9ch = r1;
    0x0000f7e0 mov.w r1, 0                                           |     r1 = 0;
    0x0000f7e4 ldr.w r1, [pc, 0x748]                                 |     
    0x0000f7e8 add r1, pc                                            |     r1 = 0x1f71c;
    0x0000f7ea bl 0xefac                                             |     r0 = fcn_0000efac (r0, r1, r2, r3);
    0x0000f7ee cmp r0, 0                                             |     
                                                                     |     if (r0 < 0) {
    0x0000f7f0 blt.w 0xf974                                          |         goto label_7;
                                                                     |     }
    0x0000f7f4 ldr.w r1, [pc, 0x73c]                                 |     
    0x0000f7f8 add r3, sp, 0x80                                      |     r3 += var_80h;
    0x0000f7fa add r2, sp, 0x70                                      |     r2 += var_70h;
    0x0000f7fc mov r0, r5                                            |     r0 = r5;
    0x0000f7fe add r1, pc                                            |     r1 = 0x1f736;
    0x0000f800 bl 0xefac                                             |     r0 = fcn_0000efac (r0, r1, r2, r3);
    0x0000f804 cmp r0, 0                                             |     
                                                                     |     if (r0 < 0) {
    0x0000f806 blt.w 0xf974                                          |         goto label_7;
                                                                     |     }
    0x0000f80a ldr r4, [r5, 0x10]                                    |     r4 = *((r5 + 0x10));
    0x0000f80c ldrd r0, r1, [sp, 0x80]                               |     __asm ("ldrd r0, r1, [var_80h]");
    0x0000f810 ands r3, r4, 2                                        |     r3 = r4 & 2;
    0x0000f814 str r3, [sp, 0x18]                                    |     var_18h = r3;
    0x0000f816 ite eq                                                |     
                                                                     |     if (r3 != r4) {
    0x0000f818 moveq r3, 0x18                                        |         r3 = 0x18;
                                                                     |     }
                                                                     |     if (r3 == r4) {
    0x0000f81a movne r3, 0x10                                        |         r3 = 0x10;
                                                                     |     }
    0x0000f81c str r3, [sp, 0x10]                                    |     var_10h = r3;
    0x0000f81e mov r5, r3                                            |     r5 = r3;
    0x0000f820 ldr r2, [sp, 0x10]                                    |     r2 = var_10h;
    0x0000f822 movs r3, 0                                            |     r3 = 0;
    0x0000f824 bl 0x113b0                                            |     fcn_000113b0 (r0, r1, r2, r3);
    0x0000f828 str r3, [sp, 0x4c]                                    |     var_4ch = r3;
    0x0000f82a orrs r3, r2                                           |     r3 |= r2;
    0x0000f82c str r0, [sp, 0x2c]                                    |     var_2ch = r0;
    0x0000f82e str r2, [sp, 0xc]                                     |     var_ch = r2;
                                                                     |     if (r3 != r2) {
    0x0000f830 bne.w 0xf974                                          |         goto label_7;
                                                                     |     }
    0x0000f834 ldr r1, [sp, 0x38]                                    |     r1 = var_38h;
    0x0000f836 cmp r0, 1                                             |     
    0x0000f838 ldr r3, [sp, 0x70]                                    |     r3 = var_70h;
    0x0000f83a ldr.w r8, [r1]                                        |     r8 = *(r1);
    0x0000f83e sub.w r3, r3, r8                                      |     r3 -= r8;
    0x0000f842 add.w r2, r3, r5                                      |     r2 = r3 + r5;
    0x0000f846 ldr r3, [sp, 0x6c]                                    |     r3 = var_6ch;
    0x0000f848 str r2, [sp, 0x54]                                    |     var_54h = r2;
    0x0000f84a str r2, [sp, 0x58]                                    |     var_58h = r2;
    0x0000f84c sub.w r3, r3, r8                                      |     r3 -= r8;
    0x0000f850 str r3, [sp, 0x20]                                    |     var_20h = r3;
    0x0000f852 asr.w r3, r3, 0x1f                                    |     r3 >>= 0x1f;
    0x0000f856 str r3, [sp, 0x24]                                    |     var_24h = r3;
    0x0000f858 mov r3, r2                                            |     r3 = r2;
    0x0000f85a mov.w r2, 0                                           |     r2 = 0;
    0x0000f85e str r2, [sp, 0x28]                                    |     var_28h = r2;
                                                                     |     if (r0 <= 1) {
    0x0000f860 ble.w 0xf974                                          |         goto label_7;
                                                                     |     }
    0x0000f864 mov sb, r3                                            |     sb = r3;
    0x0000f866 ldr.w fp, [pc, 0x6d0]                                 |     
    0x0000f86a movs r3, 1                                            |     r3 = 1;
    0x0000f86c and r2, r4, 0x10                                      |     r2 = r4 & 0x10;
    0x0000f870 str r3, [sp, 8]                                       |     var_8h = r3;
    0x0000f872 add.w r3, r8, 4                                       |     r3 = r8 + 4;
    0x0000f876 str r3, [sp, 0x40]                                    |     var_40h = r3;
    0x0000f878 add.w r3, r8, -1                                      |     r3 = r8 + -1;
    0x0000f87c add fp, pc                                            |     fp = 0x1f7ba;
    0x0000f87e str r2, [sp, 0x14]                                    |     var_14h = r2;
    0x0000f880 str r3, [sp, 0x44]                                    |     var_44h = r3;
    0x0000f882 add.w r3, r8, 3                                       |     r3 = r8 + 3;
    0x0000f886 ldr r2, [sp, 0x78]                                    |     r2 = var_78h;
    0x0000f888 movs r5, 0                                            |     r5 = 0;
    0x0000f88a str r3, [sp, 0x48]                                    |     var_48h = r3;
    0x0000f88c mov r3, fp                                            |     r3 = fp;
    0x0000f88e mov fp, sb                                            |     
    0x0000f890 mov sb, r3                                            |     sb = r3;
    0x0000f892 ldr r3, [sp, 0x18]                                    |     r3 = var_18h;
    0x0000f894 mov r6, r5                                            |     r6 = r5;
    0x0000f896 str r2, [sp, 0x30]                                    |     var_30h = r2;
    0x0000f898 ldr r2, [sp, 0x7c]                                    |     r2 = var_7ch;
    0x0000f89a ldrd r7, sl, [r1, 8]                                  |     __asm ("ldrd r7, sl, [r1, 8]");
    0x0000f89e adds.w r1, fp, 4                                      |     r1 += arg_4h;
    0x0000f8a2 str r5, [sp, 0x1c]                                    |     var_1ch = r5;
    0x0000f8a4 str r2, [sp, 0x34]                                    |     var_34h = r2;
    0x0000f8a6 adc r2, r5, 0                                         |     __asm ("adc r2, r5, 0");
    0x0000f8aa cmp r3, 0                                             |     
                                                                     |     if (r3 == 0) {
    0x0000f8ac beq 0xf944                                            |         goto label_11;
                                                                     |     }
                                                                     | label_0:
    0x0000f8ae cmp r7, r1                                            |     
    0x0000f8b0 sbcs.w r2, sl, r2                                     |     __asm ("sbcs.w r2, sl, r2");
                                                                     |     if (r7 <= r1) {
    0x0000f8b4 blo.w 0xfefc                                          |         goto label_12;
                                                                     |     }
    0x0000f8b8 ldr r3, [sp, 0x14]                                    |     r3 = var_14h;
    0x0000f8ba add.w r0, r8, fp                                      |     r0 = r8 + fp;
    0x0000f8be cmp r3, 0                                             |     
                                                                     |     if (r3 == 0) {
    0x0000f8c0 beq.w 0xf9ea                                          |         goto label_13;
                                                                     |     }
    0x0000f8c4 ldr r3, [sp, 0x44]                                    |     r3 = var_44h;
    0x0000f8c6 ldr r4, [sp, 0xc]                                     |     r4 = var_ch;
    0x0000f8c8 add.w r2, r3, fp                                      |     r2 = r3 + fp;
    0x0000f8ca lsls r3, r1, 8                                        |     r3 = r1 << 8;
    0x0000f8cc ldr r3, [sp, 0x48]                                    |     r3 = var_48h;
    0x0000f8ce add.w r0, r3, fp                                      |     r0 = r3 + fp;
                                                                     |     do {
    0x0000f8d2 ldrb r3, [r2, 1]!                                     |         r3 = *((r2 += 1));
    0x0000f8d6 cmp r2, r0                                            |         
    0x0000f8d8 orr.w r4, r3, r4, lsl 8                               |         r4 = r3 | (r4 << 8);
    0x0000f8da movs r4, 4                                            |         r4 = 4;
    0x0000f8dc bne 0xf8d2                                            |         
                                                                     |     } while (r4 != 4);
                                                                     | label_1:
    0x0000f8de ldr r3, [sp, 0x30]                                    |     r3 = var_30h;
    0x0000f8e0 movs r2, 0                                            |     r2 = 0;
    0x0000f8e2 cmp r4, r3                                            |     
    0x0000f8e4 ldr r3, [sp, 0x34]                                    |     r3 = var_34h;
    0x0000f8e6 sbcs r2, r3                                           |     __asm ("sbcs r2, r3");
                                                                     |     if (r4 >= r3) {
    0x0000f8e8 bhs 0xf974                                            |         goto label_7;
                                                                     |     }
    0x0000f8ea ldr r3, [sp, 0x20]                                    |     r3 = var_20h;
    0x0000f8ec adds r4, r4, r3                                       |     r4 += r3;
    0x0000f8ee ldr r3, [sp, 0x24]                                    |     r3 = var_24h;
    0x0000f8f0 adc r2, r3, 0                                         |     __asm ("adc r2, r3, 0");
    0x0000f8f4 cmp r4, r7                                            |     
    0x0000f8f6 sbcs.w r2, r2, sl                                     |     __asm ("sbcs.w r2, r2, sl");
                                                                     |     if (r4 >= r7) {
    0x0000f8fa bhs.w 0xff00                                          |         goto label_14;
                                                                     |     }
    0x0000f8fe add r4, r8                                            |     r4 += r8;
    0x0000f900 movs r2, 6                                            |     r2 = 6;
    0x0000f902 mov r1, sb                                            |     r1 = sb;
    0x0000f904 mov r0, r4                                            |     r0 = r4;
    0x0000f906 blx 0x1da4                                            |     r0 = fcn_00001da4 ();
                                                                     |     if (r0 == 0) {
    0x0000f90a cbnz r0, 0xf91c                                       |         
    0x0000f90c ldr r3, [sp, 0x1c]                                    |         r3 = var_1ch;
    0x0000f90e adds r0, r4, 6                                        |         r0 = r4 + 6;
    0x0000f910 adds r6, 1                                            |         r6++;
    0x0000f912 adds r3, 1                                            |         r3++;
    0x0000f914 str r3, [sp, 0x1c]                                    |         var_1ch = r3;
    0x0000f916 blx 0x1bb0                                            |         r0 = fcn_00001bb0 ();
    0x0000f91a add r6, r0                                            |         r6 += r0;
                                                                     |     }
    0x0000f91c ldr r3, [sp, 0x10]                                    |     r3 = var_10h;
    0x0000f91e adds.w r3, r3, fp                                     |     r3 += fp;
    0x0000f922 mov fp, r3                                            |     
    0x0000f924 ldr r3, [sp, 8]                                       |     r3 = var_8h;
    0x0000f926 adc r5, r5, 0                                         |     __asm ("adc r5, r5, 0");
    0x0000f92a adds r2, r3, 1                                        |     r2 = r3 + 1;
    0x0000f92c ldr r3, [sp, 0x2c]                                    |     r3 = var_2ch;
    0x0000f92e cmp r3, r2                                            |     
                                                                     |     if (r3 == r2) {
    0x0000f930 beq.w 0xfb42                                          |         goto label_15;
                                                                     |     }
    0x0000f934 ldr r3, [sp, 0x18]                                    |     r3 = var_18h;
    0x0000f936 adds.w r1, fp, 4                                      |     r1 += arg_4h;
    0x0000f93a str r2, [sp, 8]                                       |     var_8h = r2;
    0x0000f93c adc r2, r5, 0                                         |     __asm ("adc r2, r5, 0");
    0x0000f940 cmp r3, 0                                             |     
                                                                     |     if (r3 != 0) {
    0x0000f942 bne 0xf8ae                                            |         goto label_0;
                                                                     |     }
                                                                     | label_11:
    0x0000f944 cmp r7, r1                                            |     
    0x0000f946 sbcs.w r2, sl, r2                                     |     __asm ("sbcs.w r2, sl, r2");
                                                                     |     if (r7 <= r1) {
    0x0000f94a blo.w 0xfefc                                          |         goto label_12;
                                                                     |     }
    0x0000f94e ldr r3, [sp, 0x14]                                    |     r3 = var_14h;
    0x0000f950 add.w r0, r8, fp                                      |     r0 = r8 + fp;
    0x0000f954 cmp r3, 0                                             |     
                                                                     |     if (r3 == 0) {
    0x0000f956 beq 0xfa00                                            |         goto label_16;
                                                                     |     }
    0x0000f958 ldr r3, [sp, 0x44]                                    |     r3 = var_44h;
    0x0000f95a ldr r4, [sp, 0xc]                                     |     r4 = var_ch;
    0x0000f95c add.w r2, r3, fp                                      |     r2 = r3 + fp;
    0x0000f960 ldr r3, [sp, 0x48]                                    |     r3 = var_48h;
    0x0000f962 add.w r0, r3, fp                                      |     r0 = r3 + fp;
                                                                     |     do {
    0x0000f966 ldrb r3, [r2, 1]!                                     |         r3 = *((r2 += 1));
    0x0000f96a cmp r2, r0                                            |         
    0x0000f96c orr.w r4, r3, r4, lsl 8                               |         r4 = r3 | (r4 << 8);
    0x0000f970 bne 0xf966                                            |         
                                                                     |     } while (r2 != r0);
    0x0000f972 b 0xf8de                                              |     goto label_1;
                                                                     | label_7:
    0x0000f974 ldrd r0, r4, [sp, 0x38]                               |     __asm ("ldrd r0, r4, [var_38h]");
    0x0000f978 movs r2, 0                                            |     r2 = 0;
    0x0000f97a ldr.w r1, [pc, 0x5c0]                                 |     
    0x0000f97e add r3, sp, 0x90                                      |     r3 += var_90h;
    0x0000f980 str r2, [r4]                                          |     *(r4) = r2;
    0x0000f982 add r2, sp, 0x88                                      |     r2 += var_88h;
    0x0000f984 add r1, pc                                            |     r1 = 0x1f8c6;
    0x0000f986 bl 0xefac                                             |     r0 = fcn_0000efac (r0, r1, r2, r3);
    0x0000f98a subs.w sb, r0, 0                                      |     sb = r0 - 0;
                                                                     |     if (sb < r0) {
    0x0000f98e blt 0xf9c4                                            |         goto label_5;
                                                                     |     }
    0x0000f990 ldr r6, [sp, 0x88]                                    |     r6 = var_88h;
                                                                     |     if (r6 == 0) {
    0x0000f992 cbz r6, 0xf9c0                                        |         goto label_2;
                                                                     |     }
    0x0000f994 ldrd r4, r5, [sp, 0x90]                               |     __asm ("ldrd r4, r5, [var_90h]");
    0x0000f998 orrs.w r3, r4, r5                                     |     r3 = r4 | r5;
                                                                     |     if (r3 == r4) {
    0x0000f99c beq 0xf9c0                                            |         goto label_2;
                                                                     |     }
    0x0000f99e ldrb r3, [r6]                                         |     r3 = *(r6);
    0x0000f9a0 cmp r3, 0                                             |     
                                                                     |     if (r3 != 0) {
    0x0000f9a2 bne 0xfa1a                                            |         goto label_17;
                                                                     |     }
    0x0000f9a4 adds r3, r6, 1                                        |     r3 = r6 + 1;
    0x0000f9a6 b 0xf9b8                                              |     
                                                                     |     while (r1 != r2) {
    0x0000f9a8 subs r4, 1                                            |         r4--;
    0x0000f9aa mov r6, r3                                            |         r6 = r3;
    0x0000f9ac mov r4, r2                                            |         r4 = r2;
    0x0000f9ae ldrb r2, [r3], 1                                      |         r2 = *(r3);
                                                                     |         r3++;
    0x0000f9b2 sbc r5, r5, 0                                         |         __asm ("sbc r5, r5, 0");
                                                                     |         if (r2 != 0) {
    0x0000f9b6 cbnz r2, 0xfa16                                       |             goto label_18;
                                                                     |         }
    0x0000f9b8 subs r2, r4, 1                                        |         r2 = r4 - 1;
    0x0000f9ba orrs.w r1, r2, r5                                     |         r1 = r2 | r5;
    0x0000f9be bne 0xf9a8                                            |         
                                                                     |     }
                                                                     | label_2:
    0x0000f9c0 mov.w sb, 0                                           |     sb = 0;
                                                                     | label_5:
    0x0000f9c4 ldr.w r2, [pc, 0x578]                                 |     r2 = *(0x0000ff40);
    0x0000f9c8 ldr.w r3, [pc, 0x560]                                 |     r3 = *(0xff2c);
    0x0000f9cc add r2, pc                                            |     r2 += pc;
    0x0000f9ce ldr r3, [r2, r3]                                      |     r3 = *((r2 + r3));
    0x0000f9d0 ldr r2, [r3]                                          |     r2 = *(0xff2c);
    0x0000f9d2 ldr r3, [sp, 0x9c]                                    |     r3 = var_9ch;
    0x0000f9d4 eors r2, r3                                           |     r2 ^= r3;
    0x0000f9d6 mov.w r3, 0                                           |     r3 = 0;
                                                                     |     if (r2 != r3) {
    0x0000f9da bne.w 0xff16                                          |         goto label_19;
                                                                     |     }
    0x0000f9de mov r0, sb                                            |     r0 = sb;
    0x0000f9e0 add sp, 0xa4                                          |     
    0x0000f9e2 vpop {d8}                                             |     __asm ("vpop {d8}");
    0x0000f9e6 pop.w {r4, r5, r6, r7, r8, sb, sl, fp, pc}            |     
                                                                     | label_13:
    0x0000f9ea ldr r3, [sp, 0x40]                                    |     r3 = var_40h;
    0x0000f9ec ldr r4, [sp, 0xc]                                     |     r4 = var_ch;
    0x0000f9ee add.w r2, r3, fp                                      |     r2 = r3 + fp;
                                                                     |     do {
    0x0000f9f2 ldrb r3, [r2, -0x1]!                                  |         r3 = *((r2 -= 0x1));
    0x0000f9f6 cmp r2, r0                                            |         
    0x0000f9f8 orr.w r4, r3, r4, lsl 8                               |         r4 = r3 | (r4 << 8);
    0x0000f9fc bne 0xf9f2                                            |         
                                                                     |     } while (r2 != r0);
    0x0000f9fe b 0xf8de                                              |     goto label_1;
                                                                     | label_16:
    0x0000fa00 ldr r3, [sp, 0x40]                                    |     r3 = var_40h;
    0x0000fa02 ldr r4, [sp, 0xc]                                     |     r4 = var_ch;
    0x0000fa04 add.w r2, r3, fp                                      |     r2 = r3 + fp;
                                                                     |     do {
    0x0000fa08 ldrb r3, [r2, -0x1]!                                  |         r3 = *((r2 -= 0x1));
    0x0000fa0c cmp r2, r0                                            |         
    0x0000fa0e orr.w r4, r3, r4, lsl 8                               |         r4 = r3 | (r4 << 8);
    0x0000fa12 bne 0xfa08                                            |         
                                                                     |     } while (r2 != r0);
    0x0000fa14 b 0xf8de                                              |     goto label_1;
                                                                     | label_18:
    0x0000fa16 strd r4, r5, [sp, 0x90]                               |     __asm ("strd r4, r5, [var_90h]");
                                                                     | label_17:
    0x0000fa1a add.w fp, r4, -1                                      |     
    0x0000fa1e orrs.w r3, fp, r5                                     |     r3 = fp | r5;
                                                                     |     if (r3 == fp) {
    0x0000fa22 beq 0xf9c0                                            |         goto label_2;
                                                                     |     }
    0x0000fa24 movs r3, 0                                            |     r3 = 0;
    0x0000fa26 add.w r8, r6, r4                                      |     r8 = r6 + r4;
    0x0000fa2a add.w r8, r8, -1                                      |     r8 += -1;
    0x0000fa2e subs r0, r6, 1                                        |     r0 = r6 - 1;
    0x0000fa30 mov sl, r3                                            |     sl = r3;
    0x0000fa32 mov sb, r3                                            |     sb = r3;
    0x0000fa34 mov r2, r3                                            |     r2 = r3;
    0x0000fa36 mov r1, r3                                            |     r1 = r3;
                                                                     |     do {
    0x0000fa38 ldrb r7, [r0, 1]!                                     |         r7 = *((r0 += 1));
    0x0000fa3c adds.w ip, r2, 1                                      |         
    0x0000fa40 mov lr, r2                                            |         lr = r2;
    0x0000fa42 mov r2, ip                                            |         r2 = ip;
    0x0000fa44 mov ip, r1                                            |         
    0x0000fa46 adc r1, r1, 0                                         |         __asm ("adc r1, r1, 0");
                                                                     |         if (r7 == 0) {
    0x0000fa4a cbnz r7, 0xfa5a                                       |             
    0x0000fa4c cmp ip, sb                                            |             
    0x0000fa4e it eq                                                 |             
                                                                     |             if (ip == sb) {
    0x0000fa50 cmpeq lr, sl                                          |                 __asm ("cmpeq lr, sl");
                                                                     |             }
    0x0000fa52 mov sl, r2                                            |             sl = r2;
    0x0000fa54 it ne                                                 |             
                                                                     |             if (ip == sb) {
    0x0000fa56 addne r3, 1                                           |                 r3++;
                                                                     |             }
    0x0000fa58 mov sb, r1                                            |             sb = r1;
                                                                     |         }
    0x0000fa5a cmp r8, r0                                            |         
    0x0000fa5c bne 0xfa38                                            |         
                                                                     |     } while (r8 != r0);
    0x0000fa5e ldrb.w r2, [r6, fp]                                   |     r2 = *((r6 + fp));
    0x0000fa62 add.w r1, r6, fp                                      |     r1 = r6 + fp;
    0x0000fa66 str r1, [sp, 0x18]                                    |     var_18h = r1;
    0x0000fa68 cmp r2, 0                                             |     
                                                                     |     if (r2 != 0) {
    0x0000fa6a bne 0xfb3e                                            |         goto label_20;
                                                                     |     }
                                                                     | label_6:
    0x0000fa6c lsls r7, r3, 4                                        |     r7 = r3 << 4;
    0x0000fa6e adds r0, r4, 1                                        |     r0 = r4 + 1;
    0x0000fa70 add r0, r7                                            |     r0 += r7;
    0x0000fa72 blx 0x1b0c                                            |     strerror (r0);
    0x0000fa76 ldr r2, [sp, 0x3c]                                    |     r2 = var_3ch;
    0x0000fa78 str r0, [sp, 0x14]                                    |     var_14h = r0;
    0x0000fa7a str r0, [r2]                                          |     *(r2) = r0;
    0x0000fa7c cmp r0, 0                                             |     
                                                                     |     if (r0 == 0) {
    0x0000fa7e beq.w 0xff1a                                          |         goto label_21;
                                                                     |     }
    0x0000fa82 ldr r3, [sp, 0x14]                                    |     r3 = var_14h;
    0x0000fa84 mov.w sb, 0                                           |     sb = 0;
    0x0000fa88 vmov.i32 d8, 0                                        |     __asm ("vmov.i32 d8, 0");
    0x0000fa8c mov r1, sb                                            |     r1 = sb;
    0x0000fa8e mov ip, sb                                            |     
    0x0000fa90 mov sl, sb                                            |     sl = sb;
    0x0000fa92 add r3, r7                                            |     r3 += r7;
    0x0000fa94 mov fp, sb                                            |     
    0x0000fa96 mov r7, sb                                            |     r7 = sb;
    0x0000fa98 strd r4, r5, [sp, 8]                                  |     __asm ("strd r4, r5, [var_8h]");
    0x0000fa9c b 0xfad8                                              |     goto label_4;
                                                                     | label_3:
    0x0000fa9e ldr r0, [sp, 0x14]                                    |     r0 = var_14h;
    0x0000faa0 movs r4, 0x47                                         |     r4 = 0x47;
    0x0000faa2 subs r2, r2, r1                                       |     r2 -= r1;
    0x0000faa4 add r1, r6                                            |     r1 += r6;
    0x0000faa6 str r2, [sp, 0x10]                                    |     var_10h = r2;
    0x0000faa8 add.w r0, r0, fp, lsl 4                               |     r0 += (fp << 4);
    0x0000faac add.w fp, fp, 1                                       |     
    0x0000fab0 str r3, [r0, 0xc]                                     |     *((r0 + 0xc)) = r3;
    0x0000fab2 vstr d8, [r0]                                         |     __asm ("vstr d8, [r0]");
    0x0000fab6 str r4, [r0, 8]                                       |     *((r0 + 8)) = r4;
    0x0000fab8 mov r0, r3                                            |     r0 = r3;
    0x0000faba blx 0x19c8                                            |     mmap64 ()
    0x0000fabe ldr r2, [sp, 0x10]                                    |     r2 = var_10h;
    0x0000fac0 mov r3, r0                                            |     r3 = r0;
    0x0000fac2 mov r1, sb                                            |     r1 = sb;
    0x0000fac4 mov ip, r8                                            |     
    0x0000fac6 strb r5, [r0, r2]                                     |     *((r0 + r2)) = r5;
    0x0000fac8 adds r2, 1                                            |     r2++;
    0x0000faca add r3, r2                                            |     r3 += r2;
                                                                     |     do {
    0x0000facc ldrd r0, r2, [sp, 8]                                  |         __asm ("ldrd r0, r2, [var_8h]");
    0x0000fad0 cmp r8, r2                                            |         
    0x0000fad2 it eq                                                 |         
                                                                     |         if (r8 == r2) {
    0x0000fad4 cmpeq sb, r0                                          |             __asm ("cmpeq sb, r0");
                                                                     |         }
                                                                     |         if (r8 == r2) {
    0x0000fad6 beq 0xfb08                                            |             goto label_22;
                                                                     |         }
                                                                     | label_4:
    0x0000fad8 ldrb.w r5, [r6, sl]                                   |         r5 = *((r6 + sl));
    0x0000fadc adds.w sb, sl, 1                                      |         sb = sl + 1;
    0x0000fae0 adc r8, r7, 0                                         |         __asm ("adc r8, r7, 0");
    0x0000fae4 mov r2, sl                                            |         r2 = sl;
    0x0000fae6 mov r0, r7                                            |         r0 = r7;
    0x0000fae8 mov sl, sb                                            |         sl = sb;
    0x0000faea mov r7, r8                                            |         r7 = r8;
    0x0000faec cmp r5, 0                                             |         
    0x0000faee bne 0xfacc                                            |         
                                                                     |     } while (r5 != 0);
    0x0000faf0 cmp r0, ip                                            |     
    0x0000faf2 it eq                                                 |     
                                                                     |     if (r0 != ip) {
    0x0000faf4 cmpeq r2, r1                                          |         __asm ("cmpeq r2, r1");
                                                                     |         goto label_23;
                                                                     |     }
                                                                     |     if (r0 != ip) {
                                                                     | label_23:
    0x0000faf6 bne 0xfa9e                                            |         goto label_3;
                                                                     |     }
    0x0000faf8 ldrd r0, r2, [sp, 8]                                  |     __asm ("ldrd r0, r2, [var_8h]");
    0x0000fafc mov r1, sb                                            |     r1 = sb;
    0x0000fafe mov ip, r8                                            |     
    0x0000fb00 cmp r8, r2                                            |     
    0x0000fb02 it eq                                                 |     
                                                                     |     if (r8 != r2) {
    0x0000fb04 cmpeq sb, r0                                          |         __asm ("cmpeq sb, r0");
                                                                     |         goto label_24;
                                                                     |     }
                                                                     |     if (r8 != r2) {
                                                                     | label_24:
    0x0000fb06 bne 0xfad8                                            |         goto label_4;
                                                                     |     }
                                                                     | label_22:
    0x0000fb08 ldr r2, [sp, 0x18]                                    |     r2 = var_18h;
    0x0000fb0a mov sb, fp                                            |     sb = fp;
    0x0000fb0c ldrb r2, [r2]                                         |     r2 = *(r2);
    0x0000fb0e cmp r2, 0                                             |     
                                                                     |     if (r2 == 0) {
    0x0000fb10 beq.w 0xf9c4                                          |         goto label_5;
                                                                     |     }
    0x0000fb14 ldr r2, [sp, 0x14]                                    |     r2 = var_14h;
    0x0000fb16 subs r4, r0, r1                                       |     r4 = r0 - r1;
    0x0000fb18 vmov.i32 d16, 0                                       |     __asm ("vmov.i32 d16, 0");
    0x0000fb1c movs r0, 0x47                                         |     r0 = 0x47;
    0x0000fb1e add r1, r6                                            |     r1 += r6;
    0x0000fb20 add.w sb, fp, 1                                       |     sb += arg_1h;
    0x0000fb24 add.w r2, r2, fp, lsl 4                               |     r2 += (fp << 4);
    0x0000fb28 str r0, [r2, 8]                                       |     *((r2 + 8)) = r0;
    0x0000fb2a mov r0, r3                                            |     r0 = r3;
    0x0000fb2c str r3, [r2, 0xc]                                     |     *((r2 + 0xc)) = r3;
    0x0000fb2e vstr d16, [r2]                                        |     __asm ("vstr d16, [r2]");
    0x0000fb32 mov r2, r4                                            |     r2 = r4;
    0x0000fb34 blx 0x19c8                                            |     mmap64 ()
    0x0000fb38 movs r2, 0                                            |     r2 = 0;
    0x0000fb3a strb r2, [r0, r4]                                     |     *((r0 + r4)) = r2;
    0x0000fb3c b 0xf9c4                                              |     goto label_5;
                                                                     | label_20:
    0x0000fb3e adds r3, 1                                            |     r3++;
    0x0000fb40 b 0xfa6c                                              |     goto label_6;
                                                                     | label_15:
    0x0000fb42 ldr r3, [sp, 0x1c]                                    |     r3 = var_1ch;
    0x0000fb44 cmp r3, 0                                             |     
                                                                     |     if (r3 == 0) {
    0x0000fb46 beq.w 0xf974                                          |         goto label_7;
                                                                     |     }
    0x0000fb4a lsls r4, r3, 4                                        |     r4 = r3 << 4;
    0x0000fb4c adds r0, r4, r6                                       |     r0 = r4 + r6;
    0x0000fb4e blx 0x1b0c                                            |     strerror (r0);
    0x0000fb52 ldr r2, [sp, 0x3c]                                    |     r2 = var_3ch;
    0x0000fb54 str r0, [sp, 0x48]                                    |     var_48h = r0;
    0x0000fb56 str r0, [r2]                                          |     *(r2) = r0;
    0x0000fb58 cmp r0, 0                                             |     
                                                                     |     if (r0 == 0) {
    0x0000fb5a beq.w 0xff1a                                          |         goto label_21;
                                                                     |     }
    0x0000fb5e ldr r3, [sp, 0x48]                                    |     r3 = var_48h;
    0x0000fb60 movs r1, 0                                            |     r1 = 0;
    0x0000fb62 mov sb, sl                                            |     sb = sl;
    0x0000fb64 str r1, [sp, 0x34]                                    |     var_34h = r1;
    0x0000fb66 add r3, r4                                            |     r3 += r4;
    0x0000fb68 str r3, [sp, 0x50]                                    |     var_50h = r3;
    0x0000fb6a ldr r3, [sp, 0x54]                                    |     r3 = var_54h;
    0x0000fb6c adds.w r2, r3, 8                                      |     r2 = r3 + 8;
    0x0000fb70 str r2, [sp, 0x1c]                                    |     var_1ch = r2;
    0x0000fb72 adc r2, r1, 0                                         |     __asm ("adc r2, r1, 0");
    0x0000fb76 adds.w fp, r3, 4                                      |     
    0x0000fb7a str r2, [sp, 0x30]                                    |     var_30h = r2;
    0x0000fb7c adc r3, r1, 0                                         |     __asm ("adc r3, r1, 0");
    0x0000fb80 mov sl, fp                                            |     sl = fp;
    0x0000fb82 str r3, [sp, 0x2c]                                    |     var_2ch = r3;
    0x0000fb84 mov fp, r7                                            |     
    0x0000fb86 ldr r3, [pc, 0x3bc]                                   |     
    0x0000fb88 ldr r7, [sp, 0x58]                                    |     r7 = var_58h;
    0x0000fb8a add r3, pc                                            |     r3 = 0x1fad4;
    0x0000fb8c str r3, [sp, 0x5c]                                    |     var_5ch = r3;
    0x0000fb8e ldr r3, [pc, 0x3b8]                                   |     
    0x0000fb90 add r3, pc                                            |     r3 = 0x1fade;
    0x0000fb92 str r3, [sp, 0x64]                                    |     var_64h = r3;
    0x0000fb94 movs r3, 1                                            |     r3 = 1;
    0x0000fb96 str r3, [sp, 0x40]                                    |     var_40h = r3;
    0x0000fb98 add.w r3, r8, 4                                       |     r3 = r8 + 4;
    0x0000fb9c str r3, [sp, 0x60]                                    |     var_60h = r3;
    0x0000fb9e ldr r3, [sp, 0x18]                                    |     r3 = var_18h;
    0x0000fba0 cmp r3, 0                                             |     
                                                                     |     if (r3 == 0) {
    0x0000fba2 beq.w 0xfd6a                                          |         goto label_25;
                                                                     |     }
                                                                     | label_8:
    0x0000fba6 ldr r3, [sp, 0x2c]                                    |     r3 = var_2ch;
    0x0000fba8 cmp fp, sl                                            |     
    0x0000fbaa sbcs.w r3, sb, r3                                     |     __asm ("sbcs.w r3, sb, r3");
                                                                     |     if (fp <= sl) {
    0x0000fbae blo.w 0xfefc                                          |         goto label_12;
                                                                     |     }
    0x0000fbb2 ldr r3, [sp, 0x14]                                    |     r3 = var_14h;
    0x0000fbb4 add.w r2, r7, r8                                      |     r2 = r7 + r8;
    0x0000fbb8 cmp r3, 0                                             |     
                                                                     |     if (r3 == 0) {
    0x0000fbba beq.w 0xfe68                                          |         goto label_26;
                                                                     |     }
    0x0000fbbe ldr r6, [sp, 0xc]                                     |     r6 = var_ch;
    0x0000fbc0 add.w r3, r8, -1                                      |     r3 = r8 + -1;
    0x0000fbc4 add.w r1, r8, 3                                       |     r1 = r8 + 3;
    0x0000fbc8 add r3, r7                                            |     r3 += r7;
    0x0000fbca add r1, r7                                            |     r1 += r7;
                                                                     |     do {
    0x0000fbcc ldrb r0, [r3, 1]!                                     |         r0 = *((r3 += 1));
    0x0000fbd0 cmp r1, r3                                            |         
    0x0000fbd2 orr.w r6, r0, r6, lsl 8                               |         r6 = r0 | (r6 << 8);
    0x0000fbd6 bne 0xfbcc                                            |         
                                                                     |     } while (r1 != r3);
    0x0000fbd8 ldr r3, [sp, 0x1c]                                    |     r3 = var_1ch;
    0x0000fbda cmp fp, r3                                            |     
    0x0000fbdc ldr r3, [sp, 0x30]                                    |     r3 = var_30h;
    0x0000fbde sbcs.w r3, sb, r3                                     |     __asm ("sbcs.w r3, sb, r3");
                                                                     |     if (fp <= r3) {
    0x0000fbe2 blo.w 0xfefc                                          |         goto label_12;
                                                                     |     }
    0x0000fbe6 ldr r1, [sp, 0x60]                                    |     r1 = var_60h;
    0x0000fbe8 add.w r3, r8, sl                                      |     r3 = r8 + sl;
    0x0000fbec ldr r5, [sp, 0xc]                                     |     r5 = var_ch;
    0x0000fbee ldr r4, [sp, 0x4c]                                    |     r4 = var_4ch;
    0x0000fbf0 add.w r0, r1, sl                                      |     r0 = r1 + sl;
                                                                     |     do {
    0x0000fbf4 ldrb r1, [r3], 1                                      |         r1 = *(r3);
                                                                     |         r3++;
    0x0000fbf8 lsls r4, r4, 8                                        |         r4 <<= 8;
    0x0000fbfa orr.w r4, r4, r5, lsr 24                              |         r4 |= (r5 >> 24);
    0x0000fbfe cmp r0, r3                                            |         
    0x0000fc00 orr.w r5, r1, r5, lsl 8                               |         r5 = r1 | (r5 << 8);
    0x0000fc04 bne 0xfbf4                                            |         
                                                                     |     } while (r0 != r3);
    0x0000fc06 ldr r3, [sp, 0x28]                                    |     r3 = var_28h;
    0x0000fc08 adds.w r1, r7, 0xd                                    |     r1 = r7 + 0xd;
    0x0000fc0c adc r3, r3, 0                                         |     __asm ("adc r3, r3, 0");
    0x0000fc10 cmp fp, r1                                            |     
    0x0000fc12 sbcs.w r3, sb, r3                                     |     __asm ("sbcs.w r3, sb, r3");
                                                                     |     if (fp <= r1) {
    0x0000fc16 blo.w 0xfefc                                          |         goto label_12;
                                                                     |     }
    0x0000fc1a add.w r3, r8, 0xc                                     |     r3 = r8 + 0xc;
    0x0000fc1e adds.w r1, r7, 0x10                                   |     r1 = r7 + 0x10;
    0x0000fc22 ldrb r3, [r3, r7]                                     |     r3 = *((r3 + r7));
    0x0000fc24 str r3, [sp, 0x3c]                                    |     var_3ch = r3;
    0x0000fc26 ldr r3, [sp, 0x28]                                    |     r3 = var_28h;
    0x0000fc28 adc r3, r3, 0                                         |     __asm ("adc r3, r3, 0");
    0x0000fc2c cmp fp, r1                                            |     
    0x0000fc2e sbcs.w r3, sb, r3                                     |     __asm ("sbcs.w r3, sb, r3");
                                                                     |     if (fp <= r1) {
    0x0000fc32 blo.w 0xfefc                                          |         goto label_12;
                                                                     |     }
    0x0000fc36 ldrh r3, [r2, 0xe]                                    |     r3 = *((r2 + 0xe));
    0x0000fc38 rev16 r3, r3                                          |     __asm ("rev16 r3, r3");
    0x0000fc3a uxth r3, r3                                           |     r3 = (int16_t) r3;
                                                                     | label_9:
    0x0000fc3c ldr r2, [sp, 0x20]                                    |     r2 = var_20h;
    0x0000fc3e adds r6, r6, r2                                       |     r6 += r2;
    0x0000fc40 ldr r2, [sp, 0x24]                                    |     r2 = var_24h;
    0x0000fc42 adc r2, r2, 0                                         |     __asm ("adc r2, r2, 0");
    0x0000fc46 cmp r6, fp                                            |     
    0x0000fc48 sbcs.w r2, r2, sb                                     |     __asm ("sbcs.w r2, r2, sb");
                                                                     |     if (r6 >= fp) {
    0x0000fc4c bhs.w 0xff12                                          |         goto label_27;
                                                                     |     }
    0x0000fc50 add r6, r8                                            |     r6 += r8;
    0x0000fc52 ldr r1, [sp, 0x5c]                                    |     r1 = var_5ch;
    0x0000fc54 movs r2, 6                                            |     r2 = 6;
    0x0000fc56 mov r0, r6                                            |     r0 = r6;
    0x0000fc58 str r3, [sp, 0x44]                                    |     var_44h = r3;
    0x0000fc5a blx 0x1da4                                            |     r0 = fcn_00001da4 ();
    0x0000fc5e cmp r0, 0                                             |     
                                                                     |     if (r0 != 0) {
    0x0000fc60 bne 0xfd2a                                            |         goto label_28;
                                                                     |     }
    0x0000fc62 ldr r3, [sp, 0x3c]                                    |     r3 = var_3ch;
    0x0000fc64 movw r2, 0xfff1                                       |     r2 = 0xfff1;
    0x0000fc68 ldr r1, [sp, 0x48]                                    |     r1 = var_48h;
    0x0000fc6a adds r6, 6                                            |     r6 += 6;
    0x0000fc6c lsrs r3, r3, 4                                        |     r3 >>= 4;
    0x0000fc6e str r3, [sp, 0x54]                                    |     var_54h = r3;
    0x0000fc70 ldr r3, [sp, 0x34]                                    |     r3 = var_34h;
    0x0000fc72 lsls r3, r3, 4                                        |     r3 <<= 4;
    0x0000fc74 str r3, [sp, 0x58]                                    |     var_58h = r3;
    0x0000fc76 adds r3, r1, r3                                       |     r3 = r1 + r3;
    0x0000fc78 str r3, [sp, 0x3c]                                    |     var_3ch = r3;
    0x0000fc7a ldr r3, [sp, 0x44]                                    |     r3 = var_44h;
    0x0000fc7c cmp r3, 0                                             |     
    0x0000fc7e it ne                                                 |     
                                                                     |     if (r3 != 0) {
    0x0000fc80 cmpne r3, r2                                          |         __asm ("cmpne r3, r2");
                                                                     |     }
                                                                     |     if (r3 == 0) {
    0x0000fc82 beq 0xfcea                                            |         goto label_10;
                                                                     |     }
    0x0000fc84 mov r1, r3                                            |     r1 = r3;
    0x0000fc86 add r3, sp, 0x74                                      |     r3 += var_74h;
    0x0000fc88 str r3, [sp]                                          |     *(sp) = r3;
    0x0000fc8a add r2, sp, 0x88                                      |     r2 += var_88h;
    0x0000fc8c ldr r0, [sp, 0x38]                                    |     r0 = var_38h;
    0x0000fc8e add r3, sp, 0x90                                      |     r3 += var_90h;
    0x0000fc90 bl 0xea20                                             |     r0 = fcn_0000ea20 (r0, r1, r2, r3);
    0x0000fc94 cmp r0, 0                                             |     
                                                                     |     if (r0 < 0) {
    0x0000fc96 blt.w 0xfed4                                          |         goto label_29;
                                                                     |     }
    0x0000fc9a ldr r3, [sp, 0x90]                                    |     r3 = var_90h;
    0x0000fc9c ldr r2, [sp, 0x94]                                    |     r2 = var_94h;
    0x0000fc9e subs r3, 4                                            |     r3 -= 4;
    0x0000fca0 adc r2, r2, -1                                        |     __asm ("adc r2, r2, -1");
    0x0000fca4 cmp r3, r5                                            |     
    0x0000fca6 sbcs r2, r4                                           |     __asm ("sbcs r2, r4");
                                                                     |     if (r3 <= r5) {
    0x0000fca8 blo.w 0xfed4                                          |         goto label_29;
                                                                     |     }
    0x0000fcac ldr r3, [sp, 0x88]                                    |     r3 = var_88h;
    0x0000fcae ldr r2, [sp, 0x8c]                                    |     r2 = var_8ch;
    0x0000fcb0 adds r3, r5, r3                                       |     r3 = r5 + r3;
    0x0000fcb2 adc.w r2, r4, r2                                      |     __asm ("adc.w r2, r4, r2");
    0x0000fcb6 adds r1, r3, 4                                        |     r1 = r3 + 4;
    0x0000fcb8 adc r2, r2, 0                                         |     __asm ("adc r2, r2, 0");
    0x0000fcbc cmp fp, r1                                            |     
    0x0000fcbe sbcs.w r2, sb, r2                                     |     __asm ("sbcs.w r2, sb, r2");
                                                                     |     if (fp <= r1) {
    0x0000fcc2 blo.w 0xfefc                                          |         goto label_12;
                                                                     |     }
    0x0000fcc6 ldr r2, [sp, 0x14]                                    |     r2 = var_14h;
    0x0000fcc8 add r3, r8                                            |     r3 += r8;
    0x0000fcca cmp r2, 0                                             |     
                                                                     |     if (r2 == 0) {
    0x0000fccc beq.w 0xfedc                                          |         goto label_30;
                                                                     |     }
    0x0000fcd0 ldr r5, [sp, 0xc]                                     |     r5 = var_ch;
    0x0000fcd2 subs r2, r3, 1                                        |     r2 = r3 - 1;
    0x0000fcd4 ldr r4, [sp, 0x4c]                                    |     r4 = var_4ch;
    0x0000fcd6 adds r3, 3                                            |     r3 += 3;
                                                                     |     do {
    0x0000fcd8 ldrb r1, [r2, 1]!                                     |         r1 = *((r2 += 1));
    0x0000fcdc lsls r4, r4, 8                                        |         r4 <<= 8;
    0x0000fcde orr.w r4, r4, r5, lsr 24                              |         r4 |= (r5 >> 24);
    0x0000fce2 cmp r3, r2                                            |         
    0x0000fce4 orr.w r5, r1, r5, lsl 8                               |         r5 = r1 | (r5 << 8);
    0x0000fce8 bne 0xfcd8                                            |         
                                                                     |     } while (r3 != r2);
                                                                     | label_10:
    0x0000fcea ldr r2, [sp, 0x58]                                    |     r2 = var_58h;
    0x0000fcec mov r0, r6                                            |     r0 = r6;
    0x0000fcee ldr r3, [sp, 0x48]                                    |     r3 = var_48h;
    0x0000fcf0 str r5, [r3, r2]                                      |     *((r3 + r2)) = r5;
    0x0000fcf2 ldr r3, [sp, 0x3c]                                    |     r3 = var_3ch;
    0x0000fcf4 ldr r5, [sp, 0x50]                                    |     r5 = var_50h;
    0x0000fcf6 str r4, [r3, 4]                                       |     *((r3 + 4)) = r4;
    0x0000fcf8 ldr r3, [sp, 0x54]                                    |     r3 = var_54h;
    0x0000fcfa cmp r3, 2                                             |     
    0x0000fcfc itet ls                                               |     
                                                                     |     if (r3 > 2) {
    0x0000fcfe ldrls r2, [sp, 0x64]                                  |         r2 = var_64h;
                                                                     |     }
                                                                     |     if (r3 <= 2) {
    0x0000fd00 movhi r3, 0                                           |         r3 = 0;
                                                                     |     }
                                                                     |     if (r3 > 2) {
    0x0000fd02 ldrbls r3, [r2, r3]                                   |         r3 = *((r2 + r3));
                                                                     |     }
    0x0000fd04 ldr r2, [sp, 0x3c]                                    |     r2 = var_3ch;
    0x0000fd06 str r3, [r2, 8]                                       |     *((r2 + 8)) = r3;
    0x0000fd08 ldr r3, [sp, 0x34]                                    |     r3 = var_34h;
    0x0000fd0a str r5, [r2, 0xc]                                     |     *((r2 + 0xc)) = r5;
    0x0000fd0c adds r3, 1                                            |     r3++;
    0x0000fd0e str r3, [sp, 0x34]                                    |     var_34h = r3;
    0x0000fd10 blx 0x1bb0                                            |     r0 = fcn_00001bb0 ();
    0x0000fd14 mov r4, r0                                            |     r4 = r0;
    0x0000fd16 mov r1, r6                                            |     r1 = r6;
    0x0000fd18 mov r2, r4                                            |     r2 = r4;
    0x0000fd1a mov r0, r5                                            |     r0 = r5;
    0x0000fd1c blx 0x19c8                                            |     mmap64 ()
    0x0000fd20 movs r3, 0                                            |     r3 = 0;
    0x0000fd22 strb r3, [r5, r4]                                     |     *((r5 + r4)) = r3;
    0x0000fd24 adds r4, 1                                            |     r4++;
    0x0000fd26 adds r3, r5, r4                                       |     r3 = r5 + r4;
    0x0000fd28 str r3, [sp, 0x50]                                    |     var_50h = r3;
                                                                     | label_28:
    0x0000fd2a ldr r3, [sp, 0x10]                                    |     r3 = var_10h;
    0x0000fd2c ldr r2, [sp, 0x28]                                    |     r2 = var_28h;
    0x0000fd2e ldr r1, [sp, 0x30]                                    |     r1 = var_30h;
    0x0000fd30 adds r7, r3, r7                                       |     r7 = r3 + r7;
    0x0000fd32 adc r2, r2, 0                                         |     __asm ("adc r2, r2, 0");
    0x0000fd36 str r2, [sp, 0x28]                                    |     var_28h = r2;
    0x0000fd38 ldr r2, [sp, 0x1c]                                    |     r2 = var_1ch;
    0x0000fd3a adds r2, r2, r3                                       |     r2 += r3;
    0x0000fd3c adc r1, r1, 0                                         |     __asm ("adc r1, r1, 0");
    0x0000fd40 adds.w r3, sl, r3                                     |     r3 = sl + r3;
    0x0000fd44 mov sl, r3                                            |     sl = r3;
    0x0000fd46 str r1, [sp, 0x30]                                    |     var_30h = r1;
    0x0000fd48 ldr r3, [sp, 0x2c]                                    |     r3 = var_2ch;
    0x0000fd4a ldr r1, [sp, 8]                                       |     r1 = var_8h;
    0x0000fd4c str r2, [sp, 0x1c]                                    |     var_1ch = r2;
    0x0000fd4e ldr r2, [sp, 0x40]                                    |     r2 = var_40h;
    0x0000fd50 adc r3, r3, 0                                         |     __asm ("adc r3, r3, 0");
    0x0000fd54 str r3, [sp, 0x2c]                                    |     var_2ch = r3;
    0x0000fd56 cmp r2, r1                                            |     
    0x0000fd58 add.w r3, r2, 1                                       |     r3 = r2 + 1;
                                                                     |     if (r2 == r1) {
    0x0000fd5c beq.w 0xfef6                                          |         goto label_31;
                                                                     |     }
    0x0000fd60 str r3, [sp, 0x40]                                    |     var_40h = r3;
    0x0000fd62 ldr r3, [sp, 0x18]                                    |     r3 = var_18h;
    0x0000fd64 cmp r3, 0                                             |     
                                                                     |     if (r3 != 0) {
    0x0000fd66 bne.w 0xfba6                                          |         goto label_8;
                                                                     |     }
                                                                     | label_25:
    0x0000fd6a ldr r3, [sp, 0x2c]                                    |     r3 = var_2ch;
    0x0000fd6c cmp fp, sl                                            |     
    0x0000fd6e sbcs.w r3, sb, r3                                     |     __asm ("sbcs.w r3, sb, r3");
                                                                     |     if (fp <= sl) {
    0x0000fd72 blo.w 0xfefc                                          |         goto label_12;
                                                                     |     }
    0x0000fd76 ldr r3, [sp, 0x14]                                    |     r3 = var_14h;
    0x0000fd78 add.w r2, r8, r7                                      |     r2 = r8 + r7;
    0x0000fd7c cmp r3, 0                                             |     
                                                                     |     if (r3 == 0) {
    0x0000fd7e beq 0xfdfc                                            |         goto label_32;
                                                                     |     }
    0x0000fd80 ldr r6, [sp, 0xc]                                     |     r6 = var_ch;
    0x0000fd82 add.w r3, r8, -1                                      |     r3 = r8 + -1;
    0x0000fd86 add.w r1, r8, 3                                       |     r1 = r8 + 3;
    0x0000fd8a add r3, r7                                            |     r3 += r7;
    0x0000fd8c add r1, r7                                            |     r1 += r7;
                                                                     |     do {
    0x0000fd8e ldrb r0, [r3, 1]!                                     |         r0 = *((r3 += 1));
    0x0000fd92 cmp r3, r1                                            |         
    0x0000fd94 orr.w r6, r0, r6, lsl 8                               |         r6 = r0 | (r6 << 8);
    0x0000fd98 bne 0xfd8e                                            |         
                                                                     |     } while (r3 != r1);
    0x0000fd9a ldr r3, [sp, 0x28]                                    |     r3 = var_28h;
    0x0000fd9c adds.w r1, r7, 0x10                                   |     r1 = r7 + 0x10;
    0x0000fda0 adc r3, r3, 0                                         |     __asm ("adc r3, r3, 0");
    0x0000fda4 cmp fp, r1                                            |     
    0x0000fda6 sbcs.w r3, sb, r3                                     |     __asm ("sbcs.w r3, sb, r3");
                                                                     |     if (fp <= r1) {
    0x0000fdaa blo.w 0xfefc                                          |         goto label_12;
                                                                     |     }
    0x0000fdae ldr r1, [sp, 0x1c]                                    |     r1 = var_1ch;
    0x0000fdb0 add.w r3, r8, 0x10                                    |     r3 = r8 + 0x10;
    0x0000fdb4 ldr r5, [sp, 0xc]                                     |     r5 = var_ch;
    0x0000fdb6 add r3, r7                                            |     r3 += r7;
    0x0000fdb8 ldr r4, [sp, 0x4c]                                    |     r4 = var_4ch;
    0x0000fdba add r1, r8                                            |     r1 += r8;
                                                                     |     do {
    0x0000fdbc ldrb r0, [r1], 1                                      |         r0 = *(r1);
                                                                     |         r1++;
    0x0000fdc0 lsls r4, r4, 8                                        |         r4 <<= 8;
    0x0000fdc2 orr.w r4, r4, r5, lsr 24                              |         r4 |= (r5 >> 24);
    0x0000fdc6 cmp r1, r3                                            |         
    0x0000fdc8 orr.w r5, r0, r5, lsl 8                               |         r5 = r0 | (r5 << 8);
    0x0000fdcc bne 0xfdbc                                            |         
                                                                     |     } while (r1 != r3);
    0x0000fdce ldr r3, [sp, 0x28]                                    |     r3 = var_28h;
    0x0000fdd0 adds r1, r7, 5                                        |     r1 = r7 + 5;
    0x0000fdd2 adc r3, r3, 0                                         |     __asm ("adc r3, r3, 0");
    0x0000fdd6 cmp fp, r1                                            |     
    0x0000fdd8 sbcs.w r3, sb, r3                                     |     __asm ("sbcs.w r3, sb, r3");
                                                                     |     if (fp <= r1) {
    0x0000fddc blo.w 0xfefc                                          |         goto label_12;
                                                                     |     }
    0x0000fde0 ldrb.w r3, [r8, sl]                                   |     r3 = *((r8 + sl));
    0x0000fde4 str r3, [sp, 0x3c]                                    |     var_3ch = r3;
    0x0000fde6 ldr r3, [sp, 0x1c]                                    |     r3 = var_1ch;
    0x0000fde8 cmp fp, r3                                            |     
    0x0000fdea ldr r3, [sp, 0x30]                                    |     r3 = var_30h;
    0x0000fdec sbcs.w r3, sb, r3                                     |     __asm ("sbcs.w r3, sb, r3");
                                                                     |     if (fp <= r3) {
    0x0000fdf0 blo.w 0xfefc                                          |         goto label_12;
                                                                     |     }
    0x0000fdf4 ldrh r3, [r2, 6]                                      |     r3 = *((r2 + 6));
    0x0000fdf6 rev16 r3, r3                                          |     __asm ("rev16 r3, r3");
    0x0000fdf8 uxth r3, r3                                           |     r3 = (int16_t) r3;
    0x0000fdfa b 0xfc3c                                              |     goto label_9;
                                                                     | label_32:
    0x0000fdfc ldr r3, [sp, 0x60]                                    |     r3 = var_60h;
    0x0000fdfe ldr r6, [sp, 0xc]                                     |     r6 = var_ch;
    0x0000fe00 add r3, r7                                            |     r3 += r7;
                                                                     |     do {
    0x0000fe02 ldrb r1, [r3, -0x1]!                                  |         r1 = *((r3 -= 0x1));
    0x0000fe06 cmp r3, r2                                            |         
    0x0000fe08 orr.w r6, r1, r6, lsl 8                               |         r6 = r1 | (r6 << 8);
    0x0000fe0c bne 0xfe02                                            |         
                                                                     |     } while (r3 != r2);
    0x0000fe0e ldr r3, [sp, 0x28]                                    |     r3 = var_28h;
    0x0000fe10 adds.w r1, r7, 0x10                                   |     r1 = r7 + 0x10;
    0x0000fe14 adc r3, r3, 0                                         |     __asm ("adc r3, r3, 0");
    0x0000fe18 cmp fp, r1                                            |     
    0x0000fe1a sbcs.w r3, sb, r3                                     |     __asm ("sbcs.w r3, sb, r3");
                                                                     |     if (fp <= r1) {
    0x0000fe1e blo 0xfefc                                            |         goto label_12;
                                                                     |     }
    0x0000fe20 ldr r1, [sp, 0x1c]                                    |     r1 = var_1ch;
    0x0000fe22 add.w r3, r8, 0x10                                    |     r3 = r8 + 0x10;
    0x0000fe26 ldr r5, [sp, 0xc]                                     |     r5 = var_ch;
    0x0000fe28 add r3, r7                                            |     r3 += r7;
    0x0000fe2a ldr r4, [sp, 0x4c]                                    |     r4 = var_4ch;
    0x0000fe2c add.w r0, r8, r1                                      |     r0 = r8 + r1;
                                                                     |     do {
    0x0000fe30 ldrb r1, [r3, -0x1]!                                  |         r1 = *((r3 -= 0x1));
    0x0000fe34 lsls r4, r4, 8                                        |         r4 <<= 8;
    0x0000fe36 orr.w r4, r4, r5, lsr 24                              |         r4 |= (r5 >> 24);
    0x0000fe3a cmp r0, r3                                            |         
    0x0000fe3c orr.w r5, r1, r5, lsl 8                               |         r5 = r1 | (r5 << 8);
    0x0000fe40 bne 0xfe30                                            |         
                                                                     |     } while (r0 != r3);
    0x0000fe42 ldr r3, [sp, 0x28]                                    |     r3 = var_28h;
    0x0000fe44 adds r1, r7, 5                                        |     r1 = r7 + 5;
    0x0000fe46 adc r3, r3, 0                                         |     __asm ("adc r3, r3, 0");
    0x0000fe4a cmp fp, r1                                            |     
    0x0000fe4c sbcs.w r3, sb, r3                                     |     __asm ("sbcs.w r3, sb, r3");
                                                                     |     if (fp <= r1) {
    0x0000fe50 blo 0xfefc                                            |         goto label_12;
                                                                     |     }
    0x0000fe52 ldrb.w r3, [r8, sl]                                   |     r3 = *((r8 + sl));
    0x0000fe56 str r3, [sp, 0x3c]                                    |     var_3ch = r3;
    0x0000fe58 ldr r3, [sp, 0x1c]                                    |     r3 = var_1ch;
    0x0000fe5a cmp fp, r3                                            |     
    0x0000fe5c ldr r3, [sp, 0x30]                                    |     r3 = var_30h;
    0x0000fe5e sbcs.w r3, sb, r3                                     |     __asm ("sbcs.w r3, sb, r3");
                                                                     |     if (fp <= r3) {
    0x0000fe62 blo 0xfefc                                            |         goto label_12;
                                                                     |     }
    0x0000fe64 ldrh r3, [r2, 6]                                      |     r3 = *((r2 + 6));
    0x0000fe66 b 0xfc3c                                              |     goto label_9;
                                                                     | label_26:
    0x0000fe68 ldr r3, [sp, 0x60]                                    |     r3 = var_60h;
    0x0000fe6a ldr r6, [sp, 0xc]                                     |     r6 = var_ch;
    0x0000fe6c add r3, r7                                            |     r3 += r7;
                                                                     |     do {
    0x0000fe6e ldrb r1, [r3, -0x1]!                                  |         r1 = *((r3 -= 0x1));
    0x0000fe72 cmp r3, r2                                            |         
    0x0000fe74 orr.w r6, r1, r6, lsl 8                               |         r6 = r1 | (r6 << 8);
    0x0000fe78 bne 0xfe6e                                            |         
                                                                     |     } while (r3 != r2);
    0x0000fe7a ldr r3, [sp, 0x1c]                                    |     r3 = var_1ch;
    0x0000fe7c cmp fp, r3                                            |     
    0x0000fe7e ldr r3, [sp, 0x30]                                    |     r3 = var_30h;
    0x0000fe80 sbcs.w r3, sb, r3                                     |     __asm ("sbcs.w r3, sb, r3");
                                                                     |     if (fp <= r3) {
    0x0000fe84 blo 0xfefc                                            |         goto label_12;
                                                                     |     }
    0x0000fe86 ldr r3, [sp, 0x60]                                    |     r3 = var_60h;
    0x0000fe88 add.w r0, r8, sl                                      |     r0 = r8 + sl;
    0x0000fe8c ldr r5, [sp, 0xc]                                     |     r5 = var_ch;
    0x0000fe8e ldr r4, [sp, 0x4c]                                    |     r4 = var_4ch;
    0x0000fe90 add r3, sl                                            |     r3 += sl;
                                                                     |     do {
    0x0000fe92 ldrb r1, [r3, -0x1]!                                  |         r1 = *((r3 -= 0x1));
    0x0000fe96 lsls r4, r4, 8                                        |         r4 <<= 8;
    0x0000fe98 orr.w r4, r4, r5, lsr 24                              |         r4 |= (r5 >> 24);
    0x0000fe9c cmp r0, r3                                            |         
    0x0000fe9e orr.w r5, r1, r5, lsl 8                               |         r5 = r1 | (r5 << 8);
    0x0000fea2 bne 0xfe92                                            |         
                                                                     |     } while (r0 != r3);
    0x0000fea4 ldr r3, [sp, 0x28]                                    |     r3 = var_28h;
    0x0000fea6 adds.w r1, r7, 0xd                                    |     r1 = r7 + 0xd;
    0x0000feaa adc r3, r3, 0                                         |     __asm ("adc r3, r3, 0");
    0x0000feae cmp fp, r1                                            |     
    0x0000feb0 sbcs.w r3, sb, r3                                     |     __asm ("sbcs.w r3, sb, r3");
                                                                     |     if (fp <= r1) {
    0x0000feb4 blo 0xfefc                                            |         goto label_12;
                                                                     |     }
    0x0000feb6 add.w r3, r8, 0xc                                     |     r3 = r8 + 0xc;
    0x0000feba adds.w r1, r7, 0x10                                   |     r1 = r7 + 0x10;
    0x0000febe ldrb r3, [r3, r7]                                     |     r3 = *((r3 + r7));
    0x0000fec0 str r3, [sp, 0x3c]                                    |     var_3ch = r3;
    0x0000fec2 ldr r3, [sp, 0x28]                                    |     r3 = var_28h;
    0x0000fec4 adc r3, r3, 0                                         |     __asm ("adc r3, r3, 0");
    0x0000fec8 cmp fp, r1                                            |     
    0x0000feca sbcs.w r3, sb, r3                                     |     __asm ("sbcs.w r3, sb, r3");
                                                                     |     if (fp <= r1) {
    0x0000fece blo 0xfefc                                            |         goto label_12;
                                                                     |     }
    0x0000fed0 ldrh r3, [r2, 0xe]                                    |     r3 = *((r2 + 0xe));
    0x0000fed2 b 0xfc3c                                              |     goto label_9;
                                                                     | label_29:
    0x0000fed4 mov.w r5, -1                                          |     r5 = -1;
    0x0000fed8 mov r4, r5                                            |     r4 = r5;
    0x0000feda b 0xfcea                                              |     goto label_10;
                                                                     | label_30:
    0x0000fedc ldr r5, [sp, 0xc]                                     |     r5 = var_ch;
    0x0000fede adds r2, r3, 4                                        |     r2 = r3 + 4;
    0x0000fee0 ldr r4, [sp, 0x4c]                                    |     r4 = var_4ch;
                                                                     |     do {
    0x0000fee2 ldrb r1, [r2, -0x1]!                                  |         r1 = *((r2 -= 0x1));
    0x0000fee6 lsls r4, r4, 8                                        |         r4 <<= 8;
    0x0000fee8 orr.w r4, r4, r5, lsr 24                              |         r4 |= (r5 >> 24);
    0x0000feec cmp r3, r2                                            |         
    0x0000feee orr.w r5, r1, r5, lsl 8                               |         r5 = r1 | (r5 << 8);
    0x0000fef2 bne 0xfee2                                            |         
                                                                     |     } while (r3 != r2);
    0x0000fef4 b 0xfcea                                              |     goto label_10;
                                                                     | label_31:
    0x0000fef6 ldr.w sb, [sp, 0x34]                                  |     sb = var_34h;
    0x0000fefa b 0xf9c4                                              |     goto label_5;
                                                                     | label_12:
    0x0000fefc bl 0xe9e0                                             |     fcn_0000e9e0 ();
                                                                     | label_14:
    0x0000ff00 ldr r3, [pc, 0x48]                                    |     
    0x0000ff02 movs r2, 0xca                                         |     r2 = 0xca;
    0x0000ff04 ldr r1, [pc, 0x48]                                    |     
    0x0000ff06 ldr r0, [pc, 0x4c]                                    |     
    0x0000ff08 add r3, pc                                            |     r3 = 0x1fe58;
    0x0000ff0a add r1, pc                                            |     r1 = 0x1fe5e;
    0x0000ff0c add r0, pc                                            |     r0 = 0x1fe66;
    0x0000ff0e blx 0x1de0                                            |     fcn_00001de0 ();
                                                                     | label_27:
    0x0000ff12 bl 0xe9c0                                             |     fcn_0000e9c0 ();
                                                                     | label_19:
    0x0000ff16 blx 0x1a1c                                            |     stat64 ();
                                                                     | label_21:
    0x0000ff1a blx 0x1be4                                            |     r0 = isoc99_sscanf ();
    0x0000ff1e ldr r3, [r0]                                          |     r3 = *(r0);
    0x0000ff20 rsb.w sb, r3, 0                                       |     sb = r3 - ;
    0x0000ff24 b 0xf9c4                                              |     goto label_5;
                                                                     | }
    ; assembly                                                   | /* r2dec pseudo code output */
                                                                 | /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/bin/kmod @ 0xff58 */
                                                                 | #include <stdint.h>
                                                                 |  
    ; (fcn) fcn.0000ff58 ()                                      | void fcn_0000ff58 (int16_t arg_0h, int16_t arg_3h, int16_t arg_4h, int16_t arg_ch, int16_t arg_1h, int16_t arg1, int16_t arg2) {
                                                                 |     int16_t var_0h;
                                                                 |     int16_t var_4h;
                                                                 |     int16_t var_8h;
                                                                 |     int16_t var_ch;
                                                                 |     int16_t var_10h;
                                                                 |     int16_t var_14h;
                                                                 |     int16_t var_18h;
                                                                 |     int16_t var_1ch;
                                                                 |     int16_t var_20h;
                                                                 |     int16_t var_24h;
                                                                 |     int16_t var_28h;
                                                                 |     int16_t var_2ch;
                                                                 |     int16_t var_30h;
                                                                 |     int16_t var_34h;
                                                                 |     int16_t var_38h;
                                                                 |     int16_t var_3ch;
                                                                 |     int16_t var_40h;
                                                                 |     int16_t var_44h;
                                                                 |     int16_t var_48h;
                                                                 |     int16_t var_4ch;
                                                                 |     int16_t errnum;
                                                                 |     int16_t var_54h;
                                                                 |     int16_t var_58h;
                                                                 |     int16_t var_5ch;
                                                                 |     int16_t var_60h;
                                                                 |     int16_t var_64h;
                                                                 |     int16_t var_68h;
                                                                 |     int16_t var_6ch;
                                                                 |     int16_t var_70h;
                                                                 |     int16_t var_74h;
                                                                 |     int16_t var_78h;
                                                                 |     int16_t var_7ch;
                                                                 |     int16_t var_80h;
                                                                 |     int16_t var_84h;
                                                                 |     char * s;
                                                                 |     int16_t var_8ch;
                                                                 |     int16_t var_90h;
                                                                 |     int16_t var_94h;
                                                                 |     int16_t var_98h;
                                                                 |     int16_t var_9ch;
                                                                 |     int16_t var_a0h;
                                                                 |     int16_t var_a4h;
                                                                 |     int16_t var_ach;
                                                                 |     int16_t var_b0h;
                                                                 |     int16_t var_b4h;
                                                                 |     int16_t var_b8h;
                                                                 |     int16_t var_bch;
                                                                 |     int16_t var_c0h;
                                                                 |     int16_t var_c4h;
                                                                 |     int16_t var_c8h;
                                                                 |     int32_t var_c8h_2;
                                                                 |     int16_t var_d4h;
                                                                 |     r0 = arg1;
                                                                 |     r1 = arg2;
    0x0000ff58 push.w {r4, r5, r6, r7, r8, sb, sl, fp, lr}       |     
    0x0000ff5c sub sp, 0xdc                                      |     
    0x0000ff5e ldr.w r4, [pc, 0x8dc]                             |     r4 = *(0x0001083c);
    0x0000ff62 add r3, sp, 0xb8                                  |     r3 += var_b8h;
    0x0000ff64 add r2, sp, 0xac                                  |     r2 += var_ach;
    0x0000ff66 str r1, [sp, 0x9c]                                |     var_9ch = r1;
    0x0000ff68 ldr.w r1, [pc, 0x8d4]                             |     
    0x0000ff6c add r4, pc                                        |     r4 += pc;
    0x0000ff6e str r0, [sp, 0x2c]                                |     var_2ch = r0;
    0x0000ff70 ldr r1, [r4, r1]                                  |     r1 = *((r4 + r1));
    0x0000ff72 ldr r1, [r1]                                      |     r1 = *(0x10840);
    0x0000ff74 str r1, [sp, 0xd4]                                |     var_d4h = r1;
    0x0000ff76 mov.w r1, 0                                       |     r1 = 0;
    0x0000ff7a ldr.w r1, [pc, 0x8c8]                             |     
    0x0000ff7e add r1, pc                                        |     r1 = 0x207c8;
    0x0000ff80 bl 0xefac                                         |     r0 = fcn_0000efac (r0, r1, r2, r3);
    0x0000ff84 cmp r0, 0                                         |     
                                                                 |     if (r0 < 0) {
    0x0000ff86 blt.w 0x1077c                                     |         goto label_20;
                                                                 |     }
    0x0000ff8a ldr r3, [sp, 0x2c]                                |     r3 = var_2ch;
    0x0000ff8c movs r1, 0                                        |     r1 = 0;
    0x0000ff8e ldr r2, [r3, 0x10]                                |     r2 = *((r3 + 0x10));
    0x0000ff90 ldr r3, [sp, 0xb8]                                |     r3 = var_b8h;
    0x0000ff92 tst.w r2, 2                                       |     
    0x0000ff96 ite ne                                            |     
                                                                 |     if ((r2 & 2) == 0) {
    0x0000ff98 movne r2, 4                                       |         r2 = 4;
                                                                 |     }
                                                                 |     if ((r2 & 2) != 0) {
    0x0000ff9a moveq r2, 8                                       |         r2 = 8;
                                                                 |     }
    0x0000ff9c lsls r3, r3, 0x1a                                 |     r3 <<= 0x1a;
    0x0000ff9e str r2, [sp, 0x20]                                |     var_20h = r2;
    0x0000ffa0 itt eq                                            |     
                                                                 |     if (r3 != r3) {
    0x0000ffa2 moveq r3, 0x40                                    |         r3 = 0x40;
                                                                 |     }
                                                                 |     if (r3 != r3) {
    0x0000ffa4 streq r3, [sp, 0x3c]                              |         var_3ch = r3;
                                                                 |     }
                                                                 |     if (r3 != r3) {
    0x0000ffa6 bne.w 0x10244                                     |         goto label_21;
                                                                 |     }
                                                                 | label_1:
    0x0000ffaa ldr.w r1, [pc, 0x89c]                             |     
    0x0000ffae add r3, sp, 0xc0                                  |     r3 += var_c0h;
    0x0000ffb0 ldr r0, [sp, 0x2c]                                |     r0 = var_2ch;
    0x0000ffb2 add r2, sp, 0xb0                                  |     r2 += var_b0h;
    0x0000ffb4 add r1, pc                                        |     r1 = 0x20802;
    0x0000ffb6 bl 0xefac                                         |     r0 = fcn_0000efac (r0, r1, r2, r3);
    0x0000ffba cmp r0, 0                                         |     
                                                                 |     if (r0 < 0) {
    0x0000ffbc blt.w 0x107f0                                     |         goto label_22;
                                                                 |     }
    0x0000ffc0 ldr r4, [sp, 0x2c]                                |     r4 = var_2ch;
    0x0000ffc2 add r3, sp, 0xc8                                  |     r3 += var_c8h;
    0x0000ffc4 ldr.w r1, [pc, 0x884]                             |     
    0x0000ffc8 add r2, sp, 0xb4                                  |     r2 += var_b4h;
    0x0000ffca mov r0, r4                                        |     r0 = r4;
    0x0000ffcc add r1, pc                                        |     r1 = 0x2081c;
    0x0000ffce bl 0xefac                                         |     r0 = fcn_0000efac (r0, r1, r2, r3);
    0x0000ffd2 cmp r0, 0                                         |     
                                                                 |     if (r0 < 0) {
    0x0000ffd4 blt.w 0x107f0                                     |         goto label_22;
                                                                 |     }
    0x0000ffd8 ldr r3, [r4, 0x10]                                |     r3 = *((r4 + 0x10));
    0x0000ffda ldrd r0, r1, [sp, 0xc8]                           |     __asm ("ldrd r0, r1, [var_c8h]");
    0x0000ffde str r3, [sp, 0x8c]                                |     var_8ch = r3;
    0x0000ffe0 ands r3, r3, 2                                    |     r3 &= 2;
    0x0000ffe4 str r3, [sp, 0x10]                                |     var_10h = r3;
    0x0000ffe6 ite eq                                            |     
                                                                 |     if (r3 != r3) {
    0x0000ffe8 moveq r3, 0x18                                    |         r3 = 0x18;
                                                                 |     }
                                                                 |     if (r3 == r3) {
    0x0000ffea movne r3, 0x10                                    |         r3 = 0x10;
                                                                 |     }
    0x0000ffec str r3, [sp, 0x14]                                |     var_14h = r3;
    0x0000ffee mov r4, r3                                        |     r4 = r3;
    0x0000fff0 ldr r2, [sp, 0x14]                                |     r2 = var_14h;
    0x0000fff2 movs r3, 0                                        |     r3 = 0;
    0x0000fff4 bl 0x113b0                                        |     fcn_000113b0 (r0, r1, r2, r3);
    0x0000fff8 str r3, [sp, 0x44]                                |     var_44h = r3;
    0x0000fffa orrs r3, r2                                       |     r3 |= r2;
    0x0000fffc str r0, [sp, 0x90]                                |     var_90h = r0;
    0x0000fffe movs r2, r0                                       |     r2 = r0;
    0x00010000 movs r0, r0                                       |     
    0x00010002 movs r0, r0                                       |     
    0x00010004 movs r0, r0                                       |     
    0x00010006 stc2 p0, c9, [r0, -0x5c]                          |     __asm ("stc2 p0, c9, [r0, -0x5c]");
    0x0001000a orrs.w r3, r0, r1                                 |     r3 = r0 | r1;
    0x0001000e str r1, [sp, 0x60]                                |     var_60h = r1;
                                                                 |     if (r3 == r0) {
    0x00010010 beq.w 0x1023c                                     |         goto label_23;
                                                                 |     }
    0x00010014 ldr r2, [sp, 0x3c]                                |     r2 = var_3ch;
    0x00010016 movs r3, 0                                        |     r3 = 0;
    0x00010018 bl 0x113b0                                        |     fcn_000113b0 (r0, r1, r2, r3);
    0x0001001c movs r1, 1                                        |     r1 = 1;
    0x0001001e str r0, [sp, 0x98]                                |     var_98h = r0;
    0x00010020 blx 0x18d8                                        |     calloc (r0, r1);
    0x00010024 str r0, [sp, 0x64]                                |     var_64h = r0;
    0x00010026 cmp r0, 0                                         |     
                                                                 |     if (r0 == 0) {
    0x00010028 beq.w 0x10832                                     |         goto label_24;
                                                                 |     }
                                                                 | label_0:
    0x0001002c ldr r2, [sp, 0x2c]                                |     r2 = var_2ch;
    0x0001002e movs r1, 8                                        |     r1 = 8;
    0x00010030 ldr r3, [sp, 0xb4]                                |     r3 = var_b4h;
    0x00010032 ldr r6, [sp, 0x90]                                |     r6 = var_90h;
    0x00010034 ldr.w fp, [r2]                                    |     fp = *(r2);
    0x00010038 mov r0, r6                                        |     r0 = r6;
    0x0001003a sub.w r3, r3, fp                                  |     r3 -= fp;
    0x0001003e adds r4, r3, r4                                   |     r4 = r3 + r4;
    0x00010040 ldrh.w r3, [r2, 0x48]                             |     r3 = *((r2 + 0x48));
    0x00010044 str r4, [sp, 0x94]                                |     var_94h = r4;
    0x00010046 cmp r3, 0x2b                                      |     
    0x00010048 it ne                                             |     
                                                                 |     if (r3 != 0x2b) {
    0x0001004a cmpne r3, 2                                       |         __asm ("cmpne r3, 2");
                                                                 |     }
    0x0001004c ite eq                                            |     
                                                                 |     if (r3 != 0x2b) {
    0x0001004e moveq r3, 1                                       |         r3 = 1;
                                                                 |     }
                                                                 |     if (r3 == 0x2b) {
    0x00010050 movne r3, 0                                       |         r3 = 0;
                                                                 |     }
    0x00010052 str r3, [sp, 0x30]                                |     var_30h = r3;
    0x00010054 ldr r3, [sp, 0xb0]                                |     r3 = var_b0h;
    0x00010056 sub.w r3, r3, fp                                  |     r3 -= fp;
    0x0001005a mov r5, r3                                        |     r5 = r3;
    0x0001005c str r3, [sp, 0x34]                                |     var_34h = r3;
    0x0001005e blx 0x18d8                                        |     calloc (r0, r1);
    0x00010062 asrs r2, r5, 0x1f                                 |     r2 = r5 >> 0x1f;
    0x00010064 str r6, [sp, 0x18]                                |     var_18h = r6;
    0x00010066 str r4, [sp, 0xa0]                                |     var_a0h = r4;
    0x00010068 str r2, [sp, 0x38]                                |     var_38h = r2;
    0x0001006a movs r2, 0                                        |     r2 = 0;
    0x0001006c str r2, [sp, 0xa4]                                |     var_a4h = r2;
    0x0001006e str r0, [sp, 0x88]                                |     s = r0;
    0x00010070 cmp r0, 0                                         |     
                                                                 |     if (r0 == 0) {
    0x00010072 beq.w 0x1080e                                     |         goto label_25;
                                                                 |     }
    0x00010076 cmp r6, 1                                         |     
                                                                 |     if (r6 <= 1) {
    0x00010078 ble.w 0x107a0                                     |         goto label_26;
                                                                 |     }
    0x0001007c ldr r3, [sp, 0x10]                                |     r3 = var_10h;
    0x0001007e movs r2, 0                                        |     r2 = 0;
    0x00010080 ldr r5, [sp, 0x94]                                |     r5 = var_94h;
    0x00010082 str r2, [sp, 0x4c]                                |     var_4ch = r2;
    0x00010084 cmp r3, 0                                         |     
    0x00010086 ldr r3, [sp, 0xac]                                |     r3 = var_ach;
    0x00010088 ite ne                                            |     
                                                                 |     if (r3 == 0) {
    0x0001008a movne sb, 4                                       |         sb = 4;
                                                                 |     }
                                                                 |     if (r3 == 0) {
    0x0001008e mov.w sb, 8                                       |         sb = 8;
                                                                 |     }
    0x00010092 sub.w r3, r3, fp                                  |     r3 -= fp;
    0x00010096 str r3, [sp, 0x84]                                |     var_84h = r3;
    0x00010098 adds.w r3, sb, r3                                 |     r3 = sb + r3;
    0x0001009c str r3, [sp, 0x40]                                |     var_40h = r3;
    0x0001009e ldr r3, [sp, 0xc0]                                |     r3 = var_c0h;
    0x000100a0 str r3, [sp, 0x54]                                |     var_54h = r3;
    0x000100a2 ldr r3, [sp, 0xc4]                                |     r3 = var_c4h;
    0x000100a4 str r3, [sp, 0x58]                                |     var_58h = r3;
    0x000100a6 ldr r3, [sp, 0x2c]                                |     r3 = var_2ch;
    0x000100a8 ldrd r8, r7, [r3, 8]                              |     __asm ("ldrd r8, r7, [r3, 8]");
    0x000100ac adc.w r3, r2, r2                                  |     __asm ("adc.w r3, r2, r2");
    0x000100b0 str r3, [sp, 0x68]                                |     var_68h = r3;
    0x000100b2 adds.w sl, r5, 4                                  |     sl = r5 + 4;
    0x000100b6 ldr r3, [sp, 0x88]                                |     r3 = s;
    0x000100b8 add.w r3, r3, 8                                   |     r3 += 8;
    0x000100bc str r3, [sp, 4]                                   |     var_4h = r3;
    0x000100be adc r3, r2, 0                                     |     __asm ("adc r3, r2, 0");
    0x000100c2 str r3, [sp]                                      |     *(sp) = r3;
    0x000100c4 mov r3, r2                                        |     r3 = r2;
    0x000100c6 movs r2, 1                                        |     r2 = 1;
    0x000100c8 str r3, [sp, 0x50]                                |     errnum = r3;
    0x000100ca str r2, [sp, 0xc]                                 |     var_ch = r2;
    0x000100cc ldr r2, [sp, 0x8c]                                |     r2 = var_8ch;
    0x000100ce and r2, r2, 0x10                                  |     r2 &= 0x10;
    0x000100d2 str r2, [sp, 0x1c]                                |     var_1ch = r2;
    0x000100d4 add.w r2, fp, 4                                   |     r2 += arg_4h;
    0x000100d8 str r2, [sp, 0x6c]                                |     var_6ch = r2;
    0x000100da add.w r2, fp, -1                                  |     r2 = fp + -1;
    0x000100de str r2, [sp, 0x70]                                |     var_70h = r2;
    0x000100e0 add.w r2, fp, 3                                   |     r2 += arg_3h;
    0x000100e4 str r2, [sp, 0x74]                                |     var_74h = r2;
    0x000100e6 add.w r2, fp, 0xc                                 |     r2 += arg_ch;
    0x000100ea str r2, [sp, 0x78]                                |     var_78h = r2;
    0x000100ec mov r2, sl                                        |     r2 = sl;
    0x000100ee mov sl, sb                                        |     sl = sb;
    0x000100f0 mov sb, r2                                        |     sb = r2;
                                                                 | label_2:
    0x000100f2 ldr r2, [sp, 0x10]                                |     r2 = var_10h;
    0x000100f4 cmp r2, 0                                         |     
                                                                 |     if (r2 == 0) {
    0x000100f6 beq.w 0x105e4                                     |         goto label_27;
                                                                 |     }
    0x000100fa ldr r2, [sp]                                      |     r2 = *(sp);
    0x000100fc cmp r8, sb                                        |     
    0x000100fe sbcs.w r2, r7, r2                                 |     __asm ("sbcs.w r2, r7, r2");
                                                                 |     if (r8 <= sb) {
    0x00010102 blo.w 0x107f6                                     |         goto label_28;
                                                                 |     }
    0x00010106 ldr r2, [sp, 0x1c]                                |     r2 = var_1ch;
    0x00010108 add.w r1, r5, fp                                  |     r1 = r5 + fp;
    0x0001010c cmp r2, 0                                         |     
                                                                 |     if (r2 == 0) {
    0x0001010e beq.w 0x1063c                                     |         goto label_29;
                                                                 |     }
    0x00010112 ldr r2, [sp, 0x70]                                |     r2 = var_70h;
    0x00010114 ldr r0, [sp, 0x74]                                |     r0 = var_74h;
    0x00010116 ldr r4, [sp, 8]                                   |     r4 = var_8h;
    0x00010118 add r2, r5                                        |     r2 += r5;
    0x0001011a adds r6, r0, r5                                   |     r6 = r0 + r5;
                                                                 |     do {
    0x0001011c ldrb r0, [r2, 1]!                                 |         r0 = *((r2 += 1));
    0x00010120 cmp r6, r2                                        |         
    0x00010122 orr.w r4, r0, r4, lsl 8                           |         r4 = r0 | (r4 << 8);
    0x00010126 bne 0x1011c                                       |         
                                                                 |     } while (r6 != r2);
    0x00010128 adds.w r0, r5, 0x10                               |     r0 = r5 + 0x10;
    0x0001012c adc r2, r3, 0                                     |     __asm ("adc r2, r3, 0");
    0x00010130 cmp r8, r0                                        |     
    0x00010132 sbcs.w r2, r7, r2                                 |     __asm ("sbcs.w r2, r7, r2");
                                                                 |     if (r8 <= r0) {
    0x00010136 blo.w 0x107f6                                     |         goto label_28;
                                                                 |     }
    0x0001013a ldrh r2, [r1, 0xe]                                |     r2 = *((r1 + 0xe));
    0x0001013c rev16 r2, r2                                      |     __asm ("rev16 r2, r2");
    0x0001013e uxth r2, r2                                       |     r2 = (int16_t) r2;
                                                                 | label_8:
    0x00010140 adds.w r0, r5, 0xd                                |     r0 = r5 + 0xd;
    0x00010144 adc r1, r3, 0                                     |     __asm ("adc r1, r3, 0");
    0x00010148 lsls r0, r0                                       |     r0 <<= r0;
    0x0001014a eors r0, r0                                       |     r0 = 0;
    0x0001014c lsls r0, r0, 4                                    |     r0 <<= 4;
                                                                 |     if (r0 <= r0) {
    0x0001014e blo.w 0x107f6                                     |         goto label_28;
                                                                 |     }
    0x00010152 ldr r1, [sp, 0x78]                                |     r1 = var_78h;
    0x00010154 ldrb r1, [r1, r5]                                 |     r1 = *((r1 + r5));
                                                                 | label_7:
    0x00010156 cmp r2, 0                                         |     
                                                                 |     if (r2 != 0) {
    0x00010158 bne.w 0x102b0                                     |         goto label_18;
                                                                 |     }
    0x0001015c ldr r2, [sp, 0x30]                                |     r2 = var_30h;
                                                                 |     if (r2 != 0) {
    0x0001015e cbz r2, 0x1016a                                   |         
    0x00010160 and r1, r1, 0xf                                   |         r1 &= 0xf;
    0x00010164 cmp r1, 0xd                                       |         
                                                                 |         if (r1 == 0xd) {
    0x00010166 beq.w 0x102b0                                     |             goto label_18;
                                                                 |         }
                                                                 |     }
    0x0001016a ldr r2, [sp, 0x54]                                |     r2 = var_54h;
    0x0001016c movs r1, 0                                        |     r1 = 0;
    0x0001016e cmp r4, r2                                        |     
    0x00010170 ldr r2, [sp, 0x58]                                |     r2 = var_58h;
    0x00010172 sbcs.w r2, r1, r2                                 |     __asm ("sbcs.w r2, r1, r2");
                                                                 |     if (r4 >= r2) {
    0x00010176 bhs.w 0x1078e                                     |         goto label_30;
                                                                 |     }
    0x0001017a ldr r2, [sp, 0x34]                                |     r2 = var_34h;
    0x0001017c adds r4, r4, r2                                   |     r4 += r2;
    0x0001017e ldr r2, [sp, 0x38]                                |     r2 = var_38h;
    0x00010180 adc r2, r2, 0                                     |     __asm ("adc r2, r2, 0");
    0x00010184 cmp r4, r8                                        |     
    0x00010186 sbcs r2, r7                                       |     __asm ("sbcs r2, r7");
                                                                 |     if (r4 >= r8) {
    0x00010188 bhs 0x10224                                       |         goto label_3;
                                                                 |     }
    0x0001018a ldrb.w r2, [fp, r4]                               |     r2 = *((fp + r4));
    0x0001018e add r4, fp                                        |     r4 += fp;
    0x00010190 cmp r2, 0                                         |     
                                                                 |     if (r2 == 0) {
    0x00010192 beq.w 0x102b0                                     |         goto label_18;
                                                                 |     }
    0x00010196 str r3, [sp, 0x24]                                |     var_24h = r3;
    0x00010198 mov r0, r4                                        |     r0 = r4;
    0x0001019a ldr r3, [sp, 0x4c]                                |     r3 = var_4ch;
    0x0001019c adds r3, 1                                        |     r3++;
    0x0001019e str r3, [sp, 0x4c]                                |     var_4ch = r3;
    0x000101a0 blx 0x1bb0                                        |     fcn_00001bb0 ();
    0x000101a4 ldr r2, [sp, 0x50]                                |     r2 = errnum;
    0x000101a6 adds r2, 1                                        |     r2++;
    0x000101a8 adds r3, r0, r2                                   |     r3 = r0 + r2;
    0x000101aa str r3, [sp, 0x50]                                |     errnum = r3;
    0x000101ac ldrd r3, r2, [sp, 0x5c]                           |     __asm ("ldrd r3, r2, [var_5ch]");
    0x000101b0 orrs r2, r3                                       |     r2 |= r3;
    0x000101b2 ldr r3, [sp, 0x24]                                |     r3 = var_24h;
    0x000101b4 it eq                                             |     
                                                                 |     if (r2 == r3) {
    0x000101b6 ldrdeq r0, r1, [sp, 0x5c]                         |         __asm ("ldrdeq r0, r1, [var_5ch]");
                                                                 |     }
                                                                 |     if (r2 == r3) {
    0x000101ba beq 0x102aa                                       |         goto label_31;
                                                                 |     }
    0x000101bc ldr r2, [sp, 0x40]                                |     r2 = var_40h;
    0x000101be cmp r2, r8                                        |     
    0x000101c0 ldr r2, [sp, 0x68]                                |     r2 = var_68h;
    0x000101c2 sbcs r2, r7                                       |     __asm ("sbcs r2, r7");
                                                                 |     if (r2 >= r8) {
    0x000101c4 bhs 0x10224                                       |         goto label_3;
                                                                 |     }
    0x000101c6 ldr r1, [sp, 0x44]                                |     r1 = var_44h;
    0x000101c8 movs r2, 0                                        |     r2 = 0;
    0x000101ca str r2, [sp, 0x28]                                |     var_28h = r2;
    0x000101cc ldr r2, [sp, 8]                                   |     r2 = var_8h;
    0x000101ce str r1, [sp, 0x24]                                |     var_24h = r1;
    0x000101d0 ldr r6, [sp, 0x84]                                |     r6 = var_84h;
    0x000101d2 ldr r1, [sp, 0x40]                                |     r1 = var_40h;
    0x000101d4 strd r5, r3, [sp, 0x7c]                           |     __asm ("strd r5, r3, [var_80h]");
    0x000101d8 mov r5, r2                                        |     r5 = r2;
    0x000101da add r1, fp                                        |     r1 += fp;
    0x000101dc str r1, [sp, 0x48]                                |     var_48h = r1;
                                                                 |     do {
    0x000101de ldr r3, [sp, 0x48]                                |         r3 = var_48h;
    0x000101e0 mov r0, r4                                        |         r0 = r4;
    0x000101e2 adds r1, r3, r5                                   |         r1 = r3 + r5;
    0x000101e4 blx 0x1924                                        |         r0 = fcn_00001924 ();
    0x000101e8 cmp r0, 0                                         |         
                                                                 |         if (r0 == 0) {
    0x000101ea beq 0x10254                                       |             goto label_32;
                                                                 |         }
    0x000101ec adds.w r2, r5, 0x40                               |         r2 = r5 + 0x40;
    0x000101f0 ldr r3, [sp, 0x24]                                |         r3 = var_24h;
    0x000101f2 mov r5, r2                                        |         r5 = r2;
    0x000101f4 ldr r2, [sp, 0x5c]                                |         r2 = var_5ch;
    0x000101f6 adc r3, r3, 0                                     |         __asm ("adc r3, r3, 0");
    0x000101fa cmp r5, r2                                        |         
    0x000101fc ldr r2, [sp, 0x60]                                |         r2 = var_60h;
    0x000101fe str r3, [sp, 0x24]                                |         var_24h = r3;
    0x00010200 sbcs.w r1, r3, r2                                 |         __asm ("sbcs.w r1, r3, r2");
                                                                 |         if (r5 >= r2) {
    0x00010204 bhs.w 0x107e0                                     |             goto label_33;
                                                                 |         }
    0x00010208 ldr r3, [sp, 0x28]                                |         r3 = var_28h;
    0x0001020a adds r6, 0x40                                     |         r6 += 0x40;
    0x0001020c ldr r2, [sp, 0x68]                                |         r2 = var_68h;
    0x0001020e adc r3, r3, 0                                     |         __asm ("adc r3, r3, 0");
    0x00010212 str r3, [sp, 0x28]                                |         var_28h = r3;
    0x00010214 ldr r3, [sp, 0x40]                                |         r3 = var_40h;
    0x00010216 adds r0, r5, r3                                   |         r0 = r5 + r3;
    0x00010218 ldr r3, [sp, 0x24]                                |         r3 = var_24h;
    0x0001021a adc.w r1, r3, r2                                  |         __asm ("adc.w r1, r3, r2");
    0x0001021e cmp r0, r8                                        |         
    0x00010220 sbcs r1, r7                                       |         __asm ("sbcs r1, r7");
    0x00010222 blo 0x101de                                       |         
                                                                 |     } while (r0 <= r8);
                                                                 | label_3:
    0x00010224 ldr.w r3, [pc, 0x628]                             |     
    0x00010228 movs r2, 0xca                                     |     r2 = 0xca;
    0x0001022a ldr.w r1, [pc, 0x628]                             |     
    0x0001022e ldr.w r0, [pc, 0x628]                             |     
    0x00010232 add r3, pc                                        |     r3 = 0x20a86;
    0x00010234 add r1, pc                                        |     r1 = 0x20a8e;
    0x00010236 add r0, pc                                        |     r0 = 0x20a94;
    0x00010238 blx 0x1de0                                        |     fcn_00001de0 ();
                                                                 | label_23:
    0x0001023c movs r3, 0                                        |     r3 = 0;
    0x0001023e str r3, [sp, 0x64]                                |     var_64h = r3;
    0x00010240 str r3, [sp, 0x98]                                |     var_98h = r3;
    0x00010242 b 0x1002c                                         |     goto label_0;
                                                                 | label_21:
    0x00010244 vmov.i32 d16, 0                                   |     __asm ("vmov.i32 d16, 0");
    0x00010248 movs r3, 0x40                                     |     r3 = 0x40;
    0x0001024a str r3, [sp, 0x3c]                                |     var_3ch = r3;
    0x0001024c str r1, [sp, 0xac]                                |     var_ach = r1;
    0x0001024e vstr d16, [sp, 0xb8]                              |     __asm ("vstr d16, [sp, 0xb8]");
    0x00010252 b 0xffaa                                          |     goto label_1;
                                                                 | label_32:
    0x00010254 ldr r0, [sp, 0x28]                                |     r0 = var_28h;
    0x00010256 adds.w r1, sl, r6                                 |     r1 = sl + r6;
    0x0001025a mov r2, r5                                        |     r2 = r5;
    0x0001025c ldr r3, [sp, 0x80]                                |     r3 = var_80h;
    0x0001025e ldr r5, [sp, 0x7c]                                |     r5 = var_7ch;
    0x00010260 adc r0, r0, 0                                     |     __asm ("adc r0, r0, 0");
    0x00010264 cmp r8, r1                                        |     
    0x00010266 sbcs.w r1, r7, r0                                 |     __asm ("sbcs.w r1, r7, r0");
                                                                 |     if (r8 <= r1) {
    0x0001026a blo.w 0x107f6                                     |         goto label_28;
                                                                 |     }
    0x0001026e ldr r1, [sp, 0x1c]                                |     r1 = var_1ch;
    0x00010270 add r6, fp                                        |     r6 += fp;
    0x00010272 cmp r1, 0                                         |     
                                                                 |     if (r1 == 0) {
    0x00010274 beq.w 0x106ea                                     |         goto label_34;
                                                                 |     }
    0x00010278 ldr r0, [sp, 8]                                   |     r0 = var_8h;
    0x0001027a add.w ip, r6, -1                                  |     
    0x0001027e ldr r1, [sp, 0x44]                                |     r1 = var_44h;
                                                                 |     do {
    0x00010280 mov r4, ip                                        |         r4 = ip;
    0x00010282 ldrb lr, [ip, 1]!                                 |         
    0x00010286 adds r4, 2                                        |         r4 += 2;
    0x00010288 lsls r1, r1, 8                                    |         r1 <<= 8;
    0x0001028a subs r4, r4, r6                                   |         r4 -= r6;
    0x0001028c cmp r4, sl                                        |         
    0x0001028e orr.w r1, r1, r0, lsr 24                          |         r1 |= (r0 >> 24);
    0x00010292 orr.w r0, lr, r0, lsl 8                           |         r0 = lr | (r0 << 8);
    0x00010296 blo 0x10280                                       |         
                                                                 |     } while (r4 <= sl);
                                                                 | label_11:
    0x00010298 ldr r4, [sp, 0x64]                                |     r4 = var_64h;
                                                                 |     if (r4 != 0) {
    0x0001029a cbz r4, 0x102aa                                   |         
    0x0001029c lsrs r4, r2, 6                                    |         r4 = r2 >> 6;
    0x0001029e ldr r2, [sp, 0x24]                                |         r2 = var_24h;
    0x000102a0 ldr r6, [sp, 0x64]                                |         r6 = var_64h;
    0x000102a2 orr.w r4, r4, r2, lsl 26                          |         r4 |= (r2 << 26);
    0x000102a6 movs r2, 1                                        |         r2 = 1;
    0x000102a8 strb r2, [r6, r4]                                 |         *((r6 + r4)) = r2;
                                                                 |     }
                                                                 | label_31:
    0x000102aa ldr r2, [sp, 4]                                   |     r2 = var_4h;
    0x000102ac strd r0, r1, [r2]                                 |     __asm ("strd r0, r1, [r2]");
                                                                 | label_18:
    0x000102b0 ldr r2, [sp, 0x14]                                |     r2 = var_14h;
    0x000102b2 ldr r1, [sp, 0xc]                                 |     r1 = var_ch;
    0x000102b4 ldr r0, [sp, 4]                                   |     r0 = var_4h;
    0x000102b6 adds r5, r5, r2                                   |     r5 += r2;
    0x000102b8 adc r3, r3, 0                                     |     __asm ("adc r3, r3, 0");
    0x000102bc adds.w r2, r2, sb                                 |     r2 += sb;
    0x000102c0 mov sb, r2                                        |     sb = r2;
    0x000102c2 ldr r2, [sp]                                      |     r2 = *(sp);
    0x000102c4 add.w r1, r1, 1                                   |     r1++;
    0x000102c8 add.w r0, r0, 8                                   |     r0 += 8;
    0x000102cc str r1, [sp, 0xc]                                 |     var_ch = r1;
    0x000102ce adc r2, r2, 0                                     |     __asm ("adc r2, r2, 0");
    0x000102d2 str r0, [sp, 4]                                   |     var_4h = r0;
    0x000102d4 str r2, [sp]                                      |     *(sp) = r2;
    0x000102d6 ldr r2, [sp, 0x18]                                |     r2 = var_18h;
    0x000102d8 cmp r2, r1                                        |     
                                                                 |     if (r2 != r1) {
    0x000102da bne.w 0x100f2                                     |         goto label_2;
                                                                 |     }
    0x000102de ldr r3, [sp, 0x64]                                |     r3 = var_64h;
    0x000102e0 cmp r3, 0                                         |     
                                                                 |     if (r3 == 0) {
    0x000102e2 beq 0x1035c                                       |         goto label_35;
                                                                 |     }
    0x000102e4 ldr r3, [sp, 0x98]                                |     r3 = var_98h;
    0x000102e6 ldr r5, [sp, 0x84]                                |     r5 = var_84h;
    0x000102e8 cmp r3, 0                                         |     
    0x000102ea asr.w r6, r5, 0x1f                                |     r6 = r5 >> 0x1f;
                                                                 |     if (r3 <= 0) {
    0x000102ee ble 0x1035c                                       |         goto label_35;
                                                                 |     }
                                                                 | label_16:
    0x000102f0 ldr r3, [sp, 0x64]                                |     r3 = var_64h;
    0x000102f2 movs r7, 0                                        |     r7 = 0;
    0x000102f4 str.w fp, [sp]                                    |     __asm ("str.w fp, [sp]");
    0x000102f8 str r5, [sp, 4]                                   |     var_4h = r5;
    0x000102fa str r6, [sp, 0xc]                                 |     var_ch = r6;
    0x000102fc add.w r8, r3, -1                                  |     r8 = r3 + -1;
    0x00010300 ldr.w fp, [sp, 0x4c]                              |     fp = var_4ch;
    0x00010304 mov sl, r3                                        |     sl = r3;
    0x00010306 ldr.w sb, [sp, 0x98]                              |     sb = var_98h;
    0x0001030a ldr r5, [sp, 0x50]                                |     r5 = errnum;
    0x0001030c ldr r6, [sp, 0x2c]                                |     r6 = var_2ch;
                                                                 | label_4:
    0x0001030e mov r4, r8                                        |     r4 = r8;
    0x00010310 ldrb r3, [r8, 1]!                                 |     r3 = *((r8 += 1));
                                                                 |     if (r3 != 0) {
    0x00010314 cbnz r3, 0x10346                                  |         goto label_36;
                                                                 |     }
    0x00010316 ldr r3, [sp, 0x20]                                |     r3 = var_20h;
    0x00010318 ldr r1, [sp, 4]                                   |     r1 = var_4h;
    0x0001031a ldr r2, [r6, 8]                                   |     r2 = *((r6 + 8));
    0x0001031c adds r0, r3, r1                                   |     r0 = r3 + r1;
    0x0001031e ldr r1, [sp, 0xc]                                 |     r1 = var_ch;
    0x00010320 ldr r3, [r6, 0xc]                                 |     r3 = *((r6 + 0xc));
    0x00010322 adc ip, r1, 0                                     |     __asm ("adc ip, r1, 0");
    0x00010326 adds r0, r0, r7                                   |     r0 += r7;
    0x00010328 adc ip, ip, 0                                     |     __asm ("adc ip, ip, 0");
    0x0001032c cmp r0, r2                                        |     
    0x0001032e sbcs.w ip, ip, r3                                 |     __asm ("sbcs.w ip, ip, r3");
                                                                 |     if (r0 >= r2) {
    0x00010332 bhs.w 0x10224                                     |         goto label_3;
                                                                 |     }
    0x00010336 ldr r3, [sp]                                      |     r3 = *(sp);
    0x00010338 adds r5, 1                                        |     r5++;
    0x0001033a add.w fp, fp, 1                                   |     
    0x0001033e add r0, r3                                        |     r0 += r3;
    0x00010340 blx 0x1bb0                                        |     r0 = fcn_00001bb0 ();
    0x00010344 add r5, r0                                        |     r5 += r0;
                                                                 | label_36:
    0x00010346 adds r4, 2                                        |     r4 += 2;
    0x00010348 ldr r3, [sp, 0x3c]                                |     r3 = var_3ch;
    0x0001034a sub.w r4, r4, sl                                  |     r4 -= sl;
    0x0001034e cmp sb, r4                                        |     
    0x00010350 add r7, r3                                        |     r7 += r3;
                                                                 |     if (sb > r4) {
    0x00010352 bgt 0x1030e                                       |         goto label_4;
                                                                 |     }
    0x00010354 strd fp, r5, [sp, 0x4c]                           |     __asm ("strd fp, r5, [var_4ch]");
    0x00010358 ldr.w fp, [sp]                                    |     fp = *(sp);
                                                                 | label_35:
    0x0001035c ldr r3, [sp, 0x4c]                                |     r3 = var_4ch;
    0x0001035e cmp r3, 0                                         |     
                                                                 |     if (r3 == 0) {
    0x00010360 beq.w 0x107c0                                     |         goto label_37;
                                                                 |     }
    0x00010364 ldr r0, [sp, 0x50]                                |     r0 = errnum;
    0x00010366 lsls r4, r3, 4                                    |     r4 = r3 << 4;
    0x00010368 add r0, r4                                        |     r0 += r4;
    0x0001036a blx 0x1b0c                                        |     strerror (r0);
    0x0001036e ldr r2, [sp, 0x9c]                                |     r2 = var_9ch;
    0x00010370 str r0, [sp, 0x1c]                                |     var_1ch = r0;
    0x00010372 str r0, [r2]                                      |     *(r2) = r0;
    0x00010374 cmp r0, 0                                         |     
                                                                 |     if (r0 == 0) {
    0x00010376 beq.w 0x1081a                                     |         goto label_38;
                                                                 |     }
    0x0001037a ldr r3, [sp, 0x1c]                                |     r3 = var_1ch;
    0x0001037c add r4, r3                                        |     r4 += r3;
    0x0001037e ldr r3, [sp, 0x90]                                |     r3 = var_90h;
    0x00010380 cmp r3, 1                                         |     
                                                                 |     if (r3 <= 1) {
    0x00010382 ble.w 0x10808                                     |         goto label_39;
                                                                 |     }
    0x00010386 ldr r3, [sp, 0x94]                                |     r3 = var_94h;
    0x00010388 movs r6, 1                                        |     r6 = 1;
    0x0001038a str r4, [sp]                                      |     *(sp) = r4;
    0x0001038c mov.w sl, 0                                       |     sl = 0;
    0x00010390 ldrd r4, sb, [sp, 0xa0]                           |     __asm ("ldrd r4, sb, [var_a0h]");
    0x00010394 adds r5, r3, 4                                    |     r5 = r3 + 4;
    0x00010396 mov.w r3, 0                                       |     r3 = 0;
    0x0001039a adc r7, r3, 0                                     |     __asm ("adc r7, r3, 0");
    0x0001039e ldr r3, [sp, 0x88]                                |     r3 = s;
    0x000103a0 str.w sl, [sp, 0xc]                               |     __asm ("str.w sl, [var_ch]");
    0x000103a4 add.w r8, r3, 8                                   |     r8 = r3 + 8;
    0x000103a8 ldr r3, [sp, 0x8c]                                |     r3 = var_8ch;
    0x000103aa and r3, r3, 0x10                                  |     r3 &= 0x10;
    0x000103ae str r3, [sp, 4]                                   |     var_4h = r3;
    0x000103b0 add.w r3, fp, 4                                   |     r3 += arg_4h;
    0x000103b4 str r3, [sp, 0x28]                                |     var_28h = r3;
                                                                 | label_5:
    0x000103b6 ldr r3, [sp, 0x2c]                                |     r3 = var_2ch;
    0x000103b8 ldrd ip, r0, [r3, 8]                              |     __asm ("ldrd ip, r0, [r3, 8]");
    0x000103bc ldr r3, [sp, 0x10]                                |     r3 = var_10h;
    0x000103be cmp r3, 0                                         |     
                                                                 |     if (r3 == 0) {
    0x000103c0 beq.w 0x1068c                                     |         goto label_40;
                                                                 |     }
    0x000103c4 cmp ip, r5                                        |     
    0x000103c6 sbcs.w r3, r0, r7                                 |     __asm ("sbcs.w r3, r0, r7");
                                                                 |     if (ip <= r5) {
    0x000103ca blo.w 0x107f6                                     |         goto label_28;
                                                                 |     }
    0x000103ce ldr r3, [sp, 4]                                   |     r3 = var_4h;
    0x000103d0 add.w r1, fp, r4                                  |     r1 = fp + r4;
    0x000103d4 cmp r3, 0                                         |     
                                                                 |     if (r3 == 0) {
    0x000103d6 beq.w 0x10756                                     |         goto label_41;
                                                                 |     }
    0x000103da ldr r3, [sp, 8]                                   |     r3 = var_8h;
    0x000103dc add.w r2, fp, -1                                  |     r2 = fp + -1;
    0x000103e0 add.w lr, fp, 3                                   |     lr += arg_3h;
    0x000103e4 add r2, r4                                        |     r2 += r4;
    0x000103e6 add lr, r4                                        |     lr += r4;
                                                                 |     do {
    0x000103e8 ldrb sl, [r2, 1]!                                 |         sl = *((r2 += 1));
    0x000103ec cmp lr, r2                                        |         
    0x000103ee orr.w r3, sl, r3, lsl 8                           |         r3 = sl | (r3 << 8);
    0x000103f2 bne 0x103e8                                       |         
                                                                 |     } while (lr != r2);
    0x000103f4 adds.w lr, r4, 0x10                               |     lr = r4 + 0x10;
    0x000103f8 adc r2, sb, 0                                     |     __asm ("adc r2, sb, 0");
    0x000103fc cmp ip, lr                                        |     
    0x000103fe sbcs.w r2, r0, r2                                 |     __asm ("sbcs.w r2, r0, r2");
                                                                 |     if (ip <= lr) {
    0x00010402 blo.w 0x107f6                                     |         goto label_28;
                                                                 |     }
    0x00010406 ldrh r2, [r1, 0xe]                                |     r2 = *((r1 + 0xe));
    0x00010408 rev16 r2, r2                                      |     __asm ("rev16 r2, r2");
    0x0001040a uxth r2, r2                                       |     r2 = (int16_t) r2;
                                                                 | label_14:
    0x0001040c adds.w lr, r4, 0xd                                |     lr = r4 + 0xd;
    0x00010410 adc r1, sb, 0                                     |     __asm ("adc r1, sb, 0");
    0x00010414 cmp ip, lr                                        |     
    0x00010416 sbcs.w r1, r0, r1                                 |     __asm ("sbcs.w r1, r0, r1");
                                                                 |     if (ip <= lr) {
    0x0001041a blo.w 0x107f6                                     |         goto label_28;
                                                                 |     }
    0x0001041e add.w r1, fp, 0xc                                 |     r1 += arg_ch;
    0x00010422 ldrb.w lr, [r1, r4]                               |     
                                                                 | label_10:
    0x00010426 cmp r2, 0                                         |     
                                                                 |     if (r2 != 0) {
    0x00010428 bne 0x104a6                                       |         goto label_42;
                                                                 |     }
    0x0001042a ldr r2, [sp, 0x30]                                |     r2 = var_30h;
                                                                 |     if (r2 != 0) {
    0x0001042c cbz r2, 0x10436                                   |         
    0x0001042e and r2, lr, 0xf                                   |         r2 = lr & 0xf;
    0x00010432 cmp r2, 0xd                                       |         
                                                                 |         if (r2 == 0xd) {
    0x00010434 beq 0x104a6                                       |             goto label_42;
                                                                 |         }
                                                                 |     }
    0x00010436 ldr r2, [sp, 0x34]                                |     r2 = var_34h;
    0x00010438 adds r3, r3, r2                                   |     r3 += r2;
    0x0001043a ldr r2, [sp, 0x38]                                |     r2 = var_38h;
    0x0001043c adc r2, r2, 0                                     |     __asm ("adc r2, r2, 0");
    0x00010440 cmp r3, ip                                        |     
    0x00010442 sbcs r2, r0                                       |     __asm ("sbcs r2, r0");
                                                                 |     if (r3 >= ip) {
    0x00010444 bhs.w 0x10224                                     |         goto label_3;
                                                                 |     }
    0x00010448 ldrb.w r2, [fp, r3]                               |     r2 = *((fp + r3));
    0x0001044c add.w sl, fp, r3                                  |     sl = fp + r3;
                                                                 |     if (r2 != 0) {
    0x00010450 cbz r2, 0x104a6                                   |         
    0x00010452 lsr.w lr, lr, 4                                   |         lr >>= 4;
    0x00010456 mov r0, sl                                        |         r0 = sl;
    0x00010458 cmp.w lr, 2                                       |         
    0x0001045c ite eq                                            |         
                                                                 |         if (lr != 2) {
    0x0001045e moveq r3, 0x57                                    |             r3 = 0x57;
                                                                 |         }
                                                                 |         if (lr == 2) {
    0x00010460 movne r3, 0x55                                    |             r3 = 0x55;
                                                                 |         }
    0x00010462 str r3, [sp, 0x24]                                |         var_24h = r3;
    0x00010464 blx 0x1bb0                                        |         fcn_00001bb0 ();
    0x00010468 ldr r2, [sp, 0xc]                                 |         r2 = var_ch;
    0x0001046a mov r1, sl                                        |         r1 = sl;
    0x0001046c ldr r3, [sp, 0x1c]                                |         r3 = var_1ch;
    0x0001046e mov sl, r0                                        |         sl = r0;
    0x00010470 vldr d16, [r8]                                    |         __asm ("vldr d16, [r8]");
    0x00010474 add.w ip, r3, r2, lsl 4                           |         
    0x00010478 ldr r3, [sp, 0x24]                                |         r3 = var_24h;
    0x0001047a adds r2, 1                                        |         r2++;
    0x0001047c str r2, [sp, 0xc]                                 |         var_ch = r2;
    0x0001047e mov r2, sl                                        |         r2 = sl;
    0x00010480 str.w r3, [ip, 8]                                 |         __asm ("str.w r3, [ip, 8]");
    0x00010484 ldr r3, [sp]                                      |         r3 = *(sp);
    0x00010486 vstr d16, [ip]                                    |         __asm ("vstr d16, [ip]");
    0x0001048a mov r0, r3                                        |         r0 = r3;
    0x0001048c str.w r3, [ip, 0xc]                               |         __asm ("str.w r3, [ip, 0xc]");
    0x00010490 blx 0x19c8                                        |         mmap64 ()
    0x00010494 ldr r2, [sp]                                      |         r2 = *(sp);
    0x00010496 movs r3, 0                                        |         r3 = 0;
    0x00010498 strb.w r3, [r2, sl]                               |         *((r2 + sl)) = r3;
    0x0001049c add.w sl, sl, 1                                   |         sl++;
    0x000104a0 add.w r3, r2, sl                                  |         r3 = r2 + sl;
    0x000104a4 str r3, [sp]                                      |         *(sp) = r3;
                                                                 |     }
                                                                 | label_42:
    0x000104a6 ldr r3, [sp, 0x14]                                |     r3 = var_14h;
    0x000104a8 adds r6, 1                                        |     r6++;
    0x000104aa add.w r8, r8, 8                                   |     r8 += 8;
    0x000104ae adds r4, r4, r3                                   |     r4 += r3;
    0x000104b0 adc sb, sb, 0                                     |     __asm ("adc sb, sb, 0");
    0x000104b4 adds r5, r3, r5                                   |     r5 = r3 + r5;
    0x000104b6 ldr r3, [sp, 0x18]                                |     r3 = var_18h;
    0x000104b8 adc r7, r7, 0                                     |     __asm ("adc r7, r7, 0");
    0x000104bc cmp r3, r6                                        |     
                                                                 |     if (r3 != r6) {
    0x000104be bne.w 0x103b6                                     |         goto label_5;
                                                                 |     }
    0x000104c2 ldr r4, [sp]                                      |     r4 = *(sp);
    0x000104c4 ldr.w sl, [sp, 0xc]                               |     sl = var_ch;
                                                                 | label_19:
    0x000104c8 ldr r0, [sp, 0x88]                                |     r0 = s;
    0x000104ca blx 0x19a0                                        |     fcn_000019a0 ();
    0x000104ce ldr r2, [sp, 0x64]                                |     r2 = var_64h;
    0x000104d0 cmp r2, 0                                         |     
                                                                 |     if (r2 == 0) {
    0x000104d2 beq 0x105c6                                       |         goto label_15;
                                                                 |     }
    0x000104d4 ldr r3, [sp, 0xac]                                |     r3 = var_ach;
    0x000104d6 sub.w r3, r3, fp                                  |     r3 -= fp;
    0x000104da str r3, [sp, 0x18]                                |     var_18h = r3;
    0x000104dc asrs r3, r3, 0x1f                                 |     r3 >>= 0x1f;
    0x000104de str r3, [sp, 0x24]                                |     var_24h = r3;
    0x000104e0 ldr r3, [sp, 0x98]                                |     r3 = var_98h;
    0x000104e2 cmp r3, 0                                         |     
                                                                 |     if (r3 <= 0) {
    0x000104e4 ble 0x105c0                                       |         goto label_43;
                                                                 |     }
    0x000104e6 add r3, r2                                        |     r3 += r2;
    0x000104e8 ldr r1, [sp, 0x8c]                                |     r1 = var_8ch;
    0x000104ea subs r3, 1                                        |     r3--;
    0x000104ec add.w sb, r2, -1                                  |     sb = r2 + -1;
    0x000104f0 str r3, [sp, 0x14]                                |     var_14h = r3;
    0x000104f2 movs r3, 0                                        |     r3 = 0;
    0x000104f4 mov r8, r3                                        |     r8 = r3;
    0x000104f6 and r1, r1, 0x10                                  |     r1 &= 0x10;
    0x000104fa str r1, [sp, 0x28]                                |     var_28h = r1;
    0x000104fc str.w fp, [sp, 0x30]                              |     __asm ("str.w fp, [var_30h]");
    0x00010500 str.w sl, [sp]                                    |     __asm ("str.w sl, [sp]");
                                                                 | label_6:
    0x00010504 ldrb r3, [sb, 1]!                                 |     r3 = *((sb += 1));
    0x00010508 cmp r3, 0                                         |     
                                                                 |     if (r3 != 0) {
    0x0001050a bne 0x105b2                                       |         goto label_44;
                                                                 |     }
    0x0001050c ldr r1, [sp, 0x18]                                |     r1 = var_18h;
    0x0001050e ldr r3, [sp, 0x2c]                                |     r3 = var_2ch;
    0x00010510 ldr r6, [sp, 0x20]                                |     r6 = var_20h;
    0x00010512 adds.w r5, r8, r1                                 |     r5 = r8 + r1;
    0x00010516 ldr r1, [sp, 0x24]                                |     r1 = var_24h;
    0x00010518 ldr r2, [r3, 8]                                   |     r2 = *((r3 + 8));
    0x0001051a ldr r3, [r3, 0xc]                                 |     r3 = *((r3 + 0xc));
    0x0001051c adc sl, r1, 0                                     |     __asm ("adc sl, r1, 0");
    0x00010520 adds.w fp, r6, r5                                 |     
    0x00010524 adc r1, sl, 0                                     |     __asm ("adc r1, sl, 0");
    0x00010528 cmp fp, r2                                        |     
    0x0001052a sbcs r1, r3                                       |     __asm ("sbcs r1, r3");
    0x0001052c str r2, [sp, 0x10]                                |     var_10h = r2;
    0x0001052e str r3, [sp, 0xc]                                 |     var_ch = r3;
                                                                 |     if (fp >= r2) {
    0x00010530 bhs.w 0x10224                                     |         goto label_3;
                                                                 |     }
    0x00010534 ldr r7, [sp, 0x30]                                |     r7 = var_30h;
    0x00010536 add.w r1, r7, fp                                  |     r1 = r7 + fp;
    0x0001053a mov r0, r1                                        |     r0 = r1;
    0x0001053c str r1, [sp, 4]                                   |     var_4h = r1;
    0x0001053e blx 0x1bb0                                        |     fcn_00001bb0 ();
    0x00010542 mov r3, r6                                        |     r3 = r6;
    0x00010544 ldr r2, [sp, 0x10]                                |     r2 = var_10h;
    0x00010546 adds r6, r3, r5                                   |     r6 = r3 + r5;
    0x00010548 ldr r3, [sp, 0xc]                                 |     r3 = var_ch;
    0x0001054a adc sl, sl, 0                                     |     __asm ("adc sl, sl, 0");
    0x0001054e mov r6, r0                                        |     r6 = r0;
    0x00010550 cmp r2, fp                                        |     
    0x00010552 sbcs.w sl, r3, sl                                 |     __asm ("sbcs.w sl, r3, sl");
                                                                 |     if (r2 <= fp) {
    0x00010556 blo.w 0x107f6                                     |         goto label_28;
                                                                 |     }
    0x0001055a ldr r3, [sp, 0x28]                                |     r3 = var_28h;
    0x0001055c add r5, r7                                        |     r5 += r7;
    0x0001055e ldr r1, [sp, 4]                                   |     r1 = var_4h;
    0x00010560 cmp r3, 0                                         |     
                                                                 |     if (r3 != 0) {
    0x00010562 bne.w 0x1070e                                     |         goto label_45;
                                                                 |     }
    0x00010566 ldr r3, [sp, 0x20]                                |     r3 = var_20h;
    0x00010568 cmp r3, 0                                         |     
                                                                 |     if (r3 == 0) {
    0x0001056a beq.w 0x107d6                                     |         goto label_46;
                                                                 |     }
    0x0001056e ldr r7, [sp, 0x20]                                |     r7 = var_20h;
    0x00010570 ldr r2, [sp, 8]                                   |     r2 = var_8h;
    0x00010572 ldr r3, [sp, 0x44]                                |     r3 = var_44h;
    0x00010574 adds r0, r5, r7                                   |     r0 = r5 + r7;
                                                                 |     do {
    0x00010576 ldrb ip, [r0, -0x1]!                              |         ip = *((r0 -= 0x1));
    0x0001057a lsls r3, r3, 8                                    |         r3 <<= 8;
    0x0001057c orr.w r3, r3, r2, lsr 24                          |         r3 |= (r2 >> 24);
    0x00010580 cmp r0, r5                                        |         
    0x00010582 orr.w r2, ip, r2, lsl 8                           |         r2 = ip | (r2 << 8);
    0x00010586 bne 0x10576                                       |         
                                                                 |     } while (r0 != r5);
                                                                 | label_12:
    0x00010588 str r7, [sp, 0x20]                                |     var_20h = r7;
                                                                 | label_17:
    0x0001058a ldr r5, [sp]                                      |     r5 = *(sp);
    0x0001058c ldr r7, [sp, 0x1c]                                |     r7 = var_1ch;
    0x0001058e lsls r0, r5, 4                                    |     r0 = r5 << 4;
    0x00010590 str r2, [r7, r0]                                  |     *((r7 + r0)) = r2;
    0x00010592 adds r2, r7, r0                                   |     r2 = r7 + r0;
    0x00010594 str r3, [r2, 4]                                   |     *((r2 + 4)) = r3;
    0x00010596 movs r3, 0x55                                     |     r3 = 0x55;
    0x00010598 str r4, [r2, 0xc]                                 |     *((r2 + 0xc)) = r4;
    0x0001059a mov r0, r4                                        |     r0 = r4;
    0x0001059c str r3, [r2, 8]                                   |     *((r2 + 8)) = r3;
    0x0001059e adds r3, r5, 1                                    |     r3 = r5 + 1;
    0x000105a0 mov r2, r6                                        |     r2 = r6;
    0x000105a2 str r3, [sp]                                      |     *(sp) = r3;
    0x000105a4 blx 0x19c8                                        |     mmap64 ()
    0x000105a8 mov.w r3, 0                                       |     r3 = 0;
    0x000105ac strb r3, [r4, r6]                                 |     *((r4 + r6)) = r3;
    0x000105ae adds r6, 1                                        |     r6++;
    0x000105b0 add r4, r6                                        |     r4 += r6;
                                                                 | label_44:
    0x000105b2 ldr r3, [sp, 0x3c]                                |     r3 = var_3ch;
    0x000105b4 add r8, r3                                        |     r8 += r3;
    0x000105b6 ldr r3, [sp, 0x14]                                |     r3 = var_14h;
    0x000105b8 cmp sb, r3                                        |     
                                                                 |     if (sb != r3) {
    0x000105ba bne 0x10504                                       |         goto label_6;
                                                                 |     }
    0x000105bc ldr.w sl, [sp]                                    |     sl = *(sp);
                                                                 | label_43:
    0x000105c0 ldr r0, [sp, 0x64]                                |     r0 = var_64h;
    0x000105c2 blx 0x19a0                                        |     fcn_000019a0 ();
                                                                 | label_15:
    0x000105c6 ldr r2, [pc, 0x294]                               |     
    0x000105c8 ldr r3, [pc, 0x274]                               |     r3 = *(0x10840);
    0x000105ca add r2, pc                                        |     r2 = 0x20e2c;
    0x000105cc ldr r3, [r2, r3]                                  |     r3 = *(0x20e2c);
    0x000105ce ldr r2, [r3]                                      |     r2 = *(0x20e2c);
    0x000105d0 ldr r3, [sp, 0xd4]                                |     r3 = var_d4h;
    0x000105d2 eors r2, r3                                       |     r2 ^= r3;
    0x000105d4 mov.w r3, 0                                       |     r3 = 0;
                                                                 |     if (r2 != r3) {
    0x000105d8 bne.w 0x10838                                     |         goto label_47;
                                                                 |     }
    0x000105dc mov r0, sl                                        |     r0 = sl;
    0x000105de add sp, 0xdc                                      |     
    0x000105e0 pop.w {r4, r5, r6, r7, r8, sb, sl, fp, pc}        |     
                                                                 | label_27:
    0x000105e4 ldr r2, [sp]                                      |     r2 = *(sp);
    0x000105e6 cmp r8, sb                                        |     
    0x000105e8 sbcs.w r2, r7, r2                                 |     __asm ("sbcs.w r2, r7, r2");
                                                                 |     if (r8 <= sb) {
    0x000105ec blo.w 0x107f6                                     |         goto label_28;
                                                                 |     }
    0x000105f0 ldr r2, [sp, 0x1c]                                |     r2 = var_1ch;
    0x000105f2 add.w r1, r5, fp                                  |     r1 = r5 + fp;
                                                                 |     if (r2 == 0) {
    0x000105f6 cbz r2, 0x10664                                   |         goto label_48;
                                                                 |     }
    0x000105f8 ldr r2, [sp, 0x70]                                |     r2 = var_70h;
    0x000105fa ldr r0, [sp, 0x74]                                |     r0 = var_74h;
    0x000105fc ldr r4, [sp, 8]                                   |     r4 = var_8h;
    0x000105fe add r2, r5                                        |     r2 += r5;
    0x00010600 adds r6, r0, r5                                   |     r6 = r0 + r5;
                                                                 |     do {
    0x00010602 ldrb r0, [r2, 1]!                                 |         r0 = *((r2 += 1));
    0x00010606 cmp r6, r2                                        |         
    0x00010608 orr.w r4, r0, r4, lsl 8                           |         r4 = r0 | (r4 << 8);
    0x0001060c bne 0x10602                                       |         
                                                                 |     } while (r6 != r2);
    0x0001060e adds.w r0, r5, 8                                  |     r0 = r5 + 8;
    0x00010612 adc r2, r3, 0                                     |     __asm ("adc r2, r3, 0");
    0x00010616 cmp r8, r0                                        |     
    0x00010618 sbcs.w r2, r7, r2                                 |     __asm ("sbcs.w r2, r7, r2");
                                                                 |     if (r8 <= r0) {
    0x0001061c blo.w 0x107f6                                     |         goto label_28;
                                                                 |     }
    0x00010620 ldrh r2, [r1, 6]                                  |     r2 = *((r1 + 6));
    0x00010622 rev16 r2, r2                                      |     __asm ("rev16 r2, r2");
    0x00010624 uxth r2, r2                                       |     r2 = (int16_t) r2;
                                                                 | label_9:
    0x00010626 adds r0, r5, 5                                    |     r0 = r5 + 5;
    0x00010628 adc r1, r3, 0                                     |     __asm ("adc r1, r3, 0");
    0x0001062c cmp r8, r0                                        |     
    0x0001062e sbcs.w r1, r7, r1                                 |     __asm ("sbcs.w r1, r7, r1");
                                                                 |     if (r8 <= r0) {
    0x00010632 blo.w 0x107f6                                     |         goto label_28;
                                                                 |     }
    0x00010636 ldrb.w r1, [fp, sb]                               |     r1 = *((fp + sb));
    0x0001063a b 0x10156                                         |     goto label_7;
                                                                 | label_29:
    0x0001063c ldr r2, [sp, 0x6c]                                |     r2 = var_6ch;
    0x0001063e ldr r4, [sp, 8]                                   |     r4 = var_8h;
    0x00010640 add r2, r5                                        |     r2 += r5;
                                                                 |     do {
    0x00010642 ldrb r0, [r2, -0x1]!                              |         r0 = *((r2 -= 0x1));
    0x00010646 cmp r1, r2                                        |         
    0x00010648 orr.w r4, r0, r4, lsl 8                           |         r4 = r0 | (r4 << 8);
    0x0001064c bne 0x10642                                       |         
                                                                 |     } while (r1 != r2);
    0x0001064e adds.w r0, r5, 0x10                               |     r0 = r5 + 0x10;
    0x00010652 adc r2, r3, 0                                     |     __asm ("adc r2, r3, 0");
    0x00010656 cmp r8, r0                                        |     
    0x00010658 sbcs.w r2, r7, r2                                 |     __asm ("sbcs.w r2, r7, r2");
                                                                 |     if (r8 <= r0) {
    0x0001065c blo.w 0x107f6                                     |         goto label_28;
                                                                 |     }
    0x00010660 ldrh r2, [r1, 0xe]                                |     r2 = *((r1 + 0xe));
    0x00010662 b 0x10140                                         |     goto label_8;
                                                                 | label_48:
    0x00010664 ldr r2, [sp, 0x6c]                                |     r2 = var_6ch;
    0x00010666 ldr r4, [sp, 8]                                   |     r4 = var_8h;
    0x00010668 add r2, r5                                        |     r2 += r5;
                                                                 |     do {
    0x0001066a ldrb r0, [r2, -0x1]!                              |         r0 = *((r2 -= 0x1));
    0x0001066e cmp r2, r1                                        |         
    0x00010670 orr.w r4, r0, r4, lsl 8                           |         r4 = r0 | (r4 << 8);
    0x00010674 bne 0x1066a                                       |         
                                                                 |     } while (r2 != r1);
    0x00010676 adds.w r0, r5, 8                                  |     r0 = r5 + 8;
    0x0001067a adc r1, r3, 0                                     |     __asm ("adc r1, r3, 0");
    0x0001067e cmp r8, r0                                        |     
    0x00010680 sbcs.w r1, r7, r1                                 |     __asm ("sbcs.w r1, r7, r1");
                                                                 |     if (r8 <= r0) {
    0x00010684 blo.w 0x107f6                                     |         goto label_28;
                                                                 |     }
    0x00010688 ldrh r2, [r2, 6]                                  |     r2 = *((r2 + 6));
    0x0001068a b 0x10626                                         |     goto label_9;
                                                                 | label_40:
    0x0001068c cmp ip, r5                                        |     
    0x0001068e sbcs.w r3, r0, r7                                 |     __asm ("sbcs.w r3, r0, r7");
                                                                 |     if (ip <= r5) {
    0x00010692 blo.w 0x107f6                                     |         goto label_28;
                                                                 |     }
    0x00010696 ldr r3, [sp, 4]                                   |     r3 = var_4h;
    0x00010698 add.w r1, r4, fp                                  |     r1 = r4 + fp;
    0x0001069c cmp r3, 0                                         |     
                                                                 |     if (r3 == 0) {
    0x0001069e beq 0x10730                                       |         goto label_49;
                                                                 |     }
    0x000106a0 ldr r3, [sp, 8]                                   |     r3 = var_8h;
    0x000106a2 add.w r2, fp, -1                                  |     r2 = fp + -1;
    0x000106a6 add.w lr, fp, 3                                   |     lr += arg_3h;
    0x000106aa add r2, r4                                        |     r2 += r4;
    0x000106ac add lr, r4                                        |     lr += r4;
                                                                 |     do {
    0x000106ae ldrb sl, [r2, 1]!                                 |         sl = *((r2 += 1));
    0x000106b2 cmp lr, r2                                        |         
    0x000106b4 orr.w r3, sl, r3, lsl 8                           |         r3 = sl | (r3 << 8);
    0x000106b8 bne 0x106ae                                       |         
                                                                 |     } while (lr != r2);
    0x000106ba adds.w lr, r4, 8                                  |     lr = r4 + 8;
    0x000106be adc r2, sb, 0                                     |     __asm ("adc r2, sb, 0");
    0x000106c2 cmp ip, lr                                        |     
    0x000106c4 sbcs.w r2, r0, r2                                 |     __asm ("sbcs.w r2, r0, r2");
                                                                 |     if (ip <= lr) {
    0x000106c8 blo.w 0x107f6                                     |         goto label_28;
                                                                 |     }
    0x000106cc ldrh r2, [r1, 6]                                  |     r2 = *((r1 + 6));
    0x000106ce rev16 r2, r2                                      |     __asm ("rev16 r2, r2");
    0x000106d0 uxth r2, r2                                       |     r2 = (int16_t) r2;
                                                                 | label_13:
    0x000106d2 adds.w lr, r4, 5                                  |     lr = r4 + 5;
    0x000106d6 adc r1, sb, 0                                     |     __asm ("adc r1, sb, 0");
    0x000106da cmp ip, lr                                        |     
    0x000106dc sbcs.w r1, r0, r1                                 |     __asm ("sbcs.w r1, r0, r1");
                                                                 |     if (ip <= lr) {
    0x000106e0 blo.w 0x107f6                                     |         goto label_28;
                                                                 |     }
    0x000106e4 ldrb.w lr, [fp, r5]                               |     
    0x000106e8 b 0x10426                                         |     goto label_10;
                                                                 | label_34:
    0x000106ea ldr r0, [sp, 8]                                   |     r0 = var_8h;
    0x000106ec add.w ip, r6, sl                                  |     
    0x000106f0 ldr r1, [sp, 0x44]                                |     r1 = var_44h;
                                                                 |     do {
    0x000106f2 ldrb r4, [ip, -0x1]!                              |         r4 = *((ip -= 0x1));
    0x000106f6 lsls r1, r1, 8                                    |         r1 <<= 8;
    0x000106f8 orr.w r1, r1, r0, lsr 24                          |         r1 |= (r0 >> 24);
    0x000106fc orr.w r0, r4, r0, lsl 8                           |         r0 = r4 | (r0 << 8);
    0x00010700 rsb.w r4, ip, 1                                   |         r4 = 1 - ip;
    0x00010704 add r4, sl                                        |         r4 += sl;
    0x00010706 add r4, r6                                        |         r4 += r6;
    0x00010708 cmp r4, sl                                        |         
    0x0001070a bls 0x106f2                                       |         
                                                                 |     } while (r4 < sl);
    0x0001070c b 0x10298                                         |     goto label_11;
                                                                 | label_45:
    0x0001070e ldr r7, [sp, 0x20]                                |     r7 = var_20h;
    0x00010710 ldr r2, [sp, 8]                                   |     r2 = var_8h;
    0x00010712 cmp r7, 0                                         |     
                                                                 |     if (r7 == 0) {
    0x00010714 beq 0x107dc                                       |         goto label_50;
                                                                 |     }
    0x00010716 ldr r3, [sp, 0x44]                                |     r3 = var_44h;
    0x00010718 add.w ip, r5, r7                                  |     
                                                                 |     do {
    0x0001071c ldrb r0, [r5], 1                                  |         r0 = *(r5);
                                                                 |         r5++;
    0x00010720 lsls r3, r3, 8                                    |         r3 <<= 8;
    0x00010722 orr.w r3, r3, r2, lsr 24                          |         r3 |= (r2 >> 24);
    0x00010726 cmp ip, r5                                        |         
    0x00010728 orr.w r2, r0, r2, lsl 8                           |         r2 = r0 | (r2 << 8);
    0x0001072c bne 0x1071c                                       |         
                                                                 |     } while (ip != r5);
    0x0001072e b 0x10588                                         |     goto label_12;
                                                                 | label_49:
    0x00010730 ldr r3, [sp, 0x28]                                |     r3 = var_28h;
    0x00010732 adds r2, r3, r4                                   |     r2 = r3 + r4;
    0x00010734 ldr r3, [sp, 8]                                   |     r3 = var_8h;
                                                                 |     do {
    0x00010736 ldrb lr, [r2, -0x1]!                              |         
    0x0001073a cmp r1, r2                                        |         
    0x0001073c orr.w r3, lr, r3, lsl 8                           |         r3 = lr | (r3 << 8);
    0x00010740 bne 0x10736                                       |         
                                                                 |     } while (r1 != r2);
    0x00010742 adds.w lr, r4, 8                                  |     lr = r4 + 8;
    0x00010746 adc r2, sb, 0                                     |     __asm ("adc r2, sb, 0");
    0x0001074a cmp ip, lr                                        |     
    0x0001074c sbcs.w r2, r0, r2                                 |     __asm ("sbcs.w r2, r0, r2");
                                                                 |     if (ip <= lr) {
    0x00010750 blo 0x107f6                                       |         goto label_28;
                                                                 |     }
    0x00010752 ldrh r2, [r1, 6]                                  |     r2 = *((r1 + 6));
    0x00010754 b 0x106d2                                         |     goto label_13;
                                                                 | label_41:
    0x00010756 ldr r3, [sp, 0x28]                                |     r3 = var_28h;
    0x00010758 adds r2, r3, r4                                   |     r2 = r3 + r4;
    0x0001075a ldr r3, [sp, 8]                                   |     r3 = var_8h;
                                                                 |     do {
    0x0001075c ldrb lr, [r2, -0x1]!                              |         
    0x00010760 cmp r1, r2                                        |         
    0x00010762 orr.w r3, lr, r3, lsl 8                           |         r3 = lr | (r3 << 8);
    0x00010766 bne 0x1075c                                       |         
                                                                 |     } while (r1 != r2);
    0x00010768 adds.w lr, r4, 0x10                               |     lr = r4 + 0x10;
    0x0001076c adc r2, sb, 0                                     |     __asm ("adc r2, sb, 0");
    0x00010770 cmp ip, lr                                        |     
    0x00010772 sbcs.w r2, r0, r2                                 |     __asm ("sbcs.w r2, r0, r2");
                                                                 |     if (ip <= lr) {
    0x00010776 blo 0x107f6                                       |         goto label_28;
                                                                 |     }
    0x00010778 ldrh r2, [r1, 0xe]                                |     r2 = *((r1 + 0xe));
    0x0001077a b 0x1040c                                         |     goto label_14;
                                                                 | label_20:
    0x0001077c vmov.i32 d16, 0                                   |     __asm ("vmov.i32 d16, 0");
    0x00010780 movs r3, 0                                        |     r3 = 0;
    0x00010782 str r3, [sp, 0x20]                                |     var_20h = r3;
    0x00010784 str r3, [sp, 0xac]                                |     var_ach = r3;
    0x00010786 str r3, [sp, 0x3c]                                |     var_3ch = r3;
    0x00010788 vstr d16, [sp, 0xb8]                              |     __asm ("vstr d16, [sp, 0xb8]");
    0x0001078c b 0xffaa                                          |     goto label_1;
                                                                 | label_30:
    0x0001078e ldr r0, [sp, 0x64]                                |     r0 = var_64h;
    0x00010790 mvn sl, 0x15                                      |     sl = ~0x15;
    0x00010794 blx 0x19a0                                        |     fcn_000019a0 ();
    0x00010798 ldr r0, [sp, 0x88]                                |     r0 = s;
    0x0001079a blx 0x19a0                                        |     fcn_000019a0 ();
    0x0001079e b 0x105c6                                         |     goto label_15;
                                                                 | label_26:
    0x000107a0 ldr r3, [sp, 0x64]                                |     r3 = var_64h;
                                                                 |     if (r3 == 0) {
    0x000107a2 cbz r3, 0x107c0                                   |         goto label_37;
                                                                 |     }
    0x000107a4 ldr r3, [sp, 0x98]                                |     r3 = var_98h;
    0x000107a6 ldr r5, [sp, 0xac]                                |     r5 = var_ach;
    0x000107a8 cmp r3, 0                                         |     
    0x000107aa sub.w r5, r5, fp                                  |     r5 -= fp;
    0x000107ae it gt                                             |     
                                                                 |     if (r3 <= 0) {
    0x000107b0 movgt r3, 0                                       |         r3 = 0;
                                                                 |     }
    0x000107b2 asr.w r6, r5, 0x1f                                |     r6 = r5 >> 0x1f;
    0x000107b6 it gt                                             |     
                                                                 |     if (r3 <= 0) {
    0x000107b8 strdgt r3, r3, [sp, 0x4c]                         |         __asm ("strdgt r3, r3, [sp, 0x4c]");
                                                                 |         goto label_51;
                                                                 |     }
                                                                 |     if (r3 > 0) {
                                                                 | label_51:
    0x000107bc bgt.w 0x102f0                                     |         goto label_16;
                                                                 |     }
                                                                 | label_37:
    0x000107c0 ldr r0, [sp, 0x64]                                |     r0 = var_64h;
    0x000107c2 blx 0x19a0                                        |     fcn_000019a0 ();
    0x000107c6 ldr r0, [sp, 0x88]                                |     r0 = s;
    0x000107c8 blx 0x19a0                                        |     fcn_000019a0 ();
    0x000107cc ldr r2, [sp, 0x9c]                                |     r2 = var_9ch;
    0x000107ce movs r3, 0                                        |     r3 = 0;
    0x000107d0 mov sl, r3                                        |     sl = r3;
    0x000107d2 str r3, [r2]                                      |     *(r2) = r3;
    0x000107d4 b 0x105c6                                         |     goto label_15;
                                                                 | label_46:
    0x000107d6 ldr r2, [sp, 8]                                   |     r2 = var_8h;
    0x000107d8 ldr r3, [sp, 0x44]                                |     r3 = var_44h;
    0x000107da b 0x1058a                                         |     goto label_17;
                                                                 | label_50:
    0x000107dc ldr r3, [sp, 0x44]                                |     r3 = var_44h;
    0x000107de b 0x1058a                                         |     goto label_17;
                                                                 | label_33:
    0x000107e0 ldr r0, [sp, 8]                                   |     r0 = var_8h;
    0x000107e2 ldr r1, [sp, 0x44]                                |     r1 = var_44h;
    0x000107e4 ldr r2, [sp, 4]                                   |     r2 = var_4h;
    0x000107e6 ldrd r5, r3, [sp, 0x7c]                           |     __asm ("ldrd r5, r3, [var_80h]");
    0x000107ea strd r0, r1, [r2]                                 |     __asm ("strd r0, r1, [r2]");
    0x000107ee b 0x102b0                                         |     goto label_18;
                                                                 | label_22:
    0x000107f0 mvn sl, 0x15                                      |     sl = ~0x15;
    0x000107f4 b 0x105c6                                         |     goto label_15;
                                                                 | label_28:
    0x000107f6 ldr r3, [pc, 0x68]                                |     
    0x000107f8 movs r2, 0x89                                     |     r2 = 0x89;
    0x000107fa ldr r1, [pc, 0x68]                                |     
    0x000107fc ldr r0, [pc, 0x68]                                |     
    0x000107fe add r3, pc                                        |     r3 = 0x21064;
    0x00010800 add r1, pc                                        |     r1 = 0x2106a;
    0x00010802 add r0, pc                                        |     r0 = 0x2106e;
    0x00010804 blx 0x1de0                                        |     fcn_00001de0 ();
                                                                 | label_39:
    0x00010808 mov.w sl, 0                                       |     sl = 0;
    0x0001080c b 0x104c8                                         |     goto label_19;
                                                                 | label_25:
    0x0001080e ldr r0, [sp, 0x64]                                |     r0 = var_64h;
    0x00010810 mvn sl, 0xb                                       |     sl = ~0xb;
    0x00010814 blx 0x19a0                                        |     fcn_000019a0 ();
    0x00010818 b 0x105c6                                         |     goto label_15;
                                                                 | label_38:
    0x0001081a ldr r0, [sp, 0x64]                                |     r0 = var_64h;
    0x0001081c blx 0x19a0                                        |     fcn_000019a0 ();
    0x00010820 ldr r0, [sp, 0x88]                                |     r0 = s;
    0x00010822 blx 0x19a0                                        |     fcn_000019a0 ();
    0x00010826 blx 0x1be4                                        |     r0 = isoc99_sscanf ();
    0x0001082a ldr r3, [r0]                                      |     r3 = *(r0);
    0x0001082c rsb.w sl, r3, 0                                   |     sl = r3 - ;
    0x00010830 b 0x105c6                                         |     goto label_15;
                                                                 | label_24:
    0x00010832 mvn sl, 0xb                                       |     sl = ~0xb;
    0x00010836 b 0x105c6                                         |     goto label_15;
                                                                 | label_47:
    0x00010838 blx 0x1a1c                                        |     stat64 ();
    0x0001083c ldrsh r4, [r5, r2]                                |     r4 = *((r5 + r2));
    0x0001083e movs r1, r0                                       |     r1 = r0;
    0x00010840 lsls r4, r7, 6                                    |     r4 = r7 << 6;
    0x00010842 movs r0, r0                                       |     
    0x00010844 ldr r3, [pc, 0x28]                                |     r3 = *(0x10870);
    0x00010846 movs r0, r0                                       |     
    0x00010848 ldr r4, [pc, 0x3e0]                               |     r4 = *(0x10c2c);
    0x0001084a movs r0, r0                                       |     
    0x0001084c ldr r4, [pc, 0x3a0]                               |     r4 = *(0x10bf0);
    0x0001084e movs r0, r0                                       |     
    0x00010850 ldr r2, [pc, 0x328]                               |     r2 = *(0x10b7c);
    0x00010852 movs r0, r0                                       |     
    0x00010854 ldr r1, [pc, 0x3a0]                               |     r1 = *(0x10bf8);
    0x00010856 movs r0, r0                                       |     
    0x00010858 ldr r2, [pc, 0x18]                                |     r2 = *(0x10874);
    0x0001085a movs r0, r0                                       |     
    0x0001085c ldr r6, [r1, r1]                                  |     r6 = *(0x10bf8);
    0x0001085e movs r1, r0                                       |     r1 = r0;
    0x00010860 add lr, sp, lr                                    |     lr = sp + lr;
    0x00010862 movs r0, r0                                       |     
    0x00010864 add r4, r3                                        |     r4 += r3;
    0x00010866 movs r0, r0                                       |     
    0x00010868 add r6, sb                                        |     r6 += sb;
    0x0001086a 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/bin/kmod @ 0x10a3c */
                                                                             | #include <stdint.h>
                                                                             |  
    ; (fcn) fcn.00010a3c ()                                                  | void fcn_00010a3c (int16_t arg1, uint32_t arg2) {
                                                                             |     r0 = arg1;
                                                                             |     r1 = arg2;
    0x00010a3c stmdbhs r0, {r3, r4, r5, r6, r7, r8, sl, ip, sp, pc}          |     __asm ("stmdbhs r0, {r3, r4, r5, r6, r7, r8, sl, ip, sp, pc}");
                                                                             |     if (? != ?) {
    0x00010a40 beq 0x10aac                                                   |         
    0x00010a42 mov r4, r0                                                    |         r4 = r0;
                                                                             |         if (r0 != 0) {
    0x00010a44 cbz r0, 0x10a9a                                               |             
    0x00010a46 mov r0, r1                                                    |             r0 = r1;
    0x00010a48 mov r6, r1                                                    |             r6 = r1;
    0x00010a4a blx 0x1bb0                                                    |             fcn_00001bb0 ();
    0x00010a4e ldr r3, [r4, 8]                                               |             r3 = *((r4 + 8));
    0x00010a50 mov r5, r0                                                    |             r5 = r0;
    0x00010a52 adds r7, r3, r0                                               |             r7 = r3 + r0;
    0x00010a54 ldrd r0, r2, [r4]                                             |             __asm ("ldrd r0, r2, [r4]");
    0x00010a58 cmp r7, r2                                                    |             
                                                                             |             if (r7 >= r2) {
    0x00010a5a bls 0x10a80                                                   |                 
    0x00010a5c lsls r3, r7, 0x19                                             |                 r3 = r7 << 0x19;
    0x00010a5e itt ne                                                        |                 
                                                                             |                 if (r3 != r7) {
    0x00010a60 bicne r7, r7, 0x7f                                            |                     __asm ("bicne r7, r7, 0x7f");
                                                                             |                 }
                                                                             |                 if (r3 != r7) {
    0x00010a64 adds r7, 0x80                                                 |                     r7 += 0x80;
                                                                             |                 }
    0x00010a66 mov r1, r7                                                    |                 r1 = r7;
    0x00010a68 blx 0x1a34                                                    |                 regexec ();
    0x00010a6c subs r3, r7, 0                                                |                 r3 = r7 - 0;
    0x00010a6e it ne                                                         |                 
                                                                             |                 if (r3 == r7) {
    0x00010a70 movne r3, 1                                                   |                     r3 = 1;
                                                                             |                 }
    0x00010a72 cmp r0, 0                                                     |                 
    0x00010a74 it ne                                                         |                 
                                                                             |                 if (r0 == 0) {
    0x00010a76 movne r3, 0                                                   |                     r3 = 0;
                                                                             |                 }
                                                                             |                 if (r3 != 0) {
    0x00010a78 cbnz r3, 0x10a94                                              |                     goto label_0;
                                                                             |                 }
    0x00010a7a ldr r3, [r4, 8]                                               |                 r3 = *((r4 + 8));
    0x00010a7c strd r0, r7, [r4]                                             |                 __asm ("strd r0, r7, [r4]");
                                                                             |             }
    0x00010a80 add r0, r3                                                    |             r0 += r3;
    0x00010a82 mov r1, r6                                                    |             r1 = r6;
    0x00010a84 mov r2, r5                                                    |             r2 = r5;
    0x00010a86 blx 0x19c8                                                    |             mmap64 ()
    0x00010a8a ldr r3, [r4, 8]                                               |             r3 = *((r4 + 8));
    0x00010a8c mov r0, r5                                                    |             r0 = r5;
    0x00010a8e add r3, r5                                                    |             r3 += r5;
    0x00010a90 str r3, [r4, 8]                                               |             *((r4 + 8)) = r3;
    0x00010a92 pop {r3, r4, r5, r6, r7, pc}                                  |             
                                                                             | label_0:
    0x00010a94 movs r5, 0                                                    |             r5 = 0;
    0x00010a96 mov r0, r5                                                    |             r0 = r5;
    0x00010a98 pop {r3, r4, r5, r6, r7, pc}                                  |             
                                                                             |         }
    0x00010a9a ldr r3, [pc, 0x24]                                            |         
    0x00010a9c movs r2, 0x63                                                 |         r2 = 0x63;
    0x00010a9e ldr r1, [pc, 0x24]                                            |         
    0x00010aa0 ldr r0, [pc, 0x24]                                            |         
    0x00010aa2 add r3, pc                                                    |         r3 = 0x21568;
    0x00010aa4 add r1, pc                                                    |         r1 = 0x2156e;
    0x00010aa6 add r0, pc                                                    |         r0 = 0x21572;
    0x00010aa8 blx 0x1de0                                                    |         fcn_00001de0 ();
                                                                             |     }
    0x00010aac ldr r3, [pc, 0x1c]                                            |     
    0x00010aae movs r2, 0x62                                                 |     r2 = 0x62;
    0x00010ab0 ldr r1, [pc, 0x1c]                                            |     
    0x00010ab2 ldr r0, [pc, 0x20]                                            |     
    0x00010ab4 add r3, pc                                                    |     r3 = 0x21584;
    0x00010ab6 add r1, pc                                                    |     r1 = 0x2158a;
    0x00010ab8 add r0, pc                                                    |     r0 = 0x21592;
    0x00010aba blx 0x1de0                                                    |     fcn_00001de0 ();
    0x00010abc invalid                                                       |     
    0x00010ac0 muls r2, r3, r2                                               |     r2 = r3 * r2;
    0x00010ac2 movs r0, r0                                                   |     
    0x00010ac4 cmn r0, r5                                                    |     
    0x00010ac6 movs r0, r0                                                   |     
    0x00010ac8 orrs r2, r1                                                   |     r2 |= r1;
    0x00010aca movs r0, r0                                                   |     
    0x00010acc muls r0, r1, r0                                               |     r0 = r1 * r0;
    0x00010ace movs r0, r0                                                   |     
    0x00010ad0 cmn r6, r2                                                    |     
    0x00010ad2 movs r0, r0                                                   |     
    0x00010ad4 cmn r4, r5                                                    |     
    0x00010ad6 movs r0, r0                                                   |     
                                                                             | }

[*] Function mmap used 66 times kmod