[*] Binary protection state of libkmod.so.2.3.7

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


[*] Function mmap tear down of libkmod.so.2.3.7

    ; assembly                                               | /* r2dec pseudo code output */
                                                             | /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/lib/libkmod.so.2.3.7 @ 0x3a38 */
                                                             | #include <stdint.h>
                                                             |  
    ; (fcn) fcn.00003a38 ()                                  | void fcn_00003a38 (int16_t arg1, int16_t arg2, int16_t arg3) {
                                                             |     int16_t var_4h;
                                                             |     r0 = arg1;
                                                             |     r1 = arg2;
                                                             |     r2 = arg3;
                                                             |     if (? >= ?) {
    0x00003a38 ldrbmi lr, [r0, sp, lsr 18]!                  |         
                                                             |     }
    0x00003a3c mov r7, r0                                    |     r7 = r0;
    0x00003a3e sub sp, 8                                     |     
    0x00003a40 mov r8, r1                                    |     r8 = r1;
    0x00003a42 mov r5, r2                                    |     r5 = r2;
    0x00003a44 mov.w sb, 0                                   |     sb = 0;
                                                             |     if (r2 == 0) {
    0x00003a48 cbz r2, 0x3a84                                |         goto label_5;
                                                             |     }
                                                             | label_0:
    0x00003a4a ldr r6, [r7]                                  |     r6 = *(r7);
    0x00003a4c mov.w r3, -1                                  |     r3 = -1;
    0x00003a50 mov r4, r6                                    |     r4 = r6;
                                                             |     do {
    0x00003a52 mov r0, r5                                    |         r0 = r5;
                                                             |         if (r4 == 0) {
    0x00003a54 cbz r4, 0x3abe                                |             goto label_6;
                                                             |         }
    0x00003a56 ldr r1, [r4, 8]                               |         r1 = *((r4 + 8));
    0x00003a58 adds r1, 5                                    |         r1 += 5;
    0x00003a5a blx 0x201c                                    |         r0 = fcn_0000201c ();
    0x00003a5e subs r3, r0, 0                                |         r3 = r0 - 0;
                                                             |         if (r3 <= r0) {
    0x00003a60 ble 0x3abe                                    |             goto label_6;
                                                             |         }
    0x00003a62 ldr r4, [r4]                                  |         r4 = *(r4);
    0x00003a64 cmp r4, r6                                    |         
    0x00003a66 bne 0x3a52                                    |         
                                                             |     } while (r4 != r6);
    0x00003a68 mov r0, r5                                    |     r0 = r5;
    0x00003a6a blx 0x22a8                                    |     r0 = fcn_000022a8 ();
    0x00003a6e mov r4, r0                                    |     r4 = r0;
    0x00003a70 adds r0, 9                                    |     r0 += 9;
    0x00003a72 blx 0x21fc                                    |     r0 = fcn_000021fc ();
    0x00003a76 mov sl, r0                                    |     sl = r0;
                                                             |     if (r0 != 0) {
    0x00003a78 cbnz r0, 0x3a92                               |         goto label_7;
                                                             |     }
                                                             | label_1:
    0x00003a7a mvn r0, 0xb                                   |     r0 = ~0xb;
                                                             |     do {
    0x00003a7e add sp, 8                                     |         
    0x00003a80 pop.w {r4, r5, r6, r7, r8, sb, sl, pc}        |         
                                                             | label_5:
    0x00003a84 mov r0, r1                                    |         r0 = r1;
    0x00003a86 mov.w sb, 1                                   |         sb = 1;
    0x00003a8a blx 0x2040                                    |         r0 = fcn_00002040 ();
    0x00003a8e mov r5, r0                                    |         r5 = r0;
    0x00003a90 b 0x3a4a                                      |         goto label_0;
                                                             | label_7:
    0x00003a92 adds r2, r4, 1                                |         r2 = r4 + 1;
    0x00003a94 mov r1, r5                                    |         r1 = r5;
    0x00003a96 add.w r0, sl, 5                               |         r0 = sl + 5;
    0x00003a9a blx 0x20c0                                    |         mmap64 ()
    0x00003a9e str.w r8, [sl]                                |         __asm ("str.w r8, [sl]");
    0x00003aa2 strb.w sb, [sl, 4]                            |         *((sl + 4)) = sb;
                                                             | label_2:
    0x00003aa6 mov r1, sl                                    |         r1 = sl;
    0x00003aa8 mov r0, r6                                    |         r0 = r6;
    0x00003aaa bl 0x37c0                                     |         r0 = fcn_000037c0 (r0, r1);
    0x00003aae mov r3, r0                                    |         r3 = r0;
    0x00003ab0 cmp r0, 0                                     |         
                                                             |         if (r0 == 0) {
    0x00003ab2 beq 0x3b1e                                    |             goto label_8;
                                                             |         }
                                                             | label_3:
    0x00003ab4 movs r0, 0                                    |         r0 = 0;
    0x00003ab6 str r3, [r7]                                  |         *(r7) = r3;
    0x00003ab8 add sp, 8                                     |         
    0x00003aba pop.w {r4, r5, r6, r7, r8, sb, sl, pc}        |         
                                                             | label_6:
    0x00003abe mvn r0, 0x10                                  |         r0 = ~0x10;
    0x00003ac2 cmp r3, 0                                     |         
    0x00003ac4 beq 0x3a7e                                    |         
                                                             |     } while (r3 == 0);
    0x00003ac6 mov r0, r5                                    |     r0 = r5;
    0x00003ac8 blx 0x22a8                                    |     r0 = fcn_000022a8 ();
    0x00003acc mov r2, r0                                    |     r2 = r0;
    0x00003ace adds r0, 9                                    |     r0 += 9;
    0x00003ad0 str r2, [sp, 4]                               |     var_4h = r2;
    0x00003ad2 blx 0x21fc                                    |     fcn_000021fc ();
    0x00003ad6 ldr r2, [sp, 4]                               |     r2 = var_4h;
    0x00003ad8 mov sl, r0                                    |     sl = r0;
    0x00003ada cmp r0, 0                                     |     
                                                             |     if (r0 == 0) {
    0x00003adc beq 0x3a7a                                    |         goto label_1;
                                                             |     }
    0x00003ade adds r2, 1                                    |     r2++;
    0x00003ae0 mov r1, r5                                    |     r1 = r5;
    0x00003ae2 adds r0, 5                                    |     r0 += 5;
    0x00003ae4 blx 0x20c0                                    |     mmap64 ()
    0x00003ae8 str.w r8, [sl]                                |     __asm ("str.w r8, [sl]");
    0x00003aec strb.w sb, [sl, 4]                            |     *((sl + 4)) = sb;
    0x00003af0 cmp r4, 0                                     |     
                                                             |     if (r4 == 0) {
    0x00003af2 beq 0x3aa6                                    |         goto label_2;
                                                             |     }
    0x00003af4 cmp r6, r4                                    |     
    0x00003af6 mov r1, sl                                    |     r1 = sl;
    0x00003af8 mov r0, r4                                    |     r0 = r4;
                                                             |     if (r6 == r4) {
    0x00003afa beq 0x3b14                                    |         goto label_9;
                                                             |     }
    0x00003afc bl 0x37e8                                     |     r0 = fcn_000037e8 (r0, r1);
    0x00003b00 mov r3, r0                                    |     r3 = r0;
                                                             |     if (r3 == 0) {
    0x00003b02 cbz r3, 0x3b1e                                |         goto label_8;
                                                             |     }
                                                             | label_4:
    0x00003b04 ldr r2, [r7]                                  |     r2 = *(r7);
    0x00003b06 cmp r4, r2                                    |     
    0x00003b08 it ne                                         |     
                                                             |     if (r4 != r2) {
    0x00003b0a movne r0, 0                                   |         r0 = 0;
                                                             |         goto label_10;
                                                             |     }
                                                             |     if (r4 == r2) {
                                                             | label_10:
    0x00003b0c beq 0x3ab4                                    |         goto label_3;
                                                             |     }
    0x00003b0e add sp, 8                                     |     
    0x00003b10 pop.w {r4, r5, r6, r7, r8, sb, sl, pc}        |     
                                                             | label_9:
    0x00003b14 bl 0x3838                                     |     r0 = fcn_00003838 (r0, r1);
    0x00003b18 mov r3, r0                                    |     r3 = r0;
    0x00003b1a cmp r3, 0                                     |     
                                                             |     if (r3 != 0) {
    0x00003b1c bne 0x3b04                                    |         goto label_4;
                                                             |     }
                                                             | label_8:
    0x00003b1e mov r0, sl                                    |     r0 = sl;
    0x00003b20 blx 0x20a4                                    |     fcn_000020a4 ();
    0x00003b24 b 0x3a7a                                      |     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/lib/libkmod.so.2.3.7 @ 0x3b28 */
                                                                 | #include <stdint.h>
                                                                 |  
    ; (fcn) fcn.00003b28 ()                                      | void fcn_00003b28 (int16_t arg1, int16_t arg2, int16_t arg3) {
                                                                 |     r0 = arg1;
                                                                 |     r1 = arg2;
                                                                 |     r2 = arg3;
    0x00003b28 push.w {r4, r5, r6, r7, r8, sb, sl, lr}           |     
    0x00003b2c mov r6, r1                                        |     r6 = r1;
    0x00003b2e mov r8, r2                                        |     r8 = r2;
    0x00003b30 mov sb, r0                                        |     sb = r0;
    0x00003b32 blx 0x22a8                                        |     r0 = fcn_000022a8 ();
    0x00003b36 add.w sl, r0, 1                                   |     sl = r0 + 1;
    0x00003b3a mov r4, r0                                        |     r4 = r0;
    0x00003b3c mov r0, r6                                        |     r0 = r6;
    0x00003b3e blx 0x22a8                                        |     r0 = fcn_000022a8 ();
    0x00003b42 adds r7, r0, 1                                    |     r7 = r0 + 1;
    0x00003b44 add.w r0, sl, r7                                  |     r0 = sl + r7;
    0x00003b48 adds r0, 4                                        |     r0 += 4;
    0x00003b4a blx 0x21fc                                        |     r0 = fcn_000021fc ();
    0x00003b4e mov r5, r0                                        |     r5 = r0;
                                                                 |     if (r0 != 0) {
    0x00003b50 cbz r0, 0x3b7e                                    |         
    0x00003b52 adds r4, 5                                        |         r4 += 5;
    0x00003b54 mov r2, sl                                        |         r2 = sl;
    0x00003b56 add r4, r0                                        |         r4 += r0;
    0x00003b58 mov r1, sb                                        |         r1 = sb;
    0x00003b5a str r4, [r0], 4                                   |         *(r0) = r4;
                                                                 |         r0 += 4;
    0x00003b5e blx 0x20c0                                        |         mmap64 ()
    0x00003b62 mov r1, r6                                        |         r1 = r6;
    0x00003b64 mov r2, r7                                        |         r2 = r7;
    0x00003b66 mov r0, r4                                        |         r0 = r4;
    0x00003b68 blx 0x20c0                                        |         mmap64 ()
    0x00003b6c ldr.w r0, [r8]                                    |         r0 = *(r8);
    0x00003b70 mov r1, r5                                        |         r1 = r5;
    0x00003b72 bl 0x37c0                                         |         r0 = fcn_000037c0 (r0, r1);
                                                                 |         if (r0 == 0) {
    0x00003b76 cbz r0, 0x3b7e                                    |             goto label_0;
                                                                 |         }
    0x00003b78 movs r5, 0                                        |         r5 = 0;
    0x00003b7a str.w r0, [r8]                                    |         __asm ("str.w r0, [r8]");
                                                                 |     }
                                                                 | label_0:
    0x00003b7e mov r0, r5                                        |     r0 = r5;
    0x00003b80 pop.w {r4, r5, r6, r7, r8, sb, sl, lr}            |     
    0x00003b84 b.w 0x20a0                                        |     return void (*0x20a0)() ();
                                                                 | }
    ; assembly                                                   | /* r2dec pseudo code output */
                                                                 | /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/lib/libkmod.so.2.3.7 @ 0x3b88 */
                                                                 | #include <stdint.h>
                                                                 |  
    ; (fcn) fcn.00003b88 ()                                      | void fcn_00003b88 (int16_t arg1, int16_t arg2, int16_t arg3) {
                                                                 |     r0 = arg1;
                                                                 |     r1 = arg2;
                                                                 |     r2 = arg3;
    0x00003b88 push.w {r4, r5, r6, r7, r8, sb, sl, lr}           |     
    0x00003b8c mov r6, r2                                        |     r6 = r2;
    0x00003b8e mov r8, r0                                        |     r8 = r0;
    0x00003b90 mov r0, r1                                        |     r0 = r1;
    0x00003b92 mov sb, r1                                        |     sb = r1;
    0x00003b94 blx 0x22a8                                        |     r0 = fcn_000022a8 ();
    0x00003b98 add.w sl, r0, 1                                   |     sl = r0 + 1;
    0x00003b9c mov r4, r0                                        |     r4 = r0;
    0x00003b9e mov r0, r6                                        |     r0 = r6;
    0x00003ba0 blx 0x22a8                                        |     r0 = fcn_000022a8 ();
    0x00003ba4 adds r7, r0, 1                                    |     r7 = r0 + 1;
    0x00003ba6 add.w r0, sl, r7                                  |     r0 = sl + r7;
    0x00003baa adds r0, 4                                        |     r0 += 4;
    0x00003bac blx 0x21fc                                        |     r0 = fcn_000021fc ();
    0x00003bb0 mov r5, r0                                        |     r5 = r0;
                                                                 |     if (r0 != 0) {
    0x00003bb2 cbz r0, 0x3bea                                    |         
    0x00003bb4 adds r4, 5                                        |         r4 += 5;
    0x00003bb6 mov r2, sl                                        |         r2 = sl;
    0x00003bb8 add r4, r0                                        |         r4 += r0;
    0x00003bba mov r1, sb                                        |         r1 = sb;
    0x00003bbc str r4, [r0], 4                                   |         *(r0) = r4;
                                                                 |         r0 += 4;
    0x00003bc0 blx 0x20c0                                        |         mmap64 ()
    0x00003bc4 mov r2, r7                                        |         r2 = r7;
    0x00003bc6 mov r1, r6                                        |         r1 = r6;
    0x00003bc8 mov r0, r4                                        |         r0 = r4;
    0x00003bca blx 0x20c0                                        |         mmap64 ()
    0x00003bce movs r1, 9                                        |         r1 = 9;
    0x00003bd0 ldr r0, [r5]                                      |         r0 = *(r5);
    0x00003bd2 movs r2, 0x20                                     |         r2 = 0x20;
    0x00003bd4 bl 0xa564                                         |         fcn_0000a564 (r0, r1, r2);
    0x00003bd8 ldr.w r0, [r8, 0xc]                               |         r0 = *((r8 + 0xc));
    0x00003bdc mov r1, r5                                        |         r1 = r5;
    0x00003bde bl 0x37c0                                         |         r0 = fcn_000037c0 (r0, r1);
                                                                 |         if (r0 == 0) {
    0x00003be2 cbz r0, 0x3bea                                    |             goto label_0;
                                                                 |         }
    0x00003be4 movs r5, 0                                        |         r5 = 0;
    0x00003be6 str.w r0, [r8, 0xc]                               |         __asm ("str.w r0, [r8, 0xc]");
                                                                 |     }
                                                                 | label_0:
    0x00003bea mov r0, r5                                        |     r0 = r5;
    0x00003bec pop.w {r4, r5, r6, r7, r8, sb, sl, lr}            |     
    0x00003bf0 b.w 0x20a0                                        |     return void (*0x20a0)() ();
                                                                 | }
    ; assembly                                                   | /* r2dec pseudo code output */
                                                                 | /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/lib/libkmod.so.2.3.7 @ 0x3cd0 */
                                                                 | #include <stdint.h>
                                                                 |  
    ; (fcn) fcn.00003cd0 ()                                      | void fcn_00003cd0 (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 var_4ch;
                                                                 |     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;
    0x00003cd0 push.w {r4, r5, r6, r7, r8, sb, sl, fp, lr}       |     
    0x00003cd4 mov sb, r2                                        |     sb = r2;
    0x00003cd6 ldr.w r2, [pc, 0xa04]                             |     r2 = *(0x000046dc);
    0x00003cda sub.w sp, sp, 0x1120                              |     
    0x00003cde sub sp, 0x1c                                      |     
    0x00003ce0 movs r7, 0                                        |     r7 = 0;
    0x00003ce2 ldr.w r3, [pc, 0x9fc]                             |     
    0x00003ce6 add.w fp, sp, 0x138                               |     
    0x00003cea add r2, pc                                        |     r2 += pc;
    0x00003cec strd r0, r1, [sp, 0x2c]                           |     __asm ("strd r0, r1, [var_30h]");
    0x00003cf0 add.w r1, sp, 0x1120                              |     r1 += var_1120h;
    0x00003cf4 add.w r8, sp, 0x5c                                |     r8 += var_5ch;
    0x00003cf8 ldr r3, [r2, r3]                                  |     r3 = *((r2 + r3));
    0x00003cfa adds r1, 0x14                                     |     r1 += 0x14;
    0x00003cfc ldr r3, [r3]                                      |     r3 = *(0x46e2);
    0x00003cfe str r3, [r1]                                      |     *(r1) = r3;
    0x00003d00 mov.w r3, 0                                       |     r3 = 0;
    0x00003d04 str r7, [fp, -0xdc]                               |     var_5ch = r7;
    0x00003d08 blx 0x2384                                        |     uflow ();
    0x00003d0c ldr.w r2, [pc, 0x9d4]                             |     
    0x00003d10 mov r1, r0                                        |     r1 = r0;
    0x00003d12 mov r0, r8                                        |     r0 = r8;
    0x00003d14 add r2, pc                                        |     r2 = 0x83fc;
    0x00003d16 bl 0x3a38                                         |     fcn_00003a38 (r0, r1, r2);
    0x00003d1a ldr.w r5, [sb]                                    |     r5 = *(sb);
    0x00003d1e cmp r5, 0                                         |     
                                                                 |     if (r5 == 0) {
    0x00003d20 beq.w 0x46b8                                      |         goto label_18;
                                                                 |     }
    0x00003d24 ldr.w r3, [pc, 0x9c0]                             |     
    0x00003d28 add.w sl, sp, 0x60                                |     sl += size;
    0x00003d2c str r7, [sp, 0x18]                                |     var_18h = r7;
    0x00003d2e add r3, pc                                        |     r3 = 0x841a;
    0x00003d30 str r3, [sp, 0x28]                                |     var_28h = r3;
    0x00003d32 ldr.w r3, [pc, 0x9b8]                             |     
    0x00003d36 add r3, pc                                        |     r3 = 0x8428;
    0x00003d38 str r3, [sp, 0x1c]                                |     var_1ch = r3;
    0x00003d3a b 0x3d50                                          |     
                                                                 |     while (r0 != 0) {
    0x00003d3c blx 0x22f4                                        |         r0 = gzerror ();
    0x00003d40 ldr r3, [r0]                                      |         r3 = *(r0);
    0x00003d42 cmp r3, 0                                         |         
                                                                 |         if (r3 <= 0) {
    0x00003d44 ble.w 0x4022                                      |             goto label_19;
                                                                 |         }
                                                                 | label_3:
    0x00003d48 ldr r5, [sb, 4]!                                  |         r5 = *((sb += 4));
    0x00003d4c cmp r5, 0                                         |         
                                                                 |         if (r5 == 0) {
    0x00003d4e beq 0x3dc2                                        |             goto label_20;
                                                                 |         }
                                                                 | label_0:
    0x00003d50 mov r1, sl                                        |         r1 = sl;
    0x00003d52 mov r0, r5                                        |         r0 = r5;
    0x00003d54 blx 0x212c                                        |         r0 = realloc (r0, r1);
    0x00003d58 mov r4, r0                                        |         r4 = r0;
    0x00003d5a cmp r0, 0                                         |         
    0x00003d5c bne 0x3d3c                                        |         
                                                                 |     }
    0x00003d5e mov r0, sl                                        |     r0 = sl;
    0x00003d60 bl 0xa960                                         |     fcn_0000a960 (r0);
    0x00003d64 ldr r3, [fp, -0xc8]                               |     r3 = var_bp_c8h;
    0x00003d68 strd r0, r1, [sp, 0x10]                           |     __asm ("strd r0, r1, [var_10h]");
    0x00003d6c and r3, r3, 0xf000                                |     r3 &= 0xf000;
    0x00003d70 cmp.w r3, 0x4000                                  |     
                                                                 |     if (r3 == 0x4000) {
    0x00003d74 beq.w 0x3f8e                                      |         goto label_21;
                                                                 |     }
    0x00003d78 mov r2, r4                                        |     r2 = r4;
    0x00003d7a mov r1, r5                                        |     r1 = r5;
    0x00003d7c mov r0, r8                                        |     r0 = r8;
    0x00003d7e bl 0x3a38                                         |     fcn_00003a38 (r0, r1, r2);
                                                                 | label_4:
    0x00003d82 mov r0, r5                                        |     r0 = r5;
    0x00003d84 blx 0x22a8                                        |     r0 = fcn_000022a8 ();
    0x00003d88 mov r2, r0                                        |     r2 = r0;
    0x00003d8a adds r0, 9                                        |     r0 += 9;
    0x00003d8c adds r6, r2, 1                                    |     r6 = r2 + 1;
    0x00003d8e blx 0x21fc                                        |     r0 = fcn_000021fc ();
    0x00003d92 mov r4, r0                                        |     r4 = r0;
    0x00003d94 cmp r0, 0                                         |     
                                                                 |     if (r0 == 0) {
    0x00003d96 beq.w 0x46be                                      |         goto label_22;
                                                                 |     }
    0x00003d9a mov r1, r5                                        |     r1 = r5;
    0x00003d9c mov r2, r6                                        |     r2 = r6;
    0x00003d9e ldrd r5, r6, [sp, 0x10]                           |     __asm ("ldrd r5, r6, [var_10h]");
    0x00003da2 strd r5, r6, [r0], 8                              |     __asm ("strd r5, r6, [r0], 8");
    0x00003da6 blx 0x20c0                                        |     mmap64 ()
    0x00003daa ldr r0, [sp, 0x18]                                |     r0 = var_18h;
    0x00003dac mov r1, r4                                        |     r1 = r4;
    0x00003dae bl 0x37c0                                         |     r0 = fcn_000037c0 (r0, r1);
    0x00003db2 cmp r0, 0                                         |     
                                                                 |     if (r0 == 0) {
    0x00003db4 beq.w 0x43ba                                      |         goto label_23;
                                                                 |     }
    0x00003db8 ldr r5, [sb, 4]!                                  |     r5 = *((sb += 4));
    0x00003dbc str r0, [sp, 0x18]                                |     var_18h = r0;
    0x00003dbe cmp r5, 0                                         |     
                                                                 |     if (r5 != 0) {
    0x00003dc0 bne 0x3d50                                        |         goto label_0;
                                                                 |     }
                                                                 | label_20:
    0x00003dc2 ldr r7, [sp, 0x18]                                |     r7 = var_18h;
                                                                 | label_16:
    0x00003dc4 movs r1, 0x20                                     |     r1 = 0x20;
    0x00003dc6 movs r0, 1                                        |     r0 = 1;
    0x00003dc8 blx 0x1fd0                                        |     calloc (r0, r1);
    0x00003dcc ldr r2, [sp, 0x30]                                |     r2 = var_30h;
    0x00003dce str r0, [sp, 0x24]                                |     var_24h = r0;
    0x00003dd0 str r0, [r2]                                      |     *(r2) = r0;
    0x00003dd2 ldr r2, [fp, -0xdc]                               |     r2 = var_5ch;
    0x00003dd6 str r2, [sp, 0x10]                                |     var_10h = r2;
    0x00003dd8 cmp r0, 0                                         |     
                                                                 |     if (r0 == 0) {
    0x00003dda beq.w 0x43c2                                      |         goto label_17;
                                                                 |     }
    0x00003dde ldr r1, [sp, 0x2c]                                |     r1 = var_2ch;
    0x00003de0 str r7, [r0, 0x1c]                                |     *((r0 + 0x1c)) = r7;
    0x00003de2 str r1, [r0]                                      |     *(r0) = r1;
    0x00003de4 cmp r2, 0                                         |     
                                                                 |     if (r2 == 0) {
    0x00003de6 beq.w 0x4118                                      |         goto label_24;
                                                                 |     }
    0x00003dea ldr.w r3, [pc, 0x904]                             |     
    0x00003dee str.w fp, [sp, 0x1c]                              |     __asm ("str.w fp, [var_1ch]");
    0x00003df2 add r3, pc                                        |     r3 = 0x84e8;
    0x00003df4 str r3, [sp, 0x38]                                |     var_38h = r3;
    0x00003df6 ldr.w r3, [pc, 0x8fc]                             |     
    0x00003dfa add r3, pc                                        |     r3 = 0x84f4;
    0x00003dfc str r3, [sp, 0x3c]                                |     var_3ch = r3;
    0x00003dfe b 0x3e1a                                          |     
                                                                 |     while (r4 < r0) {
                                                                 | label_5:
    0x00003e00 ldr r0, [sp, 0x18]                                |         r0 = var_18h;
    0x00003e02 blx 0x20a4                                        |         fcn_000020a4 ();
    0x00003e06 ldr r0, [sp, 0x10]                                |         r0 = var_10h;
    0x00003e08 bl 0x385c                                         |         fcn_0000385c (r0);
    0x00003e0c ldr r2, [sp, 0x1c]                                |         r2 = var_1ch;
    0x00003e0e str r0, [sp, 0x10]                                |         var_10h = r0;
    0x00003e10 str r0, [r2, -0xdc]                               |         *((r2 - 0xdc)) = r0;
    0x00003e14 cmp r0, 0                                         |         
                                                                 |         if (r0 == 0) {
    0x00003e16 beq.w 0x4116                                      |             goto label_25;
                                                                 |         }
    0x00003e1a ldr r3, [sp, 0x10]                                |         r3 = var_10h;
    0x00003e1c ldr r2, [r3, 8]                                   |         r2 = *((r3 + 8));
    0x00003e1e ldrb r3, [r2, 4]                                  |         r3 = *((r2 + 4));
    0x00003e20 ldr r0, [r2]                                      |         r0 = *(r2);
    0x00003e22 str r2, [sp, 0x18]                                |         var_18h = r2;
    0x00003e24 cmp r3, 0                                         |         
                                                                 |         if (r3 == 0) {
    0x00003e26 beq.w 0x4034                                      |             goto label_26;
                                                                 |         }
                                                                 | label_6:
    0x00003e2a mov.w r1, 0x80000                                 |         r1 = 0x80000;
    0x00003e2e blx 0x21cc                                        |         r0 = fcn_000021cc ();
    0x00003e32 subs r4, r0, 0                                    |         r4 = r0 - 0;
    0x00003e34 blt 0x3e00                                        |         
                                                                 |     }
    0x00003e36 ldr r2, [sp, 0x1c]                                |     r2 = var_1ch;
    0x00003e38 movs r3, 0                                        |     r3 = 0;
    0x00003e3a ldr.w r1, [pc, 0x8bc]                             |     
    0x00003e3e str r3, [r2, -0xd8]                               |     *((r2 - 0xd8)) = r3;
    0x00003e42 add r1, pc                                        |     r1 = 0x8540;
    0x00003e44 blx 0x1fc4                                        |     r0 = fdopen ();
    0x00003e48 mov sb, r0                                        |     sb = r0;
    0x00003e4a cmp r0, 0                                         |     
                                                                 |     if (r0 == 0) {
    0x00003e4c beq.w 0x46c2                                      |         goto label_27;
                                                                 |     }
    0x00003e4e strh r1, [r7, 0x20]                               |     *((r7 + 0x20)) = r1;
    0x00003e50 ldr.w r3, [pc, 0x8a8]                             |     
    0x00003e54 add.w sl, sp, 0x60                                |     sl += size;
    0x00003e58 ldr.w fp, [pc, 0x8a4]                             |     
    0x00003e5c add r3, pc                                        |     r3 = 0x855c;
    0x00003e5e add fp, pc                                        |     fp = 0x8562;
    0x00003e60 str r3, [sp, 0x20]                                |     var_20h = r3;
    0x00003e62 b 0x3ece                                          |     goto label_28;
                                                                 | label_2:
    0x00003e64 ldr.w r1, [pc, 0x89c]                             |     
    0x00003e68 mov r0, r6                                        |     r0 = r6;
    0x00003e6a add r1, pc                                        |     r1 = 0x8572;
    0x00003e6c blx 0x201c                                        |     r0 = fcn_0000201c ();
    0x00003e70 mov r5, r0                                        |     r5 = r0;
    0x00003e72 cmp r0, 0                                         |     
                                                                 |     if (r0 == 0) {
    0x00003e74 beq.w 0x4064                                      |         goto label_29;
                                                                 |     }
    0x00003e78 ldr.w r1, [pc, 0x88c]                             |     
    0x00003e7c mov r0, r6                                        |     r0 = r6;
    0x00003e7e add r1, pc                                        |     r1 = 0x858a;
    0x00003e80 blx 0x201c                                        |     r0 = fcn_0000201c ();
    0x00003e84 mov r5, r0                                        |     r5 = r0;
    0x00003e86 cmp r0, 0                                         |     
                                                                 |     if (r0 == 0) {
    0x00003e88 beq.w 0x409a                                      |         goto label_30;
                                                                 |     }
    0x00003e8c ldr.w r1, [pc, 0x87c]                             |     
    0x00003e90 mov r0, r6                                        |     r0 = r6;
    0x00003e92 add r1, pc                                        |     r1 = 0x85a2;
    0x00003e94 blx 0x201c                                        |     r0 = fcn_0000201c ();
    0x00003e98 mov r5, r0                                        |     r5 = r0;
    0x00003e9a cmp r0, 0                                         |     
                                                                 |     if (r0 == 0) {
    0x00003e9c beq.w 0x40d6                                      |         goto label_31;
                                                                 |     }
    0x00003ea0 ldr.w r1, [pc, 0x86c]                             |     
    0x00003ea4 mov r0, r6                                        |     r0 = r6;
    0x00003ea6 add r1, pc                                        |     r1 = 0x85ba;
    0x00003ea8 blx 0x201c                                        |     r0 = fcn_0000201c ();
    0x00003eac mov r5, r0                                        |     r5 = r0;
    0x00003eae cmp r0, 0                                         |     
                                                                 |     if (r0 == 0) {
    0x00003eb0 beq.w 0x437c                                      |         goto label_32;
                                                                 |     }
    0x00003eb4 ldr.w r1, [pc, 0x85c]                             |     
    0x00003eb8 mov r0, r6                                        |     r0 = r6;
    0x00003eba add r1, pc                                        |     r1 = 0x85d2;
    0x00003ebc blx 0x201c                                        |     r0 = fcn_0000201c ();
    0x00003ec0 mov r5, r0                                        |     r5 = r0;
    0x00003ec2 cmp r0, 0                                         |     
                                                                 |     if (r0 == 0) {
    0x00003ec4 beq.w 0x43f8                                      |         goto label_33;
                                                                 |     }
                                                                 |     do {
                                                                 | label_1:
    0x00003ec8 mov r0, r4                                        |         r0 = r4;
    0x00003eca blx 0x20a4                                        |         fcn_000020a4 ();
                                                                 | label_28:
    0x00003ece mov r1, sl                                        |         r1 = sl;
    0x00003ed0 mov r0, sb                                        |         r0 = sb;
    0x00003ed2 bl 0xa838                                         |         r0 = fcn_0000a838 (r0, r1);
    0x00003ed6 mov r4, r0                                        |         r4 = r0;
    0x00003ed8 cmp r0, 0                                         |         
                                                                 |         if (r0 == 0) {
    0x00003eda beq.w 0x402c                                      |             goto label_34;
                                                                 |         }
    0x00003ede ldrb r3, [r4]                                     |         r3 = *(r4);
    0x00003ee0 cmp r3, 0x23                                      |         
    0x00003ee2 it ne                                             |         
                                                                 |         if (r3 != 0x23) {
    0x00003ee4 cmpne r3, 0                                       |             __asm ("cmpne r3, 0");
                                                                 |         }
    0x00003ee6 beq 0x3ec8                                        |         
                                                                 |     } while (r3 == 0x23);
    0x00003ee8 add r7, sp, 0xc8                                  |     r7 += var_c8h;
    0x00003eea mov r1, fp                                        |     r1 = fp;
    0x00003eec mov r2, r7                                        |     r2 = r7;
    0x00003eee blx 0x21a8                                        |     r0 = fcn_000021a8 ();
    0x00003ef2 mov r6, r0                                        |     r6 = r0;
    0x00003ef4 cmp r0, 0                                         |     
                                                                 |     if (r0 == 0) {
    0x00003ef6 beq 0x3ec8                                        |         goto label_1;
                                                                 |     }
    0x00003ef8 ldr r1, [sp, 0x20]                                |     r1 = var_20h;
    0x00003efa blx 0x201c                                        |     r0 = fcn_0000201c ();
    0x00003efe mov r5, r0                                        |     r5 = r0;
    0x00003f00 cmp r0, 0                                         |     
                                                                 |     if (r0 != 0) {
    0x00003f02 bne 0x3e64                                        |         goto label_2;
                                                                 |     }
    0x00003f04 mov r2, r7                                        |     r2 = r7;
    0x00003f06 mov r1, fp                                        |     r1 = fp;
    0x00003f08 blx 0x21a8                                        |     fcn_000021a8 ();
    0x00003f0c mov r2, r7                                        |     r2 = r7;
    0x00003f0e mov r6, r0                                        |     r6 = r0;
    0x00003f10 mov r1, fp                                        |     r1 = fp;
    0x00003f12 mov r0, r5                                        |     r0 = r5;
    0x00003f14 blx 0x21a8                                        |     fcn_000021a8 ();
    0x00003f16 strd r4, r6, [r8, -0x1c]                          |     __asm ("strd r4, r6, [r8, -0x1c]");
    0x00003f1a mov r0, r6                                        |     r0 = r6;
    0x00003f1c bl 0xa5e0                                         |     r0 = fcn_0000a5e0 (r0);
    0x00003f20 cmp r0, 0                                         |     
                                                                 |     if (r0 < 0) {
    0x00003f22 blt 0x3ec8                                        |         goto label_1;
                                                                 |     }
    0x00003f24 mov r0, r7                                        |     r0 = r7;
    0x00003f26 bl 0xa5e0                                         |     r0 = fcn_0000a5e0 (r0);
    0x00003f2a cmp r0, 0                                         |     
                                                                 |     if (r0 < 0) {
    0x00003f2c blt 0x3ec8                                        |         goto label_1;
                                                                 |     }
    0x00003f2e mov r0, r6                                        |     r0 = r6;
    0x00003f30 blx 0x22a8                                        |     r0 = fcn_000022a8 ();
    0x00003f34 adds r3, r0, 1                                    |     r3 = r0 + 1;
    0x00003f36 mov r0, r7                                        |     r0 = r7;
    0x00003f38 str r3, [sp, 0x28]                                |     var_28h = r3;
    0x00003f3a blx 0x22a8                                        |     fcn_000022a8 ();
    0x00003f3e ldr r3, [sp, 0x28]                                |     r3 = var_28h;
    0x00003f40 adds r2, r0, 1                                    |     r2 = r0 + 1;
    0x00003f42 mov r8, r0                                        |     r8 = r0;
    0x00003f44 str r2, [sp, 0x2c]                                |     var_2ch = r2;
    0x00003f46 adds r0, r3, r2                                   |     r0 = r3 + r2;
    0x00003f48 adds r0, 4                                        |     r0 += 4;
    0x00003f4a blx 0x21fc                                        |     r0 = fcn_000021fc ();
    0x00003f4e mov r3, r0                                        |     r3 = r0;
                                                                 |     if (r0 != 0) {
    0x00003f50 cbz r0, 0x3f86                                    |         
    0x00003f52 add.w r8, r8, 5                                   |         r8 += 5;
    0x00003f56 ldr r2, [sp, 0x2c]                                |         r2 = var_2ch;
    0x00003f58 add r8, r0                                        |         r8 += r0;
    0x00003f5a mov r1, r7                                        |         r1 = r7;
    0x00003f5c str r0, [sp, 0x2c]                                |         var_2ch = r0;
    0x00003f5e str r8, [r0], 4                                   |         *(r0) = r8;
                                                                 |         r0 += 4;
    0x00003f62 blx 0x20c0                                        |         mmap64 ()
    0x00003f66 mov r1, r6                                        |         r1 = r6;
    0x00003f68 ldr r2, [sp, 0x28]                                |         r2 = var_28h;
    0x00003f6a mov r0, r8                                        |         r0 = r8;
    0x00003f6c blx 0x20c0                                        |         mmap64 ()
    0x00003f70 ldr r3, [sp, 0x2c]                                |         r3 = var_2ch;
    0x00003f72 ldr r6, [sp, 0x24]                                |         r6 = var_24h;
    0x00003f74 mov r1, r3                                        |         r1 = r3;
    0x00003f76 str r3, [sp, 0x28]                                |         var_28h = r3;
    0x00003f78 ldr r0, [r6, 4]                                   |         r0 = *((r6 + 4));
    0x00003f7a bl 0x37c0                                         |         fcn_000037c0 (r0, r1);
    0x00003f7e ldr r3, [sp, 0x28]                                |         r3 = var_28h;
                                                                 |         if (r0 == 0) {
    0x00003f80 cbz r0, 0x3f86                                    |             goto label_35;
                                                                 |         }
    0x00003f82 mov r3, r5                                        |         r3 = r5;
    0x00003f84 str r0, [r6, 4]                                   |         *((r6 + 4)) = r0;
                                                                 |     }
                                                                 | label_35:
    0x00003f86 mov r0, r3                                        |     r0 = r3;
    0x00003f88 blx 0x20a4                                        |     fcn_000020a4 ();
    0x00003f8c b 0x3ec8                                          |     goto label_1;
                                                                 | label_21:
    0x00003f8e mov r0, r5                                        |     r0 = r5;
    0x00003f90 blx 0x21b4                                        |     r0 = fcn_000021b4 ();
    0x00003f94 mov r6, r0                                        |     r6 = r0;
    0x00003f96 cmp r0, 0                                         |     
                                                                 |     if (r0 == 0) {
    0x00003f98 beq.w 0x3d48                                      |         goto label_3;
                                                                 |     }
    0x00003f9c blx 0x23dc                                        |     r0 = fcn_000023dc ();
                                                                 |     if (r0 == 0) {
    0x00003fa0 cbz r0, 0x401a                                    |         goto label_36;
                                                                 |     }
    0x00003fa2 strd sb, sl, [sp, 0x20]                           |     __asm ("strd sb, sl, [var_24h]");
    0x00003fa6 add r3, sp, 0xc8                                  |     r3 += var_c8h;
    0x00003fa8 ldr.w sb, [sp, 0x28]                              |     sb = var_28h;
    0x00003fac mov sl, r0                                        |     sl = r0;
    0x00003fae mov r7, r3                                        |     r7 = r3;
                                                                 |     do {
    0x00003fb0 add.w r4, sl, 0x13                                |         r4 = sl + 0x13;
    0x00003fb4 mov r0, r4                                        |         r0 = r4;
    0x00003fb6 blx 0x22a8                                        |         fcn_000022a8 ();
    0x00003fba ldrb.w r2, [sl, 0x13]                             |         r2 = *((sl + 0x13));
    0x00003fbc movs r0, 0x13                                     |         r0 = 0x13;
    0x00003fbe mov sl, r0                                        |         sl = r0;
    0x00003fc0 cmp r2, 0x2e                                      |         
                                                                 |         if (r2 != 0x2e) {
    0x00003fc2 beq 0x400a                                        |             
    0x00003fc4 cmp r0, 5                                         |             
                                                                 |             if (r0 < 5) {
    0x00003fc6 bls 0x400a                                        |                 goto label_37;
                                                                 |             }
    0x00003fc8 subs r0, 5                                        |             r0 -= 5;
    0x00003fca mov r1, sb                                        |             r1 = sb;
    0x00003fcc add r0, r4                                        |             r0 += r4;
    0x00003fce blx 0x201c                                        |             r0 = fcn_0000201c ();
                                                                 |             if (r0 != 0) {
    0x00003fd2 cbz r0, 0x3fe2                                    |                 
    0x00003fd4 sub.w r0, sl, 6                                   |                 r0 = sl - 6;
    0x00003fd8 ldr r1, [sp, 0x1c]                                |                 r1 = var_1ch;
    0x00003fda add r0, r4                                        |                 r0 += r4;
    0x00003fdc blx 0x201c                                        |                 r0 = fcn_0000201c ();
                                                                 |                 if (r0 != 0) {
    0x00003fe0 cbnz r0, 0x400a                                   |                     goto label_37;
                                                                 |                 }
                                                                 |             }
    0x00003fe2 mov r0, r6                                        |             r0 = r6;
    0x00003fe4 blx 0x23f4                                        |             fcn_000023f4 ();
    0x00003fe8 movs r3, 0                                        |             r3 = 0;
    0x00003fea mov r2, r7                                        |             r2 = r7;
    0x00003fec mov r1, r4                                        |             r1 = r4;
    0x00003fee blx 0x21e4                                        |             fcn_000021e4 ();
    0x00003ff2 ldr r3, [fp, -0x60]                               |             r3 = var_bp_60h;
    0x00003ff6 and r3, r3, 0xf000                                |             r3 &= 0xf000;
    0x00003ffa cmp.w r3, 0x4000                                  |             
                                                                 |             if (r3 == 0x4000) {
    0x00003ffe beq 0x400a                                        |                 goto label_37;
                                                                 |             }
    0x00004000 mov r2, r4                                        |             r2 = r4;
    0x00004002 mov r1, r5                                        |             r1 = r5;
    0x00004004 mov r0, r8                                        |             r0 = r8;
    0x00004006 bl 0x3a38                                         |             fcn_00003a38 (r0, r1, r2);
                                                                 |         }
                                                                 | label_37:
    0x0000400a mov r0, r6                                        |         r0 = r6;
    0x0000400c blx 0x23dc                                        |         r0 = fcn_000023dc ();
    0x00004010 mov sl, r0                                        |         sl = r0;
    0x00004012 cmp r0, 0                                         |         
    0x00004014 bne 0x3fb0                                        |         
                                                                 |     } while (r0 != 0);
    0x00004016 ldrd sb, sl, [sp, 0x20]                           |     __asm ("ldrd sb, sl, [var_24h]");
                                                                 | label_36:
    0x0000401a mov r0, r6                                        |     r0 = r6;
    0x0000401c blx 0x2454                                        |     fcn_00002454 ();
    0x00004020 b 0x3d82                                          |     goto label_4;
                                                                 | label_19:
    0x00004022 vmov.i32 d16, 0                                   |     __asm ("vmov.i32 d16, 0");
    0x00004026 vstr d16, [sp, 0x10]                              |     __asm ("vstr d16, [sp, 0x10]");
    0x0000402a b 0x3d82                                          |     goto label_4;
                                                                 | label_34:
    0x0000402c mov r0, sb                                        |     r0 = sb;
    0x0000402e blx 0x236c                                        |     fcn_0000236c ();
    0x00004032 b 0x3e00                                          |     goto label_5;
                                                                 | label_26:
    0x00004034 ldr r3, [sp, 0x1c]                                |     r3 = var_1ch;
    0x00004036 subs r4, r3, 4                                    |     r4 = r3 - 4;
    0x00004038 mov r3, r2                                        |     r3 = r2;
    0x0000403a adds r3, 5                                        |     r3 += 5;
    0x0000403c movs r2, 1                                        |     r2 = 1;
    0x0000403e str r3, [sp, 8]                                   |     var_8h = r3;
    0x00004040 ldr.w r3, [pc, 0x6d4]                             |     
    0x00004044 add r3, pc                                        |     r3 = 0x8760;
    0x00004046 strd r3, r0, [sp]                                 |     __asm ("strd r3, r0, [sp]");
    0x0000404a mov.w r3, 0x1000                                  |     r3 = 0x1000;
    0x0000404e mov r1, r3                                        |     r1 = r3;
    0x00004050 mov r0, r4                                        |     r0 = r4;
    0x00004052 blx 0x2460                                        |     r0 = fcn_00002460 ();
    0x00004056 cmp.w r0, 0x1000                                  |     
    0x0000405a it lt                                             |     
                                                                 |     if (r0 < 0x1000) {
    0x0000405c movlt r0, r4                                      |         r0 = r4;
                                                                 |         goto label_38;
                                                                 |     }
                                                                 |     if (r0 < 0x1000) {
                                                                 | label_38:
    0x0000405e blt.w 0x3e2a                                      |         goto label_6;
                                                                 |     }
    0x00004062 b 0x3e00                                          |     goto label_5;
                                                                 | label_29:
    0x00004064 mov r2, r7                                        |     r2 = r7;
    0x00004066 mov r1, fp                                        |     r1 = fp;
    0x00004068 blx 0x21a8                                        |     r0 = fcn_000021a8 ();
    0x0000406c mov r6, r0                                        |     r6 = r0;
    0x0000406e bl 0xa5e0                                         |     r0 = fcn_0000a5e0 (r0);
    0x00004072 cmp r0, 0                                         |     
                                                                 |     if (r0 < 0) {
    0x00004074 blt.w 0x3ec8                                      |         goto label_1;
                                                                 |     }
    0x00004078 mov r0, r6                                        |     r0 = r6;
    0x0000407a blx 0x20fc                                        |     r0 = stack_chk_fail ();
    0x0000407e mov r6, r0                                        |     r6 = r0;
                                                                 |     if (r0 != 0) {
    0x00004080 cbz r0, 0x4092                                    |         
    0x00004082 ldr r7, [sp, 0x24]                                |         r7 = var_24h;
    0x00004084 mov r1, r6                                        |         r1 = r6;
    0x00004086 ldr r0, [r7, 8]                                   |         r0 = *((r7 + 8));
    0x00004088 bl 0x37c0                                         |         r0 = fcn_000037c0 (r0, r1);
                                                                 |         if (r0 == 0) {
    0x0000408c cbz r0, 0x4092                                    |             goto label_39;
                                                                 |         }
    0x0000408e mov r6, r5                                        |         r6 = r5;
    0x00004090 str r0, [r7, 8]                                   |         *((r7 + 8)) = r0;
                                                                 |     }
                                                                 | label_39:
    0x00004092 mov r0, r6                                        |     r0 = r6;
    0x00004094 blx 0x20a4                                        |     fcn_000020a4 ();
    0x00004098 b 0x3ec8                                          |     goto label_1;
                                                                 | label_30:
    0x0000409a mov r2, r7                                        |     r2 = r7;
    0x0000409c mov r1, fp                                        |     r1 = fp;
    0x0000409e blx 0x21a8                                        |     fcn_000021a8 ();
    0x000040a2 ldr.w r1, [pc, 0x678]                             |     
    0x000040a6 mov r3, r0                                        |     r3 = r0;
    0x000040a8 mov r2, r7                                        |     r2 = r7;
    0x000040aa mov r0, r5                                        |     r0 = r5;
    0x000040ac mov r5, r3                                        |     r5 = r3;
    0x000040ae add r1, pc                                        |     r1 = 0x87d0;
    0x000040b0 blx 0x21a8                                        |     r0 = fcn_000021a8 ();
    0x000040b4 mov r6, r0                                        |     r6 = r0;
    0x000040b6 mov r0, r5                                        |     r0 = r5;
    0x000040b8 bl 0xa5e0                                         |     fcn_0000a5e0 (r0);
    0x000040bc clz r3, r6                                        |     r3 &= r6;
    0x000040c0 lsrs r3, r3, 5                                    |     r3 >>= 5;
    0x000040c2 orrs.w r3, r3, r0, lsr 31                         |     r3 |= (r0 >> 31);
                                                                 |     if (r3 != r3) {
    0x000040c6 bne.w 0x3ec8                                      |         goto label_1;
                                                                 |     }
    0x000040ca ldr r0, [sp, 0x24]                                |     r0 = var_24h;
    0x000040cc mov r2, r6                                        |     r2 = r6;
    0x000040ce mov r1, r5                                        |     r1 = r5;
    0x000040d0 bl 0x3b88                                         |     fcn_00003b88 (r0, r1, r2);
    0x000040d4 b 0x3ec8                                          |     goto label_1;
                                                                 | label_31:
    0x000040d6 mov r2, r7                                        |     r2 = r7;
    0x000040d8 mov r1, fp                                        |     r1 = fp;
    0x000040da blx 0x21a8                                        |     fcn_000021a8 ();
    0x000040de ldr.w r1, [pc, 0x640]                             |     
    0x000040e2 mov r3, r0                                        |     r3 = r0;
    0x000040e4 mov r2, r7                                        |     r2 = r7;
    0x000040e6 mov r0, r5                                        |     r0 = r5;
    0x000040e8 mov r5, r3                                        |     r5 = r3;
    0x000040ea add r1, pc                                        |     r1 = 0x8810;
    0x000040ec blx 0x21a8                                        |     r0 = fcn_000021a8 ();
    0x000040f0 mov r6, r0                                        |     r6 = r0;
    0x000040f2 mov r0, r5                                        |     r0 = r5;
    0x000040f4 bl 0xa5e0                                         |     fcn_0000a5e0 (r0);
    0x000040f8 clz r3, r6                                        |     r3 &= r6;
    0x000040fc lsrs r3, r3, 5                                    |     r3 >>= 5;
    0x000040fe orrs.w r3, r3, r0, lsr 31                         |     r3 |= (r0 >> 31);
                                                                 |     if (r3 != r3) {
    0x00004102 bne.w 0x3ec8                                      |         goto label_1;
                                                                 |     }
    0x00004106 ldr r3, [sp, 0x24]                                |     r3 = var_24h;
    0x00004108 mov r1, r6                                        |     r1 = r6;
    0x0000410a mov r0, r5                                        |     r0 = r5;
    0x0000410c add.w r2, r3, 0x14                                |     r2 = r3 + 0x14;
    0x00004110 bl 0x3b28                                         |     fcn_00003b28 (r0, r1, r2);
    0x00004114 b 0x3ec8                                          |     goto label_1;
                                                                 | label_25:
    0x00004116 mov fp, r2                                        |     
                                                                 | label_24:
    0x00004118 ldr.w r0, [pc, 0x608]                             |     
    0x0000411c mov.w r1, 0x80000                                 |     r1 = 0x80000;
    0x00004120 add r0, pc                                        |     r0 = 0x8848;
    0x00004122 blx 0x21cc                                        |     r0 = fcn_000021cc ();
    0x00004126 subs r5, r0, 0                                    |     r5 = r0 - 0;
                                                                 |     if (r5 < r0) {
    0x00004128 blt.w 0x4242                                      |         goto label_15;
                                                                 |     }
    0x0000412c sub.w r4, fp, 4                                   |     r4 = fp - 4;
    0x00004130 mov.w r2, 0x1000                                  |     r2 = 0x1000;
    0x00004134 mov r1, r4                                        |     r1 = r4;
    0x00004136 bl 0xa69c                                         |     r0 = fcn_0000a69c (r0, r1, r2);
    0x0000413a mov r6, r0                                        |     r6 = r0;
    0x0000413c mov r0, r5                                        |     r0 = r5;
    0x0000413e blx 0x2448                                        |     fcn_00002448 ();
    0x00004142 cmp r6, 0                                         |     
                                                                 |     if (r6 < 0) {
    0x00004144 blt.w 0x46b0                                      |         goto label_40;
                                                                 |     }
    0x00004148 ldr.w r3, [pc, 0x5dc]                             |     
    0x0000414c movs r6, 0                                        |     r6 = 0;
    0x0000414e mov r7, r6                                        |     r7 = r6;
    0x00004150 mov r0, r6                                        |     r0 = r6;
    0x00004152 mov r8, r4                                        |     r8 = r4;
    0x00004154 movs r2, 1                                        |     r2 = 1;
    0x00004156 mov r5, r6                                        |     r5 = r6;
    0x00004158 add r3, pc                                        |     r3 = 0x8884;
    0x0000415a str r3, [sp, 0x10]                                |     var_10h = r3;
                                                                 |     do {
                                                                 | label_7:
    0x0000415c mov r1, r4                                        |         r1 = r4;
    0x0000415e ldrb r3, [r4], 1                                  |         r3 = *(r4);
                                                                 |         r4++;
    0x00004162 cmp r3, 0x2e                                      |         
                                                                 |         if (r3 > 0x2e) {
    0x00004164 bhi.w 0x428a                                      |             goto label_41;
                                                                 |         }
    0x00004168 cmp r3, 0x2e                                      |         
    0x0000416a bhi 0x415c                                        |         
                                                                 |     } while (r3 > 0x2e);
    0x0000416c addw ip, pc, 8                                    |     __asm ("addw ip, pc, 8");
    0x00004170 ldr.w r3, [ip, r3, lsl 2]                         |     offset_0 = r3 << 2;
                                                                 |     r3 = *((ip + offset_0));
    0x00004174 add ip, r3                                        |     
    0x00004176 bx ip                                             |     return void (*ip)() ();
                                                                 | label_15:
    0x00004242 movs r0, 0                                        |     r0 = 0;
                                                                 | label_8:
    0x00004244 ldr.w r2, [pc, 0x4e4]                             |     r2 = *(0x0000472c);
    0x00004248 add.w r1, sp, 0x1120                              |     r1 += var_1120h;
    0x0000424c ldr.w r3, [pc, 0x490]                             |     r3 = *(0x46e0);
    0x00004250 adds r1, 0x14                                     |     r1 += 0x14;
    0x00004252 add r2, pc                                        |     r2 += pc;
    0x00004254 ldr r3, [r2, r3]                                  |     r3 = *((r2 + r3));
    0x00004256 ldr r2, [r3]                                      |     r2 = *(0x46e0);
    0x00004258 ldr r3, [r1]                                      |     r3 = *(r1);
    0x0000425a eors r2, r3                                       |     r2 ^= r3;
    0x0000425c mov.w r3, 0                                       |     r3 = 0;
                                                                 |     if (r2 != r3) {
    0x00004260 bne.w 0x46cc                                      |         goto label_42;
                                                                 |     }
    0x00004264 add.w sp, sp, 0x1120                              |     
    0x00004268 add sp, 0x1c                                      |     
    0x0000426a pop.w {r4, r5, r6, r7, r8, sb, sl, fp, pc}        |     
                                                                 | label_41:
    0x0000428a cmp r3, 0x3d                                      |     
                                                                 |     if (r3 != 0x3d) {
    0x0000428c bne.w 0x415c                                      |         goto label_7;
                                                                 |     }
    0x00004290 cmp r2, 2                                         |     
                                                                 |     if (r2 == 2) {
    0x00004292 beq.w 0x4658                                      |         goto label_43;
                                                                 |     }
    0x00004296 cmp r2, 1                                         |     
    0x00004298 it eq                                             |     
                                                                 |     if (r2 != 1) {
    0x0000429a moveq r2, 0                                       |         r2 = 0;
                                                                 |     }
    0x0000429c b 0x415c                                          |     goto label_7;
                                                                 | label_32:
    0x0000437c mov r2, r7                                        |     r2 = r7;
    0x0000437e mov r1, fp                                        |     r1 = fp;
    0x00004380 blx 0x21a8                                        |     fcn_000021a8 ();
    0x00004384 ldr r1, [pc, 0x3b0]                               |     
    0x00004386 mov r3, r0                                        |     r3 = r0;
    0x00004388 mov r2, r7                                        |     r2 = r7;
    0x0000438a mov r0, r5                                        |     r0 = r5;
    0x0000438c mov r5, r3                                        |     r5 = r3;
    0x0000438e add r1, pc                                        |     r1 = 0x8aca;
    0x00004390 blx 0x21a8                                        |     r0 = fcn_000021a8 ();
    0x00004394 mov r6, r0                                        |     r6 = r0;
    0x00004396 mov r0, r5                                        |     r0 = r5;
    0x00004398 bl 0xa5e0                                         |     fcn_0000a5e0 (r0);
    0x0000439c clz r3, r6                                        |     r3 &= r6;
    0x000043a0 lsrs r3, r3, 5                                    |     r3 >>= 5;
    0x000043a2 orrs.w r3, r3, r0, lsr 31                         |     r3 |= (r0 >> 31);
                                                                 |     if (r3 != r3) {
    0x000043a6 bne.w 0x3ec8                                      |         goto label_1;
                                                                 |     }
    0x000043aa ldr r3, [sp, 0x24]                                |     r3 = var_24h;
    0x000043ac mov r1, r6                                        |     r1 = r6;
    0x000043ae mov r0, r5                                        |     r0 = r5;
    0x000043b0 add.w r2, r3, 0x10                                |     r2 = r3 + 0x10;
    0x000043b4 bl 0x3b28                                         |     fcn_00003b28 (r0, r1, r2);
    0x000043b8 b 0x3ec8                                          |     goto label_1;
                                                                 | label_23:
    0x000043ba mov r0, r4                                        |     r0 = r4;
    0x000043bc ldr r7, [sp, 0x18]                                |     r7 = var_18h;
    0x000043be blx 0x20a4                                        |     fcn_000020a4 ();
                                                                 | label_17:
    0x000043c2 ldr r4, [fp, -0xdc]                               |     r4 = var_5ch;
                                                                 |     if (r4 == 0) {
    0x000043c6 cbz r4, 0x43de                                    |         goto label_44;
                                                                 |     }
                                                                 |     do {
    0x000043c8 ldr r0, [r4, 8]                                   |         r0 = *((r4 + 8));
    0x000043ca blx 0x20a4                                        |         fcn_000020a4 ();
    0x000043ce mov r0, r4                                        |         r0 = r4;
    0x000043d0 bl 0x385c                                         |         r0 = fcn_0000385c (r0);
    0x000043d4 mov r4, r0                                        |         r4 = r0;
    0x000043d6 str r0, [fp, -0xdc]                               |         var_5ch = r0;
    0x000043da cmp r0, 0                                         |         
    0x000043dc bne 0x43c8                                        |         
                                                                 |     } while (r0 != 0);
                                                                 |     if (r7 == 0) {
                                                                 | label_44:
    0x000043de cbz r7, 0x43f2                                    |         goto label_45;
                                                                 |     }
                                                                 |     do {
    0x000043e0 ldr r0, [r7, 8]                                   |         r0 = *((r7 + 8));
    0x000043e2 blx 0x20a4                                        |         fcn_000020a4 ();
    0x000043e6 mov r0, r7                                        |         r0 = r7;
    0x000043e8 bl 0x385c                                         |         r0 = fcn_0000385c (r0);
    0x000043ec mov r7, r0                                        |         r7 = r0;
    0x000043ee cmp r7, 0                                         |         
    0x000043f0 bne 0x43e0                                        |         
                                                                 |     } while (r7 != 0);
                                                                 | label_45:
    0x000043f2 mvn r0, 0xb                                       |     r0 = ~0xb;
    0x000043f6 b 0x4244                                          |     goto label_8;
                                                                 | label_33:
    0x000043f8 mov r2, r7                                        |     r2 = r7;
    0x000043fa mov r1, fp                                        |     r1 = fp;
    0x000043fc blx 0x21a8                                        |     fcn_000021a8 ();
    0x00004400 ldr r1, [pc, 0x338]                               |     
    0x00004402 mov r3, r0                                        |     r3 = r0;
    0x00004404 mov r2, r7                                        |     r2 = r7;
    0x00004406 mov r0, r5                                        |     r0 = r5;
    0x00004408 mov r5, r3                                        |     r5 = r3;
    0x0000440a str r3, [sp, 0x48]                                |     var_48h = r3;
    0x0000440c add r1, pc                                        |     r1 = 0x8b4c;
    0x0000440e blx 0x21a8                                        |     r0 = fcn_000021a8 ();
    0x00004412 mov r7, r0                                        |     r7 = r0;
    0x00004414 mov r0, r5                                        |     r0 = r5;
    0x00004416 bl 0xa5e0                                         |     fcn_0000a5e0 (r0);
    0x0000441a clz r3, r7                                        |     r3 &= r7;
    0x0000441e lsrs r3, r3, 5                                    |     r3 >>= 5;
    0x00004420 orrs.w r3, r3, r0, lsr 31                         |     r3 |= (r0 >> 31);
                                                                 |     if (r3 != r3) {
    0x00004424 bne.w 0x3ec8                                      |         goto label_1;
                                                                 |     }
    0x00004428 mov r0, r5                                        |     r0 = r5;
    0x0000442a mov r6, r7                                        |     r6 = r7;
    0x0000442c blx 0x22a8                                        |     r0 = fcn_000022a8 ();
    0x00004430 mov r3, r0                                        |     r3 = r0;
    0x00004432 mov r5, r7                                        |     r5 = r7;
    0x00004434 adds r3, 1                                        |     r3++;
    0x00004436 mov r8, r7                                        |     r8 = r7;
    0x00004438 str r3, [sp, 0x54]                                |     var_54h = r3;
    0x0000443a mov r3, r7                                        |     r3 = r7;
    0x0000443c movs r2, 0                                        |     r2 = 0;
    0x0000443e str r0, [sp, 0x50]                                |     var_50h = r0;
    0x00004440 str r2, [sp, 0x28]                                |     var_28h = r2;
    0x00004442 strd r2, r2, [sp, 0x30]                           |     __asm ("strd r2, r2, [var_30h]");
    0x00004446 strd r2, r2, [sp, 0x40]                           |     __asm ("strd r2, r2, [var_44h]");
    0x0000444a str r4, [sp, 0x4c]                                |     var_4ch = r4;
                                                                 |     do {
                                                                 | label_9:
    0x0000444c mov r2, r6                                        |         r2 = r6;
    0x0000444e ldrb r4, [r6], 1                                  |         r4 = *(r6);
                                                                 |         r6++;
                                                                 |         if (r4 == 0) {
    0x00004452 cbz r4, 0x447c                                    |             goto label_46;
                                                                 |         }
    0x00004454 str r2, [sp, 0x2c]                                |         var_2ch = r2;
    0x00004456 blx 0x226c                                        |         r0 = fcn_0000226c ();
    0x0000445a ldr r0, [r0]                                      |         r0 = *(r0);
    0x0000445c ldrh.w r0, [r0, r4, lsl 1]                        |         offset_1 = r4 << 1;
                                                                 |         r0 = *((r0 + offset_1));
    0x00004460 ands r0, r0, 0x2000                               |         r0 &= 0x2000;
                                                                 |         if (r0 == r0) {
    0x00004464 beq.w 0x45fe                                      |             goto label_47;
                                                                 |         }
    0x00004468 ldrd r3, r2, [sp, 0x28]                           |         __asm ("ldrd r3, r2, [var_28h]");
    0x0000446c cmp r3, 0                                         |         
                                                                 |         if (r3 != 0) {
    0x0000446e bne.w 0x4654                                      |             goto label_48;
                                                                 |         }
    0x00004472 cmp r2, r8                                        |         
    0x00004474 mov.w r3, 1                                       |         r3 = 1;
    0x00004478 str r3, [sp, 0x28]                                |         var_28h = r3;
    0x0000447a bls 0x444c                                        |         
                                                                 |     } while (r2 < r8);
                                                                 | label_46:
    0x0000447c sub.w r2, r2, r8                                  |     r2 -= r8;
    0x00004480 cmp r2, 4                                         |     
                                                                 |     if (r2 == 4) {
    0x00004482 beq.w 0x45b4                                      |         goto label_49;
                                                                 |     }
    0x00004486 cmp r2, 5                                         |     
                                                                 |     if (r2 == 5) {
    0x00004488 beq.w 0x45e6                                      |         goto label_50;
                                                                 |     }
                                                                 | label_11:
    0x0000448c ldr r1, [sp, 0x28]                                |     r1 = var_28h;
    0x0000448e cmp r4, 0                                         |     
    0x00004490 ite ne                                            |     
                                                                 |     if (r4 == 0) {
    0x00004492 movne r1, 0                                       |         r1 = 0;
                                                                 |     }
                                                                 |     if (r4 != 0) {
    0x00004494 andeq r1, r1, 1                                   |         r1 &= 1;
                                                                 |     }
                                                                 |     if (r1 != 0) {
    0x00004498 cbnz r1, 0x44bc                                   |         goto label_51;
                                                                 |     }
    0x0000449a ldr r3, [sp, 0x30]                                |     r3 = var_30h;
    0x0000449c cmp r3, 1                                         |     
                                                                 |     if (r3 == 1) {
    0x0000449e beq.w 0x4602                                      |         goto label_52;
                                                                 |     }
    0x000044a2 ldr r3, [sp, 0x30]                                |     r3 = var_30h;
    0x000044a4 cmp r3, 2                                         |     
                                                                 |     if (r3 == 2) {
    0x000044a6 bne 0x44b6                                        |         
    0x000044a8 ldr r1, [sp, 0x34]                                |         r1 = var_34h;
    0x000044aa adds r1, 1                                        |         r1++;
    0x000044ac adds r3, r2, r1                                   |         r3 = r2 + r1;
    0x000044ae str r3, [sp, 0x34]                                |         var_34h = r3;
    0x000044b0 ldr r3, [sp, 0x44]                                |         r3 = var_44h;
    0x000044b2 adds r3, 1                                        |         r3++;
    0x000044b4 str r3, [sp, 0x44]                                |         var_44h = r3;
                                                                 |     }
                                                                 | label_12:
    0x000044b6 mov r8, r6                                        |     r8 = r6;
    0x000044b8 cmp r4, 0                                         |     
                                                                 |     if (r4 != 0) {
    0x000044ba bne 0x444c                                        |         goto label_9;
                                                                 |     }
                                                                 | label_51:
    0x000044bc ldrd r4, r0, [sp, 0x4c]                           |     __asm ("ldrd r4, r0, [var_50h]");
    0x000044c0 ldr r3, [sp, 0x34]                                |     r3 = var_34h;
    0x000044c2 ldr r2, [sp, 0x44]                                |     r2 = var_44h;
    0x000044c4 adds r0, 0x15                                     |     r0 += 0x15;
    0x000044c6 add r0, r3                                        |     r0 += r3;
    0x000044c8 ldr r3, [sp, 0x40]                                |     r3 = var_40h;
    0x000044ca lsls r6, r2, 2                                    |     r6 = r2 << 2;
    0x000044cc lsl.w r8, r3, 2                                   |     r8 = r3 << 2;
    0x000044d0 add r0, r8                                        |     r0 += r8;
    0x000044d2 add r0, r6                                        |     r0 += r6;
    0x000044d4 blx 0x21fc                                        |     fcn_000021fc ();
    0x000044d8 str r0, [sp, 0x30]                                |     var_30h = r0;
    0x000044da cmp r0, 0                                         |     
                                                                 |     if (r0 == 0) {
    0x000044dc beq.w 0x3ec8                                      |         goto label_1;
                                                                 |     }
    0x000044de add r4, sp, 0x3d0                                 |     r4 = sp + 0x3d0;
    0x000044e0 ldr r2, [sp, 0x44]                                |     r2 = var_44h;
    0x000044e2 ldr r3, [sp, 0x40]                                |     r3 = var_40h;
    0x000044e4 ldr r1, [sp, 0x48]                                |     r1 = var_48h;
    0x000044e6 str r2, [r0, 0x10]                                |     *((r0 + 0x10)) = r2;
    0x000044e8 add.w r2, r0, 0x14                                |     r2 = r0 + 0x14;
    0x000044ec str r3, [r0, 0xc]                                 |     *((r0 + 0xc)) = r3;
    0x000044ee add.w r3, r2, r8                                  |     r3 = r2 + r8;
    0x000044f2 str r2, [r0, 4]                                   |     *((r0 + 4)) = r2;
    0x000044f4 adds r0, r3, r6                                   |     r0 = r3 + r6;
    0x000044f6 ldr.w r8, [sp, 0x54]                              |     r8 = var_54h;
    0x000044fa ldr r6, [sp, 0x30]                                |     r6 = var_30h;
    0x000044fc mov r2, r8                                        |     r2 = r8;
    0x000044fe str r3, [r6, 8]                                   |     *((r6 + 8)) = r3;
    0x00004500 str r0, [r6]                                      |     *(r6) = r0;
    0x00004502 blx 0x20c0                                        |     mmap64 ()
    0x00004506 ldr r3, [r6]                                      |     r3 = *(r6);
    0x00004508 mov r2, r8                                        |     r2 = r8;
    0x0000450a mov.w r8, 0                                       |     r8 = 0;
    0x0000450e str.w r8, [sp, 0x2c]                              |     __asm ("str.w r8, [var_2ch]");
    0x00004512 add r2, r3                                        |     r2 += r3;
    0x00004514 strd r8, r8, [sp, 0x40]                           |     __asm ("strd r8, r8, [var_44h]");
    0x00004516 ldrh r0, [r2]                                     |     r0 = *(r2);
    0x00004518 str r2, [sp, 0x34]                                |     var_34h = r2;
                                                                 |     do {
                                                                 | label_10:
    0x0000451a mov r2, r5                                        |         r2 = r5;
    0x0000451c ldrb r6, [r5], 1                                  |         r6 = *(r5);
                                                                 |         r5++;
                                                                 |         if (r6 == 0) {
    0x00004520 cbz r6, 0x4548                                    |             goto label_53;
                                                                 |         }
    0x00004522 str r2, [sp, 0x28]                                |         var_28h = r2;
    0x00004524 blx 0x226c                                        |         r0 = fcn_0000226c ();
    0x00004528 ldr r3, [r0]                                      |         r3 = *(r0);
    0x0000452a ldrh.w r3, [r3, r6, lsl 1]                        |         offset_2 = r6 << 1;
                                                                 |         r3 = *((r3 + offset_2));
    0x0000452e ands r3, r3, 0x2000                               |         r3 &= 0x2000;
                                                                 |         if (r3 == r3) {
    0x00004532 beq.w 0x464c                                      |             goto label_54;
                                                                 |         }
    0x00004536 ldr r2, [sp, 0x28]                                |         r2 = var_28h;
    0x00004538 cmp.w r8, 0                                       |         
                                                                 |         if (r8 != 0) {
    0x0000453c bne.w 0x4650                                      |             goto label_55;
                                                                 |         }
    0x00004540 cmp r2, r7                                        |         
    0x00004542 mov.w r8, 1                                       |         r8 = 1;
    0x00004546 bls 0x451a                                        |         
                                                                 |     } while (r2 < r7);
                                                                 | label_53:
    0x00004548 subs r2, r2, r7                                   |     r2 -= r7;
    0x0000454a cmp r2, 4                                         |     
                                                                 |     if (r2 == 4) {
    0x0000454c beq 0x4612                                        |         goto label_56;
                                                                 |     }
    0x0000454e cmp r2, 5                                         |     
                                                                 |     if (r2 == 5) {
    0x00004550 beq 0x4636                                        |         goto label_57;
                                                                 |     }
                                                                 | label_13:
    0x00004552 cmp r6, 0                                         |     
    0x00004554 ite ne                                            |     
                                                                 |     if (r6 == 0) {
    0x00004556 movne r3, 0                                       |         r3 = 0;
                                                                 |     }
                                                                 |     if (r6 != 0) {
    0x00004558 andeq r3, r8, 1                                   |         r3 = r8 & 1;
                                                                 |     }
                                                                 |     if (r3 != 0) {
    0x0000455c cbnz r3, 0x4574                                   |         goto label_58;
                                                                 |     }
    0x0000455e ldr r1, [sp, 0x2c]                                |     r1 = var_2ch;
    0x00004560 cmp r1, 1                                         |     
                                                                 |     if (r1 == 1) {
    0x00004562 beq.w 0x466c                                      |         goto label_59;
                                                                 |     }
    0x00004566 ldr r1, [sp, 0x2c]                                |     r1 = var_2ch;
    0x00004568 cmp r1, 2                                         |     
                                                                 |     if (r1 == 2) {
    0x0000456a beq.w 0x469a                                      |         goto label_60;
                                                                 |     }
                                                                 | label_14:
    0x0000456e mov r7, r5                                        |     r7 = r5;
    0x00004570 cmp r6, 0                                         |     
                                                                 |     if (r6 != 0) {
    0x00004572 bne 0x451a                                        |         goto label_10;
                                                                 |     }
                                                                 | label_58:
    0x00004574 ldr r3, [sp, 0x24]                                |     r3 = var_24h;
    0x00004576 ldr r1, [sp, 0x30]                                |     r1 = var_30h;
    0x00004578 ldr r0, [r3, 0x18]                                |     r0 = *((r3 + 0x18));
    0x0000457a bl 0x37c0                                         |     r0 = fcn_000037c0 (r0, r1);
    0x0000457e cmp r0, 0                                         |     
                                                                 |     if (r0 == 0) {
    0x00004580 beq.w 0x46d0                                      |         goto label_61;
                                                                 |     }
    0x00004584 ldr r3, [sp, 0x24]                                |     r3 = var_24h;
    0x00004586 str r0, [r3, 0x18]                                |     *((r3 + 0x18)) = r0;
    0x00004588 b 0x3ec8                                          |     goto label_1;
                                                                 | label_49:
    0x000045b4 ldrb.w r0, [r8]                                   |     r0 = *(r8);
    0x000045b8 cmp r0, 0x70                                      |     
                                                                 |     if (r0 != 0x70) {
    0x000045ba bne.w 0x448c                                      |         goto label_11;
                                                                 |     }
    0x000045be ldrb.w r0, [r8, 1]                                |     r0 = *((r8 + 1));
    0x000045c2 add.w r1, r8, 1                                   |     r1 = r8 + 1;
    0x000045c6 cmp r0, 0x72                                      |     
                                                                 |     if (r0 != 0x72) {
    0x000045c8 bne.w 0x448c                                      |         goto label_11;
                                                                 |     }
    0x000045cc ldrb r0, [r1, 1]!                                 |     r0 = *((r1 += 1));
    0x000045d0 cmp r0, 0x65                                      |     
                                                                 |     if (r0 != 0x65) {
    0x000045d2 bne.w 0x448c                                      |         goto label_11;
                                                                 |     }
    0x000045d6 ldrb r1, [r1, 1]                                  |     r1 = *((r1 + 1));
    0x000045d8 cmp r1, 0x3a                                      |     
    0x000045da itt eq                                            |     
                                                                 |     if (r1 != 0x3a) {
    0x000045dc moveq r3, 1                                       |         r3 = 1;
                                                                 |     }
                                                                 |     if (r1 == 0x3a) {
    0x000045de streq r3, [sp, 0x30]                              |         var_30h = r3;
                                                                 |         goto label_62;
                                                                 |     }
                                                                 |     if (r1 != 0x3a) {
                                                                 | label_62:
    0x000045e0 bne.w 0x448c                                      |         goto label_11;
                                                                 |     }
    0x000045e4 b 0x44b6                                          |     goto label_12;
                                                                 | label_50:
    0x000045e6 ldr r1, [sp, 0x38]                                |     r1 = var_38h;
    0x000045e8 mov r0, r8                                        |     r0 = r8;
    0x000045ea str r2, [sp, 0x2c]                                |     var_2ch = r2;
    0x000045ec blx 0x20e4                                        |     uname ();
    0x000045f0 ldr r2, [sp, 0x2c]                                |     r2 = var_2ch;
    0x000045f2 cmp r0, 0                                         |     
                                                                 |     if (r0 != 0) {
    0x000045f4 bne.w 0x448c                                      |         goto label_11;
                                                                 |     }
    0x000045f8 movs r3, 2                                        |     r3 = 2;
    0x000045fa str r3, [sp, 0x30]                                |     var_30h = r3;
    0x000045fc b 0x44b6                                          |     goto label_12;
                                                                 | label_47:
    0x000045fe str r0, [sp, 0x28]                                |     var_28h = r0;
    0x00004600 b 0x444c                                          |     goto label_9;
                                                                 | label_52:
    0x00004602 ldr r1, [sp, 0x34]                                |     r1 = var_34h;
    0x00004604 adds r1, 1                                        |     r1++;
    0x00004606 adds r3, r1, r2                                   |     r3 = r1 + r2;
    0x00004608 str r3, [sp, 0x34]                                |     var_34h = r3;
    0x0000460a ldr r3, [sp, 0x40]                                |     r3 = var_40h;
    0x0000460c adds r3, 1                                        |     r3++;
    0x0000460e str r3, [sp, 0x40]                                |     var_40h = r3;
    0x00004610 b 0x44b6                                          |     goto label_12;
                                                                 | label_56:
    0x00004612 ldrb r3, [r7]                                     |     r3 = *(r7);
    0x00004614 cmp r3, 0x70                                      |     
                                                                 |     if (r3 != 0x70) {
    0x00004616 bne 0x4552                                        |         goto label_13;
                                                                 |     }
    0x00004618 ldrb r3, [r7, 1]                                  |     r3 = *((r7 + 1));
    0x0000461a adds r1, r7, 1                                    |     r1 = r7 + 1;
    0x0000461c cmp r3, 0x72                                      |     
                                                                 |     if (r3 != 0x72) {
    0x0000461e bne 0x4552                                        |         goto label_13;
                                                                 |     }
    0x00004620 ldrb r3, [r1, 1]!                                 |     r3 = *((r1 += 1));
    0x00004624 cmp r3, 0x65                                      |     
                                                                 |     if (r3 != 0x65) {
    0x00004626 bne 0x4552                                        |         goto label_13;
                                                                 |     }
    0x00004628 ldrb r3, [r1, 1]                                  |     r3 = *((r1 + 1));
    0x0000462a cmp r3, 0x3a                                      |     
    0x0000462c itt eq                                            |     
                                                                 |     if (r3 != 0x3a) {
    0x0000462e moveq r3, 1                                       |         r3 = 1;
                                                                 |     }
                                                                 |     if (r3 == 0x3a) {
    0x00004630 streq r3, [sp, 0x2c]                              |         var_2ch = r3;
                                                                 |         goto label_63;
                                                                 |     }
                                                                 |     if (r3 != 0x3a) {
                                                                 | label_63:
    0x00004632 bne 0x4552                                        |         goto label_13;
                                                                 |     }
    0x00004634 b 0x456e                                          |     goto label_14;
                                                                 | label_57:
    0x00004636 ldr r1, [sp, 0x3c]                                |     r1 = var_3ch;
    0x00004638 mov r0, r7                                        |     r0 = r7;
    0x0000463a str r2, [sp, 0x28]                                |     var_28h = r2;
    0x0000463c blx 0x20e4                                        |     uname ();
    0x00004640 ldr r2, [sp, 0x28]                                |     r2 = var_28h;
    0x00004642 cmp r0, 0                                         |     
                                                                 |     if (r0 != 0) {
    0x00004644 bne 0x4552                                        |         goto label_13;
                                                                 |     }
    0x00004646 movs r3, 2                                        |     r3 = 2;
    0x00004648 str r3, [sp, 0x2c]                                |     var_2ch = r3;
    0x0000464a b 0x456e                                          |     goto label_14;
                                                                 | label_54:
    0x0000464c mov r8, r3                                        |     r8 = r3;
    0x0000464e b 0x451a                                          |     goto label_10;
                                                                 | label_55:
    0x00004650 mov r7, r5                                        |     r7 = r5;
    0x00004652 b 0x451a                                          |     goto label_10;
                                                                 | label_48:
    0x00004654 mov r8, r6                                        |     r8 = r6;
    0x00004656 b 0x444c                                          |     goto label_9;
                                                                 | label_43:
    0x00004658 mov r6, r4                                        |     r6 = r4;
    0x0000465a movs r2, 3                                        |     r2 = 3;
    0x0000465c b 0x415c                                          |     goto label_7;
                                                                 | label_59:
    0x0000466c str r3, [sp, 0x48]                                |     var_48h = r3;
    0x0000466e mov r1, r7                                        |     r1 = r7;
    0x00004670 ldr r3, [sp, 0x30]                                |     r3 = var_30h;
    0x00004672 ldr r6, [sp, 0x34]                                |     r6 = var_34h;
    0x00004674 ldr r0, [r3, 4]                                   |     r0 = *((r3 + 4));
    0x00004676 ldr r3, [sp, 0x40]                                |     r3 = var_40h;
    0x00004678 str.w r6, [r0, r3, lsl 2]                         |     __asm ("str.w r6, [r0, r3, lsl 2]");
    0x0000467c adds r3, 1                                        |     r3++;
    0x0000467e str r3, [sp, 0x40]                                |     var_40h = r3;
                                                                 |     do {
    0x00004680 mov r0, r6                                        |         r0 = r6;
    0x00004682 str r2, [sp, 0x28]                                |         var_28h = r2;
    0x00004684 blx 0x20c0                                        |         mmap64 ()
    0x00004688 ldr r2, [sp, 0x28]                                |         r2 = var_28h;
    0x0000468a ldr r3, [sp, 0x48]                                |         r3 = var_48h;
    0x0000468c strb r3, [r6, r2]                                 |         *((r6 + r2)) = r3;
    0x0000468e adds r2, 1                                        |         r2++;
    0x00004690 adds r3, r6, r2                                   |         r3 = r6 + r2;
    0x00004692 str r3, [sp, 0x34]                                |         var_34h = r3;
    0x00004694 ldrb r6, [r5, -0x1]                               |         r6 = *((r5 - 0x1));
    0x00004698 b 0x456e                                          |         goto label_14;
                                                                 | label_60:
    0x0000469a str r3, [sp, 0x48]                                |         var_48h = r3;
    0x0000469c mov r1, r7                                        |         r1 = r7;
    0x0000469e ldr r3, [sp, 0x30]                                |         r3 = var_30h;
    0x000046a0 ldr r6, [sp, 0x34]                                |         r6 = var_34h;
    0x000046a2 ldr r0, [r3, 8]                                   |         r0 = *((r3 + 8));
    0x000046a4 ldr r3, [sp, 0x44]                                |         r3 = var_44h;
    0x000046a6 str.w r6, [r0, r3, lsl 2]                         |         __asm ("str.w r6, [r0, r3, lsl 2]");
    0x000046aa adds r3, 1                                        |         r3++;
    0x000046ac str r3, [sp, 0x44]                                |         var_44h = r3;
    0x000046ae b 0x4680                                          |         
                                                                 |     } while (1);
                                                                 | label_40:
    0x000046b0 rsbs r0, r6, 0                                    |     r0 = r6 - ;
    0x000046b2 blx 0x2208                                        |     fcn_00002208 ();
    0x000046b6 b 0x4242                                          |     goto label_15;
                                                                 | label_18:
    0x000046b8 mov r7, r5                                        |     r7 = r5;
    0x000046ba b.w 0x3dc4                                        |     goto label_16;
                                                                 | label_22:
    0x000046be ldr r7, [sp, 0x18]                                |     r7 = var_18h;
    0x000046c0 b 0x43c2                                          |     goto label_17;
                                                                 | label_27:
    0x000046c2 mov r0, r4                                        |     r0 = r4;
    0x000046c4 blx 0x2448                                        |     fcn_00002448 ();
    0x000046c8 b.w 0x3e00                                        |     goto label_5;
                                                                 | label_42:
    0x000046cc blx 0x2108                                        |     fcn_00002108 ();
                                                                 | label_61:
    0x000046d0 ldr r0, [sp, 0x30]                                |     r0 = var_30h;
    0x000046d2 blx 0x20a4                                        |     fcn_000020a4 ();
    0x000046d6 b.w 0x3ec8                                        |     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/lib/libkmod.so.2.3.7 @ 0x4910 */
                                                                 | #include <stdint.h>
                                                                 |  
                                                                 | #define SWAP32(n) ((uint32_t) (((n & 0x000000ff) << 24) | \
                                                                 |                                ((n & 0x0000ff00) <<  8) | \
                                                                 |                                ((n & 0x00ff0000) >>  8) | \
                                                                 |                                ((n & 0xff000000) >> 24)))
                                                                 |  
    ; (fcn) fcn.00004910 ()                                      | void fcn_00004910 (int16_t arg1, uint32_t arg2) {
                                                                 |     int16_t var_4h;
                                                                 |     int16_t var_ch;
                                                                 |     int16_t var_0h;
                                                                 |     int16_t var_20ch;
                                                                 |     int16_t var_214h;
                                                                 |     r0 = arg1;
                                                                 |     r1 = arg2;
    0x00004910 ldr r2, [pc, 0x15c]                               |     
    0x00004912 ldr r3, [pc, 0x160]                               |     r3 = *(0x4a76);
    0x00004914 push.w {r4, r5, r6, r7, r8, sb, sl, fp, lr}       |     
    0x00004916 ldr r7, [pc, 0x3c0]                               |     r7 = *(0x4cda);
    0x00004918 sub.w sp, sp, 0x214                               |     
    0x0000491c add r2, pc                                        |     r2 = 0x9390;
    0x0000491e ldr r5, [r0, 4]                                   |     r5 = *((r0 + 4));
    0x00004920 ldr r3, [r2, r3]                                  |     
    0x00004922 ldr r3, [r3]                                      |     r3 = *(0x9390);
    0x00004924 str r3, [sp, 0x20c]                               |     var_20ch = r3;
    0x00004926 mov.w r3, 0                                       |     r3 = 0;
    0x0000492a bics r3, r1, 0xf0000000                           |     __asm ("bics r3, r1, 0xf0000000");
                                                                 |     if (? == ?) {
    0x0000492e beq.w 0x4a64                                      |         goto label_4;
                                                                 |     }
    0x00004932 cmp r1, 0                                         |     
    0x00004934 mov fp, r0                                        |     
    0x00004936 mov r6, r1                                        |     r6 = r1;
    0x00004938 add r5, r3                                        |     r5 += r3;
                                                                 |     if (r1 < 0) {
    0x0000493a blt 0x4a14                                        |         goto label_5;
                                                                 |     }
    0x0000493c ldr r3, [pc, 0x138]                               |     
    0x0000493e ands r4, r6, 0x20000000                           |     r4 = r6 & 0x20000000;
    0x00004942 add r3, pc                                        |     r3 = 0x93be;
    0x00004944 str r3, [sp, 4]                                   |     var_4h = r3;
                                                                 |     if (r4 == r6) {
    0x00004946 beq 0x4a28                                        |         goto label_6;
                                                                 |     }
                                                                 | label_0:
    0x00004948 ldrb.w sb, [r5]                                   |     sb = *(r5);
    0x0000494c adds r7, r5, 2                                    |     r7 = r5 + 2;
    0x0000494e ldrb.w sl, [r5, 1]                                |     sl = *((r5 + 1));
    0x00004952 sub.w lr, sl, sb                                  |     lr = sl - sb;
    0x00004956 add.w r4, lr, 1                                   |     r4 = lr + 1;
    0x0000495a add.w r0, lr, 6                                   |     r0 = lr + 6;
    0x0000495e cmp r4, 0                                         |     
    0x00004960 mov ip, r4                                        |     
                                                                 |     if (r4 <= 0) {
    0x00004962 ble.w 0x4a68                                      |         goto label_7;
                                                                 |     }
    0x00004966 add.w lr, r5, lr, lsl 2                           |     lr = r5 + (lr << 2);
    0x0000496a mov r2, r7                                        |     r2 = r7;
    0x0000496c add r5, sp, 0xc                                   |     r5 += var_ch;
    0x0000496e add.w lr, lr, 6                                   |     lr += 6;
                                                                 |     do {
    0x00004972 ldr r3, [r2], 4                                   |         r3 = *(r2);
                                                                 |         r2 += 4;
    0x00004976 cmp lr, r2                                        |         
    0x00004978 rev r3, r3                                        |         r3 = SWAP32 (r3);
    0x0000497a str r3, [r5], 4                                   |         *(r5) = r3;
                                                                 |         r5 += 4;
    0x0000497e bne 0x4972                                        |         
                                                                 |     } while (lr != r2);
    0x00004980 add.w r5, r7, ip, lsl 2                           |     r5 = r7 + (ip << 2);
                                                                 | label_3:
    0x00004984 lsls r3, r6, 1                                    |     r3 = r6 << 1;
                                                                 |     if (r3 >= r6) {
    0x00004986 bpl 0x4a36                                        |         goto label_8;
                                                                 |     }
                                                                 | label_1:
    0x00004988 ldr r7, [r5], 4                                   |     r7 = *(r5);
                                                                 |     r5 += 4;
    0x0000498c rev r7, r7                                        |     r7 = SWAP32 (r7);
    0x0000498e add.w r8, r7, r7, lsl 1                           |     r8 = r7 + (r7 << 1);
    0x00004992 add r0, r8                                        |     r0 += r8;
    0x00004994 lsls r0, r0, 2                                    |     r0 <<= 2;
    0x00004996 blx 0x21fc                                        |     r0 = fcn_000021fc ();
    0x0000499a mov r6, r0                                        |     r6 = r0;
    0x0000499c cmp r0, 0                                         |     
                                                                 |     if (r0 == 0) {
    0x0000499e beq 0x4a64                                        |         goto label_4;
                                                                 |     }
    0x000049a0 ldr r3, [sp, 4]                                   |     r3 = var_4h;
    0x000049a2 lsls r2, r4, 2                                    |     r2 = r4 << 2;
    0x000049a4 str.w fp, [r0]                                    |     __asm ("str.w fp, [r0]");
    0x000049a8 adds r0, 0x14                                     |     r0 += 0x14;
    0x000049aa str r3, [r0, -0x10]                               |     *((r0 - 0x10)) = r3;
    0x000049ae cmp r7, 0                                         |     
                                                                 |     if (r7 == 0) {
    0x000049b0 beq 0x4a4e                                        |         goto label_9;
                                                                 |     }
    0x000049b2 add.w r4, r2, 0x14                                |     r4 = r2 + 0x14;
    0x000049b6 add r1, sp, 0xc                                   |     r1 += var_ch;
    0x000049b8 add r4, r6                                        |     r4 += r6;
    0x000049ba strb.w sb, [r6, 0x10]                             |     *((r6 + 0x10)) = sb;
    0x000049be strb.w sl, [r6, 0x11]                             |     *((r6 + 0x11)) = sl;
    0x000049c2 str r7, [r6, 0xc]                                 |     *((r6 + 0xc)) = r7;
    0x000049c4 str r4, [r6, 8]                                   |     *((r6 + 8)) = r4;
    0x000049c6 blx 0x20c0                                        |     r0 = mmap64 ()
    0x000049c8 sbcs.w pc, ip, r0, lsl 8                          |     __asm ("sbcs.w pc, ip, r0, lsl 8");
                                                                 |     if (r7 <= 0) {
    0x000049cc ble 0x49f6                                        |         goto label_2;
                                                                 |     }
    0x000049ce add.w r8, r4, r8, lsl 2                           |     r8 = r4 + (r8 << 2);
                                                                 |     do {
    0x000049d2 ldr r3, [r5], 4                                   |         r3 = *(r5);
                                                                 |         r5 += 4;
    0x000049d6 adds r4, 0xc                                      |         r4 += 0xc;
    0x000049d8 rev r3, r3                                        |         r3 = SWAP32 (r3);
    0x000049da mov r0, r5                                        |         r0 = r5;
    0x000049dc str r3, [r4, -0xc]                                |         *((r4 - 0xc)) = r3;
    0x000049e0 blx 0x22a8                                        |         fcn_000022a8 ();
    0x000049e4 cmp r8, r4                                        |         
    0x000049e6 add.w r3, r0, 1                                   |         r3 = r0 + 1;
    0x000049ea str r5, [r4, -0x4]                                |         *((r4 - 0x4)) = r5;
    0x000049ee add r5, r3                                        |         r5 += r3;
    0x000049f0 str r0, [r4, -0x8]                                |         *((r4 - 0x8)) = r0;
    0x000049f4 bne 0x49d2                                        |         
                                                                 |     } while (r8 != r4);
                                                                 | label_2:
    0x000049f6 ldr r2, [pc, 0x84]                                |     
    0x000049f8 ldr r3, [pc, 0x78]                                |     r3 = *(0x4a74);
    0x000049fa add r2, pc                                        |     r2 = 0x947c;
    0x000049fc ldr r3, [r2, r3]                                  |     r3 = *(0x947c);
    0x000049fe ldr r2, [r3]                                      |     r2 = *(0x947c);
    0x00004a00 ldr r3, [sp, 0x20c]                               |     r3 = var_20ch;
    0x00004a02 eors r2, r3                                       |     r2 ^= r3;
    0x00004a04 mov.w r3, 0                                       |     r3 = 0;
                                                                 |     if (r2 != r3) {
    0x00004a08 bne 0x4a6c                                        |         goto label_10;
                                                                 |     }
    0x00004a0a mov r0, r6                                        |     r0 = r6;
    0x00004a0c add.w sp, sp, 0x214                               |     
    0x00004a10 pop.w {r4, r5, r6, r7, r8, sb, sl, fp, pc}        |     
                                                                 | label_5:
    0x00004a14 mov r0, r5                                        |     r0 = r5;
    0x00004a16 str r5, [sp, 4]                                   |     var_4h = r5;
    0x00004a18 blx 0x22a8                                        |     fcn_000022a8 ();
    0x00004a1c ands r4, r6, 0x20000000                           |     r4 = r6 & 0x20000000;
    0x00004a20 add.w r0, r0, 1                                   |     r0++;
    0x00004a24 add r5, r0                                        |     r5 += r0;
                                                                 |     if (r4 != r6) {
    0x00004a26 bne 0x4948                                        |         goto label_0;
                                                                 |     }
                                                                 | label_6:
    0x00004a28 lsls r3, r6, 1                                    |     r3 = r6 << 1;
    0x00004a2a mov.w r0, 5                                       |     r0 = 5;
    0x00004a2e mov sl, r4                                        |     sl = r4;
    0x00004a30 mov.w sb, 0x80                                    |     sb = 0x80;
                                                                 |     if (r3 < r6) {
    0x00004a34 bmi 0x4988                                        |         goto label_1;
                                                                 |     }
                                                                 | label_8:
    0x00004a36 lsls r0, r0, 2                                    |     r0 <<= 2;
    0x00004a38 blx 0x21fc                                        |     r0 = fcn_000021fc ();
    0x00004a3c mov r6, r0                                        |     r6 = r0;
                                                                 |     if (r0 != 0) {
    0x00004a3e cbz r0, 0x4a64                                    |         
    0x00004a40 ldr r3, [sp, 4]                                   |         r3 = var_4h;
    0x00004a42 lsls r2, r4, 2                                    |         r2 = r4 << 2;
    0x00004a44 add.w r0, r6, 0x14                                |         r0 = r6 + 0x14;
    0x00004a48 str.w fp, [r6]                                    |         __asm ("str.w fp, [r6]");
    0x00004a4c str r3, [r6, 4]                                   |         *((r6 + 4)) = r3;
                                                                 | label_9:
    0x00004a4e movs r3, 0                                        |         r3 = 0;
    0x00004a50 add r1, sp, 0xc                                   |         r1 += var_ch;
    0x00004a52 strb.w sb, [r6, 0x10]                             |         *((r6 + 0x10)) = sb;
    0x00004a56 strb.w sl, [r6, 0x11]                             |         *((r6 + 0x11)) = sl;
    0x00004a5a strd r3, r3, [r6, 8]                              |         __asm ("strd r3, r3, [r6, 8]");
    0x00004a5e blx 0x20c0                                        |         mmap64 ()
    0x00004a62 b 0x49f6                                          |         goto label_2;
                                                                 |     }
                                                                 | label_4:
    0x00004a64 movs r6, 0                                        |     r6 = 0;
    0x00004a66 b 0x49f6                                          |     goto label_2;
                                                                 | label_7:
    0x00004a68 mov r5, r7                                        |     r5 = r7;
    0x00004a6a b 0x4984                                          |     goto label_3;
                                                                 | label_10:
    0x00004a6c blx 0x2108                                        |     fcn_00002108 ();
    0x00004a70 strb r4, [r5, 0x14]                               |     *((r5 + 0x14)) = r4;
    0x00004a72 movs r1, r0                                       |     r1 = r0;
    0x00004a74 lsls r4, r4, 6                                    |     r4 <<= 6;
    0x00004a76 movs r0, r0                                       |     
    0x00004a78 str r6, [r5, 0x64]                                |     *((r5 + 0x64)) = r6;
    0x00004a7a movs r0, r0                                       |     
    0x00004a7c strb r6, [r1, 0x11]                               |     *((r1 + 0x11)) = r6;
    0x00004a7e 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/lib/libkmod.so.2.3.7 @ 0x4a80 */
                                                             | #include <stdint.h>
                                                             |  
    ; (fcn) fcn.00004a80 ()                                  | void fcn_00004a80 (int16_t arg1, int16_t arg2, int16_t arg3, int16_t arg4) {
                                                             |     r0 = arg1;
                                                             |     r1 = arg2;
                                                             |     r2 = arg3;
                                                             |     r3 = arg4;
    0x00004a80 invalid                                       |     
    0x00004a84 mov r5, r0                                    |     r5 = r0;
    0x00004a86 ldr r4, [r0]                                  |     r4 = *(r0);
    0x00004a88 mov sb, r1                                    |     sb = r1;
    0x00004a8a mov r8, r2                                    |     r8 = r2;
    0x00004a8c mov r6, r3                                    |     r6 = r3;
                                                             |     if (r4 != 0) {
    0x00004a8e cbnz r4, 0x4a98                               |         goto label_0;
                                                             |     }
    0x00004a90 b 0x4a9e                                      |     goto label_1;
                                                             |     do {
    0x00004a92 mov r5, r4                                    |         r5 = r4;
    0x00004a94 ldr r4, [r4]                                  |         r4 = *(r4);
                                                             |         if (r4 == 0) {
    0x00004a96 cbz r4, 0x4a9e                                |             goto label_1;
                                                             |         }
                                                             | label_0:
    0x00004a98 ldr r3, [r4, 4]                               |         r3 = *((r4 + 4));
    0x00004a9a cmp r3, r6                                    |         
    0x00004a9c blo 0x4a92                                    |         
                                                             |     } while (r3 <= r6);
                                                             | label_1:
    0x00004a9e add.w r0, r8, 0xd                             |     r0 = r8 + 0xd;
    0x00004aa2 blx 0x21fc                                    |     r0 = fcn_000021fc ();
    0x00004aa6 mov r7, r0                                    |     r7 = r0;
                                                             |     if (r0 != 0) {
    0x00004aa8 cbz r0, 0x4ac6                                |         
    0x00004aaa str.w r8, [r0, 8]                             |         __asm ("str.w r8, [r0, 8]");
    0x00004aae mov r2, r8                                    |         r2 = r8;
    0x00004ab0 str r4, [r0]                                  |         *(r0) = r4;
    0x00004ab2 mov r1, sb                                    |         r1 = sb;
    0x00004ab4 str r6, [r0, 4]                               |         *((r0 + 4)) = r6;
    0x00004ab6 adds r0, 0xc                                  |         r0 += 0xc;
    0x00004ab8 blx 0x20c0                                    |         mmap64 ()
    0x00004abc add r8, r7                                    |         r8 += r7;
    0x00004abe movs r3, 0                                    |         r3 = 0;
    0x00004ac0 strb.w r3, [r8, 0xc]                          |         *((r8 + 0xc)) = r3;
    0x00004ac4 str r7, [r5]                                  |         *(r5) = r7;
                                                             |     }
    0x00004ac6 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/lib/libkmod.so.2.3.7 @ 0x58fc */
                                                         | #include <stdint.h>
                                                         |  
    ; (fcn) fcn.000058fc ()                              | void fcn_000058fc (int16_t arg1, int16_t arg2, int16_t arg3, int16_t arg4) {
                                                         |     int16_t var_20h;
                                                         |     r0 = arg1;
                                                         |     r1 = arg2;
                                                         |     r2 = arg3;
                                                         |     r3 = arg4;
    0x000058fc invalid                                   |     
    0x00005900 mov r7, r0                                |     r7 = r0;
    0x00005902 ldr r5, [sp, 0x20]                        |     r5 = var_20h;
    0x00005904 mov r6, r2                                |     r6 = r2;
    0x00005906 mov sb, r1                                |     sb = r1;
    0x00005908 mov r8, r3                                |     r8 = r3;
    0x0000590a adds r0, r5, 6                            |     r0 = r5 + 6;
    0x0000590c add r0, r2                                |     r0 += r2;
    0x0000590e blx 0x21fc                                |     r0 = fcn_000021fc ();
    0x00005912 mov r4, r0                                |     r4 = r0;
                                                         |     if (r0 == 0) {
    0x00005914 cbz r0, 0x5960                            |         goto label_0;
                                                         |     }
    0x00005916 adds r0, r5, 5                            |     r0 = r5 + 5;
    0x00005918 mov r1, sb                                |     r1 = sb;
    0x0000591a add r0, r4                                |     r0 += r4;
    0x0000591c mov r2, r6                                |     r2 = r6;
    0x0000591e str r0, [r4]                              |     *(r4) = r0;
    0x00005920 blx 0x20c0                                |     mmap64 ()
    0x00005924 mov r0, r4                                |     r0 = r4;
    0x00005926 mov r1, r8                                |     r1 = r8;
    0x00005928 ldr r3, [r0], 4                           |     r3 = *(r0);
                                                         |     r0 += 4;
    0x0000592c mov.w r8, 0                               |     r8 = 0;
    0x00005930 mov r2, r5                                |     r2 = r5;
    0x00005932 add r5, r4                                |     r5 += r4;
    0x00005934 strb.w r8, [r3, r6]                       |     *((r3 + r6)) = r8;
    0x00005938 blx 0x20c0                                |     mmap64 ()
    0x0000593c strb.w r8, [r5, 4]                        |     *((r5 + 4)) = r8;
    0x00005940 mov r1, r4                                |     r1 = r4;
    0x00005942 ldr r0, [r7]                              |     r0 = *(r7);
    0x00005944 bl 0x37c0                                 |     r0 = fcn_000037c0 (r0, r1);
    0x00005948 mov r5, r0                                |     r5 = r0;
                                                         |     if (r0 == 0) {
    0x0000594a cbz r0, 0x5954                            |         goto label_1;
                                                         |     }
    0x0000594c str r0, [r7]                              |     *(r7) = r0;
                                                         |     do {
    0x0000594e mov r0, r5                                |         r0 = r5;
    0x00005950 pop.w {r3, r4, r5, r6, r7, r8, sb, pc}    |         
                                                         | label_1:
    0x00005954 mov r0, r4                                |         r0 = r4;
    0x00005956 blx 0x20a4                                |         fcn_000020a4 ();
    0x0000595a mov r0, r5                                |         r0 = r5;
    0x0000595c pop.w {r3, r4, r5, r6, r7, r8, sb, pc}    |         
                                                         | label_0:
    0x00005960 mov r5, r0                                |         r5 = r0;
    0x00005962 b 0x594e                                  |         
                                                         |     } while (1);
                                                         | }
    ; assembly                                                   | /* r2dec pseudo code output */
                                                                 | /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/lib/libkmod.so.2.3.7 @ 0x5c18 */
                                                                 | #include <stdint.h>
                                                                 |  
    ; (fcn) fcn.00005c18 ()                                      | void fcn_00005c18 (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;
    0x00005c18 push.w {r3, r4, r5, r6, r7, r8, sb, lr}           |     
    0x00005c1c mov r7, r0                                        |     r7 = r0;
    0x00005c1e mov r5, r2                                        |     r5 = r2;
    0x00005c20 mov r8, r3                                        |     r8 = r3;
    0x00005c22 mov sb, r1                                        |     sb = r1;
    0x00005c24 bl 0x29e4                                         |     r0 = fcn_000029e4 (r0, r1);
    0x00005c28 cmp r0, 0                                         |     
                                                                 |     if (r0 != 0) {
    0x00005c2a bne 0x5c9c                                        |         goto label_0;
                                                                 |     }
    0x00005c2c cmp.w r8, 0                                       |     
                                                                 |     if (r8 == 0) {
    0x00005c30 beq 0x5cac                                        |         goto label_1;
                                                                 |     }
    0x00005c32 ldr r3, [sp, 0x20]                                |     r3 = *(arg_20h);
    0x00005c34 mov r6, r0                                        |     r6 = r0;
    0x00005c36 add.w r8, r3, 2                                   |     r8 = r3 + 2;
    0x00005c3a add r8, r5                                        |     r8 += r5;
    0x00005c3c lsl.w r0, r8, 1                                   |     r0 = r8 << 1;
    0x00005c40 adds r0, 0x3c                                     |     r0 += 0x3c;
    0x00005c42 blx 0x21fc                                        |     r0 = fcn_000021fc ();
    0x00005c46 mov r4, r0                                        |     r4 = r0;
    0x00005c48 cmp r0, 0                                         |     
                                                                 |     if (r0 == 0) {
    0x00005c4a beq 0x5ce2                                        |         goto label_2;
                                                                 |     }
    0x00005c4c movs r2, 0x3c                                     |     r2 = 0x3c;
    0x00005c4e mov r1, r6                                        |     r1 = r6;
    0x00005c50 blx 0x2324                                        |     write (r0, r1, r2);
    0x00005c54 mov r0, r7                                        |     r0 = r7;
    0x00005c56 blx 0x2418                                        |     fcn_00002418 ();
    0x00005c5a mov r3, r4                                        |     r3 = r4;
    0x00005c5c mov r2, r8                                        |     r2 = r8;
    0x00005c5e str r0, [r3], 0x3c                                |     *(r3) = r0;
                                                                 |     r3 += 0x3c;
    0x00005c62 mov r1, sb                                        |     r1 = sb;
    0x00005c64 mov r0, r3                                        |     r0 = r3;
    0x00005c66 str r3, [r4, 8]                                   |     *((r4 + 8)) = r3;
    0x00005c68 blx 0x20c0                                        |     mmap64 ()
    0x00005c6c strb r6, [r0, r5]                                 |     *((r0 + r5)) = r6;
    0x00005c6e adds r5, 1                                        |     r5++;
    0x00005c70 ldr r0, [r4, 8]                                   |     r0 = *((r4 + 8));
    0x00005c72 mov r1, sb                                        |     r1 = sb;
    0x00005c74 mov r2, r8                                        |     r2 = r8;
    0x00005c76 add r5, r0                                        |     r5 += r0;
    0x00005c78 add r0, r8                                        |     r0 += r8;
    0x00005c7a str r5, [r4, 0x20]                                |     *((r4 + 0x20)) = r5;
    0x00005c7c str r0, [r4, 4]                                   |     *((r4 + 4)) = r0;
    0x00005c7e blx 0x20c0                                        |     mmap64 ()
    0x00005c82 ldr r5, [r4, 4]                                   |     r5 = *((r4 + 4));
                                                                 |     do {
    0x00005c84 movs r3, 1                                        |         r3 = 1;
    0x00005c86 mov r0, r7                                        |         r0 = r7;
    0x00005c88 str r3, [r4, 0x2c]                                |         *((r4 + 0x2c)) = r3;
    0x00005c8a mov r2, r5                                        |         r2 = r5;
    0x00005c8c mov r1, r4                                        |         r1 = r4;
    0x00005c8e bl 0x29ec                                         |         fcn_000029ec (r0, r1, r2);
    0x00005c92 ldr r3, [sp, 0x24]                                |         r3 = *(arg_24h);
    0x00005c94 movs r0, 0                                        |         r0 = 0;
    0x00005c96 str r4, [r3]                                      |         *(r3) = r4;
    0x00005c98 pop.w {r3, r4, r5, r6, r7, r8, sb, pc}            |         
                                                                 | label_0:
    0x00005c9c blx 0x22dc                                        |         errno_location ();
    0x00005ca0 ldr r2, [sp, 0x24]                                |         r2 = *(arg_24h);
    0x00005ca2 mov r3, r0                                        |         r3 = r0;
    0x00005ca4 movs r0, 0                                        |         r0 = 0;
    0x00005ca6 str r3, [r2]                                      |         *(r2) = r3;
    0x00005ca8 pop.w {r3, r4, r5, r6, r7, r8, sb, pc}            |         
                                                                 | label_1:
    0x00005cac add.w r0, r5, 0x3d                                |         r0 = r5 + 0x3d;
    0x00005cb0 adds r6, r5, 1                                    |         r6 = r5 + 1;
    0x00005cb2 blx 0x21fc                                        |         r0 = fcn_000021fc ();
    0x00005cb6 mov r4, r0                                        |         r4 = r0;
                                                                 |         if (r0 == 0) {
    0x00005cb8 cbz r0, 0x5ce2                                    |             goto label_2;
                                                                 |         }
    0x00005cba movs r2, 0x3c                                     |         r2 = 0x3c;
    0x00005cbc mov r1, r8                                        |         r1 = r8;
    0x00005cbe mov r5, r4                                        |         r5 = r4;
    0x00005cc0 blx 0x2324                                        |         write (r0, r1, r2);
    0x00005cc4 mov r0, r7                                        |         r0 = r7;
    0x00005cc6 blx 0x2418                                        |         fcn_00002418 ();
    0x00005cca mov r2, r6                                        |         r2 = r6;
    0x00005ccc str r0, [r5], 0x3c                                |         *(r5) = r0;
                                                                 |         r5 += 0x3c;
    0x00005cd0 mov r1, sb                                        |         r1 = sb;
    0x00005cd2 mov r0, r5                                        |         r0 = r5;
    0x00005cd4 str r5, [r4, 8]                                   |         *((r4 + 8)) = r5;
    0x00005cd6 blx 0x20c0                                        |         mmap64 ()
    0x00005cda str r5, [r4, 4]                                   |         *((r4 + 4)) = r5;
    0x00005cdc str.w r8, [r4, 0x20]                              |         __asm ("str.w r8, [r4, 0x20]");
    0x00005ce0 b 0x5c84                                          |         
                                                                 |     } while (1);
                                                                 | label_2:
    0x00005ce2 mvn r0, 0xb                                       |     r0 = ~0xb;
    0x00005ce6 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/lib/libkmod.so.2.3.7 @ 0x5e2c */
                                                             | #include <stdint.h>
                                                             |  
    ; (fcn) fcn.00005e2c ()                                  | void fcn_00005e2c (int16_t arg1, int16_t arg2, int16_t arg3, int16_t arg4) {
                                                             |     int16_t var_ch;
                                                             |     int16_t var_10h;
                                                             |     int16_t var_1000h;
                                                             |     r0 = arg1;
                                                             |     r1 = arg2;
                                                             |     r2 = arg3;
                                                             |     r3 = arg4;
    0x00005e2c push.w {r4, r5, r6, r7, r8, sb, sl, lr}       |     
    0x00005e30 mov r5, r1                                    |     r5 = r1;
    0x00005e32 ldr r1, [pc, 0xa4]                            |     
    0x00005e34 mov r7, r2                                    |     r7 = r2;
    0x00005e36 mov r8, r0                                    |     r8 = r0;
    0x00005e38 mov r0, r2                                    |     r0 = r2;
    0x00005e3a ldr r2, [pc, 0xa0]                            |     r2 = *(0x5ede);
    0x00005e3c sub.w sp, sp, 0x1000                          |     
    0x00005e40 add r1, pc                                    |     r1 = 0xbd1e;
    0x00005e42 sub sp, 0x10                                  |     
    0x00005e44 add.w r4, sp, 0x1000                          |     r4 += var_1000h;
    0x00005e48 mov sb, r3                                    |     sb = r3;
    0x00005e4a ldr r2, [r1, r2]                              |     
    0x00005e4c adds r4, 0xc                                  |     r4 += 0xc;
    0x00005e4e ldr r2, [r2]                                  |     r2 = *(0xbd1e);
    0x00005e50 str r2, [r4]                                  |     *(r4) = r2;
    0x00005e52 mov.w r2, 0                                   |     r2 = 0;
    0x00005e56 blx 0x22a8                                    |     r0 = fcn_000022a8 ();
    0x00005e5a mov r4, r0                                    |     r4 = r0;
    0x00005e5c mov r0, r5                                    |     r0 = r5;
    0x00005e5e blx 0x22a8                                    |     r0 = fcn_000022a8 ();
    0x00005e62 adds r2, r4, r0                               |     r2 = r4 + r0;
    0x00005e64 adds r2, 2                                    |     r2 += 2;
    0x00005e66 cmp.w r2, 0x1000                              |     
                                                             |     if (r2 > 0x1000) {
    0x00005e6a bhi 0x5ece                                    |         goto label_0;
                                                             |     }
    0x00005e6c add.w sl, sp, 0xc                             |     sl += var_ch;
    0x00005e70 mov r6, r0                                    |     r6 = r0;
    0x00005e72 mov r1, r7                                    |     r1 = r7;
    0x00005e74 mov.w r3, 0x1000                              |     r3 = 0x1000;
    0x00005e78 mov r2, r4                                    |     r2 = r4;
    0x00005e7a mov r0, sl                                    |     r0 = sl;
    0x00005e7c blx 0x2154                                    |     fcn_00002154 ();
    0x00005e80 adds r0, r4, 1                                |     r0 = r4 + 1;
    0x00005e82 adds r2, r6, 1                                |     r2 = r6 + 1;
    0x00005e84 mov r1, r5                                    |     r1 = r5;
    0x00005e86 add r7, sp, 0x10                              |     r7 += var_10h;
    0x00005e88 add r0, sl                                    |     r0 += sl;
    0x00005e8a add r7, r4                                    |     r7 += r4;
    0x00005e8c blx 0x20c0                                    |     mmap64 ()
    0x00005e90 mov r2, r4                                    |     r2 = r4;
    0x00005e92 movs r4, 0x5c                                 |     r4 = 0x5c;
    0x00005e94 strd r6, sb, [sp]                             |     __asm ("strd r6, sb, [sp]");
    0x00005e98 mov r3, r5                                    |     r3 = r5;
    0x00005e9a mov r1, sl                                    |     r1 = sl;
    0x00005e9c mov r0, r8                                    |     r0 = r8;
    0x00005e9e strb r4, [r7, -0x4]                           |     *((r7 - 0x4)) = r4;
    0x00005ea2 bl 0x5c18                                     |     r0 = fcn_00005c18 (r0, r1, r2, r3, r4, r5);
    0x00005ea6 and.w r0, r0, r0, asr 31                      |     r0 &= (r0 >> 31);
                                                             |     do {
    0x00005eaa ldr r2, [pc, 0x34]                            |         
    0x00005eac add.w r1, sp, 0x1000                          |         r1 += var_1000h;
    0x00005eb0 ldr r3, [pc, 0x28]                            |         r3 = *(0x5edc);
    0x00005eb2 adds r1, 0xc                                  |         r1 += 0xc;
    0x00005eb4 add r2, pc                                    |         r2 = 0xbd9a;
    0x00005eb6 ldr r3, [r2, r3]                              |         r3 = *(0xbd9a);
    0x00005eb8 ldr r2, [r3]                                  |         r2 = *(0xbd9a);
    0x00005eba ldr r3, [r1]                                  |         r3 = *(r1);
    0x00005ebc eors r2, r3                                   |         r2 ^= r3;
    0x00005ebe mov.w r3, 0                                   |         r3 = 0;
                                                             |         if (r2 != r3) {
    0x00005ec2 bne 0x5ed4                                    |             goto label_1;
                                                             |         }
    0x00005ec4 add.w sp, sp, 0x1000                          |         
    0x00005ec8 add sp, 0x10                                  |         
    0x00005eca pop.w {r4, r5, r6, r7, r8, sb, sl, pc}        |         
                                                             | label_0:
    0x00005ece mvn r0, 0x23                                  |         r0 = ~0x23;
    0x00005ed2 b 0x5eaa                                      |         
                                                             |     } while (1);
                                                             | label_1:
    0x00005ed4 blx 0x2108                                    |     fcn_00002108 ();
    0x00005ed8 str r0, [r1]                                  |     *(r1) = r0;
    0x00005eda movs r1, r0                                   |     r1 = r0;
    0x00005edc lsls r4, r4, 6                                |     r4 <<= 6;
    0x00005ede movs r0, r0                                   |     
    0x00005ee0 ldrsh r4, [r2, r6]                            |     r4 = *((r2 + r6));
    0x00005ee2 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/lib/libkmod.so.2.3.7 @ 0x5f98 */
                                                                 | #include <stdint.h>
                                                                 |  
                                                                 | #define BIT_MASK(t,v) ((t)(-((v)!= 0)))&(((t)-1)>>((sizeof(t)*CHAR_BIT)-(v)))
                                                                 |  
    ; (fcn) fcn.00005f98 ()                                      | void fcn_00005f98 (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;
                                                                 |     int16_t var_4h_2;
                                                                 |     int16_t var_20h;
                                                                 |     int16_t var_1000h;
                                                                 |     int32_t var_0h_2;
                                                                 |     int16_t var_1020h;
                                                                 |     r0 = arg1;
                                                                 |     r1 = arg2;
    0x00005f98 blmi 0x1cd8968                                    |     __asm ("blmi 0x1cd8968");
    0x00005f9c push.w {r4, r5, r6, r7, r8, sb, sl, fp, lr}       |     
    0x00005fa0 sub.w sp, sp, 0x1020                              |     
    0x00005fa4 add r2, pc                                        |     r2 += pc;
    0x00005fa6 sub sp, 4                                         |     
    0x00005fa8 mov r6, r0                                        |     r6 = r0;
    0x00005faa add.w r0, sp, 0x1000                              |     r0 += var_1000h;
    0x00005fae ldr r3, [r2, r3]                                  |     r3 = *((r2 + r3));
    0x00005fb0 adds r0, 0x1c                                     |     r0 += 0x1c;
    0x00005fb2 ldr r3, [r3]                                      |     r3 = *(r3);
    0x00005fb4 str r3, [r0]                                      |     *(r0) = r3;
    0x00005fb6 mov.w r3, 0                                       |     r3 = 0;
    0x00005fba ldrb.w r3, [r6, 0x30]                             |     r3 = *((r6 + 0x30));
    0x00005fbe lsls r2, r3, 0x1f                                 |     r2 = r3 << 0x1f;
    0x00005fc0 it mi                                             |     
                                                                 |     if (r2 >= r3) {
    0x00005fc2 ldrmi r4, [r6, 0x28]                              |         r4 = *((r6 + 0x28));
                                                                 |     }
                                                                 |     if (r2 < r3) {
    0x00005fc4 bmi.w 0x60d2                                      |         goto label_2;
                                                                 |     }
    0x00005fc8 ldr r5, [r6, 0x10]                                |     r5 = *((r6 + 0x10));
    0x00005fca ldr.w sb, [r6]                                    |     sb = *(r6);
    0x00005fce cmp r5, 0                                         |     
                                                                 |     if (r5 != 0) {
    0x00005fd0 bne.w 0x6150                                      |         goto label_6;
                                                                 |     }
    0x00005fd4 mov r4, r1                                        |     r4 = r1;
    0x00005fd6 orr r3, r3, 1                                     |     r3 |= 1;
    0x00005fda movs r1, 0x3a                                     |     r1 = 0x3a;
    0x00005fdc mov r0, r4                                        |     r0 = r4;
    0x00005fde strb.w r3, [r6, 0x30]                             |     *((r6 + 0x30)) = r3;
    0x00005fe2 blx 0x22b4                                        |     r0 = fcn_000022b4 ();
    0x00005fe6 mov r8, r0                                        |     r8 = r0;
    0x00005fe8 cmp r0, 0                                         |     
                                                                 |     if (r0 == 0) {
    0x00005fea beq.w 0x610e                                      |         goto label_4;
                                                                 |     }
    0x00005fee strb r5, [r0]                                     |     *(r0) = r5;
    0x00005ff0 ldr r0, [r6]                                      |     r0 = *(r6);
    0x00005ff2 blx 0x2384                                        |     r0 = uflow ();
    0x00005ff6 mov r7, r0                                        |     r7 = r0;
    0x00005ff8 blx 0x22a8                                        |     r0 = fcn_000022a8 ();
    0x00005ffc adds r3, r0, 2                                    |     r3 = r0 + 2;
    0x00005ffe mov sl, r0                                        |     sl = r0;
    0x00006000 cmp.w r3, 0x1000                                  |     
    0x00006004 str r3, [sp]                                      |     *(sp) = r3;
                                                                 |     if (r3 >= 0x1000) {
    0x00006006 bhs.w 0x610e                                      |         goto label_4;
                                                                 |     }
    0x0000600a mov r1, r7                                        |     r1 = r7;
    0x0000600c add r7, sp, 0x20                                  |     r7 += var_20h;
    0x0000600e subs r3, r7, 4                                    |     r3 -= var_4h_2;
    0x00006010 mov r2, sl                                        |     r2 = sl;
    0x00006012 mov r0, r3                                        |     r0 = r3;
    0x00006014 str r3, [sp, 4]                                   |     var_4h = r3;
    0x00006016 mov.w r3, 0x1000                                  |     r3 = 0x1000;
    0x0000601a add.w fp, sl, 1                                   |     
    0x0000601e blx 0x2154                                        |     fcn_00002154 ();
    0x00006022 ldr r3, [r6, 0xc]                                 |     r3 = *((r6 + 0xc));
    0x00006024 movs r2, 0x2f                                     |     r2 = 0x2f;
    0x00006026 add sl, r7                                        |     sl += r7;
    0x00006028 strb r2, [sl, -0x4]                               |     *((sl - 0x4)) = r2;
    0x0000602c add.w r2, r7, fp                                  |     r2 = r7 + fp;
    0x00006030 strb r5, [r2, -0x4]                               |     *((r2 - 0x4)) = r5;
    0x00006032 ldrb r4, [r0, r0]                                 |     r4 = *((r0 + r0));
    0x00006034 cmp r3, 0                                         |     
                                                                 |     if (r3 == 0) {
    0x00006036 beq 0x60f8                                        |         goto label_7;
                                                                 |     }
                                                                 | label_3:
    0x00006038 ldr r1, [pc, 0x130]                               |     
    0x0000603a sub.w sl, r7, 0xc                                 |     sl -= var_ch_2;
    0x0000603e add.w r0, r8, 1                                   |     r0 = r8 + 1;
    0x00006042 mov r2, sl                                        |     r2 = sl;
    0x00006044 add r1, pc                                        |     r1 = 0xc1b4;
    0x00006046 blx 0x21a8                                        |     r0 = fcn_000021a8 ();
    0x0000604a cmp r0, 0                                         |     
                                                                 |     if (r0 == 0) {
    0x0000604c beq 0x6146                                        |         goto label_8;
                                                                 |     }
    0x0000604e ldr r3, [sp, 4]                                   |     r3 = var_4h;
    0x00006050 mov.w r8, 0                                       |     r8 = 0;
    0x00006054 str r6, [sp, 0xc]                                 |     var_ch = r6;
    0x00006056 mov r4, r8                                        |     r4 = r8;
    0x00006058 mov r6, r0                                        |     r6 = r0;
    0x0000605a add r3, fp                                        |     r3 += fp;
    0x0000605c ldr.w fp, [pc, 0x110]                             |     
    0x00006060 str r3, [sp, 8]                                   |     var_8h = r3;
    0x00006062 add fp, pc                                        |     fp = 0xc1d6;
    0x00006064 b 0x60a2                                          |     goto label_9;
                                                                 | label_0:
    0x00006066 mov r1, r6                                        |     r1 = r6;
    0x00006068 adds r2, r0, 1                                    |     r2 = r0 + 1;
    0x0000606a ldr r0, [sp, 8]                                   |     r0 = var_8h;
    0x0000606c blx 0x20c0                                        |     mmap64 ()
    0x00006070 ldr r6, [sp, 4]                                   |     r6 = var_4h;
                                                                 |     do {
    0x00006072 mov r1, r6                                        |         r1 = r6;
    0x00006074 sub.w r2, r7, 8                                   |         r2 -= var_8h_2;
    0x00006078 mov r0, sb                                        |         r0 = sb;
    0x0000607a blx 0x2378                                        |         r0 = munmap (r0, r1);
    0x0000607e subs r4, r0, 0                                    |         r4 = r0 - 0;
                                                                 |         if (r4 < r0) {
    0x00006080 blt 0x6112                                        |             goto label_10;
                                                                 |         }
    0x00006082 ldr r1, [r7, -0x8]                                |         r1 = *((r7 - 0x8));
    0x00006086 mov r0, r5                                        |         r0 = r5;
    0x00006088 bl 0x3838                                         |         fcn_00003838 (r0, r1);
    0x0000608c mov r2, sl                                        |         r2 = sl;
    0x0000608e mov r5, r0                                        |         r5 = r0;
    0x00006090 mov r1, fp                                        |         r1 = fp;
    0x00006092 movs r0, 0                                        |         r0 = 0;
    0x00006094 blx 0x21a8                                        |         fcn_000021a8 ();
    0x00006098 add.w r8, r8, 1                                   |         r8++;
    0x0000609c mov r6, r0                                        |         r6 = r0;
    0x0000609e cmp r0, 0                                         |         
                                                                 |         if (r0 == 0) {
    0x000060a0 beq 0x611c                                        |             goto label_11;
                                                                 |         }
                                                                 | label_9:
    0x000060a2 movs r3, 0                                        |         r3 = 0;
    0x000060a4 str r3, [r7, -0x8]                                |         *((r7 - 0x8)) = r3;
    0x000060a8 ldrb r3, [r6]                                     |         r3 = *(r6);
    0x000060aa cmp r3, 0x2f                                      |         
    0x000060ac beq 0x6072                                        |         
                                                                 |     } while (r3 == 0x2f);
    0x000060ae mov r0, r6                                        |     r0 = r6;
    0x000060b0 blx 0x22a8                                        |     fcn_000022a8 ();
    0x000060b4 ldr r3, [sp]                                      |     r3 = *(sp);
    0x000060b6 add r3, r0                                        |     r3 += r0;
    0x000060b8 cmp.w r3, 0x1000                                  |     
                                                                 |     if (r3 <= 0x1000) {
    0x000060bc blo 0x6066                                        |         goto label_0;
                                                                 |     }
    0x000060be ldr r6, [sp, 0xc]                                 |     r6 = var_ch;
                                                                 | label_1:
    0x000060c0 mov r0, r5                                        |     r0 = r5;
    0x000060c2 blx 0x2088                                        |     fcn_00002088 ();
    0x000060c6 ldrb.w r3, [r6, 0x30]                             |     r3 = *((r6 + 0x30));
    0x000060ca bfc r3, 0, 1                                      |     value_0 = BIT_MASK (1, );
                                                                 |     value_0 = ~value_0;
                                                                 |     r3 &= value_0;
    0x000060ce strb.w r3, [r6, 0x30]                             |     *((r6 + 0x30)) = r3;
                                                                 |     do {
                                                                 | label_2:
    0x000060d2 ldr r2, [pc, 0xa0]                                |         
    0x000060d4 add.w r1, sp, 0x1000                              |         r1 += var_1000h;
    0x000060d8 ldr r3, [pc, 0x8c]                                |         r3 = *(0x6168);
    0x000060da adds r1, 0x1c                                     |         r1 += 0x1c;
    0x000060dc add r2, pc                                        |         r2 = 0xc256;
    0x000060de ldr r3, [r2, r3]                                  |         r3 = *(0xc256);
    0x000060e0 ldr r2, [r3]                                      |         r2 = *(0xc256);
    0x000060e2 ldr r3, [r1]                                      |         r3 = *(r1);
    0x000060e4 eors r2, r3                                       |         r2 ^= r3;
    0x000060e6 mov.w r3, 0                                       |         r3 = 0;
                                                                 |         if (r2 != r3) {
    0x000060ea bne 0x614c                                        |             goto label_12;
                                                                 |         }
    0x000060ec mov r0, r4                                        |         r0 = r4;
    0x000060ee add.w sp, sp, 0x1020                              |         
    0x000060f2 add sp, 4                                         |         
    0x000060f4 pop.w {r4, r5, r6, r7, r8, sb, sl, fp, pc}        |         
                                                                 | label_7:
    0x000060f8 ldrb r3, [r4]                                     |         r3 = *(r4);
    0x000060fa cmp r3, 0x2f                                      |         
                                                                 |         if (r3 == 0x2f) {
    0x000060fc beq 0x6136                                        |             goto label_13;
                                                                 |         }
    0x000060fe mov r0, r4                                        |         r0 = r4;
    0x00006100 blx 0x22a8                                        |         fcn_000022a8 ();
    0x00006104 ldr r3, [sp]                                      |         r3 = *(sp);
    0x00006106 add r3, r0                                        |         r3 += r0;
    0x00006108 cmp.w r3, 0x1000                                  |         
                                                                 |         if (r3 <= 0x1000) {
    0x0000610c blo 0x6128                                        |             goto label_14;
                                                                 |         }
                                                                 | label_4:
    0x0000610e movs r4, 0                                        |         r4 = 0;
    0x00006110 b 0x60d2                                          |         
                                                                 |     } while (1);
                                                                 | label_10:
    0x00006112 rsbs r0, r4, 0                                    |     r0 = r4 - ;
    0x00006114 ldr r6, [sp, 0xc]                                 |     r6 = var_ch;
    0x00006116 blx 0x2208                                        |     fcn_00002208 ();
    0x0000611a b 0x60c0                                          |     goto label_1;
                                                                 | label_11:
    0x0000611c ldr r6, [sp, 0xc]                                 |     r6 = var_ch;
                                                                 | label_5:
    0x0000611e mov r4, r8                                        |     r4 = r8;
    0x00006120 str r5, [r6, 0x10]                                |     *((r6 + 0x10)) = r5;
    0x00006122 str.w r8, [r6, 0x28]                              |     __asm ("str.w r8, [r6, 0x28]");
    0x00006126 b 0x60d2                                          |     goto label_2;
                                                                 | label_14:
    0x00006128 mov r1, r4                                        |     r1 = r4;
    0x0000612a ldr r4, [sp, 4]                                   |     r4 = var_4h;
    0x0000612c adds r2, r0, 1                                    |     r2 = r0 + 1;
    0x0000612e add.w r0, r4, fp                                  |     r0 = r4 + fp;
    0x00006132 blx 0x20c0                                        |     mmap64 ()
                                                                 | label_13:
    0x00006136 mov r0, r4                                        |     r0 = r4;
    0x00006138 blx 0x20fc                                        |     stack_chk_fail ();
    0x0000613c str r0, [r6, 0xc]                                 |     *((r6 + 0xc)) = r0;
    0x0000613e cmp r0, 0                                         |     
                                                                 |     if (r0 != 0) {
    0x00006140 bne.w 0x6038                                      |         goto label_3;
                                                                 |     }
    0x00006144 b 0x610e                                          |     goto label_4;
                                                                 | label_8:
    0x00006146 mov r5, r0                                        |     r5 = r0;
    0x00006148 mov r8, r0                                        |     r8 = r0;
    0x0000614a b 0x611e                                          |     goto label_5;
                                                                 | label_12:
    0x0000614c blx 0x2108                                        |     fcn_00002108 ();
                                                                 | label_6:
    0x00006150 ldr r3, [pc, 0x24]                                |     
    0x00006152 movs r2, 0x95                                     |     r2 = 0x95;
    0x00006154 ldr r1, [pc, 0x24]                                |     
    0x00006156 ldr r0, [pc, 0x28]                                |     
    0x00006158 add r3, pc                                        |     r3 = 0xc2d4;
    0x0000615a add r1, pc                                        |     r1 = 0xc2da;
    0x0000615c add r0, pc                                        |     r0 = 0xc2e2;
    0x0000615e blx 0x246c                                        |     fcn_0000246c ();
    0x00006162 nop                                               |     
    0x00006164 ldrsh r4, [r4, r2]                                |     r4 = *((r4 + r2));
    0x00006166 movs r1, r0                                       |     r1 = r0;
    0x00006168 lsls r4, r4, 6                                    |     r4 <<= 6;
    0x0000616a movs r0, r0                                       |     
    0x0000616c ldr r7, [pc, 0x390]                               |     r7 = *(0x6500);
    0x0000616e movs r0, r0                                       |     
    0x00006170 ldr r7, [pc, 0x318]                               |     r7 = *(0x648c);
    0x00006172 movs r0, r0                                       |     
    0x00006174 ldrb r4, [r5, r5]                                 |     r4 = *((r5 + r5));
    0x00006176 movs r1, r0                                       |     r1 = r0;
    0x00006178 str r4, [r3, r2]                                  |     *((r3 + r2)) = r4;
    0x0000617a movs r0, r0                                       |     
    0x0000617c ldr r6, [pc, 0x268]                               |     r6 = *(0x63e8);
    0x0000617e movs r0, r0                                       |     
    0x00006180 ldr r6, [pc, 0x2e0]                               |     r6 = *(0x6464);
    0x00006182 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/lib/libkmod.so.2.3.7 @ 0x85b4 */
                                                         | #include <stdint.h>
                                                         |  
    ; (fcn) fcn.000085b4 ()                              | void fcn_000085b4 (int16_t arg3) {
                                                         |     int16_t var_4h;
                                                         |     int16_t var_8h;
                                                         |     int32_t var_8h_2;
                                                         |     int16_t var_14h;
                                                         |     r2 = arg3;
                                                         |     if (? >= ?) {
    0x000085b4 ldrbmi lr, [r0, sp, lsr 18]!              |         
                                                         |     }
    0x000085b8 mov r8, r2                                |     r8 = r2;
    0x000085ba ldr r2, [pc, 0x17c]                       |     
    0x000085bc sub sp, 0x18                              |     
    0x000085be movs r4, 0                                |     r4 = 0;
    0x000085c0 ldr r3, [pc, 0x178]                       |     r3 = *(0x873c);
    0x000085c2 add r2, pc                                |     r2 = 0x10d00;
    0x000085c4 ldr r3, [r2, r3]                          |     
    0x000085c6 add r2, sp, 4                             |     r2 += var_4h;
    0x000085c8 ldr r3, [r3]                              |     r3 = *(0x10d00);
    0x000085ca str r3, [sp, 0x14]                        |     var_14h = r3;
    0x000085cc mov.w r3, 0                               |     r3 = 0;
    0x000085d0 add r3, sp, 8                             |     r3 += var_8h;
    0x000085d2 str.w r4, [r8]                            |     __asm ("str.w r4, [r8]");
    0x000085d6 bl 0x84c4                                 |     r0 = fcn_000084c4 (r0, r1, r2, r3);
    0x000085da cmp r0, 0                                 |     
                                                         |     if (r0 < 0) {
    0x000085dc blt 0x860e                                |         goto label_2;
                                                         |     }
    0x000085de ldr r6, [sp, 4]                           |     r6 = var_4h;
                                                         |     if (r6 == 0) {
    0x000085e0 cbz r6, 0x860c                            |         goto label_4;
                                                         |     }
    0x000085e2 ldrd r4, r5, [sp, 8]                      |     __asm ("ldrd r4, r5, [var_8h]");
    0x000085e6 orrs.w r3, r4, r5                         |     r3 = r4 | r5;
                                                         |     if (r3 == r4) {
    0x000085ea beq 0x860c                                |         goto label_4;
                                                         |     }
    0x000085ec ldrb r3, [r6]                             |     r3 = *(r6);
                                                         |     if (r3 != 0) {
    0x000085ee cbnz r3, 0x862e                           |         goto label_5;
                                                         |     }
    0x000085f0 adds r3, r6, 1                            |     r3 = r6 + 1;
    0x000085f2 b 0x8604                                  |     
                                                         |     while (r1 != r2) {
    0x000085f4 subs r4, 1                                |         r4--;
    0x000085f6 mov r6, r3                                |         r6 = r3;
    0x000085f8 mov r4, r2                                |         r4 = r2;
    0x000085fa ldrb r2, [r3], 1                          |         r2 = *(r3);
                                                         |         r3++;
    0x000085fe sbc r5, r5, 0                             |         __asm ("sbc r5, r5, 0");
                                                         |         if (r2 != 0) {
    0x00008602 cbnz r2, 0x862a                           |             goto label_6;
                                                         |         }
    0x00008604 subs r2, r4, 1                            |         r2 = r4 - 1;
    0x00008606 orrs.w r1, r2, r5                         |         r1 = r2 | r5;
    0x0000860a bne 0x85f4                                |         
                                                         |     }
                                                         |     do {
                                                         | label_4:
    0x0000860c movs r0, 0                                |         r0 = 0;
                                                         | label_2:
    0x0000860e ldr r2, [pc, 0x130]                       |         
    0x00008610 ldr r3, [pc, 0x128]                       |         r3 = *(0x873c);
    0x00008612 add r2, pc                                |         r2 = 0x10d58;
    0x00008614 ldr r3, [r2, r3]                          |         r3 = *(0x10d58);
    0x00008616 ldr r2, [r3]                              |         r2 = *(0x10d58);
    0x00008618 ldr r3, [sp, 0x14]                        |         r3 = var_14h;
    0x0000861a eors r2, r3                               |         r2 ^= r3;
    0x0000861c mov.w r3, 0                               |         r3 = 0;
    0x0000861e lsls r0, r0, 0xc                          |         r0 <<= 0xc;
                                                         |         if (r0 != r0) {
    0x00008620 bne.w 0x872a                              |             goto label_7;
                                                         |         }
    0x00008624 add sp, 0x18                              |         
    0x00008626 pop.w {r4, r5, r6, r7, r8, sb, sl, pc}    |         
                                                         | label_6:
    0x0000862a strd r4, r5, [sp, 8]                      |         __asm ("strd r4, r5, [var_8h]");
                                                         | label_5:
    0x0000862e subs r3, r4, 1                            |         r3 = r4 - 1;
    0x00008630 orrs r3, r5                               |         r3 |= r5;
    0x00008632 beq 0x860c                                |         
                                                         |     } while (r3 == r5);
    0x00008634 movs r7, 0                                |     r7 = 0;
    0x00008636 mov r3, r6                                |     r3 = r6;
    0x00008638 mov r2, r7                                |     r2 = r7;
    0x0000863a mov lr, r7                                |     lr = r7;
    0x0000863c rsb.w ip, r6, 1                           |     
    0x00008640 b 0x8650                                  |     
                                                         |     while (r1 != 0) {
    0x00008642 adds r2, 1                                |         r2++;
    0x00008644 movs r1, 0                                |         r1 = 0;
    0x00008646 cmp r2, r4                                |         
    0x00008648 add.w r3, r6, r2                          |         r3 = r6 + r2;
    0x0000864c sbcs r1, r5                               |         __asm ("sbcs r1, r5");
                                                         |         if (r2 >= r4) {
    0x0000864e bhs 0x8682                                |             goto label_8;
                                                         |         }
                                                         | label_0:
    0x00008650 ldrb r1, [r3]                             |         r1 = *(r3);
    0x00008652 cmp r1, 0                                 |         
    0x00008654 bne 0x8642                                |         
                                                         |     }
    0x00008656 cmp r2, r4                                |     
    0x00008658 sbcs.w r0, r1, r5                         |     __asm ("sbcs.w r0, r1, r5");
                                                         |     if (r2 <= r4) {
    0x0000865c blo 0x8668                                |         goto label_9;
                                                         |     }
    0x0000865e b 0x8678                                  |     goto label_10;
                                                         |     do {
    0x00008660 cmp r2, r4                                |         
    0x00008662 sbcs.w r0, lr, r5                         |         __asm ("sbcs.w r0, lr, r5");
                                                         |         if (r2 >= r4) {
    0x00008666 bhs 0x8676                                |             goto label_11;
                                                         |         }
                                                         | label_9:
    0x00008668 add.w r2, ip, r3                          |         r2 = ip + r3;
    0x0000866c ldrb r0, [r3, 1]!                         |         r0 = *((r3 += 1));
    0x00008670 movs r1, 0                                |         r1 = 0;
    0x00008672 cmp r0, 0                                 |         
    0x00008674 beq 0x8660                                |         
                                                         |     } while (r0 == 0);
                                                         | label_11:
    0x00008676 adds r3, r6, r2                           |     r3 = r6 + r2;
                                                         | label_10:
    0x00008678 cmp r2, r4                                |     
    0x0000867a add.w r7, r7, 1                           |     r7++;
    0x0000867e sbcs r1, r5                               |     __asm ("sbcs r1, r5");
                                                         |     if (r2 <= r4) {
    0x00008680 blo 0x8650                                |         goto label_0;
                                                         |     }
                                                         | label_8:
    0x00008682 ldrb r3, [r3, -0x1]                       |     r3 = *((r3 - 0x1));
    0x00008686 cmp r3, 0                                 |     
                                                         |     if (r3 != 0) {
    0x00008688 bne 0x8726                                |         goto label_12;
                                                         |     }
                                                         | label_3:
    0x0000868a add.w sl, r7, 1                           |     sl = r7 + 1;
    0x0000868e adds r0, r4, 1                            |     r0 = r4 + 1;
    0x00008690 lsl.w sl, sl, 2                           |     sl <<= 2;
    0x00008694 add r0, sl                                |     r0 += sl;
    0x00008696 blx 0x21fc                                |     r0 = fcn_000021fc ();
    0x0000869a mov sb, r0                                |     sb = r0;
    0x0000869c str.w r0, [r8]                            |     __asm ("str.w r0, [r8]");
    0x000086a0 cmp r0, 0                                 |     
                                                         |     if (r0 == 0) {
    0x000086a2 beq 0x872e                                |         goto label_13;
                                                         |     }
    0x000086a4 add.w r8, r0, sl                          |     r8 = r0 + sl;
    0x000086a8 mov r2, r4                                |     r2 = r4;
    0x000086aa mov r1, r6                                |     r1 = r6;
    0x000086ac mov r0, r8                                |     r0 = r8;
    0x000086ae blx 0x20c0                                |     mmap64 ()
    0x000086b2 cmp r7, 1                                 |     
    0x000086b4 mov.w r2, 0                               |     r2 = 0;
    0x000086b8 it hi                                     |     
                                                         |     if (r7 <= 1) {
    0x000086ba movhi ip, 1                               |         
                                                         |     }
    0x000086be strb.w r2, [r8, r4]                       |     *((r8 + r4)) = r2;
    0x000086c2 it hi                                     |     
                                                         |     if (r7 <= 1) {
    0x000086c4 subhi r0, ip, r6                          |         r0 = ip - r6;
                                                         |     }
    0x000086c8 str r2, [r8, -0x4]                        |     *((r8 - 0x4)) = r2;
    0x000086cc it hi                                     |     
                                                         |     if (r7 <= 1) {
    0x000086ce movhi lr, r2                              |         lr = r2;
                                                         |     }
    0x000086d0 str.w r8, [sb]                            |     __asm ("str.w r8, [sb]");
                                                         |     if (r7 > 1) {
    0x000086d4 bhi 0x86e8                                |         goto label_14;
                                                         |     }
    0x000086d6 b 0x8722                                  |     goto label_15;
                                                         |     do {
    0x000086d8 cmp ip, r7                                |         
    0x000086da add.w r2, r2, 1                           |         r2++;
                                                         |         if (ip >= r7) {
    0x000086de bhs 0x8722                                |             goto label_15;
                                                         |         }
                                                         | label_1:
    0x000086e0 cmp r2, r4                                |         
    0x000086e2 sbcs.w r3, lr, r5                         |         __asm ("sbcs.w r3, lr, r5");
                                                         |         if (r2 >= r4) {
    0x000086e6 bhs 0x8722                                |             goto label_15;
                                                         |         }
                                                         | label_14:
    0x000086e8 ldrb.w r3, [r8, r2]                       |         r3 = *((r8 + r2));
    0x000086ec add.w sl, r8, r2                          |         sl = r8 + r2;
    0x000086f0 cmp r3, 0                                 |         
    0x000086f2 bne 0x86d8                                |         
                                                         |     } while (r3 != 0);
    0x000086f4 ldrb r3, [r6, r2]                         |     r3 = *((r6 + r2));
    0x000086f6 adds r1, r6, r2                           |     r1 = r6 + r2;
                                                         |     if (r3 != 0) {
    0x000086f8 cbnz r3, 0x8716                           |         goto label_16;
                                                         |     }
    0x000086fa cmp r2, r4                                |     
    0x000086fc sbcs r3, r5                               |     __asm ("sbcs r3, r5");
                                                         |     if (r2 <= r4) {
    0x000086fe blo 0x8708                                |         goto label_17;
                                                         |     }
    0x00008700 b 0x8716                                  |     goto label_16;
                                                         |     do {
    0x00008702 cmp r2, r4                                |         
    0x00008704 sbcs r3, r5                               |         __asm ("sbcs r3, r5");
                                                         |         if (r2 >= r4) {
    0x00008706 bhs 0x8712                                |             goto label_18;
                                                         |         }
                                                         | label_17:
    0x00008708 adds r2, r0, r1                           |         r2 = r0 + r1;
    0x0000870a ldrb r3, [r1, 1]!                         |         r3 = *((r1 += 1));
    0x0000870e cmp r3, 0                                 |         
    0x00008710 beq 0x8702                                |         
                                                         |     } while (r3 == 0);
                                                         | label_18:
    0x00008712 add.w sl, r8, r2                          |     sl = r8 + r2;
                                                         | label_16:
    0x00008716 str.w sl, [sb, ip, lsl 2]                 |     __asm ("str.w sl, [sb, ip, lsl 2]");
    0x0000871a add.w ip, ip, 1                           |     
    0x0000871e cmp ip, r7                                |     
                                                         |     if (ip <= r7) {
    0x00008720 blo 0x86e0                                |         goto label_1;
                                                         |     }
                                                         | label_15:
    0x00008722 mov r0, r7                                |     r0 = r7;
    0x00008724 b 0x860e                                  |     goto label_2;
                                                         | label_12:
    0x00008726 adds r7, 1                                |     r7++;
    0x00008728 b 0x868a                                  |     goto label_3;
                                                         | label_7:
    0x0000872a blx 0x2108                                |     fcn_00002108 ();
                                                         | label_13:
    0x0000872e blx 0x22f4                                |     r0 = gzerror ();
    0x00008732 ldr r0, [r0]                              |     r0 = *(r0);
    0x00008734 rsbs r0, r0, 0                            |     r0 -= ;
    0x00008736 b 0x860e                                  |     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/lib/libkmod.so.2.3.7 @ 0x8744 */
                                                                 | #include <stdint.h>
                                                                 |  
    ; (fcn) fcn.00008744 ()                                      | void fcn_00008744 (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;
    0x00008744 ldr r3, [r0, 0x10]                                |     r3 = *((r0 + 0x10));
    0x00008746 push.w {r4, r5, r6, r7, r8, sb, sl, fp, lr}       |     
    0x0000874a sub sp, 0x34                                      |     
    0x0000874c ldr r2, [pc, 0x214]                               |     
    0x0000874e movs r5, 0                                        |     r5 = 0;
    0x00008750 mov r4, r3                                        |     r4 = r3;
    0x00008752 mov r7, r0                                        |     r7 = r0;
    0x00008754 str r3, [sp, 8]                                   |     var_8h = r3;
    0x00008756 tst.w r4, 2                                       |     
    0x0000875a ldr r3, [pc, 0x20c]                               |     r3 = *(0x896a);
    0x0000875c add r2, pc                                        |     r2 = 0x110c4;
    0x0000875e str r1, [sp, 4]                                   |     var_4h = r1;
    0x00008760 ite ne                                            |     
                                                                 |     if ((r4 & 2) == 0) {
    0x00008762 movne r6, 4                                       |         r6 = 4;
                                                                 |     }
                                                                 |     if ((r4 & 2) != 0) {
    0x00008764 moveq r6, 8                                       |         r6 = 8;
                                                                 |     }
    0x00008766 ldr r3, [r2, r3]                                  |     
    0x00008768 add r2, sp, 0x1c                                  |     r2 += var_1ch;
    0x0000876a ldr r3, [r3]                                      |     r3 = *(0x110c4);
    0x0000876c str r3, [sp, 0x2c]                                |     var_2ch = r3;
    0x0000876e mov.w r3, 0                                       |     r3 = 0;
    0x00008772 str r5, [r1]                                      |     *(r1) = r5;
    0x00008774 ldr r1, [pc, 0x1f4]                               |     
    0x00008776 add r3, sp, 0x20                                  |     r3 += var_20h;
    0x00008778 str r6, [sp]                                      |     *(sp) = r6;
    0x0000877a add r1, pc                                        |     r1 = 0x110ea;
    0x0000877c bl 0x84c4                                         |     r0 = fcn_000084c4 (r0, r1, r2, r3);
    0x00008780 subs r3, r0, 0                                    |     r3 = r0 - 0;
                                                                 |     if (r3 < r0) {
    0x00008782 blt.w 0x88dc                                      |         goto label_2;
                                                                 |     }
    0x00008786 ldr r4, [sp, 0x1c]                                |     r4 = var_1ch;
    0x00008788 cmp r4, 0                                         |     
                                                                 |     if (r4 == 0) {
    0x0000878a beq.w 0x8916                                      |         goto label_3;
                                                                 |     }
    0x0000878e ldrd r3, r2, [sp, 0x20]                           |     __asm ("ldrd r3, r2, [var_20h]");
    0x00008792 orrs.w r1, r3, r2                                 |     r1 = r3 | r2;
    0x00008794 lsls r2, r0, 4                                    |     r2 = r0 << 4;
                                                                 |     if (r2 == r0) {
    0x00008796 beq.w 0x88f8                                      |         goto label_4;
                                                                 |     }
    0x0000879a ands r0, r3, 0x3f                                 |     r0 = r3 & 0x3f;
    0x0000879e str r0, [sp, 0xc]                                 |     var_ch = r0;
                                                                 |     if (r0 != r3) {
    0x000087a0 bne.w 0x8950                                      |         goto label_5;
                                                                 |     }
    0x000087a4 lsr.w r8, r3, 6                                   |     r8 = r3 >> 6;
    0x000087a8 ldr.w sb, [r7]                                    |     sb = *(r7);
    0x000087ac orr.w r8, r8, r2, lsl 26                          |     r8 |= (r2 << 26);
    0x000087b0 sub.w r5, r4, sb                                  |     r5 = r4 - sb;
    0x000087b4 cmp.w r8, 0                                       |     
                                                                 |     if (r8 <= 0) {
    0x000087b8 ble.w 0x891a                                      |         goto label_6;
                                                                 |     }
    0x000087bc adds r1, r5, 1                                    |     r1 = r5 + 1;
    0x000087be strd r4, r5, [sp, 0x10]                           |     __asm ("strd r4, r5, [var_10h]");
    0x000087c2 add r1, r6                                        |     r1 += r6;
    0x000087c4 mov r4, r8                                        |     r4 = r8;
    0x000087c6 add.w sl, sb, r1                                  |     sl = sb + r1;
    0x000087ca ldrd r6, r7, [r7, 8]                              |     __asm ("ldrd r6, r7, [r7, 8]");
    0x000087ce mov fp, sl                                        |     
    0x000087d0 mov r5, r0                                        |     r5 = r0;
    0x000087d2 mov sl, r0                                        |     sl = r0;
    0x000087d4 mov r8, r0                                        |     r8 = r0;
    0x000087d6 b 0x87da                                          |     
                                                                 |     while (r4 != r3) {
    0x000087d8 mov r8, r3                                        |         r8 = r3;
    0x000087da sub.w r3, fp, sb                                  |         r3 = fp - sb;
    0x000087de subs r3, 1                                        |         r3--;
    0x000087e0 cmp r3, r6                                        |         
    0x000087e2 sbcs.w r3, sl, r7                                 |         __asm ("sbcs.w r3, sl, r7");
                                                                 |         if (r3 >= r6) {
    0x000087e6 bhs.w 0x892c                                      |             goto label_7;
                                                                 |         }
    0x000087ea ldrb r3, [fp, -0x1]                               |         r3 = *((fp - 0x1));
    0x000087ee cmp r3, 0x2e                                      |         
    0x000087f0 ite eq                                            |         
                                                                 |         if (r3 != 0x2e) {
    0x000087f2 moveq r0, fp                                      |             r0 = fp;
                                                                 |         }
                                                                 |         if (r3 == 0x2e) {
    0x000087f4 subne r0, fp, 1                                   |             r0 = fp - 1;
                                                                 |         }
    0x000087f8 add.w fp, fp, 0x40                                |         
    0x000087fc blx 0x22a8                                        |         fcn_000022a8 ();
    0x00008800 add.w r3, r8, 1                                   |         r3 = r8 + 1;
    0x00008804 adds r0, 1                                        |         r0++;
    0x00008806 cmp r4, r3                                        |         
    0x00008808 add r5, r0                                        |         r5 += r0;
    0x0000880a bne 0x87d8                                        |         
                                                                 |     }
    0x0000880c ldr r4, [sp, 0x10]                                |     r4 = var_10h;
    0x0000880e mov fp, r5                                        |     
    0x00008810 str.w r8, [sp, 0x10]                              |     __asm ("str.w r8, [var_10h]");
    0x00008814 lsl.w r8, r3, 4                                   |     r8 = r3 << 4;
    0x00008818 ldr r5, [sp, 0x14]                                |     r5 = var_14h;
    0x0000881a add.w r0, r8, fp                                  |     r0 = r8 + fp;
    0x0000881e str r3, [sp, 0x14]                                |     var_14h = r3;
    0x00008820 blx 0x21fc                                        |     fcn_000021fc ();
    0x00008824 ldr r3, [sp, 4]                                   |     r3 = var_4h;
    0x00008826 str r0, [r3]                                      |     *(r3) = r0;
    0x00008828 ldr r3, [sp, 0x14]                                |     r3 = var_14h;
    0x0000882a cmp r0, 0                                         |     
                                                                 |     if (r0 == 0) {
    0x0000882c beq.w 0x895a                                      |         goto label_8;
                                                                 |     }
    0x00008830 ldr r2, [sp, 8]                                   |     r2 = var_8h;
    0x00008832 add.w sl, r0, r8                                  |     sl = r0 + r8;
    0x00008836 str r3, [sp, 0x14]                                |     var_14h = r3;
    0x00008838 mov r3, r7                                        |     r3 = r7;
    0x0000883a mov r8, r0                                        |     r8 = r0;
    0x0000883c mov r7, r6                                        |     r7 = r6;
    0x0000883e and r2, r2, 0x10                                  |     r2 &= 0x10;
    0x00008842 mov r6, sl                                        |     r6 = sl;
    0x00008844 str r2, [sp, 8]                                   |     var_8h = r2;
    0x00008846 mov.w fp, 0                                       |     
    0x0000884a ldr r2, [sp]                                      |     r2 = *(sp);
    0x0000884c mov sl, r3                                        |     sl = r3;
    0x0000884e add r2, r5                                        |     r2 += r5;
    0x00008850 add sb, r2                                        |     sb += r2;
                                                                 | label_0:
    0x00008852 ldr r3, [sp]                                      |     r3 = *(sp);
    0x00008854 adds r1, r5, r3                                   |     r1 = r5 + r3;
    0x00008856 mov.w r3, 0                                       |     r3 = 0;
    0x0000885a adc r2, r3, 0                                     |     __asm ("adc r2, r3, 0");
    0x0000885e cmp r7, r1                                        |     
    0x00008860 sbcs.w r2, sl, r2                                 |     __asm ("sbcs.w r2, sl, r2");
                                                                 |     if (r7 <= r1) {
    0x00008864 blo 0x893e                                        |         goto label_9;
                                                                 |     }
    0x00008866 ldr r3, [sp, 8]                                   |     r3 = var_8h;
    0x00008868 cmp r3, 0                                         |     
                                                                 |     if (r3 == 0) {
    0x0000886a beq 0x88fc                                        |         goto label_10;
                                                                 |     }
    0x0000886c ldr r0, [sp, 0xc]                                 |     r0 = var_ch;
    0x0000886e mov ip, r4                                        |     
    0x00008870 movs r2, 0                                        |     r2 = 0;
                                                                 |     do {
    0x00008872 ldrb r3, [ip], 1                                  |         r3 = *(ip);
                                                                 |         ip++;
    0x00008876 lsls r2, r2, 8                                    |         r2 <<= 8;
    0x00008878 orr.w r2, r2, r0, lsr 24                          |         r2 |= (r0 >> 24);
    0x0000887c cmp sb, ip                                        |         
    0x0000887e orr.w r0, r3, r0, lsl 8                           |         r0 = r3 | (r0 << 8);
    0x00008882 bne 0x8872                                        |         
                                                                 |     } while (sb != ip);
                                                                 | label_1:
    0x00008884 cmp r1, r7                                        |     
    0x00008886 mov.w r3, 0                                       |     r3 = 0;
    0x0000888a sbcs.w r1, r3, sl                                 |     __asm ("sbcs.w r1, r3, sl");
                                                                 |     if (r1 >= r7) {
    0x0000888e bhs 0x892c                                        |         goto label_7;
                                                                 |     }
    0x00008890 ldr r3, [sp]                                      |     r3 = *(sp);
    0x00008892 adds r5, 0x40                                     |     r5 += 0x40;
    0x00008894 ldrb r1, [r4, r3]                                 |     r1 = *((r4 + r3));
    0x00008896 adds r4, 0x40                                     |     r4 += 0x40;
    0x00008898 strd r0, r2, [r8]                                 |     __asm ("strd r0, r2, [r8]");
    0x0000889c movs r2, 0x55                                     |     r2 = 0x55;
    0x0000889e str.w r6, [r8, 0xc]                               |     __asm ("str.w r6, [r8, 0xc]");
    0x000088a2 add.w r8, r8, 0x10                                |     r8 += 0x10;
    0x000088a6 cmp r1, 0x2e                                      |     
    0x000088a8 str r2, [r8, -0x8]                                |     *((r8 - 0x8)) = r2;
    0x000088ac ite eq                                            |     
                                                                 |     if (r1 != 0x2e) {
    0x000088ae addeq r1, sb, 1                                   |         r1 = sb + 1;
                                                                 |     }
                                                                 |     if (r1 != 0x2e) {
    0x000088b2 mov r1, sb                                        |         r1 = sb;
                                                                 |     }
    0x000088b4 mov r0, r1                                        |     r0 = r1;
    0x000088b6 str r1, [sp, 4]                                   |     var_4h = r1;
    0x000088b8 blx 0x22a8                                        |     fcn_000022a8 ();
    0x000088bc ldr r1, [sp, 4]                                   |     r1 = var_4h;
    0x000088be adds r2, r0, 1                                    |     r2 = r0 + 1;
    0x000088c0 mov r0, r6                                        |     r0 = r6;
    0x000088c2 add r6, r2                                        |     r6 += r2;
    0x000088c4 blx 0x20c0                                        |     mmap64 ()
    0x000088c8 ldr r3, [sp, 0x10]                                |     r3 = var_10h;
    0x000088ca add.w sb, sb, 0x40                                |     sb += 0x40;
    0x000088ce add.w r2, fp, 1                                   |     r2 += arg_1h;
    0x000088d2 cmp fp, r3                                        |     
                                                                 |     if (fp != r3) {
    0x000088d4 beq 0x88da                                        |         
    0x000088d6 mov fp, r2                                        |         
    0x000088d8 b 0x8852                                          |         goto label_0;
                                                                 |     }
    0x000088da ldr r3, [sp, 0x14]                                |     r3 = var_14h;
                                                                 |     do {
                                                                 | label_2:
    0x000088dc ldr r1, [pc, 0x90]                                |         
    0x000088de ldr r2, [pc, 0x88]                                |         r2 = *(0x896a);
    0x000088e0 add r1, pc                                        |         r1 = 0x11254;
    0x000088e2 ldr r2, [r1, r2]                                  |         r2 = *(0x11254);
    0x000088e4 ldr r1, [r2]                                      |         r1 = *(0x11254);
    0x000088e6 ldr r2, [sp, 0x2c]                                |         r2 = var_2ch;
    0x000088e8 eors r1, r2                                       |         r1 ^= r2;
    0x000088ea mov.w r2, 0                                       |         r2 = 0;
                                                                 |         if (r1 != r2) {
    0x000088ee bne 0x8956                                        |             goto label_11;
                                                                 |         }
    0x000088f0 mov r0, r3                                        |         r0 = r3;
    0x000088f2 add sp, 0x34                                      |         
    0x000088f4 pop.w {r4, r5, r6, r7, r8, sb, sl, fp, pc}        |         
                                                                 | label_4:
    0x000088f8 mov r3, r5                                        |         r3 = r5;
    0x000088fa b 0x88dc                                          |         
                                                                 |     } while (1);
                                                                 | label_10:
    0x000088fc ldrd r2, r0, [sp, 8]                              |     __asm ("ldrd r2, r0, [var_8h]");
    0x00008900 mov ip, sb                                        |     
                                                                 |     do {
    0x00008902 ldrb r3, [ip, -0x1]!                              |         r3 = *((ip -= 0x1));
    0x00008906 lsls r2, r2, 8                                    |         r2 <<= 8;
    0x00008908 orr.w r2, r2, r0, lsr 24                          |         r2 |= (r0 >> 24);
    0x0000890c cmp r4, ip                                        |         
    0x0000890e orr.w r0, r3, r0, lsl 8                           |         r0 = r3 | (r0 << 8);
    0x00008912 bne 0x8902                                        |         
                                                                 |     } while (r4 != ip);
    0x00008914 b 0x8884                                          |     goto label_1;
                                                                 | label_3:
    0x00008916 mov r3, r4                                        |     r3 = r4;
    0x00008918 b 0x88dc                                          |     goto label_2;
                                                                 | label_6:
    0x0000891a lsl.w r0, r8, 4                                   |     r0 = r8 << 4;
    0x0000891e blx 0x21fc                                        |     fcn_000021fc ();
    0x00008922 ldr r3, [sp, 4]                                   |     r3 = var_4h;
    0x00008924 str r0, [r3]                                      |     *(r3) = r0;
                                                                 |     if (r0 != 0) {
    0x00008926 cbz r0, 0x895a                                    |         
    0x00008928 mov r3, r8                                        |         r3 = r8;
    0x0000892a b 0x88dc                                          |         goto label_2;
                                                                 | label_7:
    0x0000892c ldr r3, [pc, 0x44]                                |         
    0x0000892e movs r2, 0xca                                     |         r2 = 0xca;
    0x00008930 ldr r1, [pc, 0x44]                                |         
    0x00008932 ldr r0, [pc, 0x48]                                |         
    0x00008934 add r3, pc                                        |         r3 = 0x112ac;
    0x00008936 add r1, pc                                        |         r1 = 0x112b2;
    0x00008938 add r0, pc                                        |         r0 = 0x112ba;
    0x0000893a blx 0x246c                                        |         fcn_0000246c ();
                                                                 | label_9:
    0x0000893e ldr r3, [pc, 0x40]                                |         
    0x00008940 movs r2, 0x89                                     |         r2 = 0x89;
    0x00008942 ldr r1, [pc, 0x40]                                |         
    0x00008944 ldr r0, [pc, 0x40]                                |         
    0x00008946 add r3, pc                                        |         r3 = 0x112cc;
    0x00008948 add r1, pc                                        |         r1 = 0x112d2;
    0x0000894a add r0, pc                                        |         r0 = 0x112d6;
    0x0000894c blx 0x246c                                        |         fcn_0000246c ();
                                                                 | label_5:
    0x00008950 mvn r3, 0x15                                      |         r3 = ~0x15;
    0x00008954 b 0x88dc                                          |         goto label_2;
                                                                 | label_11:
    0x00008956 blx 0x2108                                        |         fcn_00002108 ();
                                                                 |     }
                                                                 | label_8:
    0x0000895a blx 0x22f4                                        |     r0 = gzerror ();
    0x0000895e ldr r3, [r0]                                      |     r3 = *(r0);
    0x00008960 rsbs r3, r3, 0                                    |     r3 -= ;
    0x00008962 b 0x88dc                                          |     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/lib/libkmod.so.2.3.7 @ 0x898c */
                                                                 | #include <stdint.h>
                                                                 |  
                                                                 | #define BIT_MASK(t,v) ((t)(-((v)!= 0)))&(((t)-1)>>((sizeof(t)*CHAR_BIT)-(v)))
                                                                 |  
    ; (fcn) fcn.0000898c ()                                      | void fcn_0000898c (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;
    0x0000898c ldr r2, [pc, 0x1ec]                               |     
    0x0000898e ldr r3, [pc, 0x1f0]                               |     r3 = *(0x8b82);
    0x00008990 push.w {r4, r5, r6, r7, r8, sb, sl, fp, lr}       |     
    0x00008994 sub sp, 0x44                                      |     
    0x00008996 add r2, pc                                        |     r2 = 0x11516;
    0x00008998 ldr.w r8, [r0, 0x38]                              |     r8 = *((r0 + 0x38));
    0x0000899c mov r7, r1                                        |     r7 = r1;
    0x0000899e ldr r3, [r2, r3]                                  |     
    0x000089a0 ldr r2, [r0, 0x30]                                |     r2 = *((r0 + 0x30));
    0x000089a2 ldr.w fp, [r0, 8]                                 |     fp = *((r0 + 8));
    0x000089a6 ldr r3, [r3]                                      |     r3 = *(0x11516);
    0x000089a8 str r3, [sp, 0x3c]                                |     var_3ch = r3;
    0x000089aa mov.w r3, 0                                       |     r3 = 0;
    0x000089ae ldr r3, [r0, 0x3c]                                |     r3 = *((r0 + 0x3c));
    0x000089b0 str r2, [sp, 0x14]                                |     var_14h = r2;
    0x000089b2 ldr r2, [r0, 0xc]                                 |     r2 = *((r0 + 0xc));
    0x000089b4 cmp r8, fp                                        |     
    0x000089b6 ldr r1, [r0, 0x34]                                |     r1 = *((r0 + 0x34));
    0x000089b8 sbcs r3, r2                                       |     __asm ("sbcs r3, r2");
    0x000089ba str r2, [sp, 0x1c]                                |     var_1ch = r2;
    0x000089bc str r1, [sp, 0x18]                                |     var_18h = r1;
                                                                 |     if (r8 >= fp) {
    0x000089be bhs.w 0x8b60                                      |         goto label_5;
                                                                 |     }
    0x000089c2 ldrh r6, [r0, 0x20]                               |     r6 = *((r0 + 0x20));
    0x000089c4 mov r4, r0                                        |     r4 = r0;
    0x000089c6 ldr r3, [r0]                                      |     r3 = *(r0);
    0x000089c8 cmp r6, 1                                         |     
    0x000089ca str r3, [sp, 0x10]                                |     var_10h = r3;
                                                                 |     if (r6 < 1) {
    0x000089cc bls 0x8ac4                                        |         goto label_6;
                                                                 |     }
    0x000089ce movs r5, 1                                        |     r5 = 1;
    0x000089d0 add.w sl, sp, 0x30                                |     sl += var_30h;
    0x000089d4 add.w sb, sp, 0x28                                |     sb += var_28h;
    0x000089d8 add r3, sp, 0x24                                  |     r3 += var_24h;
    0x000089da str r3, [sp, 0xc]                                 |     var_ch = r3;
                                                                 | label_0:
    0x000089dc ldr r3, [sp, 0xc]                                 |     r3 = var_ch;
    0x000089de mov r2, sb                                        |     r2 = sb;
    0x000089e0 mov r1, r5                                        |     r1 = r5;
    0x000089e2 mov r0, r4                                        |     r0 = r4;
    0x000089e4 str r3, [sp]                                      |     *(sp) = r3;
    0x000089e6 mov r3, sl                                        |     r3 = sl;
    0x000089e8 bl 0x7f38                                         |     r0 = fcn_00007f38 (r0, r1, r2, r3);
    0x000089ec cmp r0, 0                                         |     
                                                                 |     if (r0 < 0) {
    0x000089ee blt 0x8abc                                        |         goto label_7;
                                                                 |     }
    0x000089f0 ldr r3, [sp, 0x14]                                |     r3 = var_14h;
    0x000089f2 movs r2, 0                                        |     r2 = 0;
    0x000089f4 ldr r1, [sp, 0x24]                                |     r1 = var_24h;
    0x000089f6 cmp r1, r3                                        |     
    0x000089f8 ldr r3, [sp, 0x18]                                |     r3 = var_18h;
    0x000089fa sbcs.w r3, r2, r3                                 |     __asm ("sbcs.w r3, r2, r3");
                                                                 |     if (r1 >= r3) {
    0x000089fe bhs 0x8abc                                        |         goto label_7;
                                                                 |     }
    0x00008a00 ldr r3, [sp, 0x10]                                |     r3 = var_10h;
    0x00008a02 add r1, r8                                        |     r1 += r8;
    0x00008a04 mov r0, r7                                        |     r0 = r7;
    0x00008a06 add r1, r3                                        |     r1 += r3;
    0x00008a08 blx 0x201c                                        |     r0 = fcn_0000201c ();
    0x00008a0c mov r3, r0                                        |     r3 = r0;
    0x00008a0e cmp r0, 0                                         |     
                                                                 |     if (r0 != 0) {
    0x00008a10 bne 0x8abc                                        |         goto label_7;
                                                                 |     }
    0x00008a12 cmp r5, r6                                        |     
                                                                 |     if (r5 >= r6) {
    0x00008a14 bhs.w 0x8b6c                                      |         goto label_8;
                                                                 |     }
    0x00008a16 strh r2, [r5, 4]                                  |     *((r5 + 4)) = r2;
    0x00008a18 ldrh r2, [r4, 0x22]                               |     r2 = *((r4 + 0x22));
    0x00008a1a ldr r7, [r4, 0x18]                                |     r7 = *((r4 + 0x18));
    0x00008a1c ldr r1, [r4, 0x1c]                                |     r1 = *((r4 + 0x1c));
    0x00008a1e mul r2, r5, r2                                    |     r2 = r5 * r2;
    0x00008a22 adds r7, r2, r7                                   |     r7 = r2 + r7;
    0x00008a24 adc.w r1, r1, r2, asr 31                          |     __asm ("adc.w r1, r1, r2, asr 31");
    0x00008a28 ldr r2, [sp, 0x1c]                                |     r2 = var_1ch;
    0x00008a2a cmp r7, fp                                        |     
    0x00008a2c sbcs r1, r2                                       |     __asm ("sbcs r1, r2");
                                                                 |     if (r7 >= fp) {
    0x00008a2e bhs.w 0x8b60                                      |         goto label_5;
                                                                 |     }
    0x00008a32 ldr r1, [r4, 0x10]                                |     r1 = *((r4 + 0x10));
    0x00008a34 asrs r2, r7, 0x1f                                 |     r2 = r7 >> 0x1f;
    0x00008a36 adds r7, 8                                        |     r7 += 8;
    0x00008a38 adc r2, r2, 0                                     |     __asm ("adc r2, r2, 0");
    0x00008a3c lsls r0, r1, 0x1e                                 |     r0 = r1 << 0x1e;
    0x00008a3e itt pl                                            |     
                                                                 |     if (r0 < r1) {
    0x00008a40 movpl r5, 8                                       |         r5 = 8;
                                                                 |     }
                                                                 |     if (r0 < r1) {
    0x00008a42 movpl r6, r5                                      |         r6 = r5;
                                                                 |     }
                                                                 |     if (r0 < r1) {
    0x00008a44 bmi 0x8aca                                        |         goto label_9;
                                                                 |     }
                                                                 | label_2:
    0x00008a46 adds r0, r7, r6                                   |     r0 = r7 + r6;
    0x00008a48 adc r2, r2, 0                                     |     __asm ("adc r2, r2, 0");
    0x00008a4c cmp fp, r0                                        |     
    0x00008a4e ldr r0, [sp, 0x1c]                                |     r0 = var_1ch;
    0x00008a50 sbcs r0, r2                                       |     __asm ("sbcs r0, r2");
                                                                 |     if (fp <= r0) {
    0x00008a52 blo.w 0x8b64                                      |         goto label_10;
                                                                 |     }
    0x00008a56 ldr r2, [sp, 0x10]                                |     r2 = var_10h;
    0x00008a58 ands r1, r1, 0x10                                 |     r1 &= 0x10;
    0x00008a5c add.w r0, r2, r7                                  |     r0 = r2 + r7;
                                                                 |     if (r1 == r1) {
    0x00008a60 beq 0x8ad0                                        |         goto label_11;
                                                                 |     }
    0x00008a62 subs r0, 1                                        |     r0--;
    0x00008a64 movs r1, 0                                        |     r1 = 0;
    0x00008a66 add r5, r0                                        |     r5 += r0;
    0x00008a68 mov r2, r1                                        |     r2 = r1;
                                                                 |     do {
    0x00008a6a ldrb ip, [r0, 1]!                                 |         ip = *((r0 += 1));
    0x00008a6e lsls r2, r2, 8                                    |         r2 <<= 8;
    0x00008a70 orr.w r2, r2, r1, lsr 24                          |         r2 |= (r1 >> 24);
    0x00008a74 cmp r0, r5                                        |         
    0x00008a76 orr.w r1, ip, r1, lsl 8                           |         r1 = ip | (r1 << 8);
    0x00008a7a bne 0x8a6a                                        |         
                                                                 |     } while (r0 != r5);
    0x00008a7c bic r8, r1, 2                                     |     r8 = BIT_MASK (r1, 2);
    0x00008a80 ldr r1, [r4, 4]                                   |     r1 = *((r4 + 4));
    0x00008a82 mov r5, r2                                        |     r5 = r2;
    0x00008a84 cmp r1, 0                                         |     
                                                                 |     if (r1 == 0) {
    0x00008a86 beq 0x8b3a                                        |         goto label_12;
                                                                 |     }
    0x00008a88 add r1, r7                                        |     r1 += r7;
                                                                 | label_4:
    0x00008a8a add r6, r1                                        |     r6 += r1;
                                                                 |     do {
    0x00008a8c strb r8, [r6, -0x1]!                              |         *((r6 -= 0x1)) = r8;
    0x00008a90 lsr.w r2, r8, 8                                   |         r2 = r8 >> 8;
    0x00008a94 cmp r1, r6                                        |         
    0x00008a96 orr.w r8, r2, r5, lsl 24                          |         r8 = r2 | (r5 << 24);
    0x00008a9a lsr.w r5, r5, 8                                   |         r5 >>= 8;
    0x00008a9e bne 0x8a8c                                        |         
                                                                 |     } while (r1 != r6);
                                                                 | label_1:
    0x00008aa0 ldr r1, [pc, 0xe0]                                |     
    0x00008aa2 ldr r2, [pc, 0xdc]                                |     r2 = *(0x8b82);
    0x00008aa4 add r1, pc                                        |     r1 = 0x1162c;
    0x00008aa6 ldr r2, [r1, r2]                                  |     r2 = *(0x1162c);
    0x00008aa8 ldr r1, [r2]                                      |     r1 = *(0x1162c);
    0x00008aaa ldr r2, [sp, 0x3c]                                |     r2 = var_3ch;
    0x00008aac eors r1, r2                                       |     r1 ^= r2;
    0x00008aae mov.w r2, 0                                       |     r2 = 0;
                                                                 |     if (r1 != r2) {
    0x00008ab2 bne 0x8b68                                        |         goto label_13;
                                                                 |     }
    0x00008ab4 mov r0, r3                                        |     r0 = r3;
    0x00008ab6 add sp, 0x44                                      |     
    0x00008ab8 pop.w {r4, r5, r6, r7, r8, sb, sl, fp, pc}        |     
                                                                 | label_7:
    0x00008abc adds r5, 1                                        |     r5++;
    0x00008abe uxth r5, r5                                       |     r5 = (int16_t) r5;
    0x00008ac0 cmp r5, r6                                        |     
                                                                 |     if (r5 != r6) {
    0x00008ac2 bne 0x89dc                                        |         goto label_0;
                                                                 |     }
                                                                 | label_6:
    0x00008ac4 mvn r3, 1                                         |     r3 = ~1;
    0x00008ac8 b 0x8aa0                                          |     goto label_1;
                                                                 | label_9:
    0x00008aca movs r5, 4                                        |     r5 = 4;
    0x00008acc mov r6, r5                                        |     r6 = r5;
    0x00008ace b 0x8a46                                          |     goto label_2;
                                                                 | label_11:
    0x00008ad0 add.w ip, r0, r5                                  |     
    0x00008ad4 mov lr, r1                                        |     lr = r1;
                                                                 |     do {
    0x00008ad6 ldrb r2, [ip, -0x1]!                              |         r2 = *((ip -= 0x1));
    0x00008ada lsl.w lr, lr, 8                                   |         lr <<= 8;
    0x00008ade orr.w lr, lr, r1, lsr 24                          |         lr |= (r1 >> 24);
    0x00008ae2 orr.w r1, r2, r1, lsl 8                           |         r1 = r2 | (r1 << 8);
    0x00008ae6 rsb.w r2, ip, 1                                   |         r2 = 1 - ip;
    0x00008aea add r2, r0                                        |         r2 += r0;
    0x00008aec add r2, r5                                        |         r2 += r5;
    0x00008aee cmp r2, r5                                        |         
    0x00008af0 bls 0x8ad6                                        |         
                                                                 |     } while (r2 < r5);
    0x00008af2 ldr r2, [r4, 4]                                   |     r2 = *((r4 + 4));
    0x00008af4 bic r5, r1, 2                                     |     r5 = BIT_MASK (r1, 2);
    0x00008af8 mov r8, lr                                        |     r8 = lr;
                                                                 |     if (r2 == 0) {
    0x00008afa cbz r2, 0x8b14                                    |         goto label_14;
                                                                 |     }
    0x00008afc add r2, r7                                        |     r2 += r7;
                                                                 | label_3:
    0x00008afe add r6, r2                                        |     r6 += r2;
                                                                 |     do {
    0x00008b00 strb r5, [r2], 1                                  |         *(r2) = r5;
                                                                 |         r2++;
    0x00008b04 lsrs r1, r5, 8                                    |         r1 = r5 >> 8;
    0x00008b06 cmp r6, r2                                        |         
    0x00008b08 orr.w r5, r1, r8, lsl 24                          |         r5 = r1 | (r8 << 24);
    0x00008b0c lsr.w r8, r8, 8                                   |         r8 >>= 8;
    0x00008b10 bne 0x8b00                                        |         
                                                                 |     } while (r6 != r2);
    0x00008b12 b 0x8aa0                                          |     goto label_1;
                                                                 | label_14:
    0x00008b14 mov r0, fp                                        |     r0 = fp;
    0x00008b16 str r3, [sp, 0xc]                                 |     var_ch = r3;
    0x00008b18 blx 0x21fc                                        |     fcn_000021fc ();
    0x00008b1c ldr r3, [sp, 0xc]                                 |     r3 = var_ch;
    0x00008b1e mov sb, r0                                        |     sb = r0;
    0x00008b20 str r0, [r4, 4]                                   |     *((r4 + 4)) = r0;
                                                                 |     if (r0 != 0) {
    0x00008b22 cbz r0, 0x8b70                                    |         
    0x00008b24 mov r2, fp                                        |         r2 = fp;
    0x00008b26 ldr r1, [sp, 0x10]                                |         r1 = var_10h;
    0x00008b28 str r3, [sp, 0xc]                                 |         var_ch = r3;
    0x00008b2a blx 0x20c0                                        |         mmap64 ()
    0x00008b2e ldr r3, [sp, 0xc]                                 |         r3 = var_ch;
    0x00008b30 add.w r2, sb, r7                                  |         r2 = sb + r7;
    0x00008b34 str.w sb, [r4]                                    |         __asm ("str.w sb, [r4]");
    0x00008b38 b 0x8afe                                          |         goto label_3;
                                                                 | label_12:
    0x00008b3a mov r0, fp                                        |         r0 = fp;
    0x00008b3c str r3, [sp, 0xc]                                 |         var_ch = r3;
    0x00008b3e blx 0x21fc                                        |         fcn_000021fc ();
    0x00008b42 ldr r3, [sp, 0xc]                                 |         r3 = var_ch;
    0x00008b44 mov sb, r0                                        |         sb = r0;
    0x00008b46 str r0, [r4, 4]                                   |         *((r4 + 4)) = r0;
                                                                 |         if (r0 == 0) {
    0x00008b48 cbz r0, 0x8b70                                    |             goto label_15;
                                                                 |         }
    0x00008b4a ldr r1, [sp, 0x10]                                |         r1 = var_10h;
    0x00008b4c mov r2, fp                                        |         r2 = fp;
    0x00008b4e str r3, [sp, 0xc]                                 |         var_ch = r3;
    0x00008b50 blx 0x20c0                                        |         mmap64 ()
    0x00008b54 ldr r3, [sp, 0xc]                                 |         r3 = var_ch;
    0x00008b56 add.w r1, sb, r7                                  |         r1 = sb + r7;
    0x00008b5a str.w sb, [r4]                                    |         __asm ("str.w sb, [r4]");
    0x00008b5e b 0x8a8a                                          |         goto label_4;
                                                                 | label_5:
    0x00008b60 bl 0x7ed8                                         |         fcn_00007ed8 ();
                                                                 | label_10:
    0x00008b64 bl 0x7ef8                                         |         fcn_00007ef8 ();
                                                                 | label_13:
    0x00008b68 blx 0x2108                                        |         fcn_00002108 ();
                                                                 | label_8:
    0x00008b6c bl 0x7f18                                         |         fcn_00007f18 ();
                                                                 |     }
                                                                 | label_15:
    0x00008b70 blx 0x22f4                                        |     r0 = gzerror ();
    0x00008b74 ldr r3, [r0]                                      |     r3 = *(r0);
    0x00008b76 rsbs r3, r3, 0                                    |     r3 -= ;
    0x00008b78 b 0x8aa0                                          |     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/lib/libkmod.so.2.3.7 @ 0x8b88 */
                                                                     | #include <stdint.h>
                                                                     |  
    ; (fcn) fcn.00008b88 ()                                          | void fcn_00008b88 (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;
    0x00008b88 push.w {r4, r5, r6, r7, r8, sb, sl, fp, lr}           |     
    0x00008b8c sub sp, 0x24                                          |     
    0x00008b8e ldr r5, [pc, 0x130]                                   |     
    0x00008b90 add r3, sp, 0x10                                      |     r3 += var_10h;
    0x00008b92 add r2, sp, 0xc                                       |     r2 += var_ch;
    0x00008b94 mov r7, r0                                            |     r7 = r0;
    0x00008b96 ldr r4, [pc, 0x12c]                                   |     r4 = *(0x8cc6);
    0x00008b98 add r5, pc                                            |     r5 = 0x1185e;
    0x00008b9a ldr r1, [pc, 0x12c]                                   |     
    0x00008b9c ldr r4, [r5, r4]                                      |     
    0x00008b9e add r1, pc                                            |     r1 = 0x1186c;
    0x00008ba0 ldr r4, [r4]                                          |     r4 = *(0x1185e);
    0x00008ba2 str r4, [sp, 0x1c]                                    |     var_1ch = r4;
    0x00008ba4 mov.w r4, 0                                           |     r4 = 0;
    0x00008ba8 bl 0x84c4                                             |     r0 = fcn_000084c4 (r0, r1, r2, r3);
    0x00008bac subs r3, r0, 0                                        |     r3 = r0 - 0;
                                                                     |     if (r3 < r0) {
    0x00008bae blt 0x8be0                                            |         goto label_0;
                                                                     |     }
    0x00008bb0 ldr r6, [sp, 0xc]                                     |     r6 = var_ch;
                                                                     |     if (r6 == 0) {
    0x00008bb2 cbz r6, 0x8bde                                        |         goto label_4;
                                                                     |     }
    0x00008bb4 ldrd r4, r5, [sp, 0x10]                               |     __asm ("ldrd r4, r5, [var_10h]");
    0x00008bb8 orrs.w r3, r4, r5                                     |     r3 = r4 | r5;
                                                                     |     if (r3 == r4) {
    0x00008bbc beq 0x8bde                                            |         goto label_4;
                                                                     |     }
    0x00008bbe ldrb r3, [r6]                                         |     r3 = *(r6);
                                                                     |     if (r3 != 0) {
    0x00008bc0 cbnz r3, 0x8c00                                       |         goto label_5;
                                                                     |     }
    0x00008bc2 adds r3, r6, 1                                        |     r3 = r6 + 1;
    0x00008bc4 b 0x8bd6                                              |     
                                                                     |     while (r1 != r2) {
    0x00008bc6 subs r4, 1                                            |         r4--;
    0x00008bc8 mov r6, r3                                            |         r6 = r3;
    0x00008bca mov r4, r2                                            |         r4 = r2;
    0x00008bcc ldrb r2, [r3], 1                                      |         r2 = *(r3);
                                                                     |         r3++;
    0x00008bd0 sbc r5, r5, 0                                         |         __asm ("sbc r5, r5, 0");
                                                                     |         if (r2 != 0) {
    0x00008bd4 cbnz r2, 0x8bfc                                       |             goto label_6;
                                                                     |         }
    0x00008bd6 subs r2, r4, 1                                        |         r2 = r4 - 1;
    0x00008bd8 orrs.w r1, r2, r5                                     |         r1 = r2 | r5;
    0x00008bdc bne 0x8bc6                                            |         
                                                                     |     }
                                                                     |     do {
                                                                     | label_4:
    0x00008bde movs r3, 0                                            |         r3 = 0;
                                                                     | label_0:
    0x00008be0 ldr r1, [pc, 0xe8]                                    |         
    0x00008be2 ldr r2, [pc, 0xe0]                                    |         r2 = *(0x8cc6);
    0x00008be4 add r1, pc                                            |         r1 = 0x118b4;
    0x00008be6 ldr r2, [r1, r2]                                      |         r2 = *(0x118b4);
    0x00008be8 ldr r1, [r2]                                          |         r1 = *(0x118b4);
    0x00008bea ldr r2, [sp, 0x1c]                                    |         r2 = var_1ch;
    0x00008bec eors r1, r2                                           |         r1 ^= r2;
    0x00008bee mov.w r2, 0                                           |         r2 = 0;
                                                                     |         if (r1 != r2) {
    0x00008bf2 bne 0x8cb0                                            |             goto label_7;
                                                                     |         }
    0x00008bf4 mov r0, r3                                            |         r0 = r3;
    0x00008bf6 add sp, 0x24                                          |         
    0x00008bf8 pop.w {r4, r5, r6, r7, r8, sb, sl, fp, pc}            |         
                                                                     | label_6:
    0x00008bfc strd r4, r5, [sp, 0x10]                               |         __asm ("strd r4, r5, [var_10h]");
                                                                     | label_5:
    0x00008c00 subs r3, r4, 1                                        |         r3 = r4 - 1;
    0x00008c02 orrs r3, r5                                           |         r3 |= r5;
    0x00008c04 beq 0x8bde                                            |         
                                                                     |     } while (r3 == r5);
    0x00008c06 ldr.w fp, [pc, 0xc8]                                  |     
    0x00008c0a movs r3, 0                                            |     r3 = 0;
    0x00008c0c mov r2, r3                                            |     r2 = r3;
    0x00008c0e add fp, pc                                            |     fp = 0x118e4;
                                                                     |     do {
                                                                     | label_2:
    0x00008c10 ldrb r1, [r6, r3]                                     |         r1 = *((r6 + r3));
    0x00008c12 adds.w r8, r3, 1                                      |         r8 = r3 + 1;
    0x00008c16 add.w sl, r6, r3                                      |         sl = r6 + r3;
    0x00008c1a adc sb, r2, 0                                         |         __asm ("adc sb, r2, 0");
                                                                     |         if (r1 != 0) {
    0x00008c1e cbz r1, 0x8c62                                        |             
    0x00008c20 cmp r8, r4                                            |             
    0x00008c22 sbcs.w r1, sb, r5                                     |             __asm ("sbcs.w r1, sb, r5");
                                                                     |             if (r8 >= r4) {
    0x00008c26 bhs 0x8c6e                                            |                 goto label_8;
                                                                     |             }
    0x00008c28 adds r3, 9                                            |             r3 += 9;
    0x00008c2a adc r2, r2, 0                                         |             __asm ("adc r2, r2, 0");
    0x00008c2e cmp r3, r4                                            |             
    0x00008c30 sbcs r2, r5                                           |             __asm ("sbcs r2, r5");
                                                                     |             if (r3 >= r4) {
    0x00008c32 bhs 0x8c9a                                            |                 goto label_9;
                                                                     |             }
    0x00008c34 movs r2, 9                                            |             r2 = 9;
    0x00008c36 mov r1, fp                                            |             r1 = fp;
    0x00008c38 mov r0, sl                                            |             r0 = sl;
    0x00008c3a blx 0x243c                                            |             r0 = fcn_0000243c ();
    0x00008c3e mov r3, r0                                            |             r3 = r0;
                                                                     |             if (r0 != 0) {
    0x00008c40 cbnz r0, 0x8ca0                                       |                 goto label_10;
                                                                     |             }
    0x00008c42 ldr r4, [r7, 4]                                       |             r4 = *((r7 + 4));
    0x00008c44 ldr r5, [r7]                                          |             r5 = *(r7);
    0x00008c46 sub.w r6, sl, r5                                      |             r6 = sl - r5;
                                                                     |             if (r4 == 0) {
    0x00008c4a cbz r4, 0x8c74                                        |                 goto label_11;
                                                                     |             }
                                                                     | label_1:
    0x00008c4c mov r0, sl                                            |             r0 = sl;
    0x00008c4e str r3, [sp, 4]                                       |             var_4h = r3;
    0x00008c50 blx 0x22a8                                            |             fcn_000022a8 ();
    0x00008c54 movs r1, 0                                            |             r1 = 0;
    0x00008c56 mov r2, r0                                            |             r2 = r0;
    0x00008c58 adds r0, r4, r6                                       |             r0 = r4 + r6;
    0x00008c5a blx 0x2324                                            |             write (r0, r1, r2);
    0x00008c5e ldr r3, [sp, 4]                                       |             r3 = var_4h;
    0x00008c60 b 0x8be0                                              |             goto label_0;
                                                                     |         }
    0x00008c62 mov r3, r8                                            |         r3 = r8;
    0x00008c64 mov r2, sb                                            |         r2 = sb;
                                                                     | label_3:
    0x00008c66 cmp r3, r4                                            |         
    0x00008c68 sbcs.w r1, r2, r5                                     |         __asm ("sbcs.w r1, r2, r5");
    0x00008c6c blo 0x8c10                                            |         
                                                                     |     } while (r3 <= r4);
                                                                     | label_8:
    0x00008c6e mvn r3, 1                                             |     r3 = ~1;
    0x00008c72 b 0x8be0                                              |     goto label_0;
                                                                     | label_11:
    0x00008c74 ldr.w r8, [r7, 8]                                     |     r8 = *((r7 + 8));
    0x00008c78 str r0, [sp, 4]                                       |     var_4h = r0;
    0x00008c7a mov r0, r8                                            |     r0 = r8;
    0x00008c7c blx 0x21fc                                            |     fcn_000021fc ();
    0x00008c80 ldr r3, [sp, 4]                                       |     r3 = var_4h;
    0x00008c82 mov r4, r0                                            |     r4 = r0;
    0x00008c84 str r0, [r7, 4]                                       |     *((r7 + 4)) = r0;
                                                                     |     if (r0 != 0) {
    0x00008c86 cbz r0, 0x8cb4                                        |         
    0x00008c88 mov r2, r8                                            |         r2 = r8;
    0x00008c8a mov r1, r5                                            |         r1 = r5;
    0x00008c8c str r3, [sp, 4]                                       |         var_4h = r3;
    0x00008c8e blx 0x20c0                                            |         mmap64 ()
    0x00008c92 str r4, [r7]                                          |         *(r7) = r4;
    0x00008c94 ldr r3, [sp, 4]                                       |         r3 = var_4h;
    0x00008c96 ldr r4, [r7, 4]                                       |         r4 = *((r7 + 4));
    0x00008c98 b 0x8c4c                                              |         goto label_1;
                                                                     | label_9:
    0x00008c9a mov r3, r8                                            |         r3 = r8;
    0x00008c9c mov r2, sb                                            |         r2 = sb;
    0x00008c9e b 0x8c10                                              |         goto label_2;
                                                                     | label_10:
    0x00008ca0 mov r0, sl                                            |         r0 = sl;
    0x00008ca2 blx 0x22a8                                            |         r0 = fcn_000022a8 ();
    0x00008ca6 adds.w r3, r0, r8                                     |         r3 = r0 + r8;
    0x00008caa adc r2, sb, 0                                         |         __asm ("adc r2, sb, 0");
    0x00008cae b 0x8c66                                              |         goto label_3;
                                                                     | label_7:
    0x00008cb0 blx 0x2108                                            |         fcn_00002108 ();
                                                                     |     }
    0x00008cb4 blx 0x22f4                                            |     r0 = gzerror ();
    0x00008cb8 ldr r3, [r0]                                          |     r3 = *(r0);
    0x00008cba rsbs r3, r3, 0                                        |     r3 -= ;
    0x00008cbc b 0x8be0                                              |     goto label_0;
                                                                     | }
    ; assembly                                                   | /* r2dec pseudo code output */
                                                                 | /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/lib/libkmod.so.2.3.7 @ 0x8cd4 */
                                                                 | #include <stdint.h>
                                                                 |  
    ; (fcn) fcn.00008cd4 ()                                      | void fcn_00008cd4 (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;
    0x00008cd4 push.w {r4, r5, r6, r7, r8, sb, sl, fp, lr}       |     
    0x00008cd8 mov r5, r0                                        |     r5 = r0;
    0x00008cda vpush {d8}                                        |     __asm ("vpush {d8}");
    0x00008cde sub sp, 0xa4                                      |     
    0x00008ce0 add r3, sp, 0x78                                  |     r3 += var_78h;
    0x00008ce2 add r2, sp, 0x6c                                  |     r2 += var_6ch;
    0x00008ce4 ldr.w r4, [pc, 0x758]                             |     r4 = *(0x00009440);
    0x00008ce8 strd r0, r1, [sp, 0x38]                           |     __asm ("strd r0, r1, [var_38h]");
    0x00008cec ldr.w r1, [pc, 0x754]                             |     
    0x00008cf0 add r4, pc                                        |     r4 += pc;
    0x00008cf2 ldr r1, [r4, r1]                                  |     r1 = *((r4 + r1));
    0x00008cf4 ldr r1, [r1]                                      |     r1 = *(0x9444);
    0x00008cf6 str r1, [sp, 0x9c]                                |     var_9ch = r1;
    0x00008cf8 mov.w r1, 0                                       |     r1 = 0;
    0x00008cfc ldr.w r1, [pc, 0x748]                             |     
    0x00008d00 add r1, pc                                        |     r1 = 0x1214c;
    0x00008d02 bl 0x84c4                                         |     r0 = fcn_000084c4 (r0, r1, r2, r3);
    0x00008d06 cmp r0, 0                                         |     
                                                                 |     if (r0 < 0) {
    0x00008d08 blt.w 0x8e8c                                      |         goto label_7;
                                                                 |     }
    0x00008d0c ldr.w r1, [pc, 0x73c]                             |     
    0x00008d10 add r3, sp, 0x80                                  |     r3 += var_80h;
    0x00008d12 add r2, sp, 0x70                                  |     r2 += var_70h;
    0x00008d14 mov r0, r5                                        |     r0 = r5;
    0x00008d16 add r1, pc                                        |     r1 = 0x12166;
    0x00008d18 bl 0x84c4                                         |     r0 = fcn_000084c4 (r0, r1, r2, r3);
    0x00008d1c cmp r0, 0                                         |     
                                                                 |     if (r0 < 0) {
    0x00008d1e blt.w 0x8e8c                                      |         goto label_7;
                                                                 |     }
    0x00008d22 ldr r4, [r5, 0x10]                                |     r4 = *((r5 + 0x10));
    0x00008d24 ldrd r0, r1, [sp, 0x80]                           |     __asm ("ldrd r0, r1, [var_80h]");
    0x00008d28 ands r3, r4, 2                                    |     r3 = r4 & 2;
    0x00008d2c str r3, [sp, 0x18]                                |     var_18h = r3;
    0x00008d2e ite eq                                            |     
                                                                 |     if (r3 != r4) {
    0x00008d30 moveq r3, 0x18                                    |         r3 = 0x18;
                                                                 |     }
                                                                 |     if (r3 == r4) {
    0x00008d32 movne r3, 0x10                                    |         r3 = 0x10;
                                                                 |     }
    0x00008d34 str r3, [sp, 0x10]                                |     var_10h = r3;
    0x00008d36 mov r5, r3                                        |     r5 = r3;
    0x00008d38 ldr r2, [sp, 0x10]                                |     r2 = var_10h;
    0x00008d3a movs r3, 0                                        |     r3 = 0;
    0x00008d3c bl 0xac00                                         |     fcn_0000ac00 (r0, r1, r2, r3);
    0x00008d40 str r3, [sp, 0x4c]                                |     var_4ch = r3;
    0x00008d42 orrs r3, r2                                       |     r3 |= r2;
    0x00008d44 str r0, [sp, 0x2c]                                |     var_2ch = r0;
    0x00008d46 str r2, [sp, 0xc]                                 |     var_ch = r2;
                                                                 |     if (r3 != r2) {
    0x00008d48 bne.w 0x8e8c                                      |         goto label_7;
                                                                 |     }
    0x00008d4c ldr r1, [sp, 0x38]                                |     r1 = var_38h;
    0x00008d4e cmp r0, 1                                         |     
    0x00008d50 ldr r3, [sp, 0x70]                                |     r3 = var_70h;
    0x00008d52 ldr.w r8, [r1]                                    |     r8 = *(r1);
    0x00008d56 sub.w r3, r3, r8                                  |     r3 -= r8;
    0x00008d5a add.w r2, r3, r5                                  |     r2 = r3 + r5;
    0x00008d5e ldr r3, [sp, 0x6c]                                |     r3 = var_6ch;
    0x00008d60 str r2, [sp, 0x54]                                |     var_54h = r2;
    0x00008d62 str r2, [sp, 0x58]                                |     var_58h = r2;
    0x00008d64 sub.w r3, r3, r8                                  |     r3 -= r8;
    0x00008d68 str r3, [sp, 0x20]                                |     var_20h = r3;
    0x00008d6a asr.w r3, r3, 0x1f                                |     r3 >>= 0x1f;
    0x00008d6e str r3, [sp, 0x24]                                |     var_24h = r3;
    0x00008d70 mov r3, r2                                        |     r3 = r2;
    0x00008d72 mov.w r2, 0                                       |     r2 = 0;
    0x00008d76 str r2, [sp, 0x28]                                |     var_28h = r2;
                                                                 |     if (r0 <= 1) {
    0x00008d78 ble.w 0x8e8c                                      |         goto label_7;
                                                                 |     }
    0x00008d7c mov sb, r3                                        |     sb = r3;
    0x00008d7e ldr.w fp, [pc, 0x6d0]                             |     
    0x00008d82 movs r3, 1                                        |     r3 = 1;
    0x00008d84 and r2, r4, 0x10                                  |     r2 = r4 & 0x10;
    0x00008d88 str r3, [sp, 8]                                   |     var_8h = r3;
    0x00008d8a add.w r3, r8, 4                                   |     r3 = r8 + 4;
    0x00008d8e str r3, [sp, 0x40]                                |     var_40h = r3;
    0x00008d90 add.w r3, r8, -1                                  |     r3 = r8 + -1;
    0x00008d94 add fp, pc                                        |     fp = 0x121ea;
    0x00008d96 str r2, [sp, 0x14]                                |     var_14h = r2;
    0x00008d98 str r3, [sp, 0x44]                                |     var_44h = r3;
    0x00008d9a add.w r3, r8, 3                                   |     r3 = r8 + 3;
    0x00008d9e ldr r2, [sp, 0x78]                                |     r2 = var_78h;
    0x00008da0 movs r5, 0                                        |     r5 = 0;
    0x00008da2 str r3, [sp, 0x48]                                |     var_48h = r3;
    0x00008da4 mov r3, fp                                        |     r3 = fp;
    0x00008da6 mov fp, sb                                        |     
    0x00008da8 mov sb, r3                                        |     sb = r3;
    0x00008daa ldr r3, [sp, 0x18]                                |     r3 = var_18h;
    0x00008dac mov r6, r5                                        |     r6 = r5;
    0x00008dae str r2, [sp, 0x30]                                |     var_30h = r2;
    0x00008db0 ldr r2, [sp, 0x7c]                                |     r2 = var_7ch;
    0x00008db2 ldrd r7, sl, [r1, 8]                              |     __asm ("ldrd r7, sl, [r1, 8]");
    0x00008db6 adds.w r1, fp, 4                                  |     r1 += arg_4h;
    0x00008dba str r5, [sp, 0x1c]                                |     var_1ch = r5;
    0x00008dbc str r2, [sp, 0x34]                                |     var_34h = r2;
    0x00008dbe adc r2, r5, 0                                     |     __asm ("adc r2, r5, 0");
    0x00008dc2 cmp r3, 0                                         |     
                                                                 |     if (r3 == 0) {
    0x00008dc4 beq 0x8e5c                                        |         goto label_11;
                                                                 |     }
                                                                 | label_0:
    0x00008dc6 cmp r7, r1                                        |     
    0x00008dc8 sbcs.w r2, sl, r2                                 |     __asm ("sbcs.w r2, sl, r2");
                                                                 |     if (r7 <= r1) {
    0x00008dcc blo.w 0x9414                                      |         goto label_12;
                                                                 |     }
    0x00008dd0 ldr r3, [sp, 0x14]                                |     r3 = var_14h;
    0x00008dd2 add.w r0, r8, fp                                  |     r0 = r8 + fp;
    0x00008dd6 cmp r3, 0                                         |     
                                                                 |     if (r3 == 0) {
    0x00008dd8 beq.w 0x8f02                                      |         goto label_13;
                                                                 |     }
    0x00008ddc ldr r3, [sp, 0x44]                                |     r3 = var_44h;
    0x00008dde ldr r4, [sp, 0xc]                                 |     r4 = var_ch;
    0x00008de0 add.w r2, r3, fp                                  |     r2 = r3 + fp;
    0x00008de4 ldr r3, [sp, 0x48]                                |     r3 = var_48h;
    0x00008de6 add.w r0, r3, fp                                  |     r0 = r3 + fp;
                                                                 |     do {
    0x00008dea ldrb r3, [r2, 1]!                                 |         r3 = *((r2 += 1));
    0x00008dee cmp r2, r0                                        |         
    0x00008df0 orr.w r4, r3, r4, lsl 8                           |         r4 = r3 | (r4 << 8);
    0x00008df4 bne 0x8dea                                        |         
                                                                 |     } while (r2 != r0);
                                                                 | label_1:
    0x00008df6 ldr r3, [sp, 0x30]                                |     r3 = var_30h;
    0x00008df8 movs r2, 0                                        |     r2 = 0;
    0x00008dfa cmp r4, r3                                        |     
    0x00008dfc ldr r3, [sp, 0x34]                                |     r3 = var_34h;
    0x00008dfe sbcs r2, r3                                       |     __asm ("sbcs r2, r3");
                                                                 |     if (r4 >= r3) {
    0x00008e00 bhs 0x8e8c                                        |         goto label_7;
                                                                 |     }
    0x00008e02 ldr r3, [sp, 0x20]                                |     r3 = var_20h;
    0x00008e04 adds r4, r4, r3                                   |     r4 += r3;
    0x00008e06 ldr r3, [sp, 0x24]                                |     r3 = var_24h;
    0x00008e08 adc r2, r3, 0                                     |     __asm ("adc r2, r3, 0");
    0x00008e0c cmp r4, r7                                        |     
    0x00008e0e sbcs.w r2, r2, sl                                 |     __asm ("sbcs.w r2, r2, sl");
                                                                 |     if (r4 >= r7) {
    0x00008e12 bhs.w 0x9418                                      |         goto label_14;
                                                                 |     }
    0x00008e16 add r4, r8                                        |     r4 += r8;
    0x00008e18 movs r2, 6                                        |     r2 = 6;
    0x00008e1a mov r1, sb                                        |     r1 = sb;
    0x00008e1c mov r0, r4                                        |     r0 = r4;
    0x00008e1e blx 0x243c                                        |     r0 = fcn_0000243c ();
                                                                 |     if (r0 == 0) {
    0x00008e22 cbnz r0, 0x8e34                                   |         
    0x00008e24 ldr r3, [sp, 0x1c]                                |         r3 = var_1ch;
    0x00008e26 adds r0, r4, 6                                    |         r0 = r4 + 6;
    0x00008e28 adds r6, 1                                        |         r6++;
    0x00008e2a adds r3, 1                                        |         r3++;
    0x00008e2c str r3, [sp, 0x1c]                                |         var_1ch = r3;
    0x00008e2e blx 0x22a8                                        |         r0 = fcn_000022a8 ();
    0x00008e32 add r6, r0                                        |         r6 += r0;
                                                                 |     }
    0x00008e34 ldr r3, [sp, 0x10]                                |     r3 = var_10h;
    0x00008e36 adds.w r3, r3, fp                                 |     r3 += fp;
    0x00008e3a mov fp, r3                                        |     
    0x00008e3c ldr r3, [sp, 8]                                   |     r3 = var_8h;
    0x00008e3e adc r5, r5, 0                                     |     __asm ("adc r5, r5, 0");
    0x00008e42 adds r2, r3, 1                                    |     r2 = r3 + 1;
    0x00008e44 ldr r3, [sp, 0x2c]                                |     r3 = var_2ch;
    0x00008e46 cmp r3, r2                                        |     
                                                                 |     if (r3 == r2) {
    0x00008e48 beq.w 0x905a                                      |         goto label_15;
                                                                 |     }
    0x00008e4c ldr r3, [sp, 0x18]                                |     r3 = var_18h;
    0x00008e4e adds.w r1, fp, 4                                  |     r1 += arg_4h;
    0x00008e52 str r2, [sp, 8]                                   |     var_8h = r2;
    0x00008e54 adc r2, r5, 0                                     |     __asm ("adc r2, r5, 0");
    0x00008e58 cmp r3, 0                                         |     
                                                                 |     if (r3 != 0) {
    0x00008e5a bne 0x8dc6                                        |         goto label_0;
                                                                 |     }
                                                                 | label_11:
    0x00008e5c cmp r7, r1                                        |     
    0x00008e5e sbcs.w r2, sl, r2                                 |     __asm ("sbcs.w r2, sl, r2");
                                                                 |     if (r7 <= r1) {
    0x00008e62 blo.w 0x9414                                      |         goto label_12;
                                                                 |     }
    0x00008e66 ldr r3, [sp, 0x14]                                |     r3 = var_14h;
    0x00008e68 add.w r0, r8, fp                                  |     r0 = r8 + fp;
    0x00008e6c cmp r3, 0                                         |     
                                                                 |     if (r3 == 0) {
    0x00008e6e beq 0x8f18                                        |         goto label_16;
                                                                 |     }
    0x00008e70 ldr r3, [sp, 0x44]                                |     r3 = var_44h;
    0x00008e72 ldr r4, [sp, 0xc]                                 |     r4 = var_ch;
    0x00008e74 add.w r2, r3, fp                                  |     r2 = r3 + fp;
    0x00008e78 ldr r3, [sp, 0x48]                                |     r3 = var_48h;
    0x00008e7a add.w r0, r3, fp                                  |     r0 = r3 + fp;
                                                                 |     do {
    0x00008e7e ldrb r3, [r2, 1]!                                 |         r3 = *((r2 += 1));
    0x00008e82 cmp r2, r0                                        |         
    0x00008e84 orr.w r4, r3, r4, lsl 8                           |         r4 = r3 | (r4 << 8);
    0x00008e88 bne 0x8e7e                                        |         
                                                                 |     } while (r2 != r0);
    0x00008e8a b 0x8df6                                          |     goto label_1;
                                                                 | label_7:
    0x00008e8c ldrd r0, r4, [sp, 0x38]                           |     __asm ("ldrd r0, r4, [var_38h]");
    0x00008e90 movs r2, 0                                        |     r2 = 0;
    0x00008e92 ldr.w r1, [pc, 0x5c0]                             |     
    0x00008e96 add r3, sp, 0x90                                  |     r3 += var_90h;
    0x00008e98 str r2, [r4]                                      |     *(r4) = r2;
    0x00008e9a add r2, sp, 0x88                                  |     r2 += var_88h;
    0x00008e9c add r1, pc                                        |     r1 = 0x122f6;
    0x00008e9e bl 0x84c4                                         |     r0 = fcn_000084c4 (r0, r1, r2, r3);
    0x00008ea2 subs.w sb, r0, 0                                  |     sb = r0 - 0;
                                                                 |     if (sb < r0) {
    0x00008ea6 blt 0x8edc                                        |         goto label_5;
                                                                 |     }
    0x00008ea8 ldr r6, [sp, 0x88]                                |     r6 = var_88h;
                                                                 |     if (r6 == 0) {
    0x00008eaa cbz r6, 0x8ed8                                    |         goto label_2;
                                                                 |     }
    0x00008eac ldrd r4, r5, [sp, 0x90]                           |     __asm ("ldrd r4, r5, [var_90h]");
    0x00008eb0 orrs.w r3, r4, r5                                 |     r3 = r4 | r5;
                                                                 |     if (r3 == r4) {
    0x00008eb4 beq 0x8ed8                                        |         goto label_2;
                                                                 |     }
    0x00008eb6 ldrb r3, [r6]                                     |     r3 = *(r6);
    0x00008eb8 cmp r3, 0                                         |     
                                                                 |     if (r3 != 0) {
    0x00008eba bne 0x8f32                                        |         goto label_17;
                                                                 |     }
    0x00008ebc adds r3, r6, 1                                    |     r3 = r6 + 1;
    0x00008ebe b 0x8ed0                                          |     
                                                                 |     while (r1 != r2) {
    0x00008ec0 subs r4, 1                                        |         r4--;
    0x00008ec2 mov r6, r3                                        |         r6 = r3;
    0x00008ec4 mov r4, r2                                        |         r4 = r2;
    0x00008ec6 ldrb r2, [r3], 1                                  |         r2 = *(r3);
                                                                 |         r3++;
    0x00008eca sbc r5, r5, 0                                     |         __asm ("sbc r5, r5, 0");
                                                                 |         if (r2 != 0) {
    0x00008ece cbnz r2, 0x8f2e                                   |             goto label_18;
                                                                 |         }
    0x00008ed0 subs r2, r4, 1                                    |         r2 = r4 - 1;
    0x00008ed2 orrs.w r1, r2, r5                                 |         r1 = r2 | r5;
    0x00008ed6 bne 0x8ec0                                        |         
                                                                 |     }
                                                                 | label_2:
    0x00008ed8 mov.w sb, 0                                       |     sb = 0;
                                                                 | label_5:
    0x00008edc ldr.w r2, [pc, 0x578]                             |     r2 = *(0x00009458);
    0x00008ee0 ldr.w r3, [pc, 0x560]                             |     r3 = *(0x9444);
    0x00008ee4 add r2, pc                                        |     r2 += pc;
    0x00008ee6 ldr r3, [r2, r3]                                  |     r3 = *((r2 + r3));
    0x00008ee8 ldr r2, [r3]                                      |     r2 = *(0x9444);
    0x00008eea ldr r3, [sp, 0x9c]                                |     r3 = var_9ch;
    0x00008eec eors r2, r3                                       |     r2 ^= r3;
    0x00008eee mov.w r3, 0                                       |     r3 = 0;
                                                                 |     if (r2 != r3) {
    0x00008ef2 bne.w 0x942e                                      |         goto label_19;
                                                                 |     }
    0x00008ef6 mov r0, sb                                        |     r0 = sb;
    0x00008ef8 add sp, 0xa4                                      |     
    0x00008efa vpop {d8}                                         |     __asm ("vpop {d8}");
    0x00008efe pop.w {r4, r5, r6, r7, r8, sb, sl, fp, pc}        |     
                                                                 | label_13:
    0x00008f02 ldr r3, [sp, 0x40]                                |     r3 = var_40h;
    0x00008f04 ldr r4, [sp, 0xc]                                 |     r4 = var_ch;
    0x00008f06 add.w r2, r3, fp                                  |     r2 = r3 + fp;
                                                                 |     do {
    0x00008f0a ldrb r3, [r2, -0x1]!                              |         r3 = *((r2 -= 0x1));
    0x00008f0e cmp r2, r0                                        |         
    0x00008f10 orr.w r4, r3, r4, lsl 8                           |         r4 = r3 | (r4 << 8);
    0x00008f14 bne 0x8f0a                                        |         
                                                                 |     } while (r2 != r0);
    0x00008f16 b 0x8df6                                          |     goto label_1;
                                                                 | label_16:
    0x00008f18 ldr r3, [sp, 0x40]                                |     r3 = var_40h;
    0x00008f1a ldr r4, [sp, 0xc]                                 |     r4 = var_ch;
    0x00008f1c add.w r2, r3, fp                                  |     r2 = r3 + fp;
                                                                 |     do {
    0x00008f20 ldrb r3, [r2, -0x1]!                              |         r3 = *((r2 -= 0x1));
    0x00008f24 cmp r2, r0                                        |         
    0x00008f26 orr.w r4, r3, r4, lsl 8                           |         r4 = r3 | (r4 << 8);
    0x00008f2a bne 0x8f20                                        |         
                                                                 |     } while (r2 != r0);
    0x00008f2c b 0x8df6                                          |     goto label_1;
                                                                 | label_18:
    0x00008f2e strd r4, r5, [sp, 0x90]                           |     __asm ("strd r4, r5, [var_90h]");
                                                                 | label_17:
    0x00008f32 add.w fp, r4, -1                                  |     
    0x00008f36 orrs.w r3, fp, r5                                 |     r3 = fp | r5;
                                                                 |     if (r3 == fp) {
    0x00008f3a beq 0x8ed8                                        |         goto label_2;
                                                                 |     }
    0x00008f3c movs r3, 0                                        |     r3 = 0;
    0x00008f3e add.w r8, r6, r4                                  |     r8 = r6 + r4;
    0x00008f42 add.w r8, r8, -1                                  |     r8 += -1;
    0x00008f46 subs r0, r6, 1                                    |     r0 = r6 - 1;
    0x00008f48 mov sl, r3                                        |     sl = r3;
    0x00008f4a mov sb, r3                                        |     sb = r3;
    0x00008f4c mov r2, r3                                        |     r2 = r3;
    0x00008f4e mov r1, r3                                        |     r1 = r3;
                                                                 |     do {
    0x00008f50 ldrb r7, [r0, 1]!                                 |         r7 = *((r0 += 1));
    0x00008f54 adds.w ip, r2, 1                                  |         
    0x00008f58 mov lr, r2                                        |         lr = r2;
    0x00008f5a mov r2, ip                                        |         r2 = ip;
    0x00008f5c mov ip, r1                                        |         
    0x00008f5e adc r1, r1, 0                                     |         __asm ("adc r1, r1, 0");
                                                                 |         if (r7 == 0) {
    0x00008f62 cbnz r7, 0x8f72                                   |             
    0x00008f64 cmp ip, sb                                        |             
    0x00008f66 it eq                                             |             
                                                                 |             if (ip == sb) {
    0x00008f68 cmpeq lr, sl                                      |                 __asm ("cmpeq lr, sl");
                                                                 |             }
    0x00008f6a mov sl, r2                                        |             sl = r2;
    0x00008f6c it ne                                             |             
                                                                 |             if (ip == sb) {
    0x00008f6e addne r3, 1                                       |                 r3++;
                                                                 |             }
    0x00008f70 mov sb, r1                                        |             sb = r1;
                                                                 |         }
    0x00008f72 cmp r8, r0                                        |         
    0x00008f74 bne 0x8f50                                        |         
                                                                 |     } while (r8 != r0);
    0x00008f76 ldrb.w r2, [r6, fp]                               |     r2 = *((r6 + fp));
    0x00008f7a add.w r1, r6, fp                                  |     r1 = r6 + fp;
    0x00008f7e str r1, [sp, 0x18]                                |     var_18h = r1;
    0x00008f80 cmp r2, 0                                         |     
                                                                 |     if (r2 != 0) {
    0x00008f82 bne 0x9056                                        |         goto label_20;
                                                                 |     }
                                                                 | label_6:
    0x00008f84 lsls r7, r3, 4                                    |     r7 = r3 << 4;
    0x00008f86 adds r0, r4, 1                                    |     r0 = r4 + 1;
    0x00008f88 add r0, r7                                        |     r0 += r7;
    0x00008f8a blx 0x21fc                                        |     fcn_000021fc ();
    0x00008f8e ldr r2, [sp, 0x3c]                                |     r2 = var_3ch;
    0x00008f90 str r0, [sp, 0x14]                                |     var_14h = r0;
    0x00008f92 str r0, [r2]                                      |     *(r2) = r0;
    0x00008f94 cmp r0, 0                                         |     
                                                                 |     if (r0 == 0) {
    0x00008f96 beq.w 0x9432                                      |         goto label_21;
                                                                 |     }
    0x00008f9a ldr r3, [sp, 0x14]                                |     r3 = var_14h;
    0x00008f9c mov.w sb, 0                                       |     sb = 0;
    0x00008fa0 vmov.i32 d8, 0                                    |     __asm ("vmov.i32 d8, 0");
    0x00008fa4 mov r1, sb                                        |     r1 = sb;
    0x00008fa6 mov ip, sb                                        |     
    0x00008fa8 mov sl, sb                                        |     sl = sb;
    0x00008faa add r3, r7                                        |     r3 += r7;
    0x00008fac mov fp, sb                                        |     
    0x00008fae mov r7, sb                                        |     r7 = sb;
    0x00008fb0 strd r4, r5, [sp, 8]                              |     __asm ("strd r4, r5, [var_8h]");
    0x00008fb4 b 0x8ff0                                          |     goto label_4;
                                                                 | label_3:
    0x00008fb6 ldr r0, [sp, 0x14]                                |     r0 = var_14h;
    0x00008fb8 movs r4, 0x47                                     |     r4 = 0x47;
    0x00008fba subs r2, r2, r1                                   |     r2 -= r1;
    0x00008fbc add r1, r6                                        |     r1 += r6;
    0x00008fbe str r2, [sp, 0x10]                                |     var_10h = r2;
    0x00008fc0 add.w r0, r0, fp, lsl 4                           |     r0 += (fp << 4);
    0x00008fc4 add.w fp, fp, 1                                   |     
    0x00008fc8 str r3, [r0, 0xc]                                 |     *((r0 + 0xc)) = r3;
    0x00008fca vstr d8, [r0]                                     |     __asm ("vstr d8, [r0]");
    0x00008fce str r4, [r0, 8]                                   |     *((r0 + 8)) = r4;
    0x00008fd0 mov r0, r3                                        |     r0 = r3;
    0x00008fd2 blx 0x20c0                                        |     mmap64 ()
    0x00008fd6 ldr r2, [sp, 0x10]                                |     r2 = var_10h;
    0x00008fd8 mov r3, r0                                        |     r3 = r0;
    0x00008fda mov r1, sb                                        |     r1 = sb;
    0x00008fdc mov ip, r8                                        |     
    0x00008fde strb r5, [r0, r2]                                 |     *((r0 + r2)) = r5;
    0x00008fe0 adds r2, 1                                        |     r2++;
    0x00008fe2 add r3, r2                                        |     r3 += r2;
                                                                 |     do {
    0x00008fe4 ldrd r0, r2, [sp, 8]                              |         __asm ("ldrd r0, r2, [var_8h]");
    0x00008fe8 cmp r8, r2                                        |         
    0x00008fea it eq                                             |         
                                                                 |         if (r8 == r2) {
    0x00008fec cmpeq sb, r0                                      |             __asm ("cmpeq sb, r0");
                                                                 |         }
                                                                 |         if (r8 == r2) {
    0x00008fee beq 0x9020                                        |             goto label_22;
                                                                 |         }
                                                                 | label_4:
    0x00008ff0 ldrb.w r5, [r6, sl]                               |         r5 = *((r6 + sl));
    0x00008ff4 adds.w sb, sl, 1                                  |         sb = sl + 1;
    0x00008ff8 adc r8, r7, 0                                     |         __asm ("adc r8, r7, 0");
    0x00008ffc mov r2, sl                                        |         r2 = sl;
    0x00008ffe mov r0, r7                                        |         r0 = r7;
    0x00009000 mov sl, sb                                        |         sl = sb;
    0x00009002 mov r7, r8                                        |         r7 = r8;
    0x00009004 cmp r5, 0                                         |         
    0x00009006 bne 0x8fe4                                        |         
                                                                 |     } while (r5 != 0);
    0x00009008 cmp r0, ip                                        |     
    0x0000900a it eq                                             |     
                                                                 |     if (r0 != ip) {
    0x0000900c cmpeq r2, r1                                      |         __asm ("cmpeq r2, r1");
                                                                 |         goto label_23;
                                                                 |     }
                                                                 |     if (r0 != ip) {
                                                                 | label_23:
    0x0000900e bne 0x8fb6                                        |         goto label_3;
                                                                 |     }
    0x00009010 ldrd r0, r2, [sp, 8]                              |     __asm ("ldrd r0, r2, [var_8h]");
    0x00009014 mov r1, sb                                        |     r1 = sb;
    0x00009016 mov ip, r8                                        |     
    0x00009018 cmp r8, r2                                        |     
    0x0000901a it eq                                             |     
                                                                 |     if (r8 != r2) {
    0x0000901c cmpeq sb, r0                                      |         __asm ("cmpeq sb, r0");
                                                                 |         goto label_24;
                                                                 |     }
                                                                 |     if (r8 != r2) {
                                                                 | label_24:
    0x0000901e bne 0x8ff0                                        |         goto label_4;
                                                                 |     }
                                                                 | label_22:
    0x00009020 ldr r2, [sp, 0x18]                                |     r2 = var_18h;
    0x00009022 mov sb, fp                                        |     sb = fp;
    0x00009024 ldrb r2, [r2]                                     |     r2 = *(r2);
    0x00009026 cmp r2, 0                                         |     
                                                                 |     if (r2 == 0) {
    0x00009028 beq.w 0x8edc                                      |         goto label_5;
                                                                 |     }
    0x0000902c ldr r2, [sp, 0x14]                                |     r2 = var_14h;
    0x0000902e subs r4, r0, r1                                   |     r4 = r0 - r1;
    0x00009030 vmov.i32 d16, 0                                   |     __asm ("vmov.i32 d16, 0");
    0x00009034 movs r0, 0x47                                     |     r0 = 0x47;
    0x00009036 add r1, r6                                        |     r1 += r6;
    0x00009038 add.w sb, fp, 1                                   |     sb += arg_1h;
    0x0000903c add.w r2, r2, fp, lsl 4                           |     r2 += (fp << 4);
    0x00009040 str r0, [r2, 8]                                   |     *((r2 + 8)) = r0;
    0x00009042 mov r0, r3                                        |     r0 = r3;
    0x00009044 str r3, [r2, 0xc]                                 |     *((r2 + 0xc)) = r3;
    0x00009046 vstr d16, [r2]                                    |     __asm ("vstr d16, [r2]");
    0x0000904a mov r2, r4                                        |     r2 = r4;
    0x0000904c blx 0x20c0                                        |     mmap64 ()
    0x00009050 movs r2, 0                                        |     r2 = 0;
    0x00009052 strb r2, [r0, r4]                                 |     *((r0 + r4)) = r2;
    0x00009054 b 0x8edc                                          |     goto label_5;
                                                                 | label_20:
    0x00009056 adds r3, 1                                        |     r3++;
    0x00009058 b 0x8f84                                          |     goto label_6;
                                                                 | label_15:
    0x0000905a ldr r3, [sp, 0x1c]                                |     r3 = var_1ch;
    0x0000905c cmp r3, 0                                         |     
                                                                 |     if (r3 == 0) {
    0x0000905e beq.w 0x8e8c                                      |         goto label_7;
                                                                 |     }
    0x00009062 lsls r4, r3, 4                                    |     r4 = r3 << 4;
    0x00009064 adds r0, r4, r6                                   |     r0 = r4 + r6;
    0x00009066 blx 0x21fc                                        |     fcn_000021fc ();
    0x0000906a ldr r2, [sp, 0x3c]                                |     r2 = var_3ch;
    0x0000906c str r0, [sp, 0x48]                                |     var_48h = r0;
    0x0000906e str r0, [r2]                                      |     *(r2) = r0;
    0x00009070 cmp r0, 0                                         |     
                                                                 |     if (r0 == 0) {
    0x00009072 beq.w 0x9432                                      |         goto label_21;
                                                                 |     }
    0x00009076 ldr r3, [sp, 0x48]                                |     r3 = var_48h;
    0x00009078 movs r1, 0                                        |     r1 = 0;
    0x0000907a mov sb, sl                                        |     sb = sl;
    0x0000907c str r1, [sp, 0x34]                                |     var_34h = r1;
    0x0000907e add r3, r4                                        |     r3 += r4;
    0x00009080 str r3, [sp, 0x50]                                |     var_50h = r3;
    0x00009082 ldr r3, [sp, 0x54]                                |     r3 = var_54h;
    0x00009084 adds.w r2, r3, 8                                  |     r2 = r3 + 8;
    0x00009088 str r2, [sp, 0x1c]                                |     var_1ch = r2;
    0x0000908a adc r2, r1, 0                                     |     __asm ("adc r2, r1, 0");
    0x0000908e adds.w fp, r3, 4                                  |     
    0x00009092 str r2, [sp, 0x30]                                |     var_30h = r2;
    0x00009094 adc r3, r1, 0                                     |     __asm ("adc r3, r1, 0");
    0x00009098 mov sl, fp                                        |     sl = fp;
    0x0000909a str r3, [sp, 0x2c]                                |     var_2ch = r3;
    0x0000909c mov fp, r7                                        |     
    0x0000909e ldr r3, [pc, 0x3bc]                               |     
    0x000090a0 ldr r7, [sp, 0x58]                                |     r7 = var_58h;
    0x000090a2 add r3, pc                                        |     r3 = 0x12504;
    0x000090a4 str r3, [sp, 0x5c]                                |     var_5ch = r3;
    0x000090a6 ldr r3, [pc, 0x3b8]                               |     
    0x000090a8 add r3, pc                                        |     r3 = 0x1250e;
    0x000090aa str r3, [sp, 0x64]                                |     var_64h = r3;
    0x000090ac movs r3, 1                                        |     r3 = 1;
    0x000090ae str r3, [sp, 0x40]                                |     var_40h = r3;
    0x000090b0 add.w r3, r8, 4                                   |     r3 = r8 + 4;
    0x000090b4 str r3, [sp, 0x60]                                |     var_60h = r3;
    0x000090b6 ldr r3, [sp, 0x18]                                |     r3 = var_18h;
    0x000090b8 cmp r3, 0                                         |     
                                                                 |     if (r3 == 0) {
    0x000090ba beq.w 0x9282                                      |         goto label_25;
                                                                 |     }
                                                                 | label_8:
    0x000090be ldr r3, [sp, 0x2c]                                |     r3 = var_2ch;
    0x000090c0 cmp fp, sl                                        |     
    0x000090c2 sbcs.w r3, sb, r3                                 |     __asm ("sbcs.w r3, sb, r3");
                                                                 |     if (fp <= sl) {
    0x000090c6 blo.w 0x9414                                      |         goto label_12;
                                                                 |     }
    0x000090ca ldr r3, [sp, 0x14]                                |     r3 = var_14h;
    0x000090cc add.w r2, r7, r8                                  |     r2 = r7 + r8;
    0x000090d0 cmp r3, 0                                         |     
                                                                 |     if (r3 == 0) {
    0x000090d2 beq.w 0x9380                                      |         goto label_26;
                                                                 |     }
    0x000090d6 ldr r6, [sp, 0xc]                                 |     r6 = var_ch;
    0x000090d8 add.w r3, r8, -1                                  |     r3 = r8 + -1;
    0x000090dc add.w r1, r8, 3                                   |     r1 = r8 + 3;
    0x000090e0 add r3, r7                                        |     r3 += r7;
    0x000090e2 add r1, r7                                        |     r1 += r7;
                                                                 |     do {
    0x000090e4 ldrb r0, [r3, 1]!                                 |         r0 = *((r3 += 1));
    0x000090e8 cmp r1, r3                                        |         
    0x000090ea orr.w r6, r0, r6, lsl 8                           |         r6 = r0 | (r6 << 8);
    0x000090ee bne 0x90e4                                        |         
                                                                 |     } while (r1 != r3);
    0x000090f0 ldr r3, [sp, 0x1c]                                |     r3 = var_1ch;
    0x000090f2 cmp fp, r3                                        |     
    0x000090f4 ldr r3, [sp, 0x30]                                |     r3 = var_30h;
    0x000090f6 sbcs.w r3, sb, r3                                 |     __asm ("sbcs.w r3, sb, r3");
                                                                 |     if (fp <= r3) {
    0x000090fa blo.w 0x9414                                      |         goto label_12;
                                                                 |     }
    0x000090fe ldr r1, [sp, 0x60]                                |     r1 = var_60h;
    0x00009100 add.w r3, r8, sl                                  |     r3 = r8 + sl;
    0x00009104 ldr r5, [sp, 0xc]                                 |     r5 = var_ch;
    0x00009106 ldr r4, [sp, 0x4c]                                |     r4 = var_4ch;
    0x00009108 add.w r0, r1, sl                                  |     r0 = r1 + sl;
                                                                 |     do {
    0x0000910c ldrb r1, [r3], 1                                  |         r1 = *(r3);
                                                                 |         r3++;
    0x00009110 lsls r4, r4, 8                                    |         r4 <<= 8;
    0x00009112 orr.w r4, r4, r5, lsr 24                          |         r4 |= (r5 >> 24);
    0x00009116 cmp r0, r3                                        |         
    0x00009118 orr.w r5, r1, r5, lsl 8                           |         r5 = r1 | (r5 << 8);
    0x0000911c bne 0x910c                                        |         
                                                                 |     } while (r0 != r3);
    0x0000911e ldr r3, [sp, 0x28]                                |     r3 = var_28h;
    0x00009120 adds.w r1, r7, 0xd                                |     r1 = r7 + 0xd;
    0x00009124 adc r3, r3, 0                                     |     __asm ("adc r3, r3, 0");
    0x00009128 cmp fp, r1                                        |     
    0x0000912a sbcs.w r3, sb, r3                                 |     __asm ("sbcs.w r3, sb, r3");
                                                                 |     if (fp <= r1) {
    0x0000912e blo.w 0x9414                                      |         goto label_12;
                                                                 |     }
    0x00009132 add.w r3, r8, 0xc                                 |     r3 = r8 + 0xc;
    0x00009136 adds.w r1, r7, 0x10                               |     r1 = r7 + 0x10;
    0x0000913a ldrb r3, [r3, r7]                                 |     r3 = *((r3 + r7));
    0x0000913c str r3, [sp, 0x3c]                                |     var_3ch = r3;
    0x0000913e ldr r3, [sp, 0x28]                                |     r3 = var_28h;
    0x00009140 adc r3, r3, 0                                     |     __asm ("adc r3, r3, 0");
    0x00009144 cmp fp, r1                                        |     
    0x00009146 sbcs.w r3, sb, r3                                 |     __asm ("sbcs.w r3, sb, r3");
                                                                 |     if (fp <= r1) {
    0x0000914a blo.w 0x9414                                      |         goto label_12;
                                                                 |     }
    0x0000914e ldrh r3, [r2, 0xe]                                |     r3 = *((r2 + 0xe));
    0x00009150 rev16 r3, r3                                      |     __asm ("rev16 r3, r3");
    0x00009152 uxth r3, r3                                       |     r3 = (int16_t) r3;
                                                                 | label_9:
    0x00009154 ldr r2, [sp, 0x20]                                |     r2 = var_20h;
    0x00009156 adds r6, r6, r2                                   |     r6 += r2;
    0x00009158 ldr r2, [sp, 0x24]                                |     r2 = var_24h;
    0x0000915a adc r2, r2, 0                                     |     __asm ("adc r2, r2, 0");
    0x0000915e cmp r6, fp                                        |     
    0x00009160 sbcs.w r2, r2, sb                                 |     __asm ("sbcs.w r2, r2, sb");
                                                                 |     if (r6 >= fp) {
    0x00009164 bhs.w 0x942a                                      |         goto label_27;
                                                                 |     }
    0x00009168 add r6, r8                                        |     r6 += r8;
    0x0000916a ldr r1, [sp, 0x5c]                                |     r1 = var_5ch;
    0x0000916c movs r2, 6                                        |     r2 = 6;
    0x0000916e mov r0, r6                                        |     r0 = r6;
    0x00009170 str r3, [sp, 0x44]                                |     var_44h = r3;
    0x00009172 blx 0x243c                                        |     r0 = fcn_0000243c ();
    0x00009176 cmp r0, 0                                         |     
                                                                 |     if (r0 != 0) {
    0x00009178 bne 0x9242                                        |         goto label_28;
                                                                 |     }
    0x0000917a ldr r3, [sp, 0x3c]                                |     r3 = var_3ch;
    0x0000917c movw r2, 0xfff1                                   |     r2 = 0xfff1;
    0x00009180 ldr r1, [sp, 0x48]                                |     r1 = var_48h;
    0x00009182 adds r6, 6                                        |     r6 += 6;
    0x00009184 lsrs r3, r3, 4                                    |     r3 >>= 4;
    0x00009186 str r3, [sp, 0x54]                                |     var_54h = r3;
    0x00009188 ldr r3, [sp, 0x34]                                |     r3 = var_34h;
    0x0000918a lsls r3, r3, 4                                    |     r3 <<= 4;
    0x0000918c str r3, [sp, 0x58]                                |     var_58h = r3;
    0x0000918e adds r3, r1, r3                                   |     r3 = r1 + r3;
    0x00009190 str r3, [sp, 0x3c]                                |     var_3ch = r3;
    0x00009192 ldr r3, [sp, 0x44]                                |     r3 = var_44h;
    0x00009194 cmp r3, 0                                         |     
    0x00009196 it ne                                             |     
                                                                 |     if (r3 != 0) {
    0x00009198 cmpne r3, r2                                      |         __asm ("cmpne r3, r2");
                                                                 |     }
                                                                 |     if (r3 == 0) {
    0x0000919a beq 0x9202                                        |         goto label_10;
                                                                 |     }
    0x0000919c mov r1, r3                                        |     r1 = r3;
    0x0000919e add r3, sp, 0x74                                  |     r3 += var_74h;
    0x000091a0 str r3, [sp]                                      |     *(sp) = r3;
    0x000091a2 add r2, sp, 0x88                                  |     r2 += var_88h;
    0x000091a4 ldr r0, [sp, 0x38]                                |     r0 = var_38h;
    0x000091a6 add r3, sp, 0x90                                  |     r3 += var_90h;
    0x000091a8 bl 0x7f38                                         |     r0 = fcn_00007f38 (r0, r1, r2, r3);
    0x000091ac cmp r0, 0                                         |     
                                                                 |     if (r0 < 0) {
    0x000091ae blt.w 0x93ec                                      |         goto label_29;
                                                                 |     }
    0x000091b2 ldr r3, [sp, 0x90]                                |     r3 = var_90h;
    0x000091b4 ldr r2, [sp, 0x94]                                |     r2 = var_94h;
    0x000091b6 subs r3, 4                                        |     r3 -= 4;
    0x000091b8 adc r2, r2, -1                                    |     __asm ("adc r2, r2, -1");
    0x000091bc cmp r3, r5                                        |     
    0x000091be sbcs r2, r4                                       |     __asm ("sbcs r2, r4");
                                                                 |     if (r3 <= r5) {
    0x000091c0 blo.w 0x93ec                                      |         goto label_29;
                                                                 |     }
    0x000091c4 ldr r3, [sp, 0x88]                                |     r3 = var_88h;
    0x000091c6 ldr r2, [sp, 0x8c]                                |     r2 = var_8ch;
    0x000091c8 adds r3, r5, r3                                   |     r3 = r5 + r3;
    0x000091ca adc.w r2, r4, r2                                  |     __asm ("adc.w r2, r4, r2");
    0x000091ce adds r1, r3, 4                                    |     r1 = r3 + 4;
    0x000091d0 adc r2, r2, 0                                     |     __asm ("adc r2, r2, 0");
    0x000091d4 cmp fp, r1                                        |     
    0x000091d6 sbcs.w r2, sb, r2                                 |     __asm ("sbcs.w r2, sb, r2");
                                                                 |     if (fp <= r1) {
    0x000091da blo.w 0x9414                                      |         goto label_12;
                                                                 |     }
    0x000091de ldr r2, [sp, 0x14]                                |     r2 = var_14h;
    0x000091e0 add r3, r8                                        |     r3 += r8;
    0x000091e2 cmp r2, 0                                         |     
                                                                 |     if (r2 == 0) {
    0x000091e4 beq.w 0x93f4                                      |         goto label_30;
                                                                 |     }
    0x000091e8 ldr r5, [sp, 0xc]                                 |     r5 = var_ch;
    0x000091ea subs r2, r3, 1                                    |     r2 = r3 - 1;
    0x000091ec ldr r4, [sp, 0x4c]                                |     r4 = var_4ch;
    0x000091ee adds r3, 3                                        |     r3 += 3;
                                                                 |     do {
    0x000091f0 ldrb r1, [r2, 1]!                                 |         r1 = *((r2 += 1));
    0x000091f4 lsls r4, r4, 8                                    |         r4 <<= 8;
    0x000091f6 orr.w r4, r4, r5, lsr 24                          |         r4 |= (r5 >> 24);
    0x000091fa cmp r3, r2                                        |         
    0x000091fc orr.w r5, r1, r5, lsl 8                           |         r5 = r1 | (r5 << 8);
    0x00009200 bne 0x91f0                                        |         
                                                                 |     } while (r3 != r2);
                                                                 | label_10:
    0x00009202 ldr r2, [sp, 0x58]                                |     r2 = var_58h;
    0x00009204 mov r0, r6                                        |     r0 = r6;
    0x00009206 ldr r3, [sp, 0x48]                                |     r3 = var_48h;
    0x00009208 str r5, [r3, r2]                                  |     *((r3 + r2)) = r5;
    0x0000920a ldr r3, [sp, 0x3c]                                |     r3 = var_3ch;
    0x0000920c ldr r5, [sp, 0x50]                                |     r5 = var_50h;
    0x0000920e str r4, [r3, 4]                                   |     *((r3 + 4)) = r4;
    0x00009210 ldr r3, [sp, 0x54]                                |     r3 = var_54h;
    0x00009212 cmp r3, 2                                         |     
    0x00009214 itet ls                                           |     
                                                                 |     if (r3 > 2) {
    0x00009216 ldrls r2, [sp, 0x64]                              |         r2 = var_64h;
                                                                 |     }
                                                                 |     if (r3 <= 2) {
    0x00009218 movhi r3, 0                                       |         r3 = 0;
                                                                 |     }
                                                                 |     if (r3 > 2) {
    0x0000921a ldrbls r3, [r2, r3]                               |         r3 = *((r2 + r3));
                                                                 |     }
    0x0000921c ldr r2, [sp, 0x3c]                                |     r2 = var_3ch;
    0x0000921e str r3, [r2, 8]                                   |     *((r2 + 8)) = r3;
    0x00009220 ldr r3, [sp, 0x34]                                |     r3 = var_34h;
    0x00009222 str r5, [r2, 0xc]                                 |     *((r2 + 0xc)) = r5;
    0x00009224 adds r3, 1                                        |     r3++;
    0x00009226 str r3, [sp, 0x34]                                |     var_34h = r3;
    0x00009228 blx 0x22a8                                        |     r0 = fcn_000022a8 ();
    0x0000922c mov r4, r0                                        |     r4 = r0;
    0x0000922e mov r1, r6                                        |     r1 = r6;
    0x00009230 mov r2, r4                                        |     r2 = r4;
    0x00009232 mov r0, r5                                        |     r0 = r5;
    0x00009234 blx 0x20c0                                        |     mmap64 ()
    0x00009238 movs r3, 0                                        |     r3 = 0;
    0x0000923a strb r3, [r5, r4]                                 |     *((r5 + r4)) = r3;
    0x0000923c adds r4, 1                                        |     r4++;
    0x0000923e adds r3, r5, r4                                   |     r3 = r5 + r4;
    0x00009240 str r3, [sp, 0x50]                                |     var_50h = r3;
                                                                 | label_28:
    0x00009242 ldr r3, [sp, 0x10]                                |     r3 = var_10h;
    0x00009244 ldr r2, [sp, 0x28]                                |     r2 = var_28h;
    0x00009246 ldr r1, [sp, 0x30]                                |     r1 = var_30h;
    0x00009248 adds r7, r3, r7                                   |     r7 = r3 + r7;
    0x0000924a adc r2, r2, 0                                     |     __asm ("adc r2, r2, 0");
    0x0000924e str r2, [sp, 0x28]                                |     var_28h = r2;
    0x00009250 ldr r2, [sp, 0x1c]                                |     r2 = var_1ch;
    0x00009252 adds r2, r2, r3                                   |     r2 += r3;
    0x00009254 adc r1, r1, 0                                     |     __asm ("adc r1, r1, 0");
    0x00009258 adds.w r3, sl, r3                                 |     r3 = sl + r3;
    0x0000925c mov sl, r3                                        |     sl = r3;
    0x0000925e str r1, [sp, 0x30]                                |     var_30h = r1;
    0x00009260 ldr r3, [sp, 0x2c]                                |     r3 = var_2ch;
    0x00009262 ldr r1, [sp, 8]                                   |     r1 = var_8h;
    0x00009264 str r2, [sp, 0x1c]                                |     var_1ch = r2;
    0x00009266 ldr r2, [sp, 0x40]                                |     r2 = var_40h;
    0x00009268 adc r3, r3, 0                                     |     __asm ("adc r3, r3, 0");
    0x0000926c str r3, [sp, 0x2c]                                |     var_2ch = r3;
    0x0000926e cmp r2, r1                                        |     
    0x00009270 add.w r3, r2, 1                                   |     r3 = r2 + 1;
                                                                 |     if (r2 == r1) {
    0x00009274 beq.w 0x940e                                      |         goto label_31;
                                                                 |     }
    0x00009278 str r3, [sp, 0x40]                                |     var_40h = r3;
    0x0000927a ldr r3, [sp, 0x18]                                |     r3 = var_18h;
    0x0000927c cmp r3, 0                                         |     
                                                                 |     if (r3 != 0) {
    0x0000927e bne.w 0x90be                                      |         goto label_8;
                                                                 |     }
                                                                 | label_25:
    0x00009282 ldr r3, [sp, 0x2c]                                |     r3 = var_2ch;
    0x00009284 cmp fp, sl                                        |     
    0x00009286 sbcs.w r3, sb, r3                                 |     __asm ("sbcs.w r3, sb, r3");
                                                                 |     if (fp <= sl) {
    0x0000928a blo.w 0x9414                                      |         goto label_12;
                                                                 |     }
    0x0000928e ldr r3, [sp, 0x14]                                |     r3 = var_14h;
    0x00009290 add.w r2, r8, r7                                  |     r2 = r8 + r7;
    0x00009294 cmp r3, 0                                         |     
                                                                 |     if (r3 == 0) {
    0x00009296 beq 0x9314                                        |         goto label_32;
                                                                 |     }
    0x00009298 ldr r6, [sp, 0xc]                                 |     r6 = var_ch;
    0x0000929a add.w r3, r8, -1                                  |     r3 = r8 + -1;
    0x0000929e add.w r1, r8, 3                                   |     r1 = r8 + 3;
    0x000092a2 add r3, r7                                        |     r3 += r7;
    0x000092a4 add r1, r7                                        |     r1 += r7;
                                                                 |     do {
    0x000092a6 ldrb r0, [r3, 1]!                                 |         r0 = *((r3 += 1));
    0x000092aa cmp r3, r1                                        |         
    0x000092ac orr.w r6, r0, r6, lsl 8                           |         r6 = r0 | (r6 << 8);
    0x000092b0 bne 0x92a6                                        |         
                                                                 |     } while (r3 != r1);
    0x000092b2 ldr r3, [sp, 0x28]                                |     r3 = var_28h;
    0x000092b4 adds.w r1, r7, 0x10                               |     r1 = r7 + 0x10;
    0x000092b8 adc r3, r3, 0                                     |     __asm ("adc r3, r3, 0");
    0x000092bc cmp fp, r1                                        |     
    0x000092be sbcs.w r3, sb, r3                                 |     __asm ("sbcs.w r3, sb, r3");
                                                                 |     if (fp <= r1) {
    0x000092c2 blo.w 0x9414                                      |         goto label_12;
                                                                 |     }
    0x000092c6 ldr r1, [sp, 0x1c]                                |     r1 = var_1ch;
    0x000092c8 add.w r3, r8, 0x10                                |     r3 = r8 + 0x10;
    0x000092cc ldr r5, [sp, 0xc]                                 |     r5 = var_ch;
    0x000092ce add r3, r7                                        |     r3 += r7;
    0x000092d0 ldr r4, [sp, 0x4c]                                |     r4 = var_4ch;
    0x000092d2 add r1, r8                                        |     r1 += r8;
                                                                 |     do {
    0x000092d4 ldrb r0, [r1], 1                                  |         r0 = *(r1);
                                                                 |         r1++;
    0x000092d8 lsls r4, r4, 8                                    |         r4 <<= 8;
    0x000092da orr.w r4, r4, r5, lsr 24                          |         r4 |= (r5 >> 24);
    0x000092de cmp r1, r3                                        |         
    0x000092e0 orr.w r5, r0, r5, lsl 8                           |         r5 = r0 | (r5 << 8);
    0x000092e4 bne 0x92d4                                        |         
                                                                 |     } while (r1 != r3);
    0x000092e6 ldr r3, [sp, 0x28]                                |     r3 = var_28h;
    0x000092e8 adds r1, r7, 5                                    |     r1 = r7 + 5;
    0x000092ea adc r3, r3, 0                                     |     __asm ("adc r3, r3, 0");
    0x000092ee cmp fp, r1                                        |     
    0x000092f0 sbcs.w r3, sb, r3                                 |     __asm ("sbcs.w r3, sb, r3");
                                                                 |     if (fp <= r1) {
    0x000092f4 blo.w 0x9414                                      |         goto label_12;
                                                                 |     }
    0x000092f8 ldrb.w r3, [r8, sl]                               |     r3 = *((r8 + sl));
    0x000092fc str r3, [sp, 0x3c]                                |     var_3ch = r3;
    0x000092fe ldr r3, [sp, 0x1c]                                |     r3 = var_1ch;
    0x00009300 cmp fp, r3                                        |     
    0x00009302 ldr r3, [sp, 0x30]                                |     r3 = var_30h;
    0x00009304 sbcs.w r3, sb, r3                                 |     __asm ("sbcs.w r3, sb, r3");
                                                                 |     if (fp <= r3) {
    0x00009308 blo.w 0x9414                                      |         goto label_12;
                                                                 |     }
    0x0000930c ldrh r3, [r2, 6]                                  |     r3 = *((r2 + 6));
    0x0000930e rev16 r3, r3                                      |     __asm ("rev16 r3, r3");
    0x00009310 uxth r3, r3                                       |     r3 = (int16_t) r3;
    0x00009312 b 0x9154                                          |     goto label_9;
                                                                 | label_32:
    0x00009314 ldr r3, [sp, 0x60]                                |     r3 = var_60h;
    0x00009316 ldr r6, [sp, 0xc]                                 |     r6 = var_ch;
    0x00009318 add r3, r7                                        |     r3 += r7;
                                                                 |     do {
    0x0000931a ldrb r1, [r3, -0x1]!                              |         r1 = *((r3 -= 0x1));
    0x0000931e cmp r3, r2                                        |         
    0x00009320 orr.w r6, r1, r6, lsl 8                           |         r6 = r1 | (r6 << 8);
    0x00009324 bne 0x931a                                        |         
                                                                 |     } while (r3 != r2);
    0x00009326 ldr r3, [sp, 0x28]                                |     r3 = var_28h;
    0x00009328 adds.w r1, r7, 0x10                               |     r1 = r7 + 0x10;
    0x0000932c adc r3, r3, 0                                     |     __asm ("adc r3, r3, 0");
    0x00009330 cmp fp, r1                                        |     
    0x00009332 sbcs.w r3, sb, r3                                 |     __asm ("sbcs.w r3, sb, r3");
                                                                 |     if (fp <= r1) {
    0x00009336 blo 0x9414                                        |         goto label_12;
                                                                 |     }
    0x00009338 ldr r1, [sp, 0x1c]                                |     r1 = var_1ch;
    0x0000933a add.w r3, r8, 0x10                                |     r3 = r8 + 0x10;
    0x0000933e ldr r5, [sp, 0xc]                                 |     r5 = var_ch;
    0x00009340 add r3, r7                                        |     r3 += r7;
    0x00009342 ldr r4, [sp, 0x4c]                                |     r4 = var_4ch;
    0x00009344 add.w r0, r8, r1                                  |     r0 = r8 + r1;
                                                                 |     do {
    0x00009348 ldrb r1, [r3, -0x1]!                              |         r1 = *((r3 -= 0x1));
    0x0000934c lsls r4, r4, 8                                    |         r4 <<= 8;
    0x0000934e orr.w r4, r4, r5, lsr 24                          |         r4 |= (r5 >> 24);
    0x00009352 cmp r0, r3                                        |         
    0x00009354 orr.w r5, r1, r5, lsl 8                           |         r5 = r1 | (r5 << 8);
    0x00009358 bne 0x9348                                        |         
                                                                 |     } while (r0 != r3);
    0x0000935a ldr r3, [sp, 0x28]                                |     r3 = var_28h;
    0x0000935c adds r1, r7, 5                                    |     r1 = r7 + 5;
    0x0000935e adc r3, r3, 0                                     |     __asm ("adc r3, r3, 0");
    0x00009362 cmp fp, r1                                        |     
    0x00009364 sbcs.w r3, sb, r3                                 |     __asm ("sbcs.w r3, sb, r3");
                                                                 |     if (fp <= r1) {
    0x00009368 blo 0x9414                                        |         goto label_12;
                                                                 |     }
    0x0000936a ldrb.w r3, [r8, sl]                               |     r3 = *((r8 + sl));
    0x0000936e str r3, [sp, 0x3c]                                |     var_3ch = r3;
    0x00009370 ldr r3, [sp, 0x1c]                                |     r3 = var_1ch;
    0x00009372 cmp fp, r3                                        |     
    0x00009374 ldr r3, [sp, 0x30]                                |     r3 = var_30h;
    0x00009376 sbcs.w r3, sb, r3                                 |     __asm ("sbcs.w r3, sb, r3");
                                                                 |     if (fp <= r3) {
    0x0000937a blo 0x9414                                        |         goto label_12;
                                                                 |     }
    0x0000937c ldrh r3, [r2, 6]                                  |     r3 = *((r2 + 6));
    0x0000937e b 0x9154                                          |     goto label_9;
                                                                 | label_26:
    0x00009380 ldr r3, [sp, 0x60]                                |     r3 = var_60h;
    0x00009382 ldr r6, [sp, 0xc]                                 |     r6 = var_ch;
    0x00009384 add r3, r7                                        |     r3 += r7;
                                                                 |     do {
    0x00009386 ldrb r1, [r3, -0x1]!                              |         r1 = *((r3 -= 0x1));
    0x0000938a cmp r3, r2                                        |         
    0x0000938c orr.w r6, r1, r6, lsl 8                           |         r6 = r1 | (r6 << 8);
    0x00009390 bne 0x9386                                        |         
                                                                 |     } while (r3 != r2);
    0x00009392 ldr r3, [sp, 0x1c]                                |     r3 = var_1ch;
    0x00009394 cmp fp, r3                                        |     
    0x00009396 ldr r3, [sp, 0x30]                                |     r3 = var_30h;
    0x00009398 sbcs.w r3, sb, r3                                 |     __asm ("sbcs.w r3, sb, r3");
                                                                 |     if (fp <= r3) {
    0x0000939c blo 0x9414                                        |         goto label_12;
                                                                 |     }
    0x0000939e ldr r3, [sp, 0x60]                                |     r3 = var_60h;
    0x000093a0 add.w r0, r8, sl                                  |     r0 = r8 + sl;
    0x000093a4 ldr r5, [sp, 0xc]                                 |     r5 = var_ch;
    0x000093a6 ldr r4, [sp, 0x4c]                                |     r4 = var_4ch;
    0x000093a8 add r3, sl                                        |     r3 += sl;
                                                                 |     do {
    0x000093aa ldrb r1, [r3, -0x1]!                              |         r1 = *((r3 -= 0x1));
    0x000093ae lsls r4, r4, 8                                    |         r4 <<= 8;
    0x000093b0 orr.w r4, r4, r5, lsr 24                          |         r4 |= (r5 >> 24);
    0x000093b4 cmp r0, r3                                        |         
    0x000093b6 orr.w r5, r1, r5, lsl 8                           |         r5 = r1 | (r5 << 8);
    0x000093ba bne 0x93aa                                        |         
                                                                 |     } while (r0 != r3);
    0x000093bc ldr r3, [sp, 0x28]                                |     r3 = var_28h;
    0x000093be adds.w r1, r7, 0xd                                |     r1 = r7 + 0xd;
    0x000093c2 adc r3, r3, 0                                     |     __asm ("adc r3, r3, 0");
    0x000093c6 cmp fp, r1                                        |     
    0x000093c8 sbcs.w r3, sb, r3                                 |     __asm ("sbcs.w r3, sb, r3");
                                                                 |     if (fp <= r1) {
    0x000093cc blo 0x9414                                        |         goto label_12;
                                                                 |     }
    0x000093ce add.w r3, r8, 0xc                                 |     r3 = r8 + 0xc;
    0x000093d2 adds.w r1, r7, 0x10                               |     r1 = r7 + 0x10;
    0x000093d6 ldrb r3, [r3, r7]                                 |     r3 = *((r3 + r7));
    0x000093d8 str r3, [sp, 0x3c]                                |     var_3ch = r3;
    0x000093da ldr r3, [sp, 0x28]                                |     r3 = var_28h;
    0x000093dc adc r3, r3, 0                                     |     __asm ("adc r3, r3, 0");
    0x000093e0 cmp fp, r1                                        |     
    0x000093e2 sbcs.w r3, sb, r3                                 |     __asm ("sbcs.w r3, sb, r3");
                                                                 |     if (fp <= r1) {
    0x000093e6 blo 0x9414                                        |         goto label_12;
                                                                 |     }
    0x000093e8 ldrh r3, [r2, 0xe]                                |     r3 = *((r2 + 0xe));
    0x000093ea b 0x9154                                          |     goto label_9;
                                                                 | label_29:
    0x000093ec mov.w r5, -1                                      |     r5 = -1;
    0x000093f0 mov r4, r5                                        |     r4 = r5;
    0x000093f2 b 0x9202                                          |     goto label_10;
                                                                 | label_30:
    0x000093f4 ldr r5, [sp, 0xc]                                 |     r5 = var_ch;
    0x000093f6 adds r2, r3, 4                                    |     r2 = r3 + 4;
    0x000093f8 ldr r4, [sp, 0x4c]                                |     r4 = var_4ch;
                                                                 |     do {
    0x000093fa ldrb r1, [r2, -0x1]!                              |         r1 = *((r2 -= 0x1));
    0x000093fe lsls r4, r4, 8                                    |         r4 <<= 8;
    0x00009400 orr.w r4, r4, r5, lsr 24                          |         r4 |= (r5 >> 24);
    0x00009404 cmp r3, r2                                        |         
    0x00009406 orr.w r5, r1, r5, lsl 8                           |         r5 = r1 | (r5 << 8);
    0x0000940a bne 0x93fa                                        |         
                                                                 |     } while (r3 != r2);
    0x0000940c b 0x9202                                          |     goto label_10;
                                                                 | label_31:
    0x0000940e ldr.w sb, [sp, 0x34]                              |     sb = var_34h;
    0x00009412 b 0x8edc                                          |     goto label_5;
                                                                 | label_12:
    0x00009414 bl 0x7ef8                                         |     fcn_00007ef8 ();
                                                                 | label_14:
    0x00009418 ldr r3, [pc, 0x48]                                |     
    0x0000941a movs r2, 0xca                                     |     r2 = 0xca;
    0x0000941c ldr r1, [pc, 0x48]                                |     
    0x0000941e ldr r0, [pc, 0x4c]                                |     
    0x00009420 add r3, pc                                        |     r3 = 0x12888;
    0x00009422 add r1, pc                                        |     r1 = 0x1288e;
    0x00009424 add r0, pc                                        |     r0 = 0x12896;
    0x00009426 blx 0x246c                                        |     fcn_0000246c ();
                                                                 | label_27:
    0x0000942a bl 0x7ed8                                         |     fcn_00007ed8 ();
                                                                 | label_19:
    0x0000942e blx 0x2108                                        |     fcn_00002108 ();
                                                                 | label_21:
    0x00009432 blx 0x22f4                                        |     r0 = gzerror ();
    0x00009436 ldr r3, [r0]                                      |     r3 = *(r0);
    0x00009438 rsb.w sb, r3, 0                                   |     sb = r3 - ;
    0x0000943c b 0x8edc                                          |     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/lib/libkmod.so.2.3.7 @ 0x9470 */
                                                                 | #include <stdint.h>
                                                                 |  
    ; (fcn) fcn.00009470 ()                                      | void fcn_00009470 (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 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_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;
                                                                 |     int16_t var_88h;
                                                                 |     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;
    0x00009470 push.w {r4, r5, r6, r7, r8, sb, sl, fp, lr}       |     
    0x00009474 sub sp, 0xdc                                      |     
    0x00009476 ldr.w r4, [pc, 0x8dc]                             |     r4 = *(0x00009d54);
    0x0000947a add r3, sp, 0xb8                                  |     r3 += var_b8h;
    0x0000947c add r2, sp, 0xac                                  |     r2 += var_ach;
    0x0000947e str r1, [sp, 0x9c]                                |     var_9ch = r1;
    0x00009480 ldr.w r1, [pc, 0x8d4]                             |     
    0x00009484 add r4, pc                                        |     r4 += pc;
    0x00009486 str r0, [sp, 0x2c]                                |     var_2ch = r0;
    0x00009488 ldr r1, [r4, r1]                                  |     r1 = *((r4 + r1));
    0x0000948a ldr r1, [r1]                                      |     r1 = *(0x9d58);
    0x0000948c str r1, [sp, 0xd4]                                |     var_d4h = r1;
    0x0000948e mov.w r1, 0                                       |     r1 = 0;
    0x00009492 ldr.w r1, [pc, 0x8c8]                             |     
    0x00009496 add r1, pc                                        |     r1 = 0x131f8;
    0x00009498 bl 0x84c4                                         |     r0 = fcn_000084c4 (r0, r1, r2, r3);
    0x0000949c cmp r0, 0                                         |     
                                                                 |     if (r0 < 0) {
    0x0000949e blt.w 0x9c94                                      |         goto label_20;
                                                                 |     }
    0x000094a2 ldr r3, [sp, 0x2c]                                |     r3 = var_2ch;
    0x000094a4 movs r1, 0                                        |     r1 = 0;
    0x000094a6 ldr r2, [r3, 0x10]                                |     r2 = *((r3 + 0x10));
    0x000094a8 ldr r3, [sp, 0xb8]                                |     r3 = var_b8h;
    0x000094aa tst.w r2, 2                                       |     
    0x000094ae ite ne                                            |     
                                                                 |     if ((r2 & 2) == 0) {
    0x000094b0 movne r2, 4                                       |         r2 = 4;
                                                                 |     }
                                                                 |     if ((r2 & 2) != 0) {
    0x000094b2 moveq r2, 8                                       |         r2 = 8;
                                                                 |     }
    0x000094b4 lsls r3, r3, 0x1a                                 |     r3 <<= 0x1a;
    0x000094b6 str r2, [sp, 0x20]                                |     var_20h = r2;
    0x000094b8 itt eq                                            |     
                                                                 |     if (r3 != r3) {
    0x000094ba moveq r3, 0x40                                    |         r3 = 0x40;
                                                                 |     }
                                                                 |     if (r3 != r3) {
    0x000094bc streq r3, [sp, 0x3c]                              |         var_3ch = r3;
                                                                 |     }
                                                                 |     if (r3 != r3) {
    0x000094be bne.w 0x975c                                      |         goto label_21;
                                                                 |     }
                                                                 | label_1:
    0x000094c2 ldr.w r1, [pc, 0x89c]                             |     
    0x000094c6 add r3, sp, 0xc0                                  |     r3 += var_c0h;
    0x000094c8 ldr r0, [sp, 0x2c]                                |     r0 = var_2ch;
    0x000094ca add r2, sp, 0xb0                                  |     r2 += var_b0h;
    0x000094cc add r1, pc                                        |     r1 = 0x13232;
    0x000094ce bl 0x84c4                                         |     r0 = fcn_000084c4 (r0, r1, r2, r3);
    0x000094d2 cmp r0, 0                                         |     
                                                                 |     if (r0 < 0) {
    0x000094d4 blt.w 0x9d08                                      |         goto label_22;
                                                                 |     }
    0x000094d8 ldr r4, [sp, 0x2c]                                |     r4 = var_2ch;
    0x000094da add r3, sp, 0xc8                                  |     r3 += var_c8h;
    0x000094dc ldr.w r1, [pc, 0x884]                             |     
    0x000094e0 add r2, sp, 0xb4                                  |     r2 += var_b4h;
    0x000094e2 mov r0, r4                                        |     r0 = r4;
    0x000094e4 add r1, pc                                        |     r1 = 0x1324c;
    0x000094e6 bl 0x84c4                                         |     r0 = fcn_000084c4 (r0, r1, r2, r3);
    0x000094ea cmp r0, 0                                         |     
                                                                 |     if (r0 < 0) {
    0x000094ec blt.w 0x9d08                                      |         goto label_22;
                                                                 |     }
    0x000094f0 ldr r3, [r4, 0x10]                                |     r3 = *((r4 + 0x10));
    0x000094f2 ldrd r0, r1, [sp, 0xc8]                           |     __asm ("ldrd r0, r1, [var_c8h]");
    0x000094f6 str r3, [sp, 0x8c]                                |     var_8ch = r3;
    0x000094f8 ands r3, r3, 2                                    |     r3 &= 2;
    0x000094fc str r3, [sp, 0x10]                                |     var_10h = r3;
    0x000094fe ite eq                                            |     
                                                                 |     if (r3 != r3) {
    0x00009500 moveq r3, 0x18                                    |         r3 = 0x18;
                                                                 |     }
                                                                 |     if (r3 == r3) {
    0x00009502 movne r3, 0x10                                    |         r3 = 0x10;
                                                                 |     }
    0x00009504 str r3, [sp, 0x14]                                |     var_14h = r3;
    0x00009506 mov r4, r3                                        |     r4 = r3;
    0x00009508 ldr r2, [sp, 0x14]                                |     r2 = var_14h;
    0x0000950a movs r3, 0                                        |     r3 = 0;
    0x0000950c bl 0xac00                                         |     fcn_0000ac00 (r0, r1, r2, r3);
    0x00009510 str r3, [sp, 0x44]                                |     var_44h = r3;
    0x00009512 orrs r3, r2                                       |     r3 |= r2;
    0x00009514 str r0, [sp, 0x90]                                |     var_90h = r0;
    0x00009516 str r2, [sp, 8]                                   |     var_8h = r2;
                                                                 |     if (r3 != r2) {
    0x00009518 bne.w 0x9d08                                      |         goto label_22;
                                                                 |     }
    0x0000951c ldr r0, [sp, 0xb8]                                |     r0 = var_b8h;
    0x0000951e ldr r1, [sp, 0xbc]                                |     r1 = var_bch;
    0x00009520 str r0, [sp, 0x5c]                                |     var_5ch = r0;
    0x00009522 orrs.w r3, r0, r1                                 |     r3 = r0 | r1;
    0x00009526 str r1, [sp, 0x60]                                |     var_60h = r1;
                                                                 |     if (r3 == r0) {
    0x00009528 beq.w 0x9754                                      |         goto label_23;
                                                                 |     }
    0x0000952c ldr r2, [sp, 0x3c]                                |     r2 = var_3ch;
    0x0000952e movs r3, 0                                        |     r3 = 0;
    0x00009530 bl 0xac00                                         |     fcn_0000ac00 (r0, r1, r2, r3);
    0x00009534 movs r1, 1                                        |     r1 = 1;
    0x00009536 str r0, [sp, 0x98]                                |     var_98h = r0;
    0x00009538 blx 0x1fd0                                        |     calloc (r0, r1);
    0x0000953c str r0, [sp, 0x64]                                |     var_64h = r0;
    0x0000953e cmp r0, 0                                         |     
                                                                 |     if (r0 == 0) {
    0x00009540 beq.w 0x9d4a                                      |         goto label_24;
                                                                 |     }
                                                                 | label_0:
    0x00009544 ldr r2, [sp, 0x2c]                                |     r2 = var_2ch;
    0x00009546 movs r1, 8                                        |     r1 = 8;
    0x00009548 ldr r3, [sp, 0xb4]                                |     r3 = var_b4h;
    0x0000954a ldr r6, [sp, 0x90]                                |     r6 = var_90h;
    0x0000954c ldr.w fp, [r2]                                    |     fp = *(r2);
    0x00009550 mov r0, r6                                        |     r0 = r6;
    0x00009552 sub.w r3, r3, fp                                  |     r3 -= fp;
    0x00009556 adds r4, r3, r4                                   |     r4 = r3 + r4;
    0x00009558 ldrh.w r3, [r2, 0x48]                             |     r3 = *((r2 + 0x48));
    0x0000955c str r4, [sp, 0x94]                                |     var_94h = r4;
    0x0000955e cmp r3, 0x2b                                      |     
    0x00009560 it ne                                             |     
                                                                 |     if (r3 != 0x2b) {
    0x00009562 cmpne r3, 2                                       |         __asm ("cmpne r3, 2");
                                                                 |     }
    0x00009564 ite eq                                            |     
                                                                 |     if (r3 != 0x2b) {
    0x00009566 moveq r3, 1                                       |         r3 = 1;
                                                                 |     }
                                                                 |     if (r3 == 0x2b) {
    0x00009568 movne r3, 0                                       |         r3 = 0;
                                                                 |     }
    0x0000956a str r3, [sp, 0x30]                                |     var_30h = r3;
    0x0000956c ldr r3, [sp, 0xb0]                                |     r3 = var_b0h;
    0x0000956e sub.w r3, r3, fp                                  |     r3 -= fp;
    0x00009572 mov r5, r3                                        |     r5 = r3;
    0x00009574 str r3, [sp, 0x34]                                |     var_34h = r3;
    0x00009576 blx 0x1fd0                                        |     calloc (r0, r1);
    0x0000957a asrs r2, r5, 0x1f                                 |     r2 = r5 >> 0x1f;
    0x0000957c str r6, [sp, 0x18]                                |     var_18h = r6;
    0x0000957e str r4, [sp, 0xa0]                                |     var_a0h = r4;
    0x00009580 str r2, [sp, 0x38]                                |     var_38h = r2;
    0x00009582 movs r2, 0                                        |     r2 = 0;
    0x00009584 str r2, [sp, 0xa4]                                |     var_a4h = r2;
    0x00009586 str r0, [sp, 0x88]                                |     var_88h = r0;
    0x00009588 cmp r0, 0                                         |     
                                                                 |     if (r0 == 0) {
    0x0000958a beq.w 0x9d26                                      |         goto label_25;
                                                                 |     }
    0x0000958e cmp r6, 1                                         |     
                                                                 |     if (r6 <= 1) {
    0x00009590 ble.w 0x9cb8                                      |         goto label_26;
                                                                 |     }
    0x00009594 ldr r3, [sp, 0x10]                                |     r3 = var_10h;
    0x00009596 movs r2, 0                                        |     r2 = 0;
    0x00009598 ldr r5, [sp, 0x94]                                |     r5 = var_94h;
    0x0000959a str r2, [sp, 0x4c]                                |     var_4ch = r2;
    0x0000959c cmp r3, 0                                         |     
    0x0000959e ldr r3, [sp, 0xac]                                |     r3 = var_ach;
    0x000095a0 ite ne                                            |     
                                                                 |     if (r3 == 0) {
    0x000095a2 movne sb, 4                                       |         sb = 4;
                                                                 |     }
                                                                 |     if (r3 == 0) {
    0x000095a6 mov.w sb, 8                                       |         sb = 8;
                                                                 |     }
    0x000095aa sub.w r3, r3, fp                                  |     r3 -= fp;
    0x000095ae str r3, [sp, 0x84]                                |     var_84h = r3;
    0x000095b0 adds.w r3, sb, r3                                 |     r3 = sb + r3;
    0x000095b4 str r3, [sp, 0x40]                                |     var_40h = r3;
    0x000095b6 ldr r3, [sp, 0xc0]                                |     r3 = var_c0h;
    0x000095b8 str r3, [sp, 0x54]                                |     var_54h = r3;
    0x000095ba ldr r3, [sp, 0xc4]                                |     r3 = var_c4h;
    0x000095bc str r3, [sp, 0x58]                                |     var_58h = r3;
    0x000095be ldr r3, [sp, 0x2c]                                |     r3 = var_2ch;
    0x000095c0 ldrd r8, r7, [r3, 8]                              |     __asm ("ldrd r8, r7, [r3, 8]");
    0x000095c4 adc.w r3, r2, r2                                  |     __asm ("adc.w r3, r2, r2");
    0x000095c8 str r3, [sp, 0x68]                                |     var_68h = r3;
    0x000095ca adds.w sl, r5, 4                                  |     sl = r5 + 4;
    0x000095ce ldr r3, [sp, 0x88]                                |     r3 = var_88h;
    0x000095d0 add.w r3, r3, 8                                   |     r3 += 8;
    0x000095d4 str r3, [sp, 4]                                   |     var_4h = r3;
    0x000095d6 adc r3, r2, 0                                     |     __asm ("adc r3, r2, 0");
    0x000095da str r3, [sp]                                      |     *(sp) = r3;
    0x000095dc mov r3, r2                                        |     r3 = r2;
    0x000095de movs r2, 1                                        |     r2 = 1;
    0x000095e0 str r3, [sp, 0x50]                                |     var_50h = r3;
    0x000095e2 str r2, [sp, 0xc]                                 |     var_ch = r2;
    0x000095e4 ldr r2, [sp, 0x8c]                                |     r2 = var_8ch;
    0x000095e6 and r2, r2, 0x10                                  |     r2 &= 0x10;
    0x000095ea str r2, [sp, 0x1c]                                |     var_1ch = r2;
    0x000095ec add.w r2, fp, 4                                   |     r2 += arg_4h;
    0x000095f0 str r2, [sp, 0x6c]                                |     var_6ch = r2;
    0x000095f2 add.w r2, fp, -1                                  |     r2 = fp + -1;
    0x000095f6 str r2, [sp, 0x70]                                |     var_70h = r2;
    0x000095f8 add.w r2, fp, 3                                   |     r2 += arg_3h;
    0x000095fc str r2, [sp, 0x74]                                |     var_74h = r2;
    0x000095fe add.w r2, fp, 0xc                                 |     r2 += arg_ch;
    0x00009602 str r2, [sp, 0x78]                                |     var_78h = r2;
    0x00009604 mov r2, sl                                        |     r2 = sl;
    0x00009606 mov sl, sb                                        |     sl = sb;
    0x00009608 mov sb, r2                                        |     sb = r2;
                                                                 | label_2:
    0x0000960a ldr r2, [sp, 0x10]                                |     r2 = var_10h;
    0x0000960c cmp r2, 0                                         |     
                                                                 |     if (r2 == 0) {
    0x0000960e beq.w 0x9afc                                      |         goto label_27;
                                                                 |     }
    0x00009612 ldr r2, [sp]                                      |     r2 = *(sp);
    0x00009614 cmp r8, sb                                        |     
    0x00009616 sbcs.w r2, r7, r2                                 |     __asm ("sbcs.w r2, r7, r2");
                                                                 |     if (r8 <= sb) {
    0x0000961a blo.w 0x9d0e                                      |         goto label_28;
                                                                 |     }
    0x0000961e ldr r2, [sp, 0x1c]                                |     r2 = var_1ch;
    0x00009620 add.w r1, r5, fp                                  |     r1 = r5 + fp;
    0x00009624 cmp r2, 0                                         |     
                                                                 |     if (r2 == 0) {
    0x00009626 beq.w 0x9b54                                      |         goto label_29;
                                                                 |     }
    0x0000962a ldr r2, [sp, 0x70]                                |     r2 = var_70h;
    0x0000962c ldr r0, [sp, 0x74]                                |     r0 = var_74h;
    0x0000962e ldr r4, [sp, 8]                                   |     r4 = var_8h;
    0x00009630 add r2, r5                                        |     r2 += r5;
    0x00009632 adds r6, r0, r5                                   |     r6 = r0 + r5;
                                                                 |     do {
    0x00009634 ldrb r0, [r2, 1]!                                 |         r0 = *((r2 += 1));
    0x00009638 cmp r6, r2                                        |         
    0x0000963a orr.w r4, r0, r4, lsl 8                           |         r4 = r0 | (r4 << 8);
    0x0000963e bne 0x9634                                        |         
                                                                 |     } while (r6 != r2);
    0x00009640 adds.w r0, r5, 0x10                               |     r0 = r5 + 0x10;
    0x00009644 adc r2, r3, 0                                     |     __asm ("adc r2, r3, 0");
    0x00009648 cmp r8, r0                                        |     
    0x0000964a sbcs.w r2, r7, r2                                 |     __asm ("sbcs.w r2, r7, r2");
                                                                 |     if (r8 <= r0) {
    0x0000964e blo.w 0x9d0e                                      |         goto label_28;
                                                                 |     }
    0x00009652 ldrh r2, [r1, 0xe]                                |     r2 = *((r1 + 0xe));
    0x00009654 rev16 r2, r2                                      |     __asm ("rev16 r2, r2");
    0x00009656 uxth r2, r2                                       |     r2 = (int16_t) r2;
                                                                 | label_8:
    0x00009658 adds.w r0, r5, 0xd                                |     r0 = r5 + 0xd;
    0x0000965c adc r1, r3, 0                                     |     __asm ("adc r1, r3, 0");
    0x00009660 cmp r8, r0                                        |     
    0x00009662 sbcs.w r1, r7, r1                                 |     __asm ("sbcs.w r1, r7, r1");
                                                                 |     if (r8 <= r0) {
    0x00009666 blo.w 0x9d0e                                      |         goto label_28;
                                                                 |     }
    0x0000966a ldr r1, [sp, 0x78]                                |     r1 = var_78h;
    0x0000966c ldrb r1, [r1, r5]                                 |     r1 = *((r1 + r5));
                                                                 | label_7:
    0x0000966e cmp r2, 0                                         |     
                                                                 |     if (r2 != 0) {
    0x00009670 bne.w 0x97c8                                      |         goto label_18;
                                                                 |     }
    0x00009674 ldr r2, [sp, 0x30]                                |     r2 = var_30h;
                                                                 |     if (r2 != 0) {
    0x00009676 cbz r2, 0x9682                                    |         
    0x00009678 and r1, r1, 0xf                                   |         r1 &= 0xf;
    0x0000967c cmp r1, 0xd                                       |         
                                                                 |         if (r1 == 0xd) {
    0x0000967e beq.w 0x97c8                                      |             goto label_18;
                                                                 |         }
                                                                 |     }
    0x00009682 ldr r2, [sp, 0x54]                                |     r2 = var_54h;
    0x00009684 movs r1, 0                                        |     r1 = 0;
    0x00009686 cmp r4, r2                                        |     
    0x00009688 ldr r2, [sp, 0x58]                                |     r2 = var_58h;
    0x0000968a sbcs.w r2, r1, r2                                 |     __asm ("sbcs.w r2, r1, r2");
                                                                 |     if (r4 >= r2) {
    0x0000968e bhs.w 0x9ca6                                      |         goto label_30;
                                                                 |     }
    0x00009692 ldr r2, [sp, 0x34]                                |     r2 = var_34h;
    0x00009694 adds r4, r4, r2                                   |     r4 += r2;
    0x00009696 ldr r2, [sp, 0x38]                                |     r2 = var_38h;
    0x00009698 adc r2, r2, 0                                     |     __asm ("adc r2, r2, 0");
    0x0000969c cmp r4, r8                                        |     
    0x0000969e sbcs r2, r7                                       |     __asm ("sbcs r2, r7");
                                                                 |     if (r4 >= r8) {
    0x000096a0 bhs 0x973c                                        |         goto label_3;
                                                                 |     }
    0x000096a2 ldrb.w r2, [fp, r4]                               |     r2 = *((fp + r4));
    0x000096a6 add r4, fp                                        |     r4 += fp;
    0x000096a8 cmp r2, 0                                         |     
                                                                 |     if (r2 == 0) {
    0x000096aa beq.w 0x97c8                                      |         goto label_18;
                                                                 |     }
    0x000096ae str r3, [sp, 0x24]                                |     var_24h = r3;
    0x000096b0 mov r0, r4                                        |     r0 = r4;
    0x000096b2 ldr r3, [sp, 0x4c]                                |     r3 = var_4ch;
    0x000096b4 adds r3, 1                                        |     r3++;
    0x000096b6 str r3, [sp, 0x4c]                                |     var_4ch = r3;
    0x000096b8 blx 0x22a8                                        |     fcn_000022a8 ();
    0x000096bc ldr r2, [sp, 0x50]                                |     r2 = var_50h;
    0x000096be adds r2, 1                                        |     r2++;
    0x000096c0 adds r3, r0, r2                                   |     r3 = r0 + r2;
    0x000096c2 str r3, [sp, 0x50]                                |     var_50h = r3;
    0x000096c4 ldrd r3, r2, [sp, 0x5c]                           |     __asm ("ldrd r3, r2, [var_5ch]");
    0x000096c8 orrs r2, r3                                       |     r2 |= r3;
    0x000096ca ldr r3, [sp, 0x24]                                |     r3 = var_24h;
    0x000096cc it eq                                             |     
                                                                 |     if (r2 == r3) {
    0x000096ce ldrdeq r0, r1, [sp, 0x5c]                         |         __asm ("ldrdeq r0, r1, [var_5ch]");
                                                                 |     }
                                                                 |     if (r2 == r3) {
    0x000096d2 beq 0x97c2                                        |         goto label_31;
                                                                 |     }
    0x000096d4 ldr r2, [sp, 0x40]                                |     r2 = var_40h;
    0x000096d6 cmp r2, r8                                        |     
    0x000096d8 ldr r2, [sp, 0x68]                                |     r2 = var_68h;
    0x000096da sbcs r2, r7                                       |     __asm ("sbcs r2, r7");
                                                                 |     if (r2 >= r8) {
    0x000096dc bhs 0x973c                                        |         goto label_3;
                                                                 |     }
    0x000096de ldr r1, [sp, 0x44]                                |     r1 = var_44h;
    0x000096e0 movs r2, 0                                        |     r2 = 0;
    0x000096e2 str r2, [sp, 0x28]                                |     var_28h = r2;
    0x000096e4 ldr r2, [sp, 8]                                   |     r2 = var_8h;
    0x000096e6 str r1, [sp, 0x24]                                |     var_24h = r1;
    0x000096e8 ldr r6, [sp, 0x84]                                |     r6 = var_84h;
    0x000096ea ldr r1, [sp, 0x40]                                |     r1 = var_40h;
    0x000096ec strd r5, r3, [sp, 0x7c]                           |     __asm ("strd r5, r3, [var_80h]");
    0x000096f0 mov r5, r2                                        |     r5 = r2;
    0x000096f2 add r1, fp                                        |     r1 += fp;
    0x000096f4 str r1, [sp, 0x48]                                |     var_48h = r1;
                                                                 |     do {
    0x000096f6 ldr r3, [sp, 0x48]                                |         r3 = var_48h;
    0x000096f8 mov r0, r4                                        |         r0 = r4;
    0x000096fa adds r1, r3, r5                                   |         r1 = r3 + r5;
    0x000096fc blx 0x201c                                        |         r0 = fcn_0000201c ();
    0x00009700 cmp r0, 0                                         |         
                                                                 |         if (r0 == 0) {
    0x00009702 beq 0x976c                                        |             goto label_32;
                                                                 |         }
    0x00009704 adds.w r2, r5, 0x40                               |         r2 = r5 + 0x40;
    0x00009708 ldr r3, [sp, 0x24]                                |         r3 = var_24h;
    0x0000970a mov r5, r2                                        |         r5 = r2;
    0x0000970c ldr r2, [sp, 0x5c]                                |         r2 = var_5ch;
    0x0000970e adc r3, r3, 0                                     |         __asm ("adc r3, r3, 0");
    0x00009712 cmp r5, r2                                        |         
    0x00009714 ldr r2, [sp, 0x60]                                |         r2 = var_60h;
    0x00009716 str r3, [sp, 0x24]                                |         var_24h = r3;
    0x00009718 sbcs.w r1, r3, r2                                 |         __asm ("sbcs.w r1, r3, r2");
                                                                 |         if (r5 >= r2) {
    0x0000971c bhs.w 0x9cf8                                      |             goto label_33;
                                                                 |         }
    0x00009720 ldr r3, [sp, 0x28]                                |         r3 = var_28h;
    0x00009722 adds r6, 0x40                                     |         r6 += 0x40;
    0x00009724 ldr r2, [sp, 0x68]                                |         r2 = var_68h;
    0x00009726 adc r3, r3, 0                                     |         __asm ("adc r3, r3, 0");
    0x0000972a str r3, [sp, 0x28]                                |         var_28h = r3;
    0x0000972c ldr r3, [sp, 0x40]                                |         r3 = var_40h;
    0x0000972e adds r0, r5, r3                                   |         r0 = r5 + r3;
    0x00009730 ldr r3, [sp, 0x24]                                |         r3 = var_24h;
    0x00009732 adc.w r1, r3, r2                                  |         __asm ("adc.w r1, r3, r2");
    0x00009736 cmp r0, r8                                        |         
    0x00009738 sbcs r1, r7                                       |         __asm ("sbcs r1, r7");
    0x0000973a blo 0x96f6                                        |         
                                                                 |     } while (r0 <= r8);
                                                                 | label_3:
    0x0000973c ldr.w r3, [pc, 0x628]                             |     
    0x00009740 movs r2, 0xca                                     |     r2 = 0xca;
    0x00009742 ldr.w r1, [pc, 0x628]                             |     r1 = *(0x00009d6c);
    0x00009746 ldr.w r0, [pc, 0x628]                             |     
    0x0000974a add r3, pc                                        |     r3 = 0x134b6;
    0x0000974c add r1, pc                                        |     r1 += pc;
    0x0000974e add r0, pc                                        |     r0 = 0x134c4;
    0x00009750 blx 0x246c                                        |     fcn_0000246c ();
                                                                 | label_23:
    0x00009754 movs r3, 0                                        |     r3 = 0;
    0x00009756 str r3, [sp, 0x64]                                |     var_64h = r3;
    0x00009758 str r3, [sp, 0x98]                                |     var_98h = r3;
    0x0000975a b 0x9544                                          |     goto label_0;
                                                                 | label_21:
    0x0000975c vmov.i32 d16, 0                                   |     __asm ("vmov.i32 d16, 0");
    0x00009760 movs r3, 0x40                                     |     r3 = 0x40;
    0x00009762 str r3, [sp, 0x3c]                                |     var_3ch = r3;
    0x00009764 str r1, [sp, 0xac]                                |     var_ach = r1;
    0x00009766 vstr d16, [sp, 0xb8]                              |     __asm ("vstr d16, [sp, 0xb8]");
    0x0000976a b 0x94c2                                          |     goto label_1;
                                                                 | label_32:
    0x0000976c ldr r0, [sp, 0x28]                                |     r0 = var_28h;
    0x0000976e adds.w r1, sl, r6                                 |     r1 = sl + r6;
    0x00009772 mov r2, r5                                        |     r2 = r5;
    0x00009774 ldr r3, [sp, 0x80]                                |     r3 = var_80h;
    0x00009776 ldr r5, [sp, 0x7c]                                |     r5 = var_7ch;
    0x00009778 adc r0, r0, 0                                     |     __asm ("adc r0, r0, 0");
    0x0000977c cmp r8, r1                                        |     
    0x0000977e sbcs.w r1, r7, r0                                 |     __asm ("sbcs.w r1, r7, r0");
                                                                 |     if (r8 <= r1) {
    0x00009782 blo.w 0x9d0e                                      |         goto label_28;
                                                                 |     }
    0x00009786 ldr r1, [sp, 0x1c]                                |     r1 = var_1ch;
    0x00009788 add r6, fp                                        |     r6 += fp;
    0x0000978a cmp r1, 0                                         |     
                                                                 |     if (r1 == 0) {
    0x0000978c beq.w 0x9c02                                      |         goto label_34;
                                                                 |     }
    0x00009790 ldr r0, [sp, 8]                                   |     r0 = var_8h;
    0x00009792 add.w ip, r6, -1                                  |     
    0x00009796 ldr r1, [sp, 0x44]                                |     r1 = var_44h;
                                                                 |     do {
    0x00009798 mov r4, ip                                        |         r4 = ip;
    0x0000979a ldrb lr, [ip, 1]!                                 |         
    0x0000979e adds r4, 2                                        |         r4 += 2;
    0x000097a0 lsls r1, r1, 8                                    |         r1 <<= 8;
    0x000097a2 subs r4, r4, r6                                   |         r4 -= r6;
    0x000097a4 cmp r4, sl                                        |         
    0x000097a6 orr.w r1, r1, r0, lsr 24                          |         r1 |= (r0 >> 24);
    0x000097aa orr.w r0, lr, r0, lsl 8                           |         r0 = lr | (r0 << 8);
    0x000097ae blo 0x9798                                        |         
                                                                 |     } while (r4 <= sl);
                                                                 | label_11:
    0x000097b0 ldr r4, [sp, 0x64]                                |     r4 = var_64h;
                                                                 |     if (r4 != 0) {
    0x000097b2 cbz r4, 0x97c2                                    |         
    0x000097b4 lsrs r4, r2, 6                                    |         r4 = r2 >> 6;
    0x000097b6 ldr r2, [sp, 0x24]                                |         r2 = var_24h;
    0x000097b8 ldr r6, [sp, 0x64]                                |         r6 = var_64h;
    0x000097ba orr.w r4, r4, r2, lsl 26                          |         r4 |= (r2 << 26);
    0x000097be movs r2, 1                                        |         r2 = 1;
    0x000097c0 strb r2, [r6, r4]                                 |         *((r6 + r4)) = r2;
                                                                 |     }
                                                                 | label_31:
    0x000097c2 ldr r2, [sp, 4]                                   |     r2 = var_4h;
    0x000097c4 strd r0, r1, [r2]                                 |     __asm ("strd r0, r1, [r2]");
                                                                 | label_18:
    0x000097c8 ldr r2, [sp, 0x14]                                |     r2 = var_14h;
    0x000097ca ldr r1, [sp, 0xc]                                 |     r1 = var_ch;
    0x000097cc ldr r0, [sp, 4]                                   |     r0 = var_4h;
    0x000097ce adds r5, r5, r2                                   |     r5 += r2;
    0x000097d0 adc r3, r3, 0                                     |     __asm ("adc r3, r3, 0");
    0x000097d4 adds.w r2, r2, sb                                 |     r2 += sb;
    0x000097d8 mov sb, r2                                        |     sb = r2;
    0x000097da ldr r2, [sp]                                      |     r2 = *(sp);
    0x000097dc add.w r1, r1, 1                                   |     r1++;
    0x000097e0 add.w r0, r0, 8                                   |     r0 += 8;
    0x000097e4 str r1, [sp, 0xc]                                 |     var_ch = r1;
    0x000097e6 adc r2, r2, 0                                     |     __asm ("adc r2, r2, 0");
    0x000097ea str r0, [sp, 4]                                   |     var_4h = r0;
    0x000097ec str r2, [sp]                                      |     *(sp) = r2;
    0x000097ee ldr r2, [sp, 0x18]                                |     r2 = var_18h;
    0x000097f0 cmp r2, r1                                        |     
                                                                 |     if (r2 != r1) {
    0x000097f2 bne.w 0x960a                                      |         goto label_2;
                                                                 |     }
    0x000097f6 ldr r3, [sp, 0x64]                                |     r3 = var_64h;
    0x000097f8 cmp r3, 0                                         |     
                                                                 |     if (r3 == 0) {
    0x000097fa beq 0x9874                                        |         goto label_35;
                                                                 |     }
    0x000097fc ldr r3, [sp, 0x98]                                |     r3 = var_98h;
    0x000097fe ldr r5, [sp, 0x84]                                |     r5 = var_84h;
    0x00009800 cmp r3, 0                                         |     
    0x00009802 asr.w r6, r5, 0x1f                                |     r6 = r5 >> 0x1f;
                                                                 |     if (r3 <= 0) {
    0x00009806 ble 0x9874                                        |         goto label_35;
                                                                 |     }
                                                                 | label_16:
    0x00009808 ldr r3, [sp, 0x64]                                |     r3 = var_64h;
    0x0000980a movs r7, 0                                        |     r7 = 0;
    0x0000980c str.w fp, [sp]                                    |     __asm ("str.w fp, [sp]");
    0x00009810 str r5, [sp, 4]                                   |     var_4h = r5;
    0x00009812 str r6, [sp, 0xc]                                 |     var_ch = r6;
    0x00009814 add.w r8, r3, -1                                  |     r8 = r3 + -1;
    0x00009818 ldr.w fp, [sp, 0x4c]                              |     fp = var_4ch;
    0x0000981c mov sl, r3                                        |     sl = r3;
    0x0000981e ldr.w sb, [sp, 0x98]                              |     sb = var_98h;
    0x00009822 ldr r5, [sp, 0x50]                                |     r5 = var_50h;
    0x00009824 ldr r6, [sp, 0x2c]                                |     r6 = var_2ch;
                                                                 | label_4:
    0x00009826 mov r4, r8                                        |     r4 = r8;
    0x00009828 ldrb r3, [r8, 1]!                                 |     r3 = *((r8 += 1));
                                                                 |     if (r3 != 0) {
    0x0000982c cbnz r3, 0x985e                                   |         goto label_36;
                                                                 |     }
    0x0000982e ldr r3, [sp, 0x20]                                |     r3 = var_20h;
    0x00009830 ldr r1, [sp, 4]                                   |     r1 = var_4h;
    0x00009832 ldr r2, [r6, 8]                                   |     r2 = *((r6 + 8));
    0x00009834 adds r0, r3, r1                                   |     r0 = r3 + r1;
    0x00009836 ldr r1, [sp, 0xc]                                 |     r1 = var_ch;
    0x00009838 ldr r3, [r6, 0xc]                                 |     r3 = *((r6 + 0xc));
    0x0000983a adc ip, r1, 0                                     |     __asm ("adc ip, r1, 0");
    0x0000983e adds r0, r0, r7                                   |     r0 += r7;
    0x00009840 adc ip, ip, 0                                     |     __asm ("adc ip, ip, 0");
    0x00009844 cmp r0, r2                                        |     
    0x00009846 sbcs.w ip, ip, r3                                 |     __asm ("sbcs.w ip, ip, r3");
                                                                 |     if (r0 >= r2) {
    0x0000984a bhs.w 0x973c                                      |         goto label_3;
                                                                 |     }
    0x0000984e ldr r3, [sp]                                      |     r3 = *(sp);
    0x00009850 adds r5, 1                                        |     r5++;
    0x00009852 add.w fp, fp, 1                                   |     
    0x00009856 add r0, r3                                        |     r0 += r3;
    0x00009858 blx 0x22a8                                        |     r0 = fcn_000022a8 ();
    0x0000985c add r5, r0                                        |     r5 += r0;
                                                                 | label_36:
    0x0000985e adds r4, 2                                        |     r4 += 2;
    0x00009860 ldr r3, [sp, 0x3c]                                |     r3 = var_3ch;
    0x00009862 sub.w r4, r4, sl                                  |     r4 -= sl;
    0x00009866 cmp sb, r4                                        |     
    0x00009868 add r7, r3                                        |     r7 += r3;
                                                                 |     if (sb > r4) {
    0x0000986a bgt 0x9826                                        |         goto label_4;
                                                                 |     }
    0x0000986c strd fp, r5, [sp, 0x4c]                           |     __asm ("strd fp, r5, [var_4ch]");
    0x00009870 ldr.w fp, [sp]                                    |     fp = *(sp);
                                                                 | label_35:
    0x00009874 ldr r3, [sp, 0x4c]                                |     r3 = var_4ch;
    0x00009876 cmp r3, 0                                         |     
                                                                 |     if (r3 == 0) {
    0x00009878 beq.w 0x9cd8                                      |         goto label_37;
                                                                 |     }
    0x0000987c ldr r0, [sp, 0x50]                                |     r0 = var_50h;
    0x0000987e lsls r4, r3, 4                                    |     r4 = r3 << 4;
    0x00009880 add r0, r4                                        |     r0 += r4;
    0x00009882 blx 0x21fc                                        |     fcn_000021fc ();
    0x00009886 ldr r2, [sp, 0x9c]                                |     r2 = var_9ch;
    0x00009888 str r0, [sp, 0x1c]                                |     var_1ch = r0;
    0x0000988a str r0, [r2]                                      |     *(r2) = r0;
    0x0000988c cmp r0, 0                                         |     
                                                                 |     if (r0 == 0) {
    0x0000988e beq.w 0x9d32                                      |         goto label_38;
                                                                 |     }
    0x00009892 ldr r3, [sp, 0x1c]                                |     r3 = var_1ch;
    0x00009894 add r4, r3                                        |     r4 += r3;
    0x00009896 ldr r3, [sp, 0x90]                                |     r3 = var_90h;
    0x00009898 cmp r3, 1                                         |     
                                                                 |     if (r3 <= 1) {
    0x0000989a ble.w 0x9d20                                      |         goto label_39;
                                                                 |     }
    0x0000989e ldr r3, [sp, 0x94]                                |     r3 = var_94h;
    0x000098a0 movs r6, 1                                        |     r6 = 1;
    0x000098a2 str r4, [sp]                                      |     *(sp) = r4;
    0x000098a4 mov.w sl, 0                                       |     sl = 0;
    0x000098a8 ldrd r4, sb, [sp, 0xa0]                           |     __asm ("ldrd r4, sb, [var_a0h]");
    0x000098ac adds r5, r3, 4                                    |     r5 = r3 + 4;
    0x000098ae mov.w r3, 0                                       |     r3 = 0;
    0x000098b2 adc r7, r3, 0                                     |     __asm ("adc r7, r3, 0");
    0x000098b6 ldr r3, [sp, 0x88]                                |     r3 = var_88h;
    0x000098b8 str.w sl, [sp, 0xc]                               |     __asm ("str.w sl, [var_ch]");
    0x000098bc add.w r8, r3, 8                                   |     r8 = r3 + 8;
    0x000098c0 ldr r3, [sp, 0x8c]                                |     r3 = var_8ch;
    0x000098c2 and r3, r3, 0x10                                  |     r3 &= 0x10;
    0x000098c6 str r3, [sp, 4]                                   |     var_4h = r3;
    0x000098c8 add.w r3, fp, 4                                   |     r3 += arg_4h;
    0x000098cc str r3, [sp, 0x28]                                |     var_28h = r3;
                                                                 | label_5:
    0x000098ce ldr r3, [sp, 0x2c]                                |     r3 = var_2ch;
    0x000098d0 ldrd ip, r0, [r3, 8]                              |     __asm ("ldrd ip, r0, [r3, 8]");
    0x000098d4 ldr r3, [sp, 0x10]                                |     r3 = var_10h;
    0x000098d6 cmp r3, 0                                         |     
                                                                 |     if (r3 == 0) {
    0x000098d8 beq.w 0x9ba4                                      |         goto label_40;
                                                                 |     }
    0x000098dc cmp ip, r5                                        |     
    0x000098de sbcs.w r3, r0, r7                                 |     __asm ("sbcs.w r3, r0, r7");
                                                                 |     if (ip <= r5) {
    0x000098e2 blo.w 0x9d0e                                      |         goto label_28;
                                                                 |     }
    0x000098e6 ldr r3, [sp, 4]                                   |     r3 = var_4h;
    0x000098e8 add.w r1, fp, r4                                  |     r1 = fp + r4;
    0x000098ec cmp r3, 0                                         |     
                                                                 |     if (r3 == 0) {
    0x000098ee beq.w 0x9c6e                                      |         goto label_41;
                                                                 |     }
    0x000098f2 ldr r3, [sp, 8]                                   |     r3 = var_8h;
    0x000098f4 add.w r2, fp, -1                                  |     r2 = fp + -1;
    0x000098f8 add.w lr, fp, 3                                   |     lr += arg_3h;
    0x000098fc add r2, r4                                        |     r2 += r4;
    0x000098fe add lr, r4                                        |     lr += r4;
                                                                 |     do {
    0x00009900 ldrb sl, [r2, 1]!                                 |         sl = *((r2 += 1));
    0x00009904 cmp lr, r2                                        |         
    0x00009906 orr.w r3, sl, r3, lsl 8                           |         r3 = sl | (r3 << 8);
    0x0000990a bne 0x9900                                        |         
                                                                 |     } while (lr != r2);
    0x0000990c adds.w lr, r4, 0x10                               |     lr = r4 + 0x10;
    0x00009910 adc r2, sb, 0                                     |     __asm ("adc r2, sb, 0");
    0x00009914 cmp ip, lr                                        |     
    0x00009916 sbcs.w r2, r0, r2                                 |     __asm ("sbcs.w r2, r0, r2");
                                                                 |     if (ip <= lr) {
    0x0000991a blo.w 0x9d0e                                      |         goto label_28;
                                                                 |     }
    0x0000991e ldrh r2, [r1, 0xe]                                |     r2 = *((r1 + 0xe));
    0x00009920 rev16 r2, r2                                      |     __asm ("rev16 r2, r2");
    0x00009922 uxth r2, r2                                       |     r2 = (int16_t) r2;
                                                                 | label_14:
    0x00009924 adds.w lr, r4, 0xd                                |     lr = r4 + 0xd;
    0x00009928 adc r1, sb, 0                                     |     __asm ("adc r1, sb, 0");
    0x0000992c cmp ip, lr                                        |     
    0x0000992e sbcs.w r1, r0, r1                                 |     __asm ("sbcs.w r1, r0, r1");
                                                                 |     if (ip <= lr) {
    0x00009932 blo.w 0x9d0e                                      |         goto label_28;
                                                                 |     }
    0x00009936 add.w r1, fp, 0xc                                 |     r1 += arg_ch;
    0x0000993a ldrb.w lr, [r1, r4]                               |     
                                                                 | label_10:
    0x0000993e cmp r2, 0                                         |     
                                                                 |     if (r2 != 0) {
    0x00009940 bne 0x99be                                        |         goto label_42;
                                                                 |     }
    0x00009942 ldr r2, [sp, 0x30]                                |     r2 = var_30h;
                                                                 |     if (r2 != 0) {
    0x00009944 cbz r2, 0x994e                                    |         
    0x00009946 and r2, lr, 0xf                                   |         r2 = lr & 0xf;
    0x0000994a cmp r2, 0xd                                       |         
                                                                 |         if (r2 == 0xd) {
    0x0000994c beq 0x99be                                        |             goto label_42;
                                                                 |         }
                                                                 |     }
    0x0000994e ldr r2, [sp, 0x34]                                |     r2 = var_34h;
    0x00009950 adds r3, r3, r2                                   |     r3 += r2;
    0x00009952 ldr r2, [sp, 0x38]                                |     r2 = var_38h;
    0x00009954 adc r2, r2, 0                                     |     __asm ("adc r2, r2, 0");
    0x00009958 cmp r3, ip                                        |     
    0x0000995a sbcs r2, r0                                       |     __asm ("sbcs r2, r0");
                                                                 |     if (r3 >= ip) {
    0x0000995c bhs.w 0x973c                                      |         goto label_3;
                                                                 |     }
    0x00009960 ldrb.w r2, [fp, r3]                               |     r2 = *((fp + r3));
    0x00009964 add.w sl, fp, r3                                  |     sl = fp + r3;
                                                                 |     if (r2 != 0) {
    0x00009968 cbz r2, 0x99be                                    |         
    0x0000996a lsr.w lr, lr, 4                                   |         lr >>= 4;
    0x0000996e mov r0, sl                                        |         r0 = sl;
    0x00009970 cmp.w lr, 2                                       |         
    0x00009974 ite eq                                            |         
                                                                 |         if (lr != 2) {
    0x00009976 moveq r3, 0x57                                    |             r3 = 0x57;
                                                                 |         }
                                                                 |         if (lr == 2) {
    0x00009978 movne r3, 0x55                                    |             r3 = 0x55;
                                                                 |         }
    0x0000997a str r3, [sp, 0x24]                                |         var_24h = r3;
    0x0000997c blx 0x22a8                                        |         fcn_000022a8 ();
    0x00009980 ldr r2, [sp, 0xc]                                 |         r2 = var_ch;
    0x00009982 mov r1, sl                                        |         r1 = sl;
    0x00009984 ldr r3, [sp, 0x1c]                                |         r3 = var_1ch;
    0x00009986 mov sl, r0                                        |         sl = r0;
    0x00009988 vldr d16, [r8]                                    |         __asm ("vldr d16, [r8]");
    0x0000998c add.w ip, r3, r2, lsl 4                           |         
    0x00009990 ldr r3, [sp, 0x24]                                |         r3 = var_24h;
    0x00009992 adds r2, 1                                        |         r2++;
    0x00009994 str r2, [sp, 0xc]                                 |         var_ch = r2;
    0x00009996 mov r2, sl                                        |         r2 = sl;
    0x00009998 str.w r3, [ip, 8]                                 |         __asm ("str.w r3, [ip, 8]");
    0x0000999c ldr r3, [sp]                                      |         r3 = *(sp);
    0x0000999e vstr d16, [ip]                                    |         __asm ("vstr d16, [ip]");
    0x000099a2 mov r0, r3                                        |         r0 = r3;
    0x000099a4 str.w r3, [ip, 0xc]                               |         __asm ("str.w r3, [ip, 0xc]");
    0x000099a8 blx 0x20c0                                        |         mmap64 ()
    0x000099ac ldr r2, [sp]                                      |         r2 = *(sp);
    0x000099ae movs r3, 0                                        |         r3 = 0;
    0x000099b0 strb.w r3, [r2, sl]                               |         *((r2 + sl)) = r3;
    0x000099b4 add.w sl, sl, 1                                   |         sl++;
    0x000099b8 add.w r3, r2, sl                                  |         r3 = r2 + sl;
    0x000099bc str r3, [sp]                                      |         *(sp) = r3;
                                                                 |     }
                                                                 | label_42:
    0x000099be ldr r3, [sp, 0x14]                                |     r3 = var_14h;
    0x000099c0 adds r6, 1                                        |     r6++;
    0x000099c2 add.w r8, r8, 8                                   |     r8 += 8;
    0x000099c6 adds r4, r4, r3                                   |     r4 += r3;
    0x000099c8 adc sb, sb, 0                                     |     __asm ("adc sb, sb, 0");
    0x000099cc adds r5, r3, r5                                   |     r5 = r3 + r5;
    0x000099ce ldr r3, [sp, 0x18]                                |     r3 = var_18h;
    0x000099d0 adc r7, r7, 0                                     |     __asm ("adc r7, r7, 0");
    0x000099d4 cmp r3, r6                                        |     
                                                                 |     if (r3 != r6) {
    0x000099d6 bne.w 0x98ce                                      |         goto label_5;
                                                                 |     }
    0x000099da ldr r4, [sp]                                      |     r4 = *(sp);
    0x000099dc ldr.w sl, [sp, 0xc]                               |     sl = var_ch;
                                                                 | label_19:
    0x000099e0 ldr r0, [sp, 0x88]                                |     r0 = var_88h;
    0x000099e2 blx 0x20a4                                        |     fcn_000020a4 ();
    0x000099e6 ldr r2, [sp, 0x64]                                |     r2 = var_64h;
    0x000099e8 cmp r2, 0                                         |     
                                                                 |     if (r2 == 0) {
    0x000099ea beq 0x9ade                                        |         goto label_15;
                                                                 |     }
    0x000099ec ldr r3, [sp, 0xac]                                |     r3 = var_ach;
    0x000099ee sub.w r3, r3, fp                                  |     r3 -= fp;
    0x000099f2 str r3, [sp, 0x18]                                |     var_18h = r3;
    0x000099f4 asrs r3, r3, 0x1f                                 |     r3 >>= 0x1f;
    0x000099f6 str r3, [sp, 0x24]                                |     var_24h = r3;
    0x000099f8 ldr r3, [sp, 0x98]                                |     r3 = var_98h;
    0x000099fa cmp r3, 0                                         |     
                                                                 |     if (r3 <= 0) {
    0x000099fc ble 0x9ad8                                        |         goto label_43;
                                                                 |     }
    0x000099fe add r3, r2                                        |     r3 += r2;
    0x00009a00 ldr r1, [sp, 0x8c]                                |     r1 = var_8ch;
    0x00009a02 subs r3, 1                                        |     r3--;
    0x00009a04 add.w sb, r2, -1                                  |     sb = r2 + -1;
    0x00009a08 str r3, [sp, 0x14]                                |     var_14h = r3;
    0x00009a0a movs r3, 0                                        |     r3 = 0;
    0x00009a0c mov r8, r3                                        |     r8 = r3;
    0x00009a0e and r1, r1, 0x10                                  |     r1 &= 0x10;
    0x00009a12 str r1, [sp, 0x28]                                |     var_28h = r1;
    0x00009a14 str.w fp, [sp, 0x30]                              |     __asm ("str.w fp, [var_30h]");
    0x00009a18 str.w sl, [sp]                                    |     __asm ("str.w sl, [sp]");
                                                                 | label_6:
    0x00009a1c ldrb r3, [sb, 1]!                                 |     r3 = *((sb += 1));
    0x00009a20 cmp r3, 0                                         |     
                                                                 |     if (r3 != 0) {
    0x00009a22 bne 0x9aca                                        |         goto label_44;
                                                                 |     }
    0x00009a24 ldr r1, [sp, 0x18]                                |     r1 = var_18h;
    0x00009a26 ldr r3, [sp, 0x2c]                                |     r3 = var_2ch;
    0x00009a28 ldr r6, [sp, 0x20]                                |     r6 = var_20h;
    0x00009a2a adds.w r5, r8, r1                                 |     r5 = r8 + r1;
    0x00009a2e ldr r1, [sp, 0x24]                                |     r1 = var_24h;
    0x00009a30 ldr r2, [r3, 8]                                   |     r2 = *((r3 + 8));
    0x00009a32 ldr r3, [r3, 0xc]                                 |     r3 = *((r3 + 0xc));
    0x00009a34 adc sl, r1, 0                                     |     __asm ("adc sl, r1, 0");
    0x00009a38 adds.w fp, r6, r5                                 |     
    0x00009a3c adc r1, sl, 0                                     |     __asm ("adc r1, sl, 0");
    0x00009a40 cmp fp, r2                                        |     
    0x00009a42 sbcs r1, r3                                       |     __asm ("sbcs r1, r3");
    0x00009a44 str r2, [sp, 0x10]                                |     var_10h = r2;
    0x00009a46 str r3, [sp, 0xc]                                 |     var_ch = r3;
                                                                 |     if (fp >= r2) {
    0x00009a48 bhs.w 0x973c                                      |         goto label_3;
                                                                 |     }
    0x00009a4c ldr r7, [sp, 0x30]                                |     r7 = var_30h;
    0x00009a4e add.w r1, r7, fp                                  |     r1 = r7 + fp;
    0x00009a52 mov r0, r1                                        |     r0 = r1;
    0x00009a54 str r1, [sp, 4]                                   |     var_4h = r1;
    0x00009a56 blx 0x22a8                                        |     fcn_000022a8 ();
    0x00009a5a mov r3, r6                                        |     r3 = r6;
    0x00009a5c ldr r2, [sp, 0x10]                                |     r2 = var_10h;
    0x00009a5e adds r6, r3, r5                                   |     r6 = r3 + r5;
    0x00009a60 ldr r3, [sp, 0xc]                                 |     r3 = var_ch;
    0x00009a62 adc sl, sl, 0                                     |     __asm ("adc sl, sl, 0");
    0x00009a66 mov r6, r0                                        |     r6 = r0;
    0x00009a68 cmp r2, fp                                        |     
    0x00009a6a sbcs.w sl, r3, sl                                 |     __asm ("sbcs.w sl, r3, sl");
                                                                 |     if (r2 <= fp) {
    0x00009a6e blo.w 0x9d0e                                      |         goto label_28;
                                                                 |     }
    0x00009a72 ldr r3, [sp, 0x28]                                |     r3 = var_28h;
    0x00009a74 add r5, r7                                        |     r5 += r7;
    0x00009a76 ldr r1, [sp, 4]                                   |     r1 = var_4h;
    0x00009a78 cmp r3, 0                                         |     
                                                                 |     if (r3 != 0) {
    0x00009a7a bne.w 0x9c26                                      |         goto label_45;
                                                                 |     }
    0x00009a7e ldr r3, [sp, 0x20]                                |     r3 = var_20h;
    0x00009a80 cmp r3, 0                                         |     
                                                                 |     if (r3 == 0) {
    0x00009a82 beq.w 0x9cee                                      |         goto label_46;
                                                                 |     }
    0x00009a86 ldr r7, [sp, 0x20]                                |     r7 = var_20h;
    0x00009a88 ldr r2, [sp, 8]                                   |     r2 = var_8h;
    0x00009a8a ldr r3, [sp, 0x44]                                |     r3 = var_44h;
    0x00009a8c adds r0, r5, r7                                   |     r0 = r5 + r7;
                                                                 |     do {
    0x00009a8e ldrb ip, [r0, -0x1]!                              |         ip = *((r0 -= 0x1));
    0x00009a92 lsls r3, r3, 8                                    |         r3 <<= 8;
    0x00009a94 orr.w r3, r3, r2, lsr 24                          |         r3 |= (r2 >> 24);
    0x00009a98 cmp r0, r5                                        |         
    0x00009a9a orr.w r2, ip, r2, lsl 8                           |         r2 = ip | (r2 << 8);
    0x00009a9e bne 0x9a8e                                        |         
                                                                 |     } while (r0 != r5);
                                                                 | label_12:
    0x00009aa0 str r7, [sp, 0x20]                                |     var_20h = r7;
                                                                 | label_17:
    0x00009aa2 ldr r5, [sp]                                      |     r5 = *(sp);
    0x00009aa4 ldr r7, [sp, 0x1c]                                |     r7 = var_1ch;
    0x00009aa6 lsls r0, r5, 4                                    |     r0 = r5 << 4;
    0x00009aa8 str r2, [r7, r0]                                  |     *((r7 + r0)) = r2;
    0x00009aaa adds r2, r7, r0                                   |     r2 = r7 + r0;
    0x00009aac str r3, [r2, 4]                                   |     *((r2 + 4)) = r3;
    0x00009aae movs r3, 0x55                                     |     r3 = 0x55;
    0x00009ab0 str r4, [r2, 0xc]                                 |     *((r2 + 0xc)) = r4;
    0x00009ab2 mov r0, r4                                        |     r0 = r4;
    0x00009ab4 str r3, [r2, 8]                                   |     *((r2 + 8)) = r3;
    0x00009ab6 adds r3, r5, 1                                    |     r3 = r5 + 1;
    0x00009ab8 mov r2, r6                                        |     r2 = r6;
    0x00009aba str r3, [sp]                                      |     *(sp) = r3;
    0x00009abc blx 0x20c0                                        |     mmap64 ()
    0x00009ac0 mov.w r3, 0                                       |     r3 = 0;
    0x00009ac4 strb r3, [r4, r6]                                 |     *((r4 + r6)) = r3;
    0x00009ac6 adds r6, 1                                        |     r6++;
    0x00009ac8 add r4, r6                                        |     r4 += r6;
                                                                 | label_44:
    0x00009aca ldr r3, [sp, 0x3c]                                |     r3 = var_3ch;
    0x00009acc add r8, r3                                        |     r8 += r3;
    0x00009ace ldr r3, [sp, 0x14]                                |     r3 = var_14h;
    0x00009ad0 cmp sb, r3                                        |     
                                                                 |     if (sb != r3) {
    0x00009ad2 bne 0x9a1c                                        |         goto label_6;
                                                                 |     }
    0x00009ad4 ldr.w sl, [sp]                                    |     sl = *(sp);
                                                                 | label_43:
    0x00009ad8 ldr r0, [sp, 0x64]                                |     r0 = var_64h;
    0x00009ada blx 0x20a4                                        |     fcn_000020a4 ();
                                                                 | label_15:
    0x00009ade ldr r2, [pc, 0x294]                               |     
    0x00009ae0 ldr r3, [pc, 0x274]                               |     r3 = *(0x9d58);
    0x00009ae2 add r2, pc                                        |     r2 = 0x1385c;
    0x00009ae4 ldr r3, [r2, r3]                                  |     r3 = *(0x1385c);
    0x00009ae6 ldr r2, [r3]                                      |     r2 = *(0x1385c);
    0x00009ae8 ldr r3, [sp, 0xd4]                                |     r3 = var_d4h;
    0x00009aea eors r2, r3                                       |     r2 ^= r3;
    0x00009aec mov.w r3, 0                                       |     r3 = 0;
                                                                 |     if (r2 != r3) {
    0x00009af0 bne.w 0x9d50                                      |         goto label_47;
                                                                 |     }
    0x00009af4 mov r0, sl                                        |     r0 = sl;
    0x00009af6 add sp, 0xdc                                      |     
    0x00009af8 pop.w {r4, r5, r6, r7, r8, sb, sl, fp, pc}        |     
                                                                 | label_27:
    0x00009afc ldr r2, [sp]                                      |     r2 = *(sp);
    0x00009afe cmp r8, sb                                        |     
    0x00009b00 sbcs.w r2, r7, r2                                 |     __asm ("sbcs.w r2, r7, r2");
                                                                 |     if (r8 <= sb) {
    0x00009b04 blo.w 0x9d0e                                      |         goto label_28;
                                                                 |     }
    0x00009b08 ldr r2, [sp, 0x1c]                                |     r2 = var_1ch;
    0x00009b0a add.w r1, r5, fp                                  |     r1 = r5 + fp;
                                                                 |     if (r2 == 0) {
    0x00009b0e cbz r2, 0x9b7c                                    |         goto label_48;
                                                                 |     }
    0x00009b10 ldr r2, [sp, 0x70]                                |     r2 = var_70h;
    0x00009b12 ldr r0, [sp, 0x74]                                |     r0 = var_74h;
    0x00009b14 ldr r4, [sp, 8]                                   |     r4 = var_8h;
    0x00009b16 add r2, r5                                        |     r2 += r5;
    0x00009b18 adds r6, r0, r5                                   |     r6 = r0 + r5;
                                                                 |     do {
    0x00009b1a ldrb r0, [r2, 1]!                                 |         r0 = *((r2 += 1));
    0x00009b1e cmp r6, r2                                        |         
    0x00009b20 orr.w r4, r0, r4, lsl 8                           |         r4 = r0 | (r4 << 8);
    0x00009b24 bne 0x9b1a                                        |         
                                                                 |     } while (r6 != r2);
    0x00009b26 adds.w r0, r5, 8                                  |     r0 = r5 + 8;
    0x00009b2a adc r2, r3, 0                                     |     __asm ("adc r2, r3, 0");
    0x00009b2e cmp r8, r0                                        |     
    0x00009b30 sbcs.w r2, r7, r2                                 |     __asm ("sbcs.w r2, r7, r2");
                                                                 |     if (r8 <= r0) {
    0x00009b34 blo.w 0x9d0e                                      |         goto label_28;
                                                                 |     }
    0x00009b38 ldrh r2, [r1, 6]                                  |     r2 = *((r1 + 6));
    0x00009b3a rev16 r2, r2                                      |     __asm ("rev16 r2, r2");
    0x00009b3c uxth r2, r2                                       |     r2 = (int16_t) r2;
                                                                 | label_9:
    0x00009b3e adds r0, r5, 5                                    |     r0 = r5 + 5;
    0x00009b40 adc r1, r3, 0                                     |     __asm ("adc r1, r3, 0");
    0x00009b44 cmp r8, r0                                        |     
    0x00009b46 sbcs.w r1, r7, r1                                 |     __asm ("sbcs.w r1, r7, r1");
                                                                 |     if (r8 <= r0) {
    0x00009b4a blo.w 0x9d0e                                      |         goto label_28;
                                                                 |     }
    0x00009b4e ldrb.w r1, [fp, sb]                               |     r1 = *((fp + sb));
    0x00009b52 b 0x966e                                          |     goto label_7;
                                                                 | label_29:
    0x00009b54 ldr r2, [sp, 0x6c]                                |     r2 = var_6ch;
    0x00009b56 ldr r4, [sp, 8]                                   |     r4 = var_8h;
    0x00009b58 add r2, r5                                        |     r2 += r5;
                                                                 |     do {
    0x00009b5a ldrb r0, [r2, -0x1]!                              |         r0 = *((r2 -= 0x1));
    0x00009b5e cmp r1, r2                                        |         
    0x00009b60 orr.w r4, r0, r4, lsl 8                           |         r4 = r0 | (r4 << 8);
    0x00009b64 bne 0x9b5a                                        |         
                                                                 |     } while (r1 != r2);
    0x00009b66 adds.w r0, r5, 0x10                               |     r0 = r5 + 0x10;
    0x00009b6a adc r2, r3, 0                                     |     __asm ("adc r2, r3, 0");
    0x00009b6e cmp r8, r0                                        |     
    0x00009b70 sbcs.w r2, r7, r2                                 |     __asm ("sbcs.w r2, r7, r2");
                                                                 |     if (r8 <= r0) {
    0x00009b74 blo.w 0x9d0e                                      |         goto label_28;
                                                                 |     }
    0x00009b78 ldrh r2, [r1, 0xe]                                |     r2 = *((r1 + 0xe));
    0x00009b7a b 0x9658                                          |     goto label_8;
                                                                 | label_48:
    0x00009b7c ldr r2, [sp, 0x6c]                                |     r2 = var_6ch;
    0x00009b7e ldr r4, [sp, 8]                                   |     r4 = var_8h;
    0x00009b80 add r2, r5                                        |     r2 += r5;
                                                                 |     do {
    0x00009b82 ldrb r0, [r2, -0x1]!                              |         r0 = *((r2 -= 0x1));
    0x00009b86 cmp r2, r1                                        |         
    0x00009b88 orr.w r4, r0, r4, lsl 8                           |         r4 = r0 | (r4 << 8);
    0x00009b8c bne 0x9b82                                        |         
                                                                 |     } while (r2 != r1);
    0x00009b8e adds.w r0, r5, 8                                  |     r0 = r5 + 8;
    0x00009b92 adc r1, r3, 0                                     |     __asm ("adc r1, r3, 0");
    0x00009b96 cmp r8, r0                                        |     
    0x00009b98 sbcs.w r1, r7, r1                                 |     __asm ("sbcs.w r1, r7, r1");
                                                                 |     if (r8 <= r0) {
    0x00009b9c blo.w 0x9d0e                                      |         goto label_28;
                                                                 |     }
    0x00009ba0 ldrh r2, [r2, 6]                                  |     r2 = *((r2 + 6));
    0x00009ba2 b 0x9b3e                                          |     goto label_9;
                                                                 | label_40:
    0x00009ba4 cmp ip, r5                                        |     
    0x00009ba6 sbcs.w r3, r0, r7                                 |     __asm ("sbcs.w r3, r0, r7");
                                                                 |     if (ip <= r5) {
    0x00009baa blo.w 0x9d0e                                      |         goto label_28;
                                                                 |     }
    0x00009bae ldr r3, [sp, 4]                                   |     r3 = var_4h;
    0x00009bb0 add.w r1, r4, fp                                  |     r1 = r4 + fp;
    0x00009bb4 cmp r3, 0                                         |     
                                                                 |     if (r3 == 0) {
    0x00009bb6 beq 0x9c48                                        |         goto label_49;
                                                                 |     }
    0x00009bb8 ldr r3, [sp, 8]                                   |     r3 = var_8h;
    0x00009bba add.w r2, fp, -1                                  |     r2 = fp + -1;
    0x00009bbe add.w lr, fp, 3                                   |     lr += arg_3h;
    0x00009bc2 add r2, r4                                        |     r2 += r4;
    0x00009bc4 add lr, r4                                        |     lr += r4;
                                                                 |     do {
    0x00009bc6 ldrb sl, [r2, 1]!                                 |         sl = *((r2 += 1));
    0x00009bca cmp lr, r2                                        |         
    0x00009bcc orr.w r3, sl, r3, lsl 8                           |         r3 = sl | (r3 << 8);
    0x00009bd0 bne 0x9bc6                                        |         
                                                                 |     } while (lr != r2);
    0x00009bd2 adds.w lr, r4, 8                                  |     lr = r4 + 8;
    0x00009bd6 adc r2, sb, 0                                     |     __asm ("adc r2, sb, 0");
    0x00009bda cmp ip, lr                                        |     
    0x00009bdc sbcs.w r2, r0, r2                                 |     __asm ("sbcs.w r2, r0, r2");
                                                                 |     if (ip <= lr) {
    0x00009be0 blo.w 0x9d0e                                      |         goto label_28;
                                                                 |     }
    0x00009be4 ldrh r2, [r1, 6]                                  |     r2 = *((r1 + 6));
    0x00009be6 rev16 r2, r2                                      |     __asm ("rev16 r2, r2");
    0x00009be8 uxth r2, r2                                       |     r2 = (int16_t) r2;
                                                                 | label_13:
    0x00009bea adds.w lr, r4, 5                                  |     lr = r4 + 5;
    0x00009bee adc r1, sb, 0                                     |     __asm ("adc r1, sb, 0");
    0x00009bf2 cmp ip, lr                                        |     
    0x00009bf4 sbcs.w r1, r0, r1                                 |     __asm ("sbcs.w r1, r0, r1");
                                                                 |     if (ip <= lr) {
    0x00009bf8 blo.w 0x9d0e                                      |         goto label_28;
                                                                 |     }
    0x00009bfc ldrb.w lr, [fp, r5]                               |     
    0x00009c00 b 0x993e                                          |     goto label_10;
                                                                 | label_34:
    0x00009c02 ldr r0, [sp, 8]                                   |     r0 = var_8h;
    0x00009c04 add.w ip, r6, sl                                  |     
    0x00009c08 ldr r1, [sp, 0x44]                                |     r1 = var_44h;
                                                                 |     do {
    0x00009c0a ldrb r4, [ip, -0x1]!                              |         r4 = *((ip -= 0x1));
    0x00009c0e lsls r1, r1, 8                                    |         r1 <<= 8;
    0x00009c10 orr.w r1, r1, r0, lsr 24                          |         r1 |= (r0 >> 24);
    0x00009c14 orr.w r0, r4, r0, lsl 8                           |         r0 = r4 | (r0 << 8);
    0x00009c18 rsb.w r4, ip, 1                                   |         r4 = 1 - ip;
    0x00009c1c add r4, sl                                        |         r4 += sl;
    0x00009c1e add r4, r6                                        |         r4 += r6;
    0x00009c20 cmp r4, sl                                        |         
    0x00009c22 bls 0x9c0a                                        |         
                                                                 |     } while (r4 < sl);
    0x00009c24 b 0x97b0                                          |     goto label_11;
                                                                 | label_45:
    0x00009c26 ldr r7, [sp, 0x20]                                |     r7 = var_20h;
    0x00009c28 ldr r2, [sp, 8]                                   |     r2 = var_8h;
    0x00009c2a cmp r7, 0                                         |     
                                                                 |     if (r7 == 0) {
    0x00009c2c beq 0x9cf4                                        |         goto label_50;
                                                                 |     }
    0x00009c2e ldr r3, [sp, 0x44]                                |     r3 = var_44h;
    0x00009c30 add.w ip, r5, r7                                  |     
                                                                 |     do {
    0x00009c34 ldrb r0, [r5], 1                                  |         r0 = *(r5);
                                                                 |         r5++;
    0x00009c38 lsls r3, r3, 8                                    |         r3 <<= 8;
    0x00009c3a orr.w r3, r3, r2, lsr 24                          |         r3 |= (r2 >> 24);
    0x00009c3e cmp ip, r5                                        |         
    0x00009c40 orr.w r2, r0, r2, lsl 8                           |         r2 = r0 | (r2 << 8);
    0x00009c44 bne 0x9c34                                        |         
                                                                 |     } while (ip != r5);
    0x00009c46 b 0x9aa0                                          |     goto label_12;
                                                                 | label_49:
    0x00009c48 ldr r3, [sp, 0x28]                                |     r3 = var_28h;
    0x00009c4a adds r2, r3, r4                                   |     r2 = r3 + r4;
    0x00009c4c ldr r3, [sp, 8]                                   |     r3 = var_8h;
                                                                 |     do {
    0x00009c4e ldrb lr, [r2, -0x1]!                              |         
    0x00009c52 cmp r1, r2                                        |         
    0x00009c54 orr.w r3, lr, r3, lsl 8                           |         r3 = lr | (r3 << 8);
    0x00009c58 bne 0x9c4e                                        |         
                                                                 |     } while (r1 != r2);
    0x00009c5a adds.w lr, r4, 8                                  |     lr = r4 + 8;
    0x00009c5e adc r2, sb, 0                                     |     __asm ("adc r2, sb, 0");
    0x00009c62 cmp ip, lr                                        |     
    0x00009c64 sbcs.w r2, r0, r2                                 |     __asm ("sbcs.w r2, r0, r2");
                                                                 |     if (ip <= lr) {
    0x00009c68 blo 0x9d0e                                        |         goto label_28;
                                                                 |     }
    0x00009c6a ldrh r2, [r1, 6]                                  |     r2 = *((r1 + 6));
    0x00009c6c b 0x9bea                                          |     goto label_13;
                                                                 | label_41:
    0x00009c6e ldr r3, [sp, 0x28]                                |     r3 = var_28h;
    0x00009c70 adds r2, r3, r4                                   |     r2 = r3 + r4;
    0x00009c72 ldr r3, [sp, 8]                                   |     r3 = var_8h;
                                                                 |     do {
    0x00009c74 ldrb lr, [r2, -0x1]!                              |         
    0x00009c78 cmp r1, r2                                        |         
    0x00009c7a orr.w r3, lr, r3, lsl 8                           |         r3 = lr | (r3 << 8);
    0x00009c7e bne 0x9c74                                        |         
                                                                 |     } while (r1 != r2);
    0x00009c80 adds.w lr, r4, 0x10                               |     lr = r4 + 0x10;
    0x00009c84 adc r2, sb, 0                                     |     __asm ("adc r2, sb, 0");
    0x00009c88 cmp ip, lr                                        |     
    0x00009c8a sbcs.w r2, r0, r2                                 |     __asm ("sbcs.w r2, r0, r2");
                                                                 |     if (ip <= lr) {
    0x00009c8e blo 0x9d0e                                        |         goto label_28;
                                                                 |     }
    0x00009c90 ldrh r2, [r1, 0xe]                                |     r2 = *((r1 + 0xe));
    0x00009c92 b 0x9924                                          |     goto label_14;
                                                                 | label_20:
    0x00009c94 vmov.i32 d16, 0                                   |     __asm ("vmov.i32 d16, 0");
    0x00009c98 movs r3, 0                                        |     r3 = 0;
    0x00009c9a str r3, [sp, 0x20]                                |     var_20h = r3;
    0x00009c9c str r3, [sp, 0xac]                                |     var_ach = r3;
    0x00009c9e str r3, [sp, 0x3c]                                |     var_3ch = r3;
    0x00009ca0 vstr d16, [sp, 0xb8]                              |     __asm ("vstr d16, [sp, 0xb8]");
    0x00009ca4 b 0x94c2                                          |     goto label_1;
                                                                 | label_30:
    0x00009ca6 ldr r0, [sp, 0x64]                                |     r0 = var_64h;
    0x00009ca8 mvn sl, 0x15                                      |     sl = ~0x15;
    0x00009cac blx 0x20a4                                        |     fcn_000020a4 ();
    0x00009cb0 ldr r0, [sp, 0x88]                                |     r0 = var_88h;
    0x00009cb2 blx 0x20a4                                        |     fcn_000020a4 ();
    0x00009cb6 b 0x9ade                                          |     goto label_15;
                                                                 | label_26:
    0x00009cb8 ldr r3, [sp, 0x64]                                |     r3 = var_64h;
                                                                 |     if (r3 == 0) {
    0x00009cba cbz r3, 0x9cd8                                    |         goto label_37;
                                                                 |     }
    0x00009cbc ldr r3, [sp, 0x98]                                |     r3 = var_98h;
    0x00009cbe ldr r5, [sp, 0xac]                                |     r5 = var_ach;
    0x00009cc0 cmp r3, 0                                         |     
    0x00009cc2 sub.w r5, r5, fp                                  |     r5 -= fp;
    0x00009cc6 it gt                                             |     
                                                                 |     if (r3 <= 0) {
    0x00009cc8 movgt r3, 0                                       |         r3 = 0;
                                                                 |     }
    0x00009cca asr.w r6, r5, 0x1f                                |     r6 = r5 >> 0x1f;
    0x00009cce it gt                                             |     
                                                                 |     if (r3 <= 0) {
    0x00009cd0 strdgt r3, r3, [sp, 0x4c]                         |         __asm ("strdgt r3, r3, [sp, 0x4c]");
                                                                 |         goto label_51;
                                                                 |     }
                                                                 |     if (r3 > 0) {
                                                                 | label_51:
    0x00009cd4 bgt.w 0x9808                                      |         goto label_16;
                                                                 |     }
                                                                 | label_37:
    0x00009cd8 ldr r0, [sp, 0x64]                                |     r0 = var_64h;
    0x00009cda blx 0x20a4                                        |     fcn_000020a4 ();
    0x00009cde ldr r0, [sp, 0x88]                                |     r0 = var_88h;
    0x00009ce0 blx 0x20a4                                        |     fcn_000020a4 ();
    0x00009ce4 ldr r2, [sp, 0x9c]                                |     r2 = var_9ch;
    0x00009ce6 movs r3, 0                                        |     r3 = 0;
    0x00009ce8 mov sl, r3                                        |     sl = r3;
    0x00009cea str r3, [r2]                                      |     *(r2) = r3;
    0x00009cec b 0x9ade                                          |     goto label_15;
                                                                 | label_46:
    0x00009cee ldr r2, [sp, 8]                                   |     r2 = var_8h;
    0x00009cf0 ldr r3, [sp, 0x44]                                |     r3 = var_44h;
    0x00009cf2 b 0x9aa2                                          |     goto label_17;
                                                                 | label_50:
    0x00009cf4 ldr r3, [sp, 0x44]                                |     r3 = var_44h;
    0x00009cf6 b 0x9aa2                                          |     goto label_17;
                                                                 | label_33:
    0x00009cf8 ldr r0, [sp, 8]                                   |     r0 = var_8h;
    0x00009cfa ldr r1, [sp, 0x44]                                |     r1 = var_44h;
    0x00009cfc ldr r2, [sp, 4]                                   |     r2 = var_4h;
    0x00009cfe ldrd r5, r3, [sp, 0x7c]                           |     __asm ("ldrd r5, r3, [var_80h]");
    0x00009d02 strd r0, r1, [r2]                                 |     __asm ("strd r0, r1, [r2]");
    0x00009d06 b 0x97c8                                          |     goto label_18;
                                                                 | label_22:
    0x00009d08 mvn sl, 0x15                                      |     sl = ~0x15;
    0x00009d0c b 0x9ade                                          |     goto label_15;
                                                                 | label_28:
    0x00009d0e ldr r3, [pc, 0x68]                                |     
    0x00009d10 movs r2, 0x89                                     |     r2 = 0x89;
    0x00009d12 ldr r1, [pc, 0x68]                                |     
    0x00009d14 ldr r0, [pc, 0x68]                                |     
    0x00009d16 add r3, pc                                        |     r3 = 0x13a94;
    0x00009d18 add r1, pc                                        |     r1 = 0x13a9a;
    0x00009d1a add r0, pc                                        |     r0 = 0x13a9e;
    0x00009d1c blx 0x246c                                        |     fcn_0000246c ();
                                                                 | label_39:
    0x00009d20 mov.w sl, 0                                       |     sl = 0;
    0x00009d24 b 0x99e0                                          |     goto label_19;
                                                                 | label_25:
    0x00009d26 ldr r0, [sp, 0x64]                                |     r0 = var_64h;
    0x00009d28 mvn sl, 0xb                                       |     sl = ~0xb;
    0x00009d2c blx 0x20a4                                        |     fcn_000020a4 ();
    0x00009d30 b 0x9ade                                          |     goto label_15;
                                                                 | label_38:
    0x00009d32 ldr r0, [sp, 0x64]                                |     r0 = var_64h;
    0x00009d34 blx 0x20a4                                        |     fcn_000020a4 ();
    0x00009d38 ldr r0, [sp, 0x88]                                |     r0 = var_88h;
    0x00009d3a blx 0x20a4                                        |     fcn_000020a4 ();
    0x00009d3e blx 0x22f4                                        |     r0 = gzerror ();
    0x00009d42 ldr r3, [r0]                                      |     r3 = *(r0);
    0x00009d44 rsb.w sl, r3, 0                                   |     sl = r3 - ;
    0x00009d48 b 0x9ade                                          |     goto label_15;
                                                                 | label_24:
    0x00009d4a mvn sl, 0xb                                       |     sl = ~0xb;
    0x00009d4e b 0x9ade                                          |     goto label_15;
                                                                 | label_47:
    0x00009d50 blx 0x2108                                        |     fcn_00002108 ();
    0x00009d54 cmp r1, 0xc4                                      |     
    0x00009d56 movs r1, r0                                       |     r1 = r0;
    0x00009d58 lsls r4, r4, 6                                    |     r4 <<= 6;
    0x00009d5a movs r0, r0                                       |     
    0x00009d5c subs r6, r2, r6                                   |     r6 = r2 - r6;
    0x00009d5e movs r0, r0                                       |     
    0x00009d60 adds r4, r3, 7                                    |     r4 = r3 + 7;
    0x00009d62 movs r0, r0                                       |     
    0x00009d64 adds r4, r1, 7                                    |     r4 = r1 + 7;
    0x00009d66 movs r0, r0                                       |     
    0x00009d68 subs r6, r5, r6                                   |     r6 = r5 - r6;
    0x00009d6a movs r0, r0                                       |     
    0x00009d6c subs r4, r1, r3                                   |     r4 = r1 - r3;
    0x00009d6e movs r0, r0                                       |     
    0x00009d70 subs r2, r5, r3                                   |     r2 = r5 - r3;
    0x00009d72 movs r0, r0                                       |     
    0x00009d74 movs r3, 0x66                                     |     r3 = 0x66;
    0x00009d76 movs r1, r0                                       |     r1 = r0;
    0x00009d78 asrs r2, r2, 0x17                                 |     r2 >>= 0x17;
    0x00009d7a movs r0, r0                                       |     
    0x00009d7c asrs r0, r0, 0x14                                 |     r0 >>= 0x14;
    0x00009d7e movs r0, r0                                       |     
    0x00009d80 asrs r2, r6, 0x14                                 |     r2 = r6 >> 0x14;
    0x00009d82 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/lib/libkmod.so.2.3.7 @ 0xa44c */
                                                                             | #include <stdint.h>
                                                                             |  
    ; (fcn) fcn.0000a44c ()                                                  | void fcn_0000a44c (int16_t arg1, uint32_t arg2) {
                                                                             |     r0 = arg1;
                                                                             |     r1 = arg2;
    0x0000a44c 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 (? != ?) {
    0x0000a450 beq 0xa4bc                                                    |         
    0x0000a452 mov r4, r0                                                    |         r4 = r0;
                                                                             |         if (r0 != 0) {
    0x0000a454 cbz r0, 0xa4aa                                                |             
    0x0000a456 mov r0, r1                                                    |             r0 = r1;
    0x0000a458 mov r6, r1                                                    |             r6 = r1;
    0x0000a45a blx 0x22a8                                                    |             fcn_000022a8 ();
    0x0000a45e ldr r3, [r4, 8]                                               |             r3 = *((r4 + 8));
    0x0000a460 mov r5, r0                                                    |             r5 = r0;
    0x0000a462 adds r7, r3, r0                                               |             r7 = r3 + r0;
    0x0000a464 ldrd r0, r2, [r4]                                             |             __asm ("ldrd r0, r2, [r4]");
    0x0000a468 cmp r7, r2                                                    |             
                                                                             |             if (r7 >= r2) {
    0x0000a46a bls 0xa490                                                    |                 
    0x0000a46c lsls r3, r7, 0x19                                             |                 r3 = r7 << 0x19;
    0x0000a46e itt ne                                                        |                 
                                                                             |                 if (r3 != r7) {
    0x0000a470 bicne r7, r7, 0x7f                                            |                     __asm ("bicne r7, r7, 0x7f");
                                                                             |                 }
                                                                             |                 if (r3 != r7) {
    0x0000a474 adds r7, 0x80                                                 |                     r7 += 0x80;
                                                                             |                 }
    0x0000a476 mov r1, r7                                                    |                 r1 = r7;
    0x0000a478 blx 0x2138                                                    |                 fcn_00002138 ();
    0x0000a47c subs r3, r7, 0                                                |                 r3 = r7 - 0;
    0x0000a47e it ne                                                         |                 
                                                                             |                 if (r3 == r7) {
    0x0000a480 movne r3, 1                                                   |                     r3 = 1;
                                                                             |                 }
    0x0000a482 cmp r0, 0                                                     |                 
    0x0000a484 it ne                                                         |                 
                                                                             |                 if (r0 == 0) {
    0x0000a486 movne r3, 0                                                   |                     r3 = 0;
                                                                             |                 }
                                                                             |                 if (r3 != 0) {
    0x0000a488 cbnz r3, 0xa4a4                                               |                     goto label_0;
                                                                             |                 }
    0x0000a48a ldr r3, [r4, 8]                                               |                 r3 = *((r4 + 8));
    0x0000a48c strd r0, r7, [r4]                                             |                 __asm ("strd r0, r7, [r4]");
                                                                             |             }
    0x0000a490 add r0, r3                                                    |             r0 += r3;
    0x0000a492 mov r1, r6                                                    |             r1 = r6;
    0x0000a494 mov r2, r5                                                    |             r2 = r5;
    0x0000a496 blx 0x20c0                                                    |             mmap64 ()
    0x0000a49a ldr r3, [r4, 8]                                               |             r3 = *((r4 + 8));
    0x0000a49c mov r0, r5                                                    |             r0 = r5;
    0x0000a49e add r3, r5                                                    |             r3 += r5;
    0x0000a4a0 str r3, [r4, 8]                                               |             *((r4 + 8)) = r3;
    0x0000a4a2 pop {r3, r4, r5, r6, r7, pc}                                  |             
                                                                             | label_0:
    0x0000a4a4 movs r5, 0                                                    |             r5 = 0;
    0x0000a4a6 mov r0, r5                                                    |             r0 = r5;
    0x0000a4a8 pop {r3, r4, r5, r6, r7, pc}                                  |             
                                                                             |         }
    0x0000a4aa ldr r3, [pc, 0x24]                                            |         
    0x0000a4ac movs r2, 0x63                                                 |         r2 = 0x63;
    0x0000a4ae ldr r1, [pc, 0x24]                                            |         
    0x0000a4b0 ldr r0, [pc, 0x24]                                            |         
    0x0000a4b2 add r3, pc                                                    |         r3 = 0x14988;
    0x0000a4b4 add r1, pc                                                    |         r1 = 0x1498e;
    0x0000a4b6 add r0, pc                                                    |         r0 = 0x14992;
    0x0000a4b8 blx 0x246c                                                    |         fcn_0000246c ();
                                                                             |     }
    0x0000a4bc ldr r3, [pc, 0x1c]                                            |     
    0x0000a4be movs r2, 0x62                                                 |     r2 = 0x62;
    0x0000a4c0 ldr r1, [pc, 0x1c]                                            |     
    0x0000a4c2 ldr r0, [pc, 0x20]                                            |     
    0x0000a4c4 add r3, pc                                                    |     r3 = 0x149a4;
    0x0000a4c6 add r1, pc                                                    |     r1 = 0x149aa;
    0x0000a4c8 add r0, pc                                                    |     r0 = 0x149b2;
    0x0000a4ca blx 0x246c                                                    |     fcn_0000246c ();
    0x0000a4ce nop                                                           |     
    0x0000a4d0 lsrs r6, r0, 0x1d                                             |     r6 = r0 >> 0x1d;
    0x0000a4d2 movs r0, r0                                                   |     
    0x0000a4d4 lsrs r4, r2, 0x1b                                             |     r4 = r2 >> 0x1b;
    0x0000a4d6 movs r0, r0                                                   |     
    0x0000a4d8 lsrs r6, r6, 0x1b                                             |     r6 >>= 0x1b;
    0x0000a4da movs r0, r0                                                   |     
    0x0000a4dc lsrs r4, r6, 0x1c                                             |     r4 = r6 >> 0x1c;
    0x0000a4de movs r0, r0                                                   |     
    0x0000a4e0 lsrs r2, r0, 0x1b                                             |     r2 = r0 >> 0x1b;
    0x0000a4e2 movs r0, r0                                                   |     
    0x0000a4e4 lsrs r0, r3, 0x1b                                             |     r0 = r3 >> 0x1b;
    0x0000a4e6 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/lib/libkmod.so.2.3.7 @ 0xa8f4 */
                                                     | #include <stdint.h>
                                                     |  
    ; (fcn) fcn.0000a8f4 ()                          | void fcn_0000a8f4 (int16_t arg1) {
                                                     |     r0 = arg1;
    0x0000a8f4 mvnsmi lr, sp, lsr 18                 |     __asm ("mvnsmi lr, sp, lsr 18");
    0x0000a8f8 ldrb r3, [r0]                         |     r3 = *(r0);
    0x0000a8fa cmp r3, 0x2f                          |     
                                                     |     if (r3 != 0x2f) {
    0x0000a8fc beq 0xa94a                            |         
    0x0000a8fe mov r7, r0                            |         r7 = r0;
    0x0000a900 blx 0x2010                            |         r0 = fcn_00002010 ();
    0x0000a904 mov r4, r0                            |         r4 = r0;
    0x0000a906 mov r5, r0                            |         r5 = r0;
                                                     |         if (r0 != 0) {
    0x0000a908 cbz r0, 0xa93e                        |             
    0x0000a90a mov r0, r7                            |             r0 = r7;
    0x0000a90c blx 0x22a8                            |             r0 = fcn_000022a8 ();
    0x0000a910 mov r8, r0                            |             r8 = r0;
    0x0000a912 mov r0, r4                            |             r0 = r4;
    0x0000a914 blx 0x22a8                            |             r0 = fcn_000022a8 ();
    0x0000a918 add.w r1, r8, r0                      |             r1 = r8 + r0;
    0x0000a91c mov r6, r0                            |             r6 = r0;
    0x0000a91e adds r1, 2                            |             r1 += 2;
    0x0000a920 mov r0, r4                            |             r0 = r4;
    0x0000a922 blx 0x2138                            |             r0 = fcn_00002138 ();
    0x0000a926 mov r5, r0                            |             r5 = r0;
                                                     |             if (r0 == 0) {
    0x0000a928 cbz r0, 0xa93e                        |                 goto label_0;
                                                     |             }
    0x0000a92a movs r3, 0x2f                         |             r3 = 0x2f;
    0x0000a92c movs r4, 0                            |             r4 = 0;
    0x0000a92e strb r3, [r0, r6]                     |             *((r0 + r6)) = r3;
    0x0000a930 adds r0, r6, 1                        |             r0 = r6 + 1;
    0x0000a932 add.w r2, r8, 1                       |             r2 = r8 + 1;
    0x0000a936 mov r1, r7                            |             r1 = r7;
    0x0000a938 add r0, r5                            |             r0 += r5;
    0x0000a93a blx 0x20c0                            |             mmap64 ()
                                                     |         }
                                                     | label_0:
    0x0000a93e mov r0, r4                            |         r0 = r4;
    0x0000a940 blx 0x20a4                            |         fcn_000020a4 ();
    0x0000a944 mov r0, r5                            |         r0 = r5;
    0x0000a946 pop.w {r4, r5, r6, r7, r8, pc}        |         
                                                     |     }
    0x0000a94a movs r4, 0                            |     r4 = 0;
    0x0000a94c blx 0x20fc                            |     r0 = stack_chk_fail ();
    0x0000a950 mov r5, r0                            |     r5 = r0;
    0x0000a952 mov r0, r4                            |     r0 = r4;
    0x0000a954 blx 0x20a4                            |     fcn_000020a4 ();
    0x0000a958 mov r0, r5                            |     r0 = r5;
    0x0000a95a pop.w {r4, r5, r6, r7, r8, pc}        |     
                                                     | }
    ; assembly                                               | /* r2dec pseudo code output */
                                                             | /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/lib/libkmod.so.2.3.7 @ 0x7ab4 */
                                                             | #include <stdint.h>
                                                             |  
    ; (fcn) sym.kmod_module_get_dependency_symbols ()        | void kmod_module_get_dependency_symbols (uint32_t arg1, uint32_t arg2) {
                                                             |     int16_t var_0h;
                                                             |     int16_t var_4h;
                                                             |     r0 = arg1;
                                                             |     r1 = arg2;
                                                             | label_3:
    0x00002390 invalid                                       |     void (*0x2394)() ();
    0x00007ab4 ldr r2, [pc, 0x104]                           |     
    0x00007ab6 cmp r1, 0                                     |     
    0x00007ab8 it ne                                         |     
                                                             |     if (r1 != 0) {
    0x00007aba cmpne r0, 0                                   |         __asm ("cmpne r0, 0");
                                                             |     }
    0x00007abc ldr r3, [pc, 0x100]                           |     r3 = *(0x7bc0);
    0x00007abe push.w {r4, r5, r6, r7, r8, sb, sl, lr}       |     
    0x00007ac2 add r2, pc                                    |     r2 = 0xf682;
    0x00007ac4 vpush {d8}                                    |     __asm ("vpush {d8}");
    0x00007ac8 sub sp, 8                                     |     
    0x00007aca ldr r3, [r2, r3]                              |     
    0x00007acc ldr r3, [r3]                                  |     r3 = *(0xf682);
    0x00007ace str r3, [sp, 4]                               |     var_4h = r3;
    0x00007ad0 mov.w r3, 0                                   |     r3 = 0;
                                                             |     if (r1 == 0) {
    0x00007ad4 beq 0x7b9c                                    |         goto label_4;
                                                             |     }
    0x00007ad6 ldr r6, [r1]                                  |     r6 = *(r1);
    0x00007ad8 mov r7, r1                                    |     r7 = r1;
    0x00007ada cmp r6, 0                                     |     
                                                             |     if (r6 != 0) {
    0x00007adc bne 0x7ba2                                    |         goto label_5;
                                                             |     }
    0x00007ade bl 0x6420                                     |     r0 = fcn_00006420 (r0);
    0x00007ae2 cmp r0, 0                                     |     
                                                             |     if (r0 == 0) {
    0x00007ae4 beq 0x7b7c                                    |         goto label_6;
                                                             |     }
    0x00007ae6 mov r1, sp                                    |     r1 = sp;
    0x00007ae8 bl 0x9470                                     |     r0 = fcn_00009470 (r0, r1, r2, r3, r4, r5, r6);
    0x00007aec subs.w r8, r0, 0                              |     r8 = r0 - 0;
                                                             |     if (r8 < r0) {
    0x00007af0 blt 0x7afa                                    |         goto label_2;
                                                             |     }
                                                             |     if (r8 != r0) {
    0x00007af2 bne 0x7b22                                    |         goto label_7;
                                                             |     }
                                                             |     do {
                                                             | label_1:
    0x00007af4 ldr r0, [sp]                                  |         r0 = *(sp);
    0x00007af6 blx 0x20a4                                    |         fcn_000020a4 ();
                                                             | label_2:
    0x00007afa ldr r2, [pc, 0xc8]                            |         
    0x00007afc ldr r3, [pc, 0xc0]                            |         r3 = *(0x7bc0);
    0x00007afe add r2, pc                                    |         r2 = 0xf6c8;
    0x00007b00 ldr r3, [r2, r3]                              |         r3 = *(0xf6c8);
    0x00007b02 ldr r2, [r3]                                  |         r2 = *(0xf6c8);
    0x00007b04 ldr r3, [sp, 4]                               |         r3 = var_4h;
    0x00007b06 eors r2, r3                                   |         r2 ^= r3;
    0x00007b08 mov.w r3, 0                                   |         r3 = 0;
                                                             |         if (r2 != r3) {
    0x00007b0c bne 0x7bb6                                    |             goto label_8;
                                                             |         }
    0x00007b0e mov r0, r8                                    |         r0 = r8;
    0x00007b10 add sp, 8                                     |         
    0x00007b12 vpop {d8}                                     |         __asm ("vpop {d8}");
    0x00007b16 pop.w {r4, r5, r6, r7, r8, sb, sl, pc}        |         
                                                             | label_0:
    0x00007b1a adds r6, 1                                    |         r6++;
    0x00007b1c str r0, [r7]                                  |         *(r7) = r0;
    0x00007b1e cmp r8, r6                                    |         
    0x00007b20 beq 0x7af4                                    |         
                                                             |     } while (r8 == r6);
                                                             | label_7:
    0x00007b22 ldr r3, [sp]                                  |     r3 = *(sp);
    0x00007b24 add.w r3, r3, r6, lsl 4                       |     r3 += (r6 << 4);
    0x00007b28 ldr.w sb, [r3, 0xc]                           |     sb = *((r3 + 0xc));
    0x00007b2c vldr d8, [r3]                                 |     __asm ("vldr d8, [r3]");
    0x00007b30 ldrb.w sl, [r3, 8]                            |     sl = *((r3 + 8));
    0x00007b34 mov r0, sb                                    |     r0 = sb;
    0x00007b36 blx 0x22a8                                    |     r0 = fcn_000022a8 ();
    0x00007b3a mov r2, r0                                    |     r2 = r0;
    0x00007b3c adds r0, 0x11                                 |     r0 += 0x11;
    0x00007b3e adds r5, r2, 1                                |     r5 = r2 + 1;
    0x00007b40 blx 0x21fc                                    |     r0 = fcn_000021fc ();
    0x00007b44 mov r4, r0                                    |     r4 = r0;
                                                             |     if (r0 == 0) {
    0x00007b46 cbz r0, 0x7b88                                |         goto label_9;
                                                             |     }
    0x00007b48 mov r2, r5                                    |     r2 = r5;
    0x00007b4a mov r1, sb                                    |     r1 = sb;
    0x00007b4c adds r0, 9                                    |     r0 += 9;
    0x00007b4e vstr d8, [r4]                                 |     __asm ("vstr d8, [r4]");
    0x00007b52 strb.w sl, [r4, 8]                            |     *((r4 + 8)) = sl;
    0x00007b54 adr r0, 0x20                                  |     r0 = 0x20;
    0x00007b56 blx 0x20c0                                    |     mmap64 ()
    0x00007b5a ldr r0, [r7]                                  |     r0 = *(r7);
    0x00007b5c mov r1, r4                                    |     r1 = r4;
    0x00007b5e bl 0x37c0                                     |     r0 = fcn_000037c0 (r0, r1);
    0x00007b62 mov r5, r0                                    |     r5 = r0;
    0x00007b64 cmp r0, 0                                     |     
                                                             |     if (r0 != 0) {
    0x00007b66 bne 0x7b1a                                    |         goto label_0;
                                                             |     }
    0x00007b68 mov r0, r4                                    |     r0 = r4;
    0x00007b6a mvn r8, 0xb                                   |     r8 = ~0xb;
    0x00007b6e blx 0x20a4                                    |     fcn_000020a4 ();
    0x00007b72 ldr r0, [r7]                                  |     r0 = *(r7);
    0x00007b74 blx 0x219c                                    |     fcn_0000219c ();
    0x00007b78 str r5, [r7]                                  |     *(r7) = r5;
    0x00007b7a b 0x7af4                                      |     goto label_1;
                                                             | label_6:
    0x00007b7c blx 0x22f4                                    |     r0 = gzerror ();
    0x00007b80 ldr r3, [r0]                                  |     r3 = *(r0);
    0x00007b82 rsb.w r8, r3, 0                               |     r8 = r3 - ;
    0x00007b86 b 0x7afa                                      |     goto label_2;
                                                             | label_9:
    0x00007b88 blx 0x22f4                                    |     r0 = gzerror ();
    0x00007b8c ldr r3, [r0]                                  |     r3 = *(r0);
    0x00007b8e ldr r0, [r7]                                  |     r0 = *(r7);
    0x00007b90 rsb.w r8, r3, 0                               |     r8 = r3 - ;
    0x00007b94 blx 0x219c                                    |     fcn_0000219c ();
    0x00007b98 str r4, [r7]                                  |     *(r7) = r4;
    0x00007b9a b 0x7af4                                      |     goto label_1;
                                                             | label_4:
    0x00007b9c mvn r8, 1                                     |     r8 = ~1;
    0x00007ba0 b 0x7afa                                      |     goto label_2;
                                                             | label_5:
    0x00007ba2 ldr r3, [pc, 0x24]                            |     
    0x00007ba4 movw r2, 0xad7                                |     r2 = 0xad7;
    0x00007ba8 ldr r1, [pc, 0x20]                            |     
    0x00007baa ldr r0, [pc, 0x24]                            |     
    0x00007bac add r3, pc                                    |     r3 = 0xf77a;
    0x00007bae add r1, pc                                    |     r1 = 0xf77e;
    0x00007bb0 add r0, pc                                    |     r0 = 0xf786;
    0x00007bb2 blx 0x246c                                    |     fcn_0000246c ();
                                                             | label_8:
    0x00007bb6 blx 0x2108                                    |     fcn_00002108 ();
    0x00007bba nop                                           |     
    0x00007bbc bics r6, r0                                   |     __asm ("bics r6, r0");
    0x00007bbe movs r1, r0                                   |     r1 = r0;
    0x00007bc0 lsls r4, r4, 6                                |     r4 <<= 6;
    0x00007bc2 movs r0, r0                                   |     
    0x00007bc4 muls r2, r1, r2                               |     r2 = r1 * r2;
    0x00007bc6 movs r1, r0                                   |     r1 = r0;
    0x00007bc8 adds r5, 0xa0                                 |     r5 += 0xa0;
    0x00007bca movs r0, r0                                   |     
    0x00007bcc adds r4, 0x46                                 |     r4 += 0x46;
    0x00007bce movs r0, r0                                   |     
    0x00007bd0 adds r2, 0x1c                                 |     r2 += 0x1c;
    0x00007bd2 movs r0, r0                                   |     
    0x00007bd4 ldr r1, [r0, 0x10]                            |     r1 = *((r0 + 0x10));
    0x00007bd6 ldr r0, [r0, 0x18]                            |     r0 = *((r0 + 0x18));
    0x00007bd8 b.w 0x2390                                    |     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/lib/libkmod.so.2.3.7 @ 0x6600 */
                                                                     | #include <stdint.h>
                                                                     |  
    ; (fcn) sym.kmod_module_get_options ()                           | void kmod_module_get_options (int16_t arg_0h, uint32_t arg1) {
                                                                     |     r0 = arg1;
    0x00006600 push.w {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr}       |     
    0x00006604 mov r5, r0                                            |     r5 = r0;
    0x00006606 cmp r0, 0                                             |     
                                                                     |     if (arg_0h == ) {
    0x00006608 beq 0x66aa                                            |         goto label_2;
                                                                     |     }
    0x0000660a ldrb.w r6, [r0, 0x30]                                 |     r6 = *(arg_0hx30);
    0x0000660e ubfx r6, r6, 1, 1                                     |     r6 = (r6 >> 1) & ((1 << 1) - 1);
                                                                     |     if (r6 != 0) {
    0x00006612 cbz r6, 0x661e                                        |         
    0x00006614 ldr.w sb, [r0, 0x14]                                  |         sb = *(arg_0hx14);
                                                                     | label_1:
    0x00006618 mov r0, sb                                            |         r0 = sb;
    0x0000661a pop.w {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc}        |         
                                                                     |     }
    0x0000661e ldr r0, [r0]                                          |     r0 = *(r0);
    0x00006620 mov sb, r6                                            |     sb = r6;
    0x00006622 bl 0x31dc                                             |     fcn_000031dc (r0);
    0x00006626 ldr r4, [r0, 0xc]                                     |     r4 = *((r0 + 0xc));
    0x00006628 mov r8, r0                                            |     r8 = r0;
                                                                     |     do {
                                                                     |         if (r4 == 0) {
    0x0000662a cbz r4, 0x6690                                        |             goto label_3;
                                                                     |         }
    0x0000662c mov r0, r4                                            |         r0 = r4;
    0x0000662e bl 0x3bfc                                             |         fcn_00003bfc (r0);
    0x00006632 ldr r1, [r5, 8]                                       |         r1 = *((r5 + 8));
    0x00006634 mov r7, r0                                            |         r7 = r0;
    0x00006636 blx 0x201c                                            |         fcn_0000201c ();
    0x0000663a ldr r1, [r5, 0x20]                                    |         r1 = *((r5 + 0x20));
                                                                     |         if (r0 != 0) {
    0x0000663c cbz r0, 0x6648                                        |             
                                                                     |             if (r1 == 0) {
    0x0000663e cbz r1, 0x6686                                        |                 goto label_4;
                                                                     |             }
    0x00006640 mov r0, r7                                            |             r0 = r7;
    0x00006642 blx 0x201c                                            |             r0 = fcn_0000201c ();
                                                                     |             if (r0 != 0) {
    0x00006646 cbnz r0, 0x6686                                       |                 goto label_4;
                                                                     |             }
                                                                     |         }
    0x00006648 mov r0, r4                                            |         r0 = r4;
    0x0000664a bl 0x391c                                             |         r0 = fcn_0000391c (r0);
    0x0000664e mov r7, r0                                            |         r7 = r0;
    0x00006650 blx 0x22a8                                            |         r0 = fcn_000022a8 ();
    0x00006654 mov sl, r0                                            |         sl = r0;
                                                                     |         if (r0 != 0) {
    0x00006656 cbz r0, 0x6686                                        |             
    0x00006658 adds r1, r6, 2                                        |             r1 = r6 + 2;
    0x0000665a add r1, r0                                            |             r1 += r0;
    0x0000665c mov r0, sb                                            |             r0 = sb;
    0x0000665e blx 0x2138                                            |             r0 = fcn_00002138 ();
    0x00006662 mov fp, r0                                            |             
                                                                     |             if (r0 == 0) {
    0x00006664 cbz r0, 0x66ae                                        |                 goto label_5;
                                                                     |             }
                                                                     |             if (r6 == 0) {
    0x00006666 cbz r6, 0x66a6                                        |                 goto label_6;
                                                                     |             }
    0x00006668 mov.w r3, 0x20                                        |             r3 = 0x20;
    0x0000666c strb r3, [r0, r6]                                     |             *((r0 + r6)) = r3;
    0x0000666e adds r6, 1                                            |             r6++;
    0x00006670 add r0, r6                                            |             r0 += r6;
    0x00006672 add r6, sl                                            |             r6 += sl;
                                                                     | label_0:
    0x00006674 mov r2, sl                                            |             r2 = sl;
    0x00006676 mov r1, r7                                            |             r1 = r7;
    0x00006678 mov sb, fp                                            |             sb = fp;
    0x0000667a blx 0x20c0                                            |             mmap64 ()
    0x0000667e mov.w r3, 0                                           |             r3 = 0;
    0x00006682 strb.w r3, [fp, r6]                                   |             *((fp + r6)) = r3;
                                                                     |         }
                                                                     | label_4:
    0x00006686 ldr r4, [r4]                                          |         r4 = *(r4);
    0x00006688 ldr.w r3, [r8, 0xc]                                   |         r3 = *((r8 + 0xc));
    0x0000668c cmp r4, r3                                            |         
    0x0000668e bne 0x662a                                            |         
                                                                     |     } while (r4 != r3);
                                                                     | label_3:
    0x00006690 ldrb.w r3, [r5, 0x30]                                 |     r3 = *((r5 + 0x30));
    0x00006694 mov r0, sb                                            |     r0 = sb;
    0x00006696 str.w sb, [r5, 0x14]                                  |     __asm ("str.w sb, [r5, 0x14]");
    0x0000669a orr r3, r3, 2                                         |     r3 |= 2;
    0x0000669e strb.w r3, [r5, 0x30]                                 |     *((r5 + 0x30)) = r3;
    0x000066a2 pop.w {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc}        |     
                                                                     | label_6:
    0x000066a6 mov r6, sl                                            |     r6 = sl;
    0x000066a8 b 0x6674                                              |     goto label_0;
                                                                     | label_2:
    0x000066aa mov sb, r0                                            |     sb = r0;
    0x000066ac b 0x6618                                              |     goto label_1;
                                                                     | label_5:
    0x000066ae mov r0, sb                                            |     r0 = sb;
    0x000066b0 mov sb, fp                                            |     sb = fp;
    0x000066b2 blx 0x20a4                                            |     fcn_000020a4 ();
    0x000066b6 b 0x6618                                              |     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/lib/libkmod.so.2.3.7 @ 0x742c */
                                                                 | #include <stdint.h>
                                                                 |  
    ; (fcn) sym.kmod_module_get_sections ()                      | void kmod_module_get_sections (uint32_t arg1) {
                                                                 |     int16_t var_0h;
                                                                 |     int16_t var_4h;
                                                                 |     int16_t var_10h;
                                                                 |     int16_t var_1000h_2;
                                                                 |     r0 = arg1;
    0x0000742c ldr r2, [pc, 0x134]                               |     
    0x0000742e ldr r3, [pc, 0x138]                               |     r3 = *(0x756a);
    0x00007430 push.w {r4, r5, r6, r7, r8, sb, sl, fp, lr}       |     
    0x00007434 sub.w sp, sp, 0x1000                              |     
    0x00007438 add r2, pc                                        |     r2 = 0xe9a0;
    0x0000743a sub sp, 0x14                                      |     
    0x0000743c add.w r1, sp, 0x1000                              |     r1 += var_1000h_2;
    0x00007440 mov r5, r0                                        |     r5 = r0;
    0x00007442 ldr r3, [r2, r3]                                  |     
    0x00007444 adds r1, 0xc                                      |     r1 += 0xc;
    0x00007446 ldr r3, [r3]                                      |     r3 = *(0xe9a0);
    0x00007448 str r3, [r1]                                      |     *(r1) = r3;
    0x0000744a mov.w r3, 0                                       |     r3 = 0;
    0x0000744e cmp r0, 0                                         |     
                                                                 |     if (var_0h == ) {
    0x00007450 beq 0x7512                                        |         goto label_0;
                                                                 |     }
    0x00007452 ldr r1, [pc, 0x118]                               |     
    0x00007454 add.w r8, sp, 0x10                                |     r8 += var_10h;
    0x00007458 ldr r2, [r0, 8]                                   |     r2 = *((r0 + 8));
    0x0000745a mov.w r3, 0x1000                                  |     r3 = 0x1000;
    0x0000745e sub.w r4, r8, 4                                   |     r4 = r8 - 4;
    0x00007462 add r1, pc                                        |     r1 = 0xe9d4;
    0x00007464 mov r0, r4                                        |     r0 = r4;
    0x00007466 str r2, [sp, 4]                                   |     var_4h = r2;
    0x00007468 movs r2, 1                                        |     r2 = 1;
    0x0000746a str r1, [sp]                                      |     *(sp) = r1;
    0x0000746c mov r1, r3                                        |     r1 = r3;
    0x0000746e blx 0x2460                                        |     fcn_00002460 ();
    0x00007472 mov r0, r4                                        |     r0 = r4;
    0x00007474 blx 0x21b4                                        |     r0 = fcn_000021b4 ();
    0x00007478 mov r6, r0                                        |     r6 = r0;
    0x0000747a cmp r0, 0                                         |     
                                                                 |     if (r0 == 0) {
    0x0000747c beq 0x754e                                        |         goto label_2;
                                                                 |     }
    0x0000747e blx 0x23f4                                        |     r0 = fcn_000023f4 ();
    0x00007482 mov r7, r0                                        |     r7 = r0;
    0x00007484 mov r0, r6                                        |     r0 = r6;
    0x00007486 blx 0x23dc                                        |     r0 = fcn_000023dc ();
    0x0000748a cmp r0, 0                                         |     
                                                                 |     if (r0 == 0) {
    0x0000748c beq 0x755c                                        |         goto label_3;
                                                                 |     }
    0x0000748e movs r5, 0                                        |     r5 = 0;
    0x00007490 sub.w sb, r8, 8                                   |     sb = r8 - 8;
                                                                 |     do {
    0x00007494 ldrb r3, [r0, 0x13]                               |         r3 = *((r0 + 0x13));
    0x00007496 cmp r3, 0x2e                                      |         
                                                                 |         if (r3 == 0x2e) {
    0x00007498 bne 0x74a4                                        |             
    0x0000749a ldrb r3, [r0, 0x14]                               |             r3 = *((r0 + 0x14));
                                                                 |             if (r3 == 0) {
    0x0000749c cbz r3, 0x7502                                    |                 goto label_4;
                                                                 |             }
    0x0000749e ldrh r3, [r0, 0x14]                               |             r3 = *((r0 + 0x14));
    0x000074a0 cmp r3, 0x2e                                      |             
                                                                 |             if (r3 == 0x2e) {
    0x000074a2 beq 0x7502                                        |                 goto label_4;
                                                                 |             }
                                                                 |         }
    0x000074a4 add.w r4, r0, 0x13                                |         r4 = r0 + 0x13;
    0x000074a8 mov.w r2, 0x80000                                 |         r2 = 0x80000;
    0x000074ac mov r1, r4                                        |         r1 = r4;
    0x000074ae mov r0, r7                                        |         r0 = r7;
    0x000074b0 blx 0x22cc                                        |         r0 = fcn_000022cc ();
    0x000074b4 subs.w sl, r0, 0                                  |         sl = r0 - 0;
                                                                 |         if (sl < r0) {
    0x000074b8 blt 0x753e                                        |             goto label_5;
                                                                 |         }
    0x000074ba movs r2, 0x10                                     |         r2 = 0x10;
    0x000074bc mov r1, sb                                        |         r1 = sb;
    0x000074be bl 0xa7ac                                         |         r0 = fcn_0000a7ac (r0, r1, r2);
    0x000074c2 mov fp, r0                                        |         
    0x000074c4 mov r0, sl                                        |         r0 = sl;
    0x000074c6 blx 0x2448                                        |         fcn_00002448 ();
    0x000074ca cmp.w fp, 0                                       |         
                                                                 |         if (fp < 0) {
    0x000074ce blt 0x753e                                        |             goto label_5;
                                                                 |         }
    0x000074d0 mov r0, r4                                        |         r0 = r4;
    0x000074d2 blx 0x22a8                                        |         r0 = fcn_000022a8 ();
    0x000074d6 mov r2, r0                                        |         r2 = r0;
    0x000074d8 adds r0, 5                                        |         r0 += 5;
    0x000074da add.w sl, r2, 1                                   |         sl = r2 + 1;
    0x000074de blx 0x21fc                                        |         r0 = fcn_000021fc ();
    0x000074e2 mov fp, r0                                        |         
                                                                 |         if (r0 == 0) {
    0x000074e4 cbz r0, 0x753e                                    |             goto label_5;
                                                                 |         }
    0x000074e6 ldr r3, [r8, -0x8]                                |         r3 = *((r8 - 0x8));
    0x000074ea mov r1, r4                                        |         r1 = r4;
    0x000074ec mov r2, sl                                        |         r2 = sl;
    0x000074ee str r3, [r0], 4                                   |         *(r0) = r3;
                                                                 |         r0 += 4;
    0x000074f2 blx 0x20c0                                        |         mmap64 ()
    0x000074f6 mov r1, fp                                        |         r1 = fp;
    0x000074f8 mov r0, r5                                        |         r0 = r5;
    0x000074fa bl 0x37c0                                         |         r0 = fcn_000037c0 (r0, r1);
                                                                 |         if (r0 == 0) {
    0x000074fe cbz r0, 0x7538                                    |             goto label_6;
                                                                 |         }
    0x00007500 mov r5, r0                                        |         r5 = r0;
                                                                 | label_4:
    0x00007502 mov r0, r6                                        |         r0 = r6;
    0x00007504 blx 0x23dc                                        |         r0 = fcn_000023dc ();
    0x00007508 cmp r0, 0                                         |         
    0x0000750a bne 0x7494                                        |         
                                                                 |     } while (r0 != 0);
                                                                 | label_1:
    0x0000750c mov r0, r6                                        |     r0 = r6;
    0x0000750e blx 0x2454                                        |     fcn_00002454 ();
                                                                 |     do {
                                                                 | label_0:
    0x00007512 ldr r2, [pc, 0x5c]                                |         
    0x00007514 add.w r1, sp, 0x1000                              |         r1 += var_1000h_2;
    0x00007518 ldr r3, [pc, 0x4c]                                |         r3 = *(0x7568);
    0x0000751a adds r1, 0xc                                      |         r1 += 0xc;
    0x0000751c add r2, pc                                        |         r2 = 0xea92;
    0x0000751e ldr r3, [r2, r3]                                  |         r3 = *(0xea92);
    0x00007520 ldr r2, [r3]                                      |         r2 = *(0xea92);
    0x00007522 ldr r3, [r1]                                      |         r3 = *(r1);
    0x00007524 eors r2, r3                                       |         r2 ^= r3;
    0x00007526 mov.w r3, 0                                       |         r3 = 0;
                                                                 |         if (r2 != r3) {
    0x0000752a bne 0x7560                                        |             goto label_7;
                                                                 |         }
    0x0000752c mov r0, r5                                        |         r0 = r5;
    0x0000752e add.w sp, sp, 0x1000                              |         
    0x00007532 add sp, 0x14                                      |         
    0x00007534 pop.w {r4, r5, r6, r7, r8, sb, sl, fp, pc}        |         
                                                                 | label_6:
    0x00007538 mov r0, fp                                        |         r0 = fp;
    0x0000753a blx 0x20a4                                        |         fcn_000020a4 ();
                                                                 | label_5:
    0x0000753e mov r0, r6                                        |         r0 = r6;
    0x00007540 blx 0x2454                                        |         fcn_00002454 ();
    0x00007544 mov r0, r5                                        |         r0 = r5;
    0x00007546 movs r5, 0                                        |         r5 = 0;
    0x00007548 blx 0x2088                                        |         fcn_00002088 ();
    0x0000754c b 0x7512                                          |         
                                                                 |     } while (1);
                                                                 | label_2:
    0x0000754e blx 0x22f4                                        |     r0 = gzerror ();
    0x00007552 ldr r0, [r0]                                      |     r0 = *(r0);
    0x00007554 mov r5, r6                                        |     r5 = r6;
    0x00007556 blx 0x2208                                        |     fcn_00002208 ();
    0x0000755a b 0x7512                                          |     goto label_0;
                                                                 | label_3:
    0x0000755c mov r5, r0                                        |     r5 = r0;
    0x0000755e b 0x750c                                          |     goto label_1;
                                                                 | label_7:
    0x00007560 blx 0x2108                                        |     fcn_00002108 ();
    0x00007564 ldr r2, [pc, 0x40]                                |     r2 = kmod_module_info_get_key;
    0x00007566 movs r1, r0                                       |     r1 = r0;
    0x00007568 lsls r4, r4, 6                                    |     r4 <<= 6;
    0x0000756a movs r0, r0                                       |     
    0x0000756c subs r4, 0x92                                     |     r4 -= 0x92;
    0x0000756e movs r0, r0                                       |     
    0x00007570 ldr r1, [pc, 0xb0]                                |     r1 = *(0x7624);
    0x00007572 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/lib/libkmod.so.2.3.7 @ 0x7960 */
                                                                 | #include <stdint.h>
                                                                 |  
    ; (fcn) sym.kmod_module_get_symbols ()                       | void kmod_module_get_symbols (uint32_t arg1, uint32_t arg2) {
                                                                 |     int16_t var_0h;
                                                                 |     int16_t var_4h;
                                                                 |     r0 = arg1;
                                                                 |     r1 = arg2;
    0x00007960 stmdbhs r0, {r2, r3, r4, r5, sb, fp, lr}          |     __asm ("stmdbhs r0, {r2, r3, r4, r5, sb, fp, lr}");
    0x00007964 it ne                                             |     
                                                                 |     if (? != ?) {
    0x00007966 cmpne r0, 0                                       |         __asm ("cmpne r0, 0");
                                                                 |     }
    0x00007968 ldr r3, [pc, 0xec]                                |     
    0x0000796a push.w {r4, r5, r6, r7, r8, sb, sl, fp, lr}       |     
    0x0000796e sub sp, 0xc                                       |     
    0x00007970 add r2, pc                                        |     r2 += pc;
    0x00007972 ldr r3, [r2, r3]                                  |     r3 = *((r2 + r3));
    0x00007974 ldr r3, [r3]                                      |     r3 = *(0x7a58);
    0x00007976 str r3, [sp, 4]                                   |     var_4h = r3;
    0x00007978 mov.w r3, 0                                       |     r3 = 0;
                                                                 |     if (? == ?) {
    0x0000797c beq 0x7a36                                        |         goto label_3;
                                                                 |     }
    0x0000797e ldr r6, [r1]                                      |     r6 = *(r1);
    0x00007980 mov r7, r1                                        |     r7 = r1;
    0x00007982 cmp r6, 0                                         |     
                                                                 |     if (r6 != 0) {
    0x00007984 bne 0x7a3c                                        |         goto label_4;
                                                                 |     }
    0x00007986 bl 0x6420                                         |     r0 = fcn_00006420 (r0);
    0x0000798a cmp r0, 0                                         |     
                                                                 |     if (r0 == 0) {
    0x0000798c beq 0x7a16                                        |         goto label_5;
                                                                 |     }
    0x0000798e mov r1, sp                                        |     r1 = sp;
    0x00007990 bl 0x8cd4                                         |     r0 = fcn_00008cd4 (r0, r1, r2, r3);
    0x00007994 subs.w r8, r0, 0                                  |     r8 = r0 - 0;
                                                                 |     if (r8 < r0) {
    0x00007998 blt 0x79a2                                        |         goto label_2;
                                                                 |     }
                                                                 |     if (r8 != r0) {
    0x0000799a bne 0x79c6                                        |         goto label_6;
                                                                 |     }
                                                                 |     do {
                                                                 | label_1:
    0x0000799c ldr r0, [sp]                                      |         r0 = *(sp);
    0x0000799e blx 0x20a4                                        |         fcn_000020a4 ();
                                                                 | label_2:
    0x000079a2 ldr r2, [pc, 0xb8]                                |         
    0x000079a4 ldr r3, [pc, 0xb0]                                |         r3 = *(0x7a58);
    0x000079a6 add r2, pc                                        |         r2 = 0xf408;
    0x000079a8 ldr r3, [r2, r3]                                  |         r3 = *(0xf408);
    0x000079aa ldr r2, [r3]                                      |         r2 = *(0xf408);
    0x000079ac ldr r3, [sp, 4]                                   |         r3 = var_4h;
    0x000079ae eors r2, r3                                       |         r2 ^= r3;
    0x000079b0 mov.w r3, 0                                       |         r3 = 0;
                                                                 |         if (r2 != r3) {
    0x000079b4 bne 0x7a50                                        |             goto label_7;
                                                                 |         }
    0x000079b6 mov r0, r8                                        |         r0 = r8;
    0x000079b8 add sp, 0xc                                       |         
    0x000079ba pop.w {r4, r5, r6, r7, r8, sb, sl, fp, pc}        |         
                                                                 | label_0:
    0x000079be adds r6, 1                                        |         r6++;
    0x000079c0 str r0, [r7]                                      |         *(r7) = r0;
    0x000079c2 cmp r8, r6                                        |         
    0x000079c4 beq 0x799c                                        |         
                                                                 |     } while (r8 == r6);
                                                                 | label_6:
    0x000079c6 ldr r3, [sp]                                      |     r3 = *(sp);
    0x000079c8 add.w r3, r3, r6, lsl 4                           |     r3 += (r6 << 4);
    0x000079cc ldr.w sb, [r3, 0xc]                               |     sb = *((r3 + 0xc));
    0x000079d0 ldrd sl, fp, [r3]                                 |     __asm ("ldrd sl, fp, [r3]");
    0x000079d4 mov r0, sb                                        |     r0 = sb;
    0x000079d6 blx 0x22a8                                        |     r0 = fcn_000022a8 ();
    0x000079da mov r2, r0                                        |     r2 = r0;
    0x000079dc adds r0, 9                                        |     r0 += 9;
    0x000079de adds r4, r2, 1                                    |     r4 = r2 + 1;
    0x000079e0 blx 0x21fc                                        |     r0 = fcn_000021fc ();
    0x000079e4 mov r5, r0                                        |     r5 = r0;
                                                                 |     if (r0 == 0) {
    0x000079e6 cbz r0, 0x7a22                                    |         goto label_8;
                                                                 |     }
    0x000079e8 mov r2, r4                                        |     r2 = r4;
    0x000079ea mov r1, sb                                        |     r1 = sb;
    0x000079ec strd sl, fp, [r0], 8                              |     __asm ("strd sl, fp, [r0], 8");
    0x000079f0 blx 0x20c0                                        |     mmap64 ()
    0x000079f4 ldr r0, [r7]                                      |     r0 = *(r7);
    0x000079f6 mov r1, r5                                        |     r1 = r5;
    0x000079f8 bl 0x37c0                                         |     fcn_000037c0 (r0, r1);
    0x000079fa cdp2 p6, 0xe, c4, c2, c4, 0                       |     __asm ("cdp2 p6, 0xe, c4, c2, c4, 0");
    0x000079fe cmp r0, 0                                         |     
                                                                 |     if (r0 != 0) {
    0x00007a00 bne 0x79be                                        |         goto label_0;
                                                                 |     }
    0x00007a02 mov r0, r5                                        |     r0 = r5;
    0x00007a04 mvn r8, 0xb                                       |     r8 = ~0xb;
    0x00007a08 blx 0x20a4                                        |     fcn_000020a4 ();
    0x00007a0c ldr r0, [r7]                                      |     r0 = *(r7);
    0x00007a0e blx 0x2348                                        |     memchr (r0, r1, r2);
    0x00007a12 str r4, [r7]                                      |     *(r7) = r4;
    0x00007a14 b 0x799c                                          |     goto label_1;
                                                                 | label_5:
    0x00007a16 blx 0x22f4                                        |     r0 = gzerror ();
    0x00007a1a ldr r3, [r0]                                      |     r3 = *(r0);
    0x00007a1c rsb.w r8, r3, 0                                   |     r8 = r3 - ;
    0x00007a20 b 0x79a2                                          |     goto label_2;
                                                                 | label_8:
    0x00007a22 blx 0x22f4                                        |     r0 = gzerror ();
    0x00007a26 ldr r3, [r0]                                      |     r3 = *(r0);
    0x00007a28 ldr r0, [r7]                                      |     r0 = *(r7);
    0x00007a2a rsb.w r8, r3, 0                                   |     r8 = r3 - ;
    0x00007a2e blx 0x2348                                        |     memchr (r0, r1, r2);
    0x00007a32 str r5, [r7]                                      |     *(r7) = r5;
    0x00007a34 b 0x799c                                          |     goto label_1;
                                                                 | label_3:
    0x00007a36 mvn r8, 1                                         |     r8 = ~1;
    0x00007a3a b 0x79a2                                          |     goto label_2;
                                                                 | label_4:
    0x00007a3c ldr r3, [pc, 0x20]                                |     
    0x00007a3e movw r2, 0xa48                                    |     r2 = 0xa48;
    0x00007a42 ldr r1, [pc, 0x20]                                |     
    0x00007a44 ldr r0, [pc, 0x20]                                |     
    0x00007a46 add r3, pc                                        |     r3 = 0xf4aa;
    0x00007a48 add r1, pc                                        |     r1 = 0xf4b2;
    0x00007a4a add r0, pc                                        |     r0 = 0xf4b6;
    0x00007a4c blx 0x246c                                        |     fcn_0000246c ();
                                                                 | label_7:
    0x00007a50 blx 0x2108                                        |     fcn_00002108 ();
    0x00007a54 add r8, fp                                        |     r8 += fp;
    0x00007a56 movs r1, r0                                       |     r1 = r0;
    0x00007a58 lsls r4, r4, 6                                    |     r4 <<= 6;
    0x00007a5a movs r0, r0                                       |     
    0x00007a5c add sl, r4                                        |     sl += r4;
    0x00007a5e movs r1, r0                                       |     r1 = r0;
    0x00007a60 adds r7, 0x2a                                     |     r7 += 0x2a;
    0x00007a62 movs r0, r0                                       |     
    0x00007a64 adds r5, 0xac                                     |     r5 += 0xac;
    0x00007a66 movs r0, r0                                       |     
    0x00007a68 adds r3, 0x82                                     |     r3 += 0x82;
    0x00007a6a 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/lib/libkmod.so.2.3.7 @ 0x7818 */
                                                                 | #include <stdint.h>
                                                                 |  
    ; (fcn) sym.kmod_module_get_versions ()                      | void kmod_module_get_versions (uint32_t arg1, uint32_t arg2) {
                                                                 |     int16_t var_0h;
                                                                 |     int16_t var_4h;
                                                                 |     r0 = arg1;
                                                                 |     r1 = arg2;
    0x00007818 stmdbhs r0, {r2, r3, r4, r5, sb, fp, lr}          |     __asm ("stmdbhs r0, {r2, r3, r4, r5, sb, fp, lr}");
    0x0000781c it ne                                             |     
                                                                 |     if (? != ?) {
    0x0000781e cmpne r0, 0                                       |         __asm ("cmpne r0, 0");
                                                                 |     }
    0x00007820 ldr r3, [pc, 0xec]                                |     
    0x00007822 push.w {r4, r5, r6, r7, r8, sb, sl, fp, lr}       |     
    0x00007826 sub sp, 0xc                                       |     
    0x00007828 add r2, pc                                        |     r2 += pc;
    0x0000782a ldr r3, [r2, r3]                                  |     r3 = *((r2 + r3));
    0x0000782c ldr r3, [r3]                                      |     r3 = *(0x7910);
    0x0000782e str r3, [sp, 4]                                   |     var_4h = r3;
    0x00007830 mov.w r3, 0                                       |     r3 = 0;
                                                                 |     if (? == ?) {
    0x00007834 beq 0x78ee                                        |         goto label_3;
                                                                 |     }
    0x00007836 ldr r6, [r1]                                      |     r6 = *(r1);
    0x00007838 mov r7, r1                                        |     r7 = r1;
    0x0000783a cmp r6, 0                                         |     
                                                                 |     if (r6 != 0) {
    0x0000783c bne 0x78f4                                        |         goto label_4;
                                                                 |     }
    0x0000783e bl 0x6420                                         |     r0 = fcn_00006420 (r0);
    0x00007842 cmp r0, 0                                         |     
                                                                 |     if (r0 == 0) {
    0x00007844 beq 0x78ce                                        |         goto label_5;
                                                                 |     }
    0x00007846 mov r1, sp                                        |     r1 = sp;
    0x00007848 bl 0x8744                                         |     r0 = fcn_00008744 (r0, r1, r2);
    0x0000784c subs.w r8, r0, 0                                  |     r8 = r0 - 0;
                                                                 |     if (r8 < r0) {
    0x00007850 blt 0x785a                                        |         goto label_2;
                                                                 |     }
                                                                 |     if (r8 != r0) {
    0x00007852 bne 0x787e                                        |         goto label_6;
                                                                 |     }
                                                                 |     do {
                                                                 | label_1:
    0x00007854 ldr r0, [sp]                                      |         r0 = *(sp);
    0x00007856 blx 0x20a4                                        |         fcn_000020a4 ();
                                                                 | label_2:
    0x0000785a ldr r2, [pc, 0xb8]                                |         
    0x0000785c ldr r3, [pc, 0xb0]                                |         r3 = *(0x7910);
    0x0000785e add r2, pc                                        |         r2 = 0xf178;
    0x00007860 ldr r3, [r2, r3]                                  |         r3 = *(0xf178);
    0x00007862 ldr r2, [r3]                                      |         r2 = *(0xf178);
    0x00007864 ldr r3, [sp, 4]                                   |         r3 = var_4h;
    0x00007866 eors r2, r3                                       |         r2 ^= r3;
    0x00007868 mov.w r3, 0                                       |         r3 = 0;
                                                                 |         if (r2 != r3) {
    0x0000786c bne 0x7908                                        |             goto label_7;
                                                                 |         }
    0x0000786e mov r0, r8                                        |         r0 = r8;
    0x00007870 add sp, 0xc                                       |         
    0x00007872 pop.w {r4, r5, r6, r7, r8, sb, sl, fp, pc}        |         
                                                                 | label_0:
    0x00007876 adds r6, 1                                        |         r6++;
    0x00007878 str r0, [r7]                                      |         *(r7) = r0;
    0x0000787a cmp r8, r6                                        |         
    0x0000787c beq 0x7854                                        |         
                                                                 |     } while (r8 == r6);
                                                                 | label_6:
    0x0000787e ldr r3, [sp]                                      |     r3 = *(sp);
    0x00007880 add.w r3, r3, r6, lsl 4                           |     r3 += (r6 << 4);
    0x00007884 ldr.w sb, [r3, 0xc]                               |     sb = *((r3 + 0xc));
    0x00007888 ldrd sl, fp, [r3]                                 |     __asm ("ldrd sl, fp, [r3]");
    0x0000788c mov r0, sb                                        |     r0 = sb;
    0x0000788e blx 0x22a8                                        |     r0 = fcn_000022a8 ();
    0x00007892 mov r2, r0                                        |     r2 = r0;
    0x00007894 adds r0, 9                                        |     r0 += 9;
    0x00007896 adds r4, r2, 1                                    |     r4 = r2 + 1;
    0x00007898 blx 0x21fc                                        |     r0 = fcn_000021fc ();
    0x0000789c mov r5, r0                                        |     r5 = r0;
                                                                 |     if (r0 == 0) {
    0x0000789e cbz r0, 0x78da                                    |         goto label_8;
                                                                 |     }
    0x000078a0 mov r2, r4                                        |     r2 = r4;
    0x000078a2 mov r1, sb                                        |     r1 = sb;
    0x000078a4 strd sl, fp, [r0], 8                              |     __asm ("strd sl, fp, [r0], 8");
    0x000078a8 blx 0x20c0                                        |     mmap64 ()
    0x000078ac ldr r0, [r7]                                      |     r0 = *(r7);
    0x000078ae mov r1, r5                                        |     r1 = r5;
    0x000078b0 bl 0x37c0                                         |     r0 = fcn_000037c0 (r0, r1);
    0x000078b4 mov r4, r0                                        |     r4 = r0;
    0x000078b6 cmp r0, 0                                         |     
                                                                 |     if (r0 != 0) {
    0x000078b8 bne 0x7876                                        |         goto label_0;
                                                                 |     }
    0x000078ba mov r0, r5                                        |     r0 = r5;
    0x000078bc mvn r8, 0xb                                       |     r8 = ~0xb;
    0x000078c0 blx 0x20a4                                        |     fcn_000020a4 ();
    0x000078c4 ldr r0, [r7]                                      |     r0 = *(r7);
    0x000078c6 blx 0x2278                                        |     fcn_00002278 ();
    0x000078ca str r4, [r7]                                      |     *(r7) = r4;
    0x000078cc b 0x7854                                          |     goto label_1;
                                                                 | label_5:
    0x000078ce blx 0x22f4                                        |     r0 = gzerror ();
    0x000078d2 ldr r3, [r0]                                      |     r3 = *(r0);
    0x000078d4 rsb.w r8, r3, 0                                   |     r8 = r3 - ;
    0x000078d8 b 0x785a                                          |     goto label_2;
                                                                 | label_8:
    0x000078da blx 0x22f4                                        |     r0 = gzerror ();
    0x000078de ldr r3, [r0]                                      |     r3 = *(r0);
    0x000078e0 ldr r0, [r7]                                      |     r0 = *(r7);
    0x000078e2 rsb.w r8, r3, 0                                   |     r8 = r3 - ;
    0x000078e6 blx 0x2278                                        |     fcn_00002278 ();
    0x000078ea str r5, [r7]                                      |     *(r7) = r5;
    0x000078ec b 0x7854                                          |     goto label_1;
                                                                 | label_3:
    0x000078ee mvn r8, 1                                         |     r8 = ~1;
    0x000078f2 b 0x785a                                          |     goto label_2;
                                                                 | label_4:
    0x000078f4 ldr r3, [pc, 0x20]                                |     
    0x000078f6 movw r2, 0x9bc                                    |     r2 = 0x9bc;
    0x000078fa ldr r1, [pc, 0x20]                                |     
    0x000078fc ldr r0, [pc, 0x20]                                |     
    0x000078fe add r3, pc                                        |     r3 = 0xf21a;
    0x00007900 add r1, pc                                        |     r1 = 0xf222;
    0x00007902 add r0, pc                                        |     r0 = 0xf226;
    0x00007904 blx 0x246c                                        |     fcn_0000246c ();
                                                                 | label_7:
    0x00007908 blx 0x2108                                        |     fcn_00002108 ();
    0x0000790c mov r0, r4                                        |     r0 = r4;
    0x0000790e movs r1, r0                                       |     r1 = r0;
    0x00007910 lsls r4, r4, 6                                    |     r4 <<= 6;
    0x00007912 movs r0, r0                                       |     
    0x00007914 cmp sl, sp                                        |     
    0x00007916 movs r1, r0                                       |     r1 = r0;
    0x00007918 subs r0, 0x8a                                     |     r0 -= 0x8a;
    0x0000791a movs r0, r0                                       |     
    0x0000791c adds r6, 0xf4                                     |     r6 += 0xf4;
    0x0000791e movs r0, r0                                       |     
    0x00007920 adds r4, 0xca                                     |     r4 += 0xca;
    0x00007922 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/lib/libkmod.so.2.3.7 @ 0x6be8 */
                                                             | #include <stdint.h>
                                                             |  
    ; (fcn) sym.kmod_module_probe_insert_module ()           | void kmod_module_probe_insert_module (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;
    0x00006be8 svcmi 0xf0e92d                                |     __asm ("svcmi 0xf0e92d");
    0x00006bec sub sp, 0x54                                  |     
    0x00006bee str r2, [sp, 0x1c]                            |     var_1ch = r2;
    0x00006bf0 ldr.w r2, [pc, 0x488]                         |     r2 = *(0x0000707c);
    0x00006bf4 str r3, [sp, 0x28]                            |     var_28h = r3;
    0x00006bf6 ldr.w r3, [pc, 0x488]                         |     
    0x00006bfa add r2, pc                                    |     r2 += pc;
    0x00006bfc str r1, [sp, 8]                               |     var_8h = r1;
    0x00006bfe ldr r3, [r2, r3]                              |     r3 = *((r2 + r3));
    0x00006c00 ldr r3, [r3]                                  |     r3 = *(0x7082);
    0x00006c02 str r3, [sp, 0x4c]                            |     var_4ch = r3;
    0x00006c04 mov.w r3, 0                                   |     r3 = 0;
    0x00006c08 movs r3, 0                                    |     r3 = 0;
    0x00006c0a str r3, [sp, 0x44]                            |     var_44h = r3;
    0x00006c0c ldr r3, [sp, 0x78]                            |     r3 = *(arg_78h);
    0x00006c0e str r0, [sp, 0xc]                             |     var_ch = r0;
    0x00006c10 str r3, [sp, 0x2c]                            |     var_2ch = r3;
    0x00006c12 ldr r3, [sp, 0x7c]                            |     r3 = *(arg_7ch);
    0x00006c14 str r3, [sp, 0x18]                            |     var_18h = r3;
    0x00006c16 cmp r0, 0                                     |     
                                                             |     if (r0 == 0) {
    0x00006c18 beq.w 0x700a                                  |         goto label_22;
                                                             |     }
    0x00006c1c ands r3, r1, 8                                |     r3 = r1 & 8;
    0x00006c20 str r3, [sp, 0x24]                            |     var_24h = r3;
                                                             |     if (r3 == r1) {
    0x00006c22 beq.w 0x6f6e                                  |         goto label_23;
                                                             |     }
                                                             | label_17:
    0x00006c26 ldr r3, [sp, 0xc]                             |     r3 = var_ch;
    0x00006c28 ldr r3, [r3, 0x20]                            |     r3 = *((r3 + 0x20));
    0x00006c2a cmp r3, 0                                     |     
                                                             |     if (r3 == 0) {
    0x00006c2c beq.w 0x6d60                                  |         goto label_24;
                                                             |     }
    0x00006c30 ldr r3, [sp, 8]                               |     r3 = var_8h;
    0x00006c32 ands r5, r3, 0x40000                          |     r5 = r3 & 0x40000;
                                                             |     if (r5 == r3) {
    0x00006c36 beq.w 0x6d60                                  |         goto label_24;
                                                             |     }
                                                             | label_0:
    0x00006c3a ldr r0, [sp, 0xc]                             |     r0 = var_ch;
    0x00006c3c bl 0x5964                                     |     r0 = fcn_00005964 (r0);
    0x00006c40 cmp r0, 0                                     |     
                                                             |     if (r0 != 0) {
    0x00006c42 bne 0x6d42                                    |         goto label_2;
                                                             |     }
                                                             | label_1:
    0x00006c44 ldr r4, [sp, 0xc]                             |     r4 = var_ch;
    0x00006c46 movs r1, 0                                    |     r1 = 0;
    0x00006c48 ldr r0, [r4]                                  |     r0 = *(r4);
    0x00006c4a bl 0x2de0                                     |     fcn_00002de0 (r0, r1, r2, r3);
    0x00006c4e ldr r0, [r4]                                  |     r0 = *(r4);
    0x00006c50 movs r1, 0                                    |     r1 = 0;
    0x00006c52 bl 0x2e44                                     |     fcn_00002e44 (r0, r1);
    0x00006c56 ldrb.w r3, [r4, 0x38]                         |     r3 = *((r4 + 0x38));
    0x00006c5a lsls r0, r3, 0x1f                             |     r0 = r3 << 0x1f;
                                                             |     if (r0 >= r3) {
    0x00006c5c bpl.w 0x6d74                                  |         goto label_25;
                                                             |     }
    0x00006c60 movs r3, 0                                    |     r3 = 0;
    0x00006c62 mov r5, r3                                    |     r5 = r3;
    0x00006c64 str r3, [sp, 0x20]                            |     var_20h = r3;
    0x00006c66 ldr r3, [sp, 8]                               |     r3 = var_8h;
    0x00006c68 lsls r2, r3, 0xf                              |     r2 = r3 << 0xf;
                                                             |     if (r2 < r3) {
    0x00006c6a bmi.w 0x6f94                                  |         goto label_26;
                                                             |     }
                                                             | label_18:
    0x00006c6e ldr.w r3, [pc, 0x414]                         |     
    0x00006c72 add r3, pc                                    |     r3 = 0xdcfc;
    0x00006c74 str r3, [sp, 0x3c]                            |     var_3ch = r3;
    0x00006c76 ldr r3, [sp, 0x20]                            |     r3 = var_20h;
    0x00006c78 str r3, [sp, 4]                               |     var_4h = r3;
                                                             |     do {
    0x00006c7a ldr r3, [sp, 4]                               |         r3 = var_4h;
    0x00006c7c cmp r3, 0                                     |         
                                                             |         if (r3 == 0) {
    0x00006c7e beq 0x6d3c                                    |             goto label_5;
                                                             |         }
    0x00006c80 ldr r3, [sp, 4]                               |         r3 = var_4h;
    0x00006c82 ldr.w fp, [r3, 8]                             |         fp = *((r3 + 8));
    0x00006c86 mov r0, fp                                    |         r0 = fp;
    0x00006c88 blx 0x23ac                                    |         r0 = fcn_000023ac ();
    0x00006c8c mov r4, r0                                    |         r4 = r0;
    0x00006c8e mov r0, fp                                    |         r0 = fp;
    0x00006c90 blx 0x204c                                    |         fcn_0000204c ();
    0x00006c94 ldr r3, [sp, 0x24]                            |         r3 = var_24h;
    0x00006c96 mov r7, r0                                    |         r7 = r0;
    0x00006c98 cmp r3, 0                                     |         
                                                             |         if (r3 == 0) {
    0x00006c9a beq.w 0x6e0a                                  |             goto label_27;
                                                             |         }
                                                             | label_7:
    0x00006c9e ldr r3, [sp, 0xc]                             |         r3 = var_ch;
    0x00006ca0 cmp r3, fp                                    |         
                                                             |         if (r3 == fp) {
    0x00006ca2 beq.w 0x6e1e                                  |             goto label_28;
                                                             |         }
    0x00006ca6 cmp r4, 0                                     |         
                                                             |         if (r4 == 0) {
    0x00006ca8 beq.w 0x6e42                                  |             goto label_29;
                                                             |         }
    0x00006cac mov r0, r4                                    |         r0 = r4;
    0x00006cae blx 0x22a8                                    |         r0 = fcn_000022a8 ();
    0x00006cb2 mov sb, r0                                    |         sb = r0;
                                                             | label_10:
    0x00006cb4 cmp.w sb, 0                                   |         
                                                             |         if (sb == 0) {
    0x00006cb8 beq.w 0x6e42                                  |             goto label_29;
                                                             |         }
    0x00006cbc add.w r0, sb, 2                               |         r0 = sb + 2;
    0x00006cc0 mov.w r8, 0                                   |         r8 = 0;
    0x00006cc4 blx 0x21fc                                    |         fcn_000021fc ();
    0x00006cc8 mov r6, r8                                    |         r6 = r8;
    0x00006cca mov sl, r0                                    |         sl = r0;
                                                             | label_21:
    0x00006ccc mov r1, r4                                    |         r1 = r4;
    0x00006cce mov r2, sb                                    |         r2 = sb;
    0x00006cd0 mov r0, sl                                    |         r0 = sl;
    0x00006cd2 blx 0x20c0                                    |         mmap64 ()
    0x00006cd6 movs r3, 0x20                                 |         r3 = 0x20;
    0x00006cd8 add.w r0, sb, 1                               |         r0 = sb + 1;
    0x00006cdc adds r4, r0, r6                               |         r4 = r0 + r6;
    0x00006cde strb.w r3, [sl, sb]                           |         *((sl + sb)) = r3;
    0x00006ce2 cmp.w r8, 0                                   |         
                                                             |         if (r8 != 0) {
    0x00006ce6 bne.w 0x6dfe                                  |             goto label_30;
                                                             |         }
                                                             | label_6:
    0x00006cea mov.w r3, 0                                   |         r3 = 0;
    0x00006cee strb.w r3, [sl, r4]                           |         *((sl + r4)) = r3;
    0x00006cf2 cmp r7, 0                                     |         
                                                             |         if (r7 == 0) {
    0x00006cf4 beq 0x6d92                                    |             goto label_31;
                                                             |         }
    0x00006cf6 ldrb.w r3, [fp, 0x38]                         |         r3 = *(arg_38h);
    0x00006cfa lsls r1, r3, 0x1e                             |         r1 = r3 << 0x1e;
                                                             |         if (r1 < r3) {
    0x00006cfc bmi 0x6d92                                    |             goto label_31;
                                                             |         }
    0x00006cfe ldr r3, [sp, 0x18]                            |         r3 = var_18h;
                                                             |         if (r3 != 0) {
    0x00006d00 cbz r3, 0x6d14                                |             
    0x00006d02 cmp.w sl, 0                                   |             
                                                             |             if (sl == 0) {
    0x00006d06 beq.w 0x6ffe                                  |                 goto label_32;
                                                             |             }
    0x00006d0a mov r2, sl                                    |             r2 = sl;
                                                             | label_12:
    0x00006d0c ldr r3, [sp, 0x18]                            |             r3 = var_18h;
    0x00006d0e movs r1, 1                                    |             r1 = 1;
    0x00006d10 mov r0, fp                                    |             r0 = fp;
    0x00006d12 blx r3                                        |             uint32_t (*r3)(uint32_t, uint32_t, uint32_t, uint32_t) (r0, r1, r2, r3);
                                                             |         }
                                                             | label_11:
    0x00006d14 ldr r3, [sp, 8]                               |         r3 = var_8h;
    0x00006d16 ands r3, r3, 0x10                             |         r3 &= 0x10;
    0x00006d1a mov r6, r3                                    |         r6 = r3;
                                                             |         if (r3 == r3) {
    0x00006d1c beq.w 0x6e8c                                  |             goto label_33;
                                                             |         }
                                                             | label_3:
    0x00006d20 mov r0, sl                                    |         r0 = sl;
    0x00006d22 blx 0x20a4                                    |         fcn_000020a4 ();
    0x00006d26 ldrb.w r3, [fp, 0x38]                         |         r3 = *(arg_38h);
    0x00006d2a lsls r3, r3, 0x1d                             |         r3 <<= 0x1d;
                                                             |         if (r3 >= r3) {
    0x00006d2c bmi 0x6d30                                    |             
                                                             | label_4:
    0x00006d2e movs r5, 0                                    |             r5 = 0;
                                                             |         }
                                                             | label_15:
    0x00006d30 ldr r3, [sp, 4]                               |         r3 = var_4h;
    0x00006d32 ldr r2, [sp, 0x20]                            |         r2 = var_20h;
    0x00006d34 ldr r3, [r3]                                  |         r3 = *(r3);
    0x00006d36 cmp r3, r2                                    |         
    0x00006d38 str r3, [sp, 4]                               |         var_4h = r3;
    0x00006d3a bne 0x6c7a                                    |         
                                                             |     } while (r3 != r2);
                                                             | label_5:
    0x00006d3c ldr r0, [sp, 0x20]                            |     r0 = var_20h;
    0x00006d3e blx 0x2088                                    |     fcn_00002088 ();
                                                             | label_2:
    0x00006d42 ldr r2, [pc, 0x344]                           |     
    0x00006d44 ldr r3, [pc, 0x338]                           |     r3 = *(0x7080);
    0x00006d46 add r2, pc                                    |     r2 = 0xddd4;
    0x00006d48 ldr r3, [r2, r3]                              |     r3 = *(0xddd4);
    0x00006d4a ldr r2, [r3]                                  |     r2 = *(0xddd4);
    0x00006d4c ldr r3, [sp, 0x4c]                            |     r3 = var_4ch;
    0x00006d4e eors r2, r3                                   |     r2 ^= r3;
    0x00006d50 mov.w r3, 0                                   |     r3 = 0;
                                                             |     if (r2 != r3) {
    0x00006d54 bne.w 0x7076                                  |         goto label_34;
                                                             |     }
    0x00006d58 mov r0, r5                                    |     r0 = r5;
    0x00006d5a add sp, 0x54                                  |     
    0x00006d5c pop.w {r4, r5, r6, r7, r8, sb, sl, fp, pc}    |     
                                                             | label_24:
    0x00006d60 ldr r3, [sp, 8]                               |     r3 = var_8h;
    0x00006d62 ands r5, r3, 0x10000                          |     r5 = r3 & 0x10000;
                                                             |     if (r5 != r3) {
    0x00006d66 bne.w 0x6c3a                                  |         goto label_0;
                                                             |     }
    0x00006d6a ands r5, r3, 0x20000                          |     r5 = r3 & 0x20000;
                                                             |     if (r5 != r3) {
    0x00006d6e bne.w 0x6c3a                                  |         goto label_0;
                                                             |     }
    0x00006d72 b 0x6c44                                      |     goto label_1;
                                                             | label_25:
    0x00006d74 ldr r2, [sp, 8]                               |     r2 = var_8h;
    0x00006d76 add r3, sp, 0x44                              |     r3 += var_44h;
    0x00006d78 ldr r0, [sp, 0xc]                             |     r0 = var_ch;
    0x00006d7a movs r1, 1                                    |     r1 = 1;
    0x00006d7c ubfx r2, r2, 2, 1                             |     r2 = (r2 >> 2) & ((1 << 1) - 1);
    0x00006d80 bl 0x6920                                     |     r0 = fcn_00006920 (r0, r1, r2, r3);
    0x00006d84 subs r5, r0, 0                                |     r5 = r0 - 0;
                                                             |     if (r5 >= r0) {
    0x00006d86 bge.w 0x6f88                                  |         goto label_35;
                                                             |     }
    0x00006d8a ldr r0, [sp, 0x44]                            |     r0 = var_44h;
    0x00006d8c blx 0x2088                                    |     fcn_00002088 ();
    0x00006d90 b 0x6d42                                      |     goto label_2;
                                                             | label_31:
    0x00006d92 ldr r3, [sp, 0x18]                            |     r3 = var_18h;
                                                             |     if (r3 != 0) {
    0x00006d94 cbz r3, 0x6da8                                |         
    0x00006d96 cmp.w sl, 0                                   |         
                                                             |         if (sl == 0) {
    0x00006d9a beq.w 0x705c                                  |             goto label_36;
                                                             |         }
    0x00006d9e mov r2, sl                                    |         r2 = sl;
                                                             | label_14:
    0x00006da0 ldr r3, [sp, 0x18]                            |         r3 = var_18h;
    0x00006da2 movs r1, 0                                    |         r1 = 0;
    0x00006da4 mov r0, fp                                    |         r0 = fp;
    0x00006da6 blx r3                                        |         uint32_t (*r3)(uint32_t, uint32_t, uint32_t, uint32_t) (r0, r1, r2, r3);
                                                             |     }
                                                             | label_13:
    0x00006da8 ldr r3, [sp, 8]                               |     r3 = var_8h;
    0x00006daa lsls r6, r3, 0x1b                             |     r6 = r3 << 0x1b;
                                                             |     if (r6 < r3) {
    0x00006dac bmi 0x6d20                                    |         goto label_3;
                                                             |     }
    0x00006dae mov r1, r3                                    |     r1 = r3;
    0x00006db0 mov r2, sl                                    |     r2 = sl;
    0x00006db2 mov r0, fp                                    |     r0 = fp;
    0x00006db4 blx 0x2484                                    |     fcn_00002484 ();
    0x00006db8 ldr r3, [sp, 0xc]                             |     r3 = var_ch;
    0x00006dba mov r5, r0                                    |     r5 = r0;
    0x00006dbc cmp r3, fp                                    |     
    0x00006dbe it eq                                         |     
                                                             |     if (r3 == fp) {
    0x00006dc0 cmneq r0, 0x11                                |         __asm ("cmneq r0, 0x11");
                                                             |     }
    0x00006dc4 ite eq                                        |     
                                                             |     if (r3 != fp) {
    0x00006dc6 moveq r4, 1                                   |         r4 = 1;
                                                             |     }
                                                             |     if (r3 == fp) {
    0x00006dc8 movne r4, 0                                   |         r4 = 0;
                                                             |     }
                                                             | label_16:
    0x00006dca mov r0, sl                                    |     r0 = sl;
    0x00006dcc blx 0x20a4                                    |     fcn_000020a4 ();
    0x00006dd0 cmp r4, 0                                     |     
                                                             |     if (r4 == 0) {
    0x00006dd2 beq 0x6e72                                    |         goto label_37;
                                                             |     }
                                                             | label_8:
    0x00006dd4 ldr r3, [sp, 8]                               |     r3 = var_8h;
    0x00006dd6 lsls r0, r3, 0x1a                             |     r0 = r3 << 0x1a;
                                                             |     if (r0 >= r3) {
    0x00006dd8 bpl 0x6d2e                                    |         goto label_4;
                                                             |     }
    0x00006dda mvn r5, 0x10                                  |     r5 = ~0x10;
    0x00006dde b 0x6d3c                                      |     goto label_5;
                                                             | label_9:
    0x00006de0 ldr r3, [sp, 0x1c]                            |     r3 = var_1ch;
                                                             |     if (r3 == 0) {
    0x00006de2 cbz r3, 0x6e42                                |         goto label_29;
                                                             |     }
    0x00006de4 ldr r0, [sp, 0x1c]                            |     r0 = var_1ch;
    0x00006de6 blx 0x22a8                                    |     r0 = fcn_000022a8 ();
    0x00006dea mov r6, r0                                    |     r6 = r0;
                                                             |     if (r0 == 0) {
    0x00006dec cbz r0, 0x6e42                                |         goto label_29;
                                                             |     }
    0x00006dee adds r0, 2                                    |     r0 += 2;
    0x00006df0 blx 0x21fc                                    |     fcn_000021fc ();
    0x00006df4 ldr.w r8, [sp, 0x1c]                          |     r8 = var_1ch;
    0x00006df8 mov sl, r0                                    |     sl = r0;
    0x00006dfa mov r0, r4                                    |     r0 = r4;
    0x00006dfc mov r4, r6                                    |     r4 = r6;
                                                             | label_30:
    0x00006dfe mov r2, r6                                    |     r2 = r6;
    0x00006e00 mov r1, r8                                    |     r1 = r8;
    0x00006e02 add r0, sl                                    |     r0 += sl;
    0x00006e04 blx 0x20c0                                    |     mmap64 ()
    0x00006e08 b 0x6cea                                      |     goto label_6;
                                                             | label_27:
    0x00006e0a mov r0, fp                                    |     r0 = fp;
    0x00006e0c blx 0x2004                                    |     r0 = fcn_00002004 ();
    0x00006e10 cmp r0, 1                                     |     
                                                             |     if (r0 > 1) {
    0x00006e12 bhi.w 0x6c9e                                  |         goto label_7;
                                                             |     }
    0x00006e16 ldr r3, [sp, 0xc]                             |     r3 = var_ch;
    0x00006e18 cmp r3, fp                                    |     
                                                             |     if (r3 == fp) {
    0x00006e1a beq 0x6dd4                                    |         goto label_8;
                                                             |     }
    0x00006e1c b 0x6d2e                                      |     goto label_4;
                                                             | label_28:
    0x00006e1e cmp r4, 0                                     |     
                                                             |     if (r4 == 0) {
    0x00006e20 beq 0x6de0                                    |         goto label_9;
                                                             |     }
    0x00006e22 mov r0, r4                                    |     r0 = r4;
    0x00006e24 blx 0x22a8                                    |     fcn_000022a8 ();
    0x00006e28 ldr r3, [sp, 0x1c]                            |     r3 = var_1ch;
    0x00006e2a mov sb, r0                                    |     sb = r0;
    0x00006e2c cmp r3, 0                                     |     
                                                             |     if (r3 == 0) {
    0x00006e2e beq.w 0x6cb4                                  |         goto label_10;
                                                             |     }
    0x00006e32 ldr r0, [sp, 0x1c]                            |     r0 = var_1ch;
    0x00006e34 blx 0x22a8                                    |     r0 = fcn_000022a8 ();
    0x00006e38 orrs.w r3, sb, r0                             |     r3 = sb | r0;
    0x00006e3c mov r6, r0                                    |     r6 = r0;
                                                             |     if (r3 != sb) {
    0x00006e3e bne.w 0x704a                                  |         goto label_38;
                                                             |     }
                                                             |     if (r7 == 0) {
                                                             | label_29:
    0x00006e42 cbz r7, 0x6e60                                |         goto label_39;
                                                             |     }
    0x00006e44 ldrb.w r3, [fp, 0x38]                         |     r3 = *(arg_38h);
    0x00006e48 ubfx r3, r3, 1, 1                             |     r3 = (r3 >> 1) & ((1 << 1) - 1);
                                                             |     if (r3 != 0) {
    0x00006e4c cbnz r3, 0x6e60                               |         goto label_39;
                                                             |     }
    0x00006e4e ldr r2, [sp, 0x18]                            |     r2 = var_18h;
    0x00006e50 mov sl, r2                                    |     sl = r2;
    0x00006e52 cmp r2, 0                                     |     
                                                             |     if (r2 == 0) {
    0x00006e54 beq.w 0x6d14                                  |         goto label_11;
                                                             |     }
    0x00006e58 ldr r2, [pc, 0x230]                           |     
    0x00006e5a mov sl, r3                                    |     sl = r3;
    0x00006e5c add r2, pc                                    |     r2 = 0xdeec;
    0x00006e5e b 0x6d0c                                      |     goto label_12;
                                                             | label_39:
    0x00006e60 ldr r3, [sp, 0x18]                            |     r3 = var_18h;
    0x00006e62 mov sl, r3                                    |     sl = r3;
    0x00006e64 cmp r3, 0                                     |     
                                                             |     if (r3 == 0) {
    0x00006e66 beq 0x6da8                                    |         goto label_13;
                                                             |     }
    0x00006e68 ldr r2, [pc, 0x224]                           |     
    0x00006e6a mov.w sl, 0                                   |     sl = 0;
    0x00006e6e add r2, pc                                    |     r2 = 0xdf02;
    0x00006e70 b 0x6da0                                      |     goto label_14;
                                                             | label_37:
    0x00006e72 cmn.w r5, 0x11                                |     
                                                             |     if (r5 == 0x11) {
    0x00006e76 beq.w 0x6d2e                                  |         goto label_4;
                                                             |     }
    0x00006e7a ldrb.w r3, [fp, 0x38]                         |     r3 = *(arg_38h);
    0x00006e7e lsls r1, r3, 0x1d                             |     r1 = r3 << 0x1d;
                                                             |     if (r1 >= r3) {
    0x00006e80 bpl.w 0x6d2e                                  |         goto label_4;
                                                             |     }
    0x00006e84 cmp r5, 0                                     |     
                                                             |     if (r5 >= 0) {
    0x00006e86 bge.w 0x6d30                                  |         goto label_15;
                                                             |     }
    0x00006e8a b 0x6d3c                                      |     goto label_5;
                                                             | label_33:
    0x00006e8c mov r0, fp                                    |     r0 = fp;
    0x00006e8e blx 0x204c                                    |     r0 = fcn_0000204c ();
    0x00006e92 mov r4, r0                                    |     r4 = r0;
    0x00006e94 cmp r0, 0                                     |     
                                                             |     if (r0 == 0) {
    0x00006e96 beq.w 0x7062                                  |         goto label_40;
                                                             |     }
    0x00006e9a cmp.w sl, 0                                   |     
                                                             |     if (sl == 0) {
    0x00006e9e beq.w 0x6fbe                                  |         goto label_41;
                                                             |     }
    0x00006ea2 mov r0, sl                                    |     r0 = sl;
    0x00006ea4 blx 0x22a8                                    |     r0 = fcn_000022a8 ();
    0x00006ea8 mov r6, r0                                    |     r6 = r0;
    0x00006eaa str.w sl, [sp, 0x14]                          |     __asm ("str.w sl, [var_14h]");
                                                             | label_19:
    0x00006eae mov r0, r4                                    |     r0 = r4;
    0x00006eb0 blx 0x22a8                                    |     r0 = fcn_000022a8 ();
    0x00006eb4 mov r7, r0                                    |     r7 = r0;
    0x00006eb6 mov r0, r4                                    |     r0 = r4;
    0x00006eb8 adds r1, r7, 1                                |     r1 = r7 + 1;
    0x00006eba bl 0xa548                                     |     fcn_0000a548 (r0, r1);
    0x00006ebe ldr r3, [sp, 0xc]                             |     r3 = var_ch;
    0x00006ec0 mov sb, r0                                    |     sb = r0;
    0x00006ec2 sub.w r3, r3, fp                              |     r3 -= fp;
    0x00006ec6 clz r3, r3                                    |     r3 &= r3;
    0x00006eca lsrs r3, r3, 5                                |     r3 >>= 5;
    0x00006ecc str r3, [sp, 0x38]                            |     var_38h = r3;
    0x00006ece cmp r0, 0                                     |     
                                                             |     if (r0 == 0) {
    0x00006ed0 beq.w 0x701a                                  |         goto label_42;
                                                             |     }
    0x00006ed4 sub.w r2, r6, 0xd                             |     r2 = r6 - 0xd;
    0x00006ed8 strd fp, sl, [sp, 0x30]                       |     __asm ("strd fp, sl, [var_30h]");
    0x00006edc str r2, [sp, 0x10]                            |     var_10h = r2;
    0x00006ede mov sl, r6                                    |     sl = r6;
    0x00006ee0 ldr.w fp, [sp, 0x3c]                          |     fp = var_3ch;
    0x00006ee4 b 0x6f36                                      |     
                                                             |     while (r0 != 0) {
    0x00006ee6 ldr r3, [sp, 0x10]                            |         r3 = var_10h;
    0x00006ee8 sub.w r8, r7, 0xd                             |         r8 = r7 - 0xd;
    0x00006eec sub.w r6, r0, sb                              |         r6 = r0 - sb;
    0x00006ef0 add.w r5, r0, 0xd                             |         r5 = r0 + 0xd;
    0x00006ef4 sub.w r8, r8, r6                              |         r8 -= r6;
    0x00006ef8 add r7, r3                                    |         r7 += r3;
    0x00006efa adds r0, r7, 1                                |         r0 = r7 + 1;
    0x00006efc blx 0x21fc                                    |         r0 = fcn_000021fc ();
    0x00006f00 mov r4, r0                                    |         r4 = r0;
    0x00006f02 cmp r0, 0                                     |         
                                                             |         if (r0 == 0) {
    0x00006f04 beq.w 0x7010                                  |             goto label_43;
                                                             |         }
    0x00006f08 mov r1, sb                                    |         r1 = sb;
    0x00006f0a mov r2, r6                                    |         r2 = r6;
    0x00006f0c blx 0x20c0                                    |         mmap64 ()
    0x00006f10 ldr r1, [sp, 0x14]                            |         r1 = var_14h;
    0x00006f12 mov r2, sl                                    |         r2 = sl;
    0x00006f14 adds r0, r4, r6                               |         r0 = r4 + r6;
    0x00006f16 blx 0x20c0                                    |         mmap64 ()
    0x00006f1a add.w r0, sl, r6                              |         r0 = sl + r6;
    0x00006f1e mov r2, r8                                    |         r2 = r8;
    0x00006f20 mov r1, r5                                    |         r1 = r5;
    0x00006f22 add r0, r4                                    |         r0 += r4;
    0x00006f24 blx 0x20c0                                    |         mmap64 ()
    0x00006f28 mov r0, sb                                    |         r0 = sb;
    0x00006f2a mov.w r3, 0                                   |         r3 = 0;
    0x00006f2e mov sb, r4                                    |         sb = r4;
    0x00006f30 strb r3, [r4, r7]                             |         *((r4 + r7)) = r3;
    0x00006f32 blx 0x20a4                                    |         fcn_000020a4 ();
    0x00006f36 mov r1, fp                                    |         r1 = fp;
    0x00006f38 mov r0, sb                                    |         r0 = sb;
    0x00006f3a blx 0x1fdc                                    |         r0 = strstr (r0, r1);
    0x00006f3e cmp r0, 0                                     |         
    0x00006f40 bne 0x6ee6                                    |         
                                                             |     }
    0x00006f42 ldr r3, [sp, 0x28]                            |     r3 = var_28h;
    0x00006f44 ldrd fp, sl, [sp, 0x30]                       |     __asm ("ldrd fp, sl, [var_30h]");
    0x00006f48 cmp r3, 0                                     |     
                                                             |     if (r3 == 0) {
    0x00006f4a beq 0x6fc6                                    |         goto label_44;
                                                             |     }
    0x00006f4c ldr r2, [sp, 0x2c]                            |     r2 = var_2ch;
    0x00006f4e mov r1, sb                                    |     r1 = sb;
    0x00006f50 mov r0, fp                                    |     r0 = fp;
    0x00006f52 blx r3                                        |     uint32_t (*r3)(uint32_t, uint32_t, uint32_t) (r0, r1, r2);
    0x00006f54 ldr r3, [sp, 0x38]                            |     r3 = var_38h;
    0x00006f56 cmn.w r0, 0x11                                |     
    0x00006f5a ite ne                                        |     
                                                             |     if (r0 == 0x11) {
    0x00006f5c movne r4, 0                                   |         r4 = 0;
                                                             |     }
                                                             |     if (r0 != 0x11) {
    0x00006f5e moveq r4, 1                                   |         r4 = 1;
                                                             |     }
    0x00006f60 mov r5, r0                                    |     r5 = r0;
    0x00006f62 ands r3, r4                                   |     r3 &= r4;
    0x00006f64 mov r4, r3                                    |     r4 = r3;
                                                             | label_20:
    0x00006f66 mov r0, sb                                    |     r0 = sb;
    0x00006f68 blx 0x20a4                                    |     fcn_000020a4 ();
    0x00006f6c b 0x6dca                                      |     goto label_16;
                                                             | label_23:
    0x00006f6e blx 0x2004                                    |     r0 = fcn_00002004 ();
    0x00006f72 cmp r0, 1                                     |     
                                                             |     if (r0 > 1) {
    0x00006f74 bhi.w 0x6c26                                  |         goto label_17;
                                                             |     }
    0x00006f78 ldr r3, [sp, 8]                               |     r3 = var_8h;
    0x00006f7a tst.w r3, 0x20                                |     
    0x00006f7e ite ne                                        |     
                                                             |     if ((r3 & 0x20) == 0) {
    0x00006f80 mvnne r5, 0x10                                |         r5 = ~0x10;
                                                             |     }
                                                             |     if ((r3 & 0x20) == 0) {
    0x00006f84 movs r5, 0                                    |         r5 = 0;
                                                             |     }
    0x00006f86 b 0x6d42                                      |     goto label_2;
                                                             | label_35:
    0x00006f88 ldr r3, [sp, 0x44]                            |     r3 = var_44h;
    0x00006f8a str r3, [sp, 0x20]                            |     var_20h = r3;
    0x00006f8c ldr r3, [sp, 8]                               |     r3 = var_8h;
    0x00006f8e lsls r2, r3, 0xf                              |     r2 = r3 << 0xf;
                                                             |     if (r2 >= r3) {
    0x00006f90 bpl.w 0x6c6e                                  |         goto label_18;
                                                             |     }
                                                             | label_26:
    0x00006f94 ldr r3, [sp, 0xc]                             |     r3 = var_ch;
    0x00006f96 movs r1, 1                                    |     r1 = 1;
    0x00006f98 ldr r4, [sp, 0x20]                            |     r4 = var_20h;
    0x00006f9a ldr r0, [r3]                                  |     r0 = *(r3);
    0x00006f9c movs r3, 0                                    |     r3 = 0;
    0x00006f9e str r3, [sp, 0x48]                            |     var_48h = r3;
    0x00006fa0 mov r2, r4                                    |     r2 = r4;
    0x00006fa2 add r3, sp, 0x48                              |     r3 += var_48h;
    0x00006fa4 blx 0x2148                                    |     r0 = fcn_00002148 ();
    0x00006fa8 subs r5, r0, 0                                |     r5 = r0 - 0;
                                                             |     if (r5 < r0) {
    0x00006faa blt.w 0x6d42                                  |         goto label_2;
                                                             |     }
    0x00006fae mov r0, r4                                    |     r0 = r4;
    0x00006fb0 blx 0x2088                                    |     fcn_00002088 ();
    0x00006fb4 ldr r3, [sp, 0x48]                            |     r3 = var_48h;
    0x00006fb6 str r3, [sp, 0x20]                            |     var_20h = r3;
                                                             |     if (r3 != 0) {
    0x00006fb8 cbz r3, 0x7004                                |         
    0x00006fba str r3, [sp, 0x44]                            |         var_44h = r3;
    0x00006fbc b 0x6c6e                                      |         goto label_18;
                                                             | label_41:
    0x00006fbe ldr r3, [pc, 0xd4]                            |         
    0x00006fc0 add r3, pc                                    |         r3 = 0xe05a;
    0x00006fc2 str r3, [sp, 0x14]                            |         var_14h = r3;
    0x00006fc4 b 0x6eae                                      |         goto label_19;
                                                             | label_44:
    0x00006fc6 ldr r4, [pc, 0xd0]                            |         
    0x00006fc8 mov r0, fp                                    |         r0 = fp;
    0x00006fca blx 0x2290                                    |         fcn_00002290 ();
    0x00006fce movs r2, 1                                    |         r2 = 1;
    0x00006fd0 mov r1, r0                                    |         r1 = r0;
    0x00006fd2 add r4, pc                                    |         r4 = 0xe070;
    0x00006fd4 mov r0, r4                                    |         r0 = r4;
    0x00006fd6 blx 0x22c0                                    |         fcn_000022c0 ();
    0x00006fda mov r0, sb                                    |         r0 = sb;
    0x00006fdc blx 0x2214                                    |         r0 = fcn_00002214 ();
    0x00006fe0 mov r5, r0                                    |         r5 = r0;
    0x00006fe2 mov r0, r4                                    |         r0 = r4;
    0x00006fe4 blx 0x2430                                    |         fcn_00002430 ();
    0x00006fe8 adds r2, r5, 1                                |         r2 = r5 + 1;
    0x00006fea it eq                                         |         
                                                             |         if (r2 != r5) {
    0x00006fec moveq r0, sb                                  |             r0 = sb;
                                                             |         }
                                                             |         if (r2 == r5) {
    0x00006fee beq 0x7030                                    |             goto label_45;
                                                             |         }
    0x00006ff0 ubfx r5, r5, 8, 8                             |         r5 = (r5 >> 8) & ((1 << 8) - 1);
    0x00006ff4 mov r0, sb                                    |         r0 = sb;
                                                             |         if (r5 != 0) {
    0x00006ff6 cbnz r5, 0x7030                               |             goto label_45;
                                                             |         }
    0x00006ff8 blx 0x20a4                                    |         fcn_000020a4 ();
    0x00006ffc b 0x6d20                                      |         goto label_3;
                                                             | label_32:
    0x00006ffe ldr r2, [pc, 0x9c]                            |         
    0x00007000 add r2, pc                                    |         r2 = 0xe0a2;
    0x00007002 b 0x6d0c                                      |         goto label_12;
                                                             |     }
    0x00007004 mov.w r5, 0x10000                             |     r5 = 0x10000;
    0x00007008 b 0x6d42                                      |     goto label_2;
                                                             | label_22:
    0x0000700a mvn r5, 1                                     |     r5 = ~1;
    0x0000700e b 0x6d42                                      |     goto label_2;
                                                             | label_43:
    0x00007010 ldrd fp, sl, [sp, 0x30]                       |     __asm ("ldrd fp, sl, [var_30h]");
    0x00007014 mvn r5, 0xb                                   |     r5 = ~0xb;
    0x00007016 lsls r3, r1, 0x14                             |     r3 = r1 << 0x14;
    0x00007018 b 0x6f66                                      |     goto label_20;
                                                             | label_42:
    0x0000701a mov r0, sl                                    |     r0 = sl;
    0x0000701c blx 0x20a4                                    |     fcn_000020a4 ();
    0x00007020 ldrb.w r3, [fp, 0x38]                         |     r3 = *(arg_38h);
    0x00007024 lsls r7, r3, 0x1d                             |     r7 = r3 << 0x1d;
                                                             |     if (r7 >= r3) {
    0x00007026 bpl.w 0x6d2e                                  |         goto label_4;
                                                             |     }
    0x0000702a mvn r5, 0xb                                   |     r5 = ~0xb;
    0x0000702e b 0x6d3c                                      |     goto label_5;
                                                             | label_45:
    0x00007030 blx 0x20a4                                    |     fcn_000020a4 ();
    0x00007034 mov r0, sl                                    |     r0 = sl;
    0x00007036 blx 0x20a4                                    |     fcn_000020a4 ();
    0x0000703a ldrb.w r3, [fp, 0x38]                         |     r3 = *(arg_38h);
    0x0000703e lsls r3, r3, 0x1d                             |     r3 <<= 0x1d;
                                                             |     if (r3 >= r3) {
    0x00007040 bpl.w 0x6d2e                                  |         goto label_4;
                                                             |     }
    0x00007044 mvn r5, 0x15                                  |     r5 = ~0x15;
    0x00007048 b 0x6d3c                                      |     goto label_5;
                                                             | label_38:
    0x0000704a add.w r0, sb, r6                              |     r0 = sb + r6;
    0x0000704e adds r0, 2                                    |     r0 += 2;
    0x00007050 blx 0x21fc                                    |     fcn_000021fc ();
    0x00007054 ldr.w r8, [sp, 0x1c]                          |     r8 = var_1ch;
    0x00007058 mov sl, r0                                    |     sl = r0;
    0x0000705a b 0x6ccc                                      |     goto label_21;
                                                             | label_36:
    0x0000705c ldr r2, [pc, 0x40]                            |     
    0x0000705e add r2, pc                                    |     r2 = 0xe102;
    0x00007060 b 0x6da0                                      |     goto label_14;
                                                             | label_40:
    0x00007062 ldr r3, [pc, 0x40]                            |     
    0x00007064 movw r2, 0x3f5                                |     r2 = 0x3f5;
    0x00007068 ldr r1, [pc, 0x3c]                            |     
    0x0000706a ldr r0, [pc, 0x40]                            |     
    0x0000706c add r3, pc                                    |     r3 = 0xe116;
    0x0000706e add r1, pc                                    |     r1 = 0xe11a;
    0x00007070 add r0, pc                                    |     r0 = 0xe122;
    0x00007072 blx 0x246c                                    |     fcn_0000246c ();
                                                             | label_34:
    0x00007076 blx 0x2108                                    |     fcn_00002108 ();
    0x0000707a nop                                           |     
    0x0000707c strh r6, [r1, r1]                             |     *((r1 + r1)) = r6;
    0x0000707e movs r1, r0                                   |     r1 = r0;
    0x00007080 lsls r4, r4, 6                                |     r4 <<= 6;
    0x00007082 movs r0, r0                                   |     
    0x00007084 add r6, r2                                    |     r6 += r2;
    0x00007086 movs r0, r0                                   |     
    0x00007088 str r2, [r0, r4]                              |     *((r0 + r4)) = r2;
    0x0000708a movs r1, r0                                   |     r1 = r0;
    0x0000708c add ip, sb                                    |     
    0x0000708e movs r0, r0                                   |     
    0x00007090 add sl, r7                                    |     sl += r7;
    0x00007092 movs r0, r0                                   |     
    0x00007094 muls r0, r5, r0                               |     r0 = r5 * r0;
    0x00007096 movs r0, r0                                   |     
    0x00007098 lsrs r6, r0                                   |     r6 >>= r0;
    0x0000709a movs r0, r0                                   |     
    0x0000709c orrs r0, r5                                   |     r0 |= r5;
    0x0000709e movs r0, r0                                   |     
    0x000070a0 cmn r2, r1                                    |     
    0x000070a2 movs r0, r0                                   |     
    0x000070a4 adcs r4, r5                                   |     __asm ("adcs r4, r5");
    0x000070a6 movs r0, r0                                   |     
    0x000070a8 subs r7, 0x86                                 |     r7 -= 0x86;
    0x000070aa movs r0, r0                                   |     
    0x000070ac ands r0, r2                                   |     r0 &= r2;
    0x000070ae movs r0, r0                                   |     
                                                             | }

[*] Function mmap used 45 times libkmod.so.2.3.7