[*] Binary protection state of kmod

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


[*] Function system tear down of kmod

    ; assembly                                                       | /* r2dec pseudo code output */
                                                                     | /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/bin/kmod @ 0x29ec */
                                                                     | #include <stdint.h>
                                                                     |  
    ; (fcn) fcn.000029ec ()                                          | void fcn_000029ec (int16_t arg1) {
                                                                     |     int16_t var_0h;
                                                                     |     int32_t var_0h_2;
                                                                     |     int16_t var_8h;
                                                                     |     int16_t var_ch;
                                                                     |     int32_t var_10h;
                                                                     |     int32_t var_10h_2;
                                                                     |     int16_t var_18h;
                                                                     |     int16_t var_1ch;
                                                                     |     int16_t var_20h;
                                                                     |     int16_t var_24h;
                                                                     |     r0 = arg1;
    0x000029ec ldr r1, [pc, 0x3e4]                                   |     
    0x000029ee movs r3, 0                                            |     r3 = 0;
    0x000029f0 ldr r2, [pc, 0x3e4]                                   |     r2 = *(0x2dd8);
    0x000029f2 push.w {r4, r5, r6, r7, r8, sb, sl, fp, lr}           |     
    0x000029f6 sub sp, 0x2c                                          |     
    0x000029f8 add r1, pc                                            |     r1 = 0x57d0;
    0x000029fa mov r7, r0                                            |     r7 = r0;
    0x000029fc ldr r2, [r1, r2]                                      |     
    0x000029fe ldr r2, [r2]                                          |     r2 = *(0x57d0);
    0x00002a00 str r2, [sp, 0x24]                                    |     var_24h = r2;
    0x00002a02 mov.w r2, 0                                           |     r2 = 0;
    0x00002a06 strd r3, r3, [sp, 0x18]                               |     __asm ("strd r3, r3, [var_18h]");
    0x00002a0a bl 0xcfbc                                             |     r0 = fcn_0000cfbc (r0);
    0x00002a0e mov r4, r0                                            |     r4 = r0;
    0x00002a10 mov r8, r0                                            |     r8 = r0;
    0x00002a12 cmp r0, 0                                             |     
                                                                     |     if (r0 == 0) {
    0x00002a14 beq.w 0x2c10                                          |         goto label_10;
                                                                     |     }
    0x00002a16 strh r4, [r7, 6]                                      |     *((r7 + 6)) = r4;
                                                                     | label_7:
    0x00002a18 ldr r2, [pc, 0x3c0]                                   |     
    0x00002a1a add r2, pc                                            |     r2 = 0x57fa;
    0x00002a1c ldr r5, [r2]                                          |     r5 = *(0x57fa);
    0x00002a1e cmp r5, 0                                             |     
                                                                     |     if (r5 == 0) {
    0x00002a20 beq.w 0x2c5c                                          |         goto label_11;
                                                                     |     }
                                                                     | label_4:
    0x00002a24 ldr r1, [pc, 0x3b8]                                   |     
    0x00002a26 mov r0, r5                                            |     r0 = r5;
    0x00002a28 add r1, pc                                            |     r1 = 0x580c;
    0x00002a2a blx 0x1924                                            |     r0 = fcn_00001924 ();
    0x00002a2e mov r6, r0                                            |     r6 = r0;
    0x00002a30 cmp r0, 0                                             |     
                                                                     |     if (r0 == 0) {
    0x00002a32 beq.w 0x2c76                                          |         goto label_12;
                                                                     |     }
                                                                     | label_8:
    0x00002a36 add r1, sp, 0x18                                      |     r1 += var_18h;
    0x00002a38 mov r0, r7                                            |     r0 = r7;
    0x00002a3a bl 0xdfec                                             |     r0 = fcn_0000dfec (r0, r1);
    0x00002a3e subs r6, r0, 0                                        |     r6 = r0 - 0;
                                                                     |     if (r6 < r0) {
    0x00002a40 blt.w 0x2be4                                          |         goto label_13;
                                                                     |     }
    0x00002a44 ldr r3, [pc, 0x39c]                                   |     
    0x00002a46 ldr.w r8, [sp, 0x18]                                  |     r8 = var_18h;
    0x00002a4a add r3, pc                                            |     r3 = 0x5832;
    0x00002a4c ldr r0, [r3]                                          |     r0 = *(0x5832);
    0x00002a4e mov r4, r8                                            |     r4 = r8;
    0x00002a50 cmp r0, 0                                             |     
                                                                     |     if (r0 == 0) {
    0x00002a52 beq.w 0x2c30                                          |         goto label_14;
                                                                     |     }
    0x00002a56 ldr.w sb, [pc, 0x390]                                 |     
    0x00002a5a add sb, pc                                            |     sb = 0x5848;
    0x00002a5c mov r1, sb                                            |     r1 = sb;
    0x00002a5e blx 0x1924                                            |     r0 = fcn_00001924 ();
    0x00002a62 mov r7, r0                                            |     r7 = r0;
    0x00002a64 cmp r0, 0                                             |     
                                                                     |     if (r0 == 0) {
    0x00002a66 beq.w 0x2cb8                                          |         goto label_15;
                                                                     |     }
    0x00002a6a cmp r4, 0                                             |     
                                                                     |     if (r4 == 0) {
    0x00002a6c beq.w 0x2bc0                                          |         goto label_6;
                                                                     |     }
                                                                     | label_5:
    0x00002a70 ldr r7, [pc, 0x378]                                   |     
    0x00002a72 ldr.w r8, [pc, 0x37c]                                 |     
    0x00002a76 ldr.w sb, [pc, 0x37c]                                 |     
    0x00002a7a add r7, pc                                            |     r7 = 0x586a;
    0x00002a7c add r8, pc                                            |     r8 = 0x5872;
    0x00002a7e add sb, pc                                            |     sb = 0x5878;
    0x00002a80 b 0x2a9c                                              |     
                                                                     |     while (r3 != 0) {
    0x00002a82 mov r1, r5                                            |         r1 = r5;
    0x00002a84 mov r0, r3                                            |         r0 = r3;
    0x00002a86 blx 0x1924                                            |         r0 = fcn_00001924 ();
    0x00002a8a cmp r0, 0                                             |         
                                                                     |         if (r0 == 0) {
    0x00002a8c beq 0x2b88                                            |             goto label_16;
                                                                     |         }
                                                                     | label_2:
    0x00002a8e mov r1, r4                                            |         r1 = r4;
    0x00002a90 ldr r0, [sp, 0x18]                                    |         r0 = var_18h;
    0x00002a92 bl 0xa43c                                             |         r0 = fcn_0000a43c (r0, r1);
    0x00002a96 mov r4, r0                                            |         r4 = r0;
    0x00002a98 cmp r0, 0                                             |         
                                                                     |         if (r0 == 0) {
    0x00002a9a beq 0x2b08                                            |             goto label_17;
                                                                     |         }
                                                                     | label_0:
    0x00002a9c mov r0, r4                                            |         r0 = r4;
    0x00002a9e bl 0xdfc0                                             |         r0 = fcn_0000dfc0 (r0);
    0x00002aa2 mov r5, r0                                            |         r5 = r0;
    0x00002aa4 mov r0, r4                                            |         r0 = r4;
    0x00002aa6 bl 0xdfc8                                             |         fcn_0000dfc8 (r0);
    0x00002aaa ldr r3, [r7]                                          |         r3 = *(r7);
    0x00002aac mov sl, r0                                            |         sl = r0;
    0x00002aae cmp r3, 0                                             |         
    0x00002ab0 bne 0x2a82                                            |         
                                                                     |     }
    0x00002ab2 mov r1, r8                                            |     r1 = r8;
    0x00002ab4 mov r0, r5                                            |     r0 = r5;
    0x00002ab6 blx 0x1924                                            |     r0 = fcn_00001924 ();
    0x00002aba cmp r0, 0                                             |     
                                                                     |     if (r0 == 0) {
    0x00002abc beq 0x2b9c                                            |         goto label_18;
                                                                     |     }
    0x00002abe mov r1, sb                                            |     r1 = sb;
    0x00002ac0 mov r0, r5                                            |     r0 = r5;
    0x00002ac2 blx 0x1924                                            |     r0 = fcn_00001924 ();
    0x00002ac6 cmp r0, 0                                             |     
                                                                     |     if (r0 == 0) {
    0x00002ac8 beq 0x2b9c                                            |         goto label_18;
                                                                     |     }
    0x00002aca ldr r3, [pc, 0x32c]                                   |     
    0x00002acc add r3, pc                                            |     r3 = 0x58ca;
    0x00002ace ldrb.w fp, [r3]                                       |     fp = *(r3);
    0x00002ad2 cmp.w fp, 0                                           |     
                                                                     |     if (fp == 0) {
    0x00002ad6 beq.w 0x2ca4                                          |         goto label_19;
                                                                     |     }
    0x00002ada mov r0, r5                                            |     r0 = r5;
    0x00002adc blx 0x1bb0                                            |     fcn_00001bb0 ();
    0x00002ae0 ldr r1, [pc, 0x318]                                   |     
    0x00002ae2 rsb.w r3, r0, 0xf                                     |     r3 = 0xf - r0;
    0x00002ae6 mov r2, r5                                            |     r2 = r5;
    0x00002ae8 movs r0, 1                                            |     r0 = 1;
    0x00002aea strd sl, fp, [sp, 4]                                  |     __asm ("strd sl, fp, [var_8h]");
    0x00002aee add r1, pc                                            |     r1 = 0x58ee;
    0x00002af0 str r1, [sp]                                          |     *(sp) = r1;
    0x00002af2 ldr r1, [pc, 0x30c]                                   |     
    0x00002af4 add r1, pc                                            |     r1 = 0x58fa;
    0x00002af6 blx 0x1c54                                            |     fcn_00001c54 ();
    0x00002afa mov r1, r4                                            |     r1 = r4;
    0x00002afc ldr r0, [sp, 0x18]                                    |     r0 = var_18h;
    0x00002afe bl 0xa43c                                             |     r0 = fcn_0000a43c (r0, r1);
    0x00002b02 mov r4, r0                                            |     r4 = r0;
    0x00002b04 cmp r0, 0                                             |     
                                                                     |     if (r0 != 0) {
    0x00002b06 bne 0x2a9c                                            |         goto label_0;
                                                                     |     }
                                                                     | label_17:
    0x00002b08 ldr r3, [pc, 0x2f8]                                   |     
    0x00002b0a ldr r5, [sp, 0x1c]                                    |     r5 = var_1ch;
    0x00002b0c add r3, pc                                            |     
    0x00002b0e ldr r3, [r3]                                          |     r3 = *(0x5914);
    0x00002b10 mov r4, r5                                            |     r4 = r5;
    0x00002b12 cmp r3, 0                                             |     
                                                                     |     if (r3 != 0) {
    0x00002b14 bne 0x2bae                                            |         goto label_20;
                                                                     |     }
    0x00002b16 cmp r5, 0                                             |     
                                                                     |     if (r5 == 0) {
    0x00002b18 beq.w 0x2dc8                                          |         goto label_21;
                                                                     |     }
    0x00002b1c ldr r7, [pc, 0x2e8]                                   |     
    0x00002b1e ldr.w sb, [pc, 0x2ec]                                 |     
    0x00002b22 ldr.w r8, [pc, 0x2ec]                                 |     
    0x00002b26 add r7, pc                                            |     r7 = 0x5932;
    0x00002b28 add sb, pc                                            |     sb = 0x593a;
    0x00002b2a add r8, pc                                            |     r8 = 0x5940;
    0x00002b2c b 0x2b54                                              |     
                                                                     |     while (r1 != 0) {
    0x00002b2e strd r1, ip, [sp, 0x10]                               |         __asm ("strd r1, ip, [var_10h]");
    0x00002b32 ldr r1, [r4, 0x18]                                    |         r1 = *((r4 + 0x18));
    0x00002b34 strd lr, r2, [sp, 4]                                  |         __asm ("strd lr, r2, [var_8h]");
    0x00002b38 ldr r2, [pc, 0x2d8]                                   |         
    0x00002b3a str r1, [sp, 0xc]                                     |         var_ch = r1;
    0x00002b3c ldr r1, [pc, 0x2d8]                                   |         
    0x00002b3e str r0, [sp]                                          |         *(sp) = r0;
    0x00002b40 add r2, pc                                            |         r2 = 0x5958;
    0x00002b42 movs r0, 1                                            |         r0 = 1;
    0x00002b44 add r1, pc                                            |         r1 = 0x5960;
    0x00002b46 blx 0x1c54                                            |         fcn_00001c54 ();
                                                                     | label_1:
    0x00002b4a mov r0, r4                                            |         r0 = r4;
    0x00002b4c blx 0x19a0                                            |         fcn_000019a0 ();
    0x00002b50 cmp r5, 0                                             |         
                                                                     |         if (r5 == 0) {
    0x00002b52 beq 0x2bbe                                            |             goto label_22;
                                                                     |         }
    0x00002b54 mov r4, r5                                            |         r4 = r5;
    0x00002b56 ldr r5, [r5]                                          |         r5 = *(r5);
    0x00002b58 ldrd r2, r1, [r4, 8]                                  |         __asm ("ldrd r2, r1, [r4, 8]");
    0x00002b5c ldr r3, [r4, 0x10]                                    |         r3 = *((r4 + 0x10));
    0x00002b5e ldr r0, [r4, 4]                                       |         r0 = *((r4 + 4));
    0x00002b60 ldrb.w ip, [r7]                                       |         ip = *(r7);
    0x00002b64 str r5, [sp, 0x1c]                                    |         var_1ch = r5;
    0x00002b66 cmp r2, 0                                             |         
                                                                     |         if (r2 == 0) {
    0x00002b68 beq.w 0x2c8a                                          |             goto label_23;
                                                                     |         }
    0x00002b6c ldr.w lr, [r4, 0x14]                                  |         
    0x00002b70 cmp r1, 0                                             |         
    0x00002b72 bne 0x2b2e                                            |         
                                                                     |     }
    0x00002b74 strd r2, ip, [sp, 8]                                  |     __asm ("strd r2, ip, [var_ch]");
    0x00002b78 mov r1, r8                                            |     r1 = r8;
    0x00002b7a strd r0, lr, [sp]                                     |     __asm ("strd r0, lr, [sp]");
    0x00002b7e mov r2, sb                                            |     r2 = sb;
    0x00002b80 movs r0, 1                                            |     r0 = 1;
    0x00002b82 blx 0x1c54                                            |     fcn_00001c54 ();
    0x00002b86 b 0x2b4a                                              |     goto label_1;
                                                                     | label_16:
    0x00002b88 ldr r3, [pc, 0x290]                                   |     
    0x00002b8a mov r2, sl                                            |     r2 = sl;
    0x00002b8c ldr r1, [pc, 0x290]                                   |     
    0x00002b8e movs r0, 1                                            |     r0 = 1;
    0x00002b90 add r3, pc                                            |     r3 = 0x59b0;
    0x00002b92 ldrb r3, [r3]                                         |     r3 = *(r3);
    0x00002b94 add r1, pc                                            |     r1 = 0x59b8;
    0x00002b96 blx 0x1c54                                            |     fcn_00001c54 ();
    0x00002b9a b 0x2a8e                                              |     goto label_2;
                                                                     | label_18:
    0x00002b9c mov r1, sl                                            |     r1 = sl;
    0x00002b9e mov r0, r5                                            |     r0 = r5;
    0x00002ba0 add r2, sp, 0x1c                                      |     r2 += var_1ch;
    0x00002ba2 bl 0x2910                                             |     r0 = fcn_00002910 (r0, r1, r2);
    0x00002ba6 subs r6, r0, 0                                        |     r6 = r0 - 0;
                                                                     |     if (r6 >= r0) {
    0x00002ba8 bge.w 0x2a8e                                          |         goto label_2;
                                                                     |     }
    0x00002bac ldr r4, [sp, 0x1c]                                    |     r4 = var_1ch;
                                                                     |     if (r4 == 0) {
                                                                     | label_20:
    0x00002bae cbz r4, 0x2bbe                                        |         goto label_22;
                                                                     |     }
                                                                     |     do {
    0x00002bb0 mov r0, r4                                            |         r0 = r4;
    0x00002bb2 ldr r4, [r4]                                          |         r4 = *(r4);
    0x00002bb4 str r4, [sp, 0x1c]                                    |         var_1ch = r4;
    0x00002bb6 blx 0x19a0                                            |         fcn_000019a0 ();
    0x00002bba cmp r4, 0                                             |         
    0x00002bbc bne 0x2bb0                                            |         
                                                                     |     } while (r4 != 0);
                                                                     | label_22:
    0x00002bbe ldr r4, [sp, 0x18]                                    |     r4 = var_18h;
                                                                     | label_6:
    0x00002bc0 mov r0, r4                                            |     r0 = r4;
    0x00002bc2 bl 0xdfd0                                             |     fcn_0000dfd0 (r0);
                                                                     |     do {
                                                                     | label_3:
    0x00002bc6 ldr r2, [pc, 0x25c]                                   |         
    0x00002bc8 ldr r3, [pc, 0x20c]                                   |         r3 = *(0x2dd8);
    0x00002bca add r2, pc                                            |         r2 = 0x59f4;
    0x00002bcc ldr r3, [r2, r3]                                      |         r3 = *(0x59f4);
    0x00002bce ldr r2, [r3]                                          |         r2 = *(0x59f4);
    0x00002bd0 ldr r3, [sp, 0x24]                                    |         r3 = var_24h;
    0x00002bd2 eors r2, r3                                           |         r2 ^= r3;
    0x00002bd4 mov.w r3, 0                                           |         r3 = 0;
                                                                     |         if (r2 != r3) {
    0x00002bd8 bne.w 0x2dd0                                          |             goto label_24;
                                                                     |         }
    0x00002bdc mov r0, r6                                            |         r0 = r6;
    0x00002bde add sp, 0x2c                                          |         
    0x00002be0 pop.w {r4, r5, r6, r7, r8, sb, sl, fp, pc}            |         
                                                                     | label_13:
    0x00002be4 cmp r4, 0                                             |         
    0x00002be6 it eq                                                 |         
                                                                     |         if (r4 == 0) {
    0x00002be8 cmneq r6, 2                                           |             __asm ("cmneq r6, 2");
                                                                     |         }
    0x00002bec it eq                                                 |         
                                                                     |         if (r4 != 0) {
    0x00002bee moveq r6, 0                                           |             r6 = 0;
                                                                     |         }
    0x00002bf0 beq 0x2bc6                                            |         
                                                                     |     } while (r4 == 0);
    0x00002bf2 mov r0, r7                                            |     r0 = r7;
    0x00002bf4 bl 0xcfb4                                             |     r0 = fcn_0000cfb4 (r0);
    0x00002bf8 mov r4, r0                                            |     r4 = r0;
    0x00002bfa rsbs r0, r6, 0                                        |     r0 = r6 - ;
    0x00002bfc blx 0x1b18                                            |     system (r0)
    0x00002c00 ldr r1, [pc, 0x224]                                   |     
    0x00002c02 mov r3, r0                                            |     r3 = r0;
    0x00002c04 mov r2, r4                                            |     r2 = r4;
    0x00002c06 movs r0, 3                                            |     r0 = 3;
    0x00002c08 add r1, pc                                            |     r1 = 0x5a34;
    0x00002c0a bl 0x85e4                                             |     fcn_000085e4 (r0);
    0x00002c0e b 0x2bc6                                              |     goto label_3;
                                                                     | label_10:
    0x00002c10 ldr r3, [pc, 0x218]                                   |     
    0x00002c12 add r3, pc                                            |     r3 = 0x5a42;
    0x00002c14 ldr r5, [r3]                                          |     r5 = *(0x5a42);
    0x00002c16 cmp r5, 0                                             |     
                                                                     |     if (r5 == 0) {
    0x00002c18 beq.w 0x2d88                                          |         goto label_25;
                                                                     |     }
    0x00002c1c ldr r1, [pc, 0x210]                                   |     
    0x00002c1e mov r0, r5                                            |     r0 = r5;
    0x00002c20 add r1, pc                                            |     r1 = 0x5a54;
    0x00002c22 blx 0x1924                                            |     r0 = fcn_00001924 ();
                                                                     |     if (r0 == 0) {
    0x00002c26 cbz r0, 0x2c3c                                        |         goto label_26;
                                                                     |     }
    0x00002c28 ldr.w r8, [pc, 0x208]                                 |     
    0x00002c2c add r8, pc                                            |     r8 = 0x5a64;
    0x00002c2e b 0x2a24                                              |     goto label_4;
                                                                     | label_14:
    0x00002c30 cmp.w r8, 0                                           |     
                                                                     |     if (r8 != 0) {
    0x00002c34 bne.w 0x2a70                                          |         goto label_5;
                                                                     |     }
    0x00002c38 mov r4, r8                                            |     r4 = r8;
    0x00002c3a b 0x2bc0                                              |     goto label_6;
                                                                     | label_26:
    0x00002c3c mov r0, r7                                            |     r0 = r7;
    0x00002c3e ldr.w r8, [pc, 0x1f8]                                 |     
    0x00002c42 bl 0xcfb4                                             |     fcn_0000cfb4 (r0);
    0x00002c46 ldr r3, [pc, 0x1f4]                                   |     
    0x00002c48 mov r2, r0                                            |     r2 = r0;
    0x00002c4a ldr r1, [pc, 0x1f4]                                   |     
    0x00002c4c movs r0, 1                                            |     r0 = 1;
    0x00002c4e add r8, pc                                            |     r8 = 0x5a8c;
    0x00002c50 add r3, pc                                            |     r3 = 0x5a92;
    0x00002c52 ldrb r3, [r3]                                         |     r3 = *(r3);
    0x00002c54 add r1, pc                                            |     r1 = 0x5a9a;
    0x00002c56 blx 0x1c54                                            |     fcn_00001c54 ();
    0x00002c5a b 0x2a18                                              |     goto label_7;
                                                                     | label_11:
    0x00002c5c ldr r1, [pc, 0x1e4]                                   |     
    0x00002c5e mov r3, r8                                            |     r3 = r8;
    0x00002c60 ldr r2, [pc, 0x1e4]                                   |     
    0x00002c62 movs r0, 1                                            |     r0 = 1;
    0x00002c64 add r1, pc                                            |     r1 = 0x5aac;
    0x00002c66 ldrb r1, [r1]                                         |     r1 = *(r1);
    0x00002c68 add r2, pc                                            |     r2 = 0x5ab4;
    0x00002c6a str r1, [sp]                                          |     *(sp) = r1;
    0x00002c6c ldr r1, [pc, 0x1dc]                                   |     
    0x00002c6e add r1, pc                                            |     r1 = 0x5abe;
    0x00002c70 blx 0x1c54                                            |     fcn_00001c54 ();
    0x00002c74 b 0x2a36                                              |     goto label_8;
                                                                     | label_12:
    0x00002c76 ldr r3, [pc, 0x1d8]                                   |     
    0x00002c78 mov r2, r8                                            |     r2 = r8;
    0x00002c7a ldr r1, [pc, 0x1d8]                                   |     
    0x00002c7c movs r0, 1                                            |     r0 = 1;
    0x00002c7e add r3, pc                                            |     r3 = 0x5ad4;
    0x00002c80 ldrb r3, [r3]                                         |     r3 = *(r3);
    0x00002c82 add r1, pc                                            |     r1 = 0x5adc;
    0x00002c84 blx 0x1c54                                            |     fcn_00001c54 ();
    0x00002c88 b 0x2bc6                                              |     goto label_3;
                                                                     | label_23:
    0x00002c8a strd r1, ip, [sp, 8]                                  |     __asm ("strd r1, ip, [var_ch]");
    0x00002c8e ldr r2, [r4, 0x18]                                    |     r2 = *((r4 + 0x18));
    0x00002c90 ldr r1, [pc, 0x1c4]                                   |     
    0x00002c92 strd r0, r2, [sp]                                     |     __asm ("strd r0, r2, [sp]");
    0x00002c96 movs r0, 1                                            |     r0 = 1;
    0x00002c98 ldr r2, [pc, 0x1c0]                                   |     
    0x00002c9a add r1, pc                                            |     r1 = 0x5af6;
    0x00002c9c add r2, pc                                            |     r2 = 0x5afc;
    0x00002c9e blx 0x1c54                                            |     fcn_00001c54 ();
    0x00002ca2 b 0x2b4a                                              |     goto label_1;
                                                                     | label_19:
    0x00002ca4 ldr r1, [pc, 0x1b8]                                   |     
    0x00002ca6 mov r3, sl                                            |     r3 = sl;
    0x00002ca8 mov r2, r5                                            |     r2 = r5;
    0x00002caa str.w fp, [sp]                                        |     __asm ("str.w fp, [sp]");
    0x00002cae movs r0, 1                                            |     r0 = 1;
    0x00002cb0 add r1, pc                                            |     r1 = 0x5b14;
    0x00002cb2 blx 0x1c54                                            |     fcn_00001c54 ();
    0x00002cb6 b 0x2a8e                                              |     goto label_2;
                                                                     | label_15:
    0x00002cb8 str r0, [sp, 0x20]                                    |     var_20h = r0;
    0x00002cba cmp.w r8, 0                                           |     
                                                                     |     if (r8 == 0) {
    0x00002cbe beq.w 0x2dc4                                          |         goto label_27;
                                                                     |     }
    0x00002cc2 ldr.w fp, [pc, 0x1a0]                                 |     
    0x00002cc6 add.w sl, sp, 0x20                                    |     sl += var_20h;
    0x00002cca add fp, pc                                            |     fp = 0x5b34;
                                                                     |     do {
    0x00002ccc mov r0, r4                                            |         r0 = r4;
    0x00002cce bl 0xdfc0                                             |         r0 = fcn_0000dfc0 (r0);
    0x00002cd2 mov r5, r0                                            |         r5 = r0;
    0x00002cd4 mov r0, r4                                            |         r0 = r4;
    0x00002cd6 bl 0xdfc8                                             |         fcn_0000dfc8 (r0);
    0x00002cda mov r1, sb                                            |         r1 = sb;
    0x00002cdc mov r6, r0                                            |         r6 = r0;
    0x00002cde mov r0, r5                                            |         r0 = r5;
    0x00002ce0 blx 0x1924                                            |         r0 = fcn_00001924 ();
                                                                     |         if (r0 != 0) {
    0x00002ce4 cbz r0, 0x2cf0                                        |             
    0x00002ce6 mov r1, fp                                            |             r1 = fp;
    0x00002ce8 mov r0, r5                                            |             r0 = r5;
    0x00002cea blx 0x1924                                            |             r0 = fcn_00001924 ();
                                                                     |             if (r0 != 0) {
    0x00002cee cbnz r0, 0x2cfe                                       |                 goto label_28;
                                                                     |             }
                                                                     |         }
    0x00002cf0 mov r1, r6                                            |         r1 = r6;
    0x00002cf2 mov r0, r5                                            |         r0 = r5;
    0x00002cf4 mov r2, sl                                            |         r2 = sl;
    0x00002cf6 bl 0x2910                                             |         r0 = fcn_00002910 (r0, r1, r2);
    0x00002cfa subs r7, r0, 0                                        |         r7 = r0 - 0;
                                                                     |         if (r7 < r0) {
    0x00002cfc blt 0x2d70                                            |             goto label_29;
                                                                     |         }
                                                                     | label_28:
    0x00002cfe mov r1, r4                                            |         r1 = r4;
    0x00002d00 mov r0, r8                                            |         r0 = r8;
    0x00002d02 bl 0xa43c                                             |         r0 = fcn_0000a43c (r0, r1);
    0x00002d06 mov r4, r0                                            |         r4 = r0;
    0x00002d08 cmp r0, 0                                             |         
    0x00002d0a bne 0x2ccc                                            |         
                                                                     |     } while (r0 != 0);
    0x00002d0c ldr r5, [sp, 0x20]                                    |     r5 = var_20h;
    0x00002d0e cmp r5, 0                                             |     
                                                                     |     if (r5 == 0) {
    0x00002d10 beq 0x2dc2                                            |         goto label_30;
                                                                     |     }
    0x00002d12 ldr r6, [pc, 0x154]                                   |     
    0x00002d14 ldr.w sb, [pc, 0x154]                                 |     
    0x00002d16 str r1, [sp, 0x150]                                   |     *((sp + 0x150)) = r1;
    0x00002d18 ldr.w r8, [pc, 0x154]                                 |     
    0x00002d1c add r6, pc                                            |     r6 = 0x5b8a;
    0x00002d1e add sb, pc                                            |     sb = 0x5b8e;
    0x00002d20 add r8, pc                                            |     r8 = 0x5b94;
    0x00002d22 b 0x2d42                                              |     
                                                                     |     while (r0 != 0) {
    0x00002d24 strd r0, lr, [sp, 0xc]                                |         __asm ("strd r0, lr, [var_ch]");
    0x00002d28 ldr r0, [r4, 0x18]                                    |         r0 = *((r4 + 0x18));
    0x00002d2a strd ip, r1, [sp]                                     |         __asm ("strd ip, r1, [sp]");
    0x00002d2e mov r1, r8                                            |         r1 = r8;
    0x00002d30 str r0, [sp, 8]                                       |         var_8h = r0;
    0x00002d32 movs r0, 1                                            |         r0 = 1;
    0x00002d34 blx 0x1c54                                            |         fcn_00001c54 ();
                                                                     | label_9:
    0x00002d38 mov r0, r4                                            |         r0 = r4;
    0x00002d3a blx 0x19a0                                            |         fcn_000019a0 ();
    0x00002d3e cmp r5, 0                                             |         
                                                                     |         if (r5 == 0) {
    0x00002d40 beq 0x2dc2                                            |             goto label_30;
                                                                     |         }
    0x00002d42 mov r4, r5                                            |         r4 = r5;
    0x00002d44 ldr r5, [r5]                                          |         r5 = *(r5);
    0x00002d46 ldrd r1, r0, [r4, 8]                                  |         __asm ("ldrd r1, r0, [r4, 8]");
    0x00002d4a ldr r2, [r4, 0x10]                                    |         r2 = *((r4 + 0x10));
    0x00002d4c ldr r3, [r4, 4]                                       |         r3 = *((r4 + 4));
    0x00002d4e ldrb.w lr, [r6]                                       |         
    0x00002d52 str r5, [sp, 0x20]                                    |         var_20h = r5;
                                                                     |         if (r1 == 0) {
    0x00002d54 cbz r1, 0x2dae                                        |             goto label_31;
                                                                     |         }
    0x00002d56 ldr.w ip, [r4, 0x14]                                  |         ip = *((r4 + 0x14));
    0x00002d5a cmp r0, 0                                             |         
    0x00002d5c bne 0x2d24                                            |         
                                                                     |     }
    0x00002d5e strd r1, lr, [sp, 4]                                  |     __asm ("strd r1, lr, [var_8h]");
    0x00002d62 movs r0, 1                                            |     r0 = 1;
    0x00002d64 mov r1, sb                                            |     r1 = sb;
    0x00002d66 str.w ip, [sp]                                        |     __asm ("str.w ip, [sp]");
    0x00002d6a blx 0x1c54                                            |     fcn_00001c54 ();
    0x00002d6e b 0x2d38                                              |     goto label_9;
                                                                     | label_29:
    0x00002d70 ldr r4, [sp, 0x20]                                    |     r4 = var_20h;
                                                                     |     if (r4 == 0) {
    0x00002d72 cbz r4, 0x2d82                                        |         goto label_32;
                                                                     |     }
                                                                     |     do {
    0x00002d74 mov r0, r4                                            |         r0 = r4;
    0x00002d76 ldr r4, [r4]                                          |         r4 = *(r4);
    0x00002d78 str r4, [sp, 0x20]                                    |         var_20h = r4;
    0x00002d7a blx 0x19a0                                            |         fcn_000019a0 ();
    0x00002d7e cmp r4, 0                                             |         
    0x00002d80 bne 0x2d74                                            |         
                                                                     |     } while (r4 != 0);
                                                                     | label_32:
    0x00002d82 ldr r4, [sp, 0x18]                                    |     r4 = var_18h;
    0x00002d84 mov r6, r7                                            |     r6 = r7;
    0x00002d86 b 0x2bc0                                              |     goto label_6;
                                                                     | label_25:
    0x00002d88 mov r0, r7                                            |     r0 = r7;
    0x00002d8a ldr.w r8, [pc, 0xe8]                                  |     
    0x00002d8e bl 0xcfb4                                             |     fcn_0000cfb4 (r0);
    0x00002d92 ldr r1, [pc, 0xe4]                                    |     
    0x00002d94 mov r3, r0                                            |     r3 = r0;
    0x00002d96 ldr r2, [pc, 0xe4]                                    |     
    0x00002d98 movs r0, 1                                            |     r0 = 1;
    0x00002d9a add r8, pc                                            |     r8 = 0x5c14;
    0x00002d9c add r1, pc                                            |     r1 = 0x5c1a;
    0x00002d9e ldrb r1, [r1]                                         |     r1 = *(r1);
    0x00002da0 add r2, pc                                            |     r2 = 0x5c22;
    0x00002da2 str r1, [sp]                                          |     *(sp) = r1;
    0x00002da4 ldr r1, [pc, 0xd8]                                    |     
    0x00002da6 add r1, pc                                            |     r1 = 0x5c2a;
    0x00002da8 blx 0x1c54                                            |     fcn_00001c54 ();
    0x00002dac b 0x2a18                                              |     goto label_7;
                                                                     | label_31:
    0x00002dae strd r0, lr, [sp, 4]                                  |     __asm ("strd r0, lr, [var_8h]");
    0x00002db2 movs r0, 1                                            |     r0 = 1;
    0x00002db4 ldr r1, [r4, 0x18]                                    |     r1 = *((r4 + 0x18));
    0x00002db6 str r1, [sp]                                          |     *(sp) = r1;
    0x00002db8 ldr r1, [pc, 0xc8]                                    |     
    0x00002dba add r1, pc                                            |     r1 = 0x5c42;
    0x00002dbc blx 0x1c54                                            |     fcn_00001c54 ();
    0x00002dc0 b 0x2d38                                              |     goto label_9;
                                                                     | label_30:
    0x00002dc2 ldr r4, [sp, 0x18]                                    |     r4 = var_18h;
                                                                     | label_27:
    0x00002dc4 mov r6, r7                                            |     r6 = r7;
    0x00002dc6 b 0x2bc0                                              |     goto label_6;
                                                                     | label_21:
    0x00002dc8 ldr.w r8, [sp, 0x18]                                  |     r8 = var_18h;
    0x00002dcc mov r4, r8                                            |     r4 = r8;
    0x00002dce b 0x2bc0                                              |     goto label_6;
                                                                     | label_24:
    0x00002dd0 blx 0x1a1c                                            |     stat64 ();
    0x00002dd4 adds r4, 0x20                                         |     r4 += 0x20;
    0x00002dd6 movs r2, r0                                           |     r2 = r0;
    0x00002dd8 lsls r4, r7, 6                                        |     r4 = r7 << 6;
    0x00002dda movs r0, r0                                           |     
    0x00002ddc adds r6, 0x5e                                         |     r6 += 0x5e;
    0x00002dde movs r2, r0                                           |     r2 = r0;
    0x00002de0 invalid                                               |     
                                                                     | }
    ; assembly                                               | /* r2dec pseudo code output */
                                                             | /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/bin/kmod @ 0x346c */
                                                             | #include <stdint.h>
                                                             |  
    ; (fcn) fcn.0000346c ()                                  | void fcn_0000346c (int16_t arg1, int16_t arg2, int16_t arg3) {
                                                             |     int16_t var_0h;
                                                             |     int32_t var_0h_2;
                                                             |     int16_t var_8h;
                                                             |     int16_t var_ch;
                                                             |     int16_t var_10h;
                                                             |     int16_t var_14h;
                                                             |     int16_t var_18h;
                                                             |     int16_t var_1ch;
                                                             |     r0 = arg1;
                                                             |     r1 = arg2;
                                                             |     r2 = arg3;
    0x0000346c svcmi 0xf0e92d                                |     __asm ("svcmi 0xf0e92d");
    0x00003470 mov r8, r2                                    |     r8 = r2;
    0x00003472 ldr r2, [pc, 0x28c]                           |     
    0x00003474 sub sp, 0x24                                  |     
    0x00003476 mov r5, r0                                    |     r5 = r0;
    0x00003478 mov r7, r1                                    |     r7 = r1;
    0x0000347a ldr r3, [pc, 0x288]                           |     r3 = *(0x3706);
    0x0000347c add r2, pc                                    |     r2 = 0x6b82;
    0x0000347e ldr r3, [r2, r3]                              |     
    0x00003480 add r2, sp, 0x18                              |     r2 += var_18h;
    0x00003482 ldr r3, [r3]                                  |     r3 = *(0x6b82);
    0x00003484 str r3, [sp, 0x1c]                            |     var_1ch = r3;
    0x00003486 mov.w r3, 0                                   |     r3 = 0;
    0x0000348a movs r3, 0                                    |     r3 = 0;
    0x0000348c str r3, [sp, 0x18]                            |     var_18h = r3;
    0x0000348e bl 0xcda8                                     |     fcn_0000cda8 (r0, r1, r2);
    0x00003492 ldr r4, [sp, 0x18]                            |     r4 = var_18h;
    0x00003494 clz r3, r4                                    |     r3 &= r4;
    0x00003498 lsrs r3, r3, 5                                |     r3 >>= 5;
    0x0000349a orrs.w r3, r3, r0, lsr 31                     |     r3 |= (r0 >> 31);
                                                             |     if (r3 != r3) {
    0x0000349e bne.w 0x36d2                                  |         goto label_11;
                                                             |     }
    0x000034a2 ldr r3, [pc, 0x264]                           |     
    0x000034a4 mov r6, r0                                    |     r6 = r0;
    0x000034a6 ldr r2, [pc, 0x264]                           |     
    0x000034a8 add r3, pc                                    |     r3 = 0x6bb6;
    0x000034aa ldr r7, [r3]                                  |     r7 = *(0x6bb6);
    0x000034ac add r2, pc                                    |     
    0x000034ae ldr r3, [pc, 0x260]                           |     
    0x000034b0 ldr r2, [r2]                                  |     r2 = *(0x6bbe);
    0x000034b2 add r3, pc                                    |     
    0x000034b4 ldr r3, [r3]                                  |     r3 = *(0x6bc8);
    0x000034b6 orrs r3, r2                                   |     r3 |= r2;
                                                             |     if (r3 == r2) {
    0x000034b8 beq 0x35b2                                    |         goto label_12;
                                                             |     }
    0x000034ba orrs r2, r7                                   |     r2 |= r7;
    0x000034bc ite eq                                        |     
                                                             |     if (r2 != r7) {
    0x000034be moveq r7, 2                                   |         r7 = 2;
                                                             |     }
                                                             |     if (r2 == r7) {
    0x000034c0 movne r7, 3                                   |         r7 = 3;
                                                             |     }
                                                             | label_1:
    0x000034c2 ldr r3, [pc, 0x250]                           |     
    0x000034c4 add r3, pc                                    |     
    0x000034c6 ldr r3, [r3]                                  |     r3 = *(0x6bde);
                                                             |     if (r3 != 0) {
    0x000034c8 cbz r3, 0x34ce                                |         
    0x000034ca orr r7, r7, 4                                 |         r7 |= 4;
                                                             |     }
    0x000034ce ldr r3, [pc, 0x248]                           |     
    0x000034d0 add r3, pc                                    |     
    0x000034d2 ldr r3, [r3]                                  |     r3 = *(0x6bee);
                                                             |     if (r3 != 0) {
    0x000034d4 cbz r3, 0x34da                                |         
    0x000034d6 orr r7, r7, 8                                 |         r7 |= 8;
                                                             |     }
    0x000034da ldr r3, [pc, 0x240]                           |     
    0x000034dc add r3, pc                                    |     
    0x000034de ldr r3, [r3]                                  |     r3 = *(0x6bfe);
                                                             |     if (r3 != 0) {
    0x000034e0 cbz r3, 0x34e6                                |         
    0x000034e2 orr r7, r7, 0x10                              |         r7 |= 0x10;
                                                             |     }
    0x000034e6 ldr r3, [pc, 0x238]                           |     
    0x000034e8 add r3, pc                                    |     
    0x000034ea ldr r3, [r3]                                  |     r3 = *(0x6c0e);
    0x000034ec cmp r3, 0                                     |     
                                                             |     if (r3 != 0) {
    0x000034ee bne 0x35aa                                    |         goto label_13;
                                                             |     }
    0x000034f0 ldr r2, [pc, 0x230]                           |     
    0x000034f2 add r2, pc                                    |     
    0x000034f4 ldr r2, [r2]                                  |     r2 = *(0x6c1a);
    0x000034f6 cmp r2, 4                                     |     
    0x000034f8 it le                                         |     
                                                             |     if (r2 > 4) {
    0x000034fa movle fp, r3                                  |         
                                                             |     }
                                                             |     if (r2 > 4) {
    0x000034fc ble 0x3504                                    |         
    0x000034fe ldr.w fp, [pc, 0x228]                         |         
    0x00003502 add fp, pc                                    |         fp = 0x6c30;
                                                             |     }
                                                             | label_0:
    0x00003504 ldr r3, [pc, 0x224]                           |     
    0x00003506 add r3, pc                                    |     
    0x00003508 ldr r3, [r3]                                  |     r3 = *(0x6c36);
    0x0000350a cmp r3, 0                                     |     
                                                             |     if (r3 != 0) {
    0x0000350c bne.w 0x36c8                                  |         goto label_14;
                                                             |     }
    0x00003510 orr r7, r7, 0x40000                           |     r7 |= 0x40000;
                                                             | label_8:
    0x00003514 ldr r3, [pc, 0x218]                           |     
    0x00003516 add r3, pc                                    |     
    0x00003518 ldr r3, [r3]                                  |     r3 = *(0x6c4a);
                                                             |     if (r3 != 0) {
    0x0000351a cbz r3, 0x3520                                |         
    0x0000351c orr r7, r7, 0x20                              |         r7 |= 0x20;
                                                             |     }
    0x00003520 ldr r3, [pc, 0x210]                           |     
    0x00003522 ldr.w sb, [pc, 0x214]                         |     sb = *(0x00003738);
    0x00003526 add r3, pc                                    |     r3 = 0x6c5e;
    0x00003528 str r3, [sp, 0xc]                             |     var_ch = r3;
    0x0000352a add sb, pc                                    |     sb += pc;
    0x0000352c ldr r3, [pc, 0x20c]                           |     
    0x0000352e add r3, pc                                    |     r3 = 0x6c6e;
    0x00003530 str r3, [sp, 0x14]                            |     var_14h = r3;
    0x00003532 ldr r3, [pc, 0x20c]                           |     
    0x00003534 add r3, pc                                    |     r3 = 0x6c7a;
    0x00003536 str r3, [sp, 0x10]                            |     var_10h = r3;
                                                             | label_7:
    0x00003538 mov r0, r4                                    |     r0 = r4;
    0x0000353a bl 0xcfa8                                     |     fcn_0000cfa8 (r0);
    0x0000353e ldr r3, [sp, 0xc]                             |     r3 = var_ch;
    0x00003540 mov r5, r0                                    |     r5 = r0;
    0x00003542 ldr r3, [r3]                                  |     r3 = *(r3);
    0x00003544 cmp r3, 0                                     |     
                                                             |     if (r3 == 0) {
    0x00003546 beq 0x35c0                                    |         goto label_5;
                                                             |     }
    0x00003548 bl 0xcfb4                                     |     r0 = fcn_0000cfb4 (r0);
    0x0000354c blx 0x1b00                                    |     malloc (r0);
    0x00003550 cmp r6, 0                                     |     
                                                             |     if (r6 < 0) {
    0x00003552 blt 0x35d6                                    |         goto label_15;
                                                             |     }
                                                             |     do {
                                                             | label_2:
    0x00003554 mov r0, r5                                    |         r0 = r5;
    0x00003556 bl 0xcd5c                                     |         fcn_0000cd5c (r0);
    0x0000355a mov r1, r4                                    |         r1 = r4;
    0x0000355c ldr r0, [sp, 0x18]                            |         r0 = var_18h;
    0x0000355e bl 0xa43c                                     |         r0 = fcn_0000a43c (r0, r1);
    0x00003562 mov r4, r0                                    |         r4 = r0;
    0x00003564 cmp r0, 0                                     |         
                                                             |         if (r0 == 0) {
    0x00003566 beq.w 0x36c4                                  |             goto label_16;
                                                             |         }
    0x0000356a bl 0xcfa8                                     |         fcn_0000cfa8 (r0);
    0x0000356e ldr.w r3, [sb]                                |         r3 = *(sb);
    0x00003572 mov r5, r0                                    |         r5 = r0;
                                                             |         if (r3 == 0) {
    0x00003574 cbz r3, 0x35c0                                |             goto label_5;
                                                             |         }
    0x00003576 bl 0xcfb4                                     |         r0 = fcn_0000cfb4 (r0);
    0x0000357a blx 0x1b00                                    |         malloc (r0);
    0x0000357e mov r0, r5                                    |         r0 = r5;
    0x00003580 bl 0xcd5c                                     |         fcn_0000cd5c (r0);
    0x00003584 mov r1, r4                                    |         r1 = r4;
    0x00003586 ldr r0, [sp, 0x18]                            |         r0 = var_18h;
    0x00003588 bl 0xa43c                                     |         r0 = fcn_0000a43c (r0, r1);
    0x0000358c mov r4, r0                                    |         r4 = r0;
    0x0000358e cmp r0, 0                                     |         
                                                             |         if (r0 == 0) {
    0x00003590 beq.w 0x36c4                                  |             goto label_16;
                                                             |         }
    0x00003594 bl 0xcfa8                                     |         fcn_0000cfa8 (r0);
    0x00003598 ldr.w r3, [sb]                                |         r3 = *(sb);
    0x0000359c mov r5, r0                                    |         r5 = r0;
                                                             |         if (r3 == 0) {
    0x0000359e cbz r3, 0x35c0                                |             goto label_5;
                                                             |         }
    0x000035a0 bl 0xcfb4                                     |         r0 = fcn_0000cfb4 (r0);
    0x000035a4 blx 0x1b00                                    |         malloc (r0);
    0x000035a8 b 0x3554                                      |         
                                                             |     } while (1);
                                                             | label_13:
    0x000035aa ldr.w fp, [pc, 0x198]                         |     
    0x000035ae add fp, pc                                    |     fp = 0x6cf8;
    0x000035b0 b 0x3504                                      |     goto label_0;
                                                             | label_12:
    0x000035b2 cmp r7, 0                                     |     
    0x000035b4 it ne                                         |     
                                                             |     if (r7 == 0) {
    0x000035b6 movne r7, 1                                   |         r7 = 1;
                                                             |     }
    0x000035b8 b 0x34c2                                      |     goto label_1;
                                                             | label_3:
    0x000035ba mov r8, sb                                    |     r8 = sb;
    0x000035bc mov sb, r5                                    |     sb = r5;
    0x000035be mov r5, r6                                    |     r5 = r6;
                                                             | label_5:
    0x000035c0 movs r3, 0                                    |     r3 = 0;
    0x000035c2 mov r2, r8                                    |     r2 = r8;
    0x000035c4 mov r1, r7                                    |     r1 = r7;
    0x000035c6 mov r0, r5                                    |     r0 = r5;
    0x000035c8 strd r3, fp, [sp]                             |     __asm ("strd r3, fp, [sp]");
    0x000035cc bl 0xd77c                                     |     r0 = fcn_0000d77c (r0, r1, r2, r3, r4, r5, r6);
    0x000035d0 mov r6, r0                                    |     r6 = r0;
    0x000035d2 cmp r6, 0                                     |     
                                                             |     if (r6 >= 0) {
    0x000035d4 bge 0x3554                                    |         goto label_2;
                                                             |     }
                                                             | label_15:
    0x000035d6 cmn.w r6, 0x11                                |     
                                                             |     if (r6 != 0x11) {
    0x000035da bne 0x3626                                    |         goto label_17;
                                                             |     }
    0x000035dc ldr.w sl, [sp, 0x14]                          |     sl = var_14h;
    0x000035e0 mov r3, sb                                    |     r3 = sb;
    0x000035e2 mov sb, r8                                    |     sb = r8;
    0x000035e4 mov r8, r6                                    |     r8 = r6;
    0x000035e6 mov r6, r5                                    |     r6 = r5;
    0x000035e8 mov r5, r3                                    |     r5 = r3;
                                                             | label_4:
    0x000035ea mov r0, r6                                    |     r0 = r6;
    0x000035ec bl 0xcfb4                                     |     fcn_0000cfb4 (r0);
    0x000035f0 mov r1, sl                                    |     r1 = sl;
    0x000035f2 mov r2, r0                                    |     r2 = r0;
    0x000035f4 movs r0, 3                                    |     r0 = 3;
    0x000035f6 bl 0x85e4                                     |     fcn_000085e4 (r0);
    0x000035fa mov r0, r6                                    |     r0 = r6;
    0x000035fc bl 0xcd5c                                     |     fcn_0000cd5c (r0);
    0x00003600 mov r1, r4                                    |     r1 = r4;
    0x00003602 ldr r0, [sp, 0x18]                            |     r0 = var_18h;
    0x00003604 bl 0xa43c                                     |     r0 = fcn_0000a43c (r0, r1);
    0x00003608 mov r4, r0                                    |     r4 = r0;
    0x0000360a cmp r0, 0                                     |     
                                                             |     if (r0 == 0) {
    0x0000360c beq 0x36ce                                    |         goto label_18;
                                                             |     }
    0x0000360e bl 0xcfa8                                     |     fcn_0000cfa8 (r0);
    0x00003612 ldr r3, [sp, 0x10]                            |     r3 = var_10h;
    0x00003614 mov r6, r0                                    |     r6 = r0;
    0x00003616 ldr r2, [r3]                                  |     r2 = *(r3);
    0x00003618 cmp r2, 0                                     |     
                                                             |     if (r2 == 0) {
    0x0000361a beq 0x35ba                                    |         goto label_3;
                                                             |     }
    0x0000361c bl 0xcfb4                                     |     r0 = fcn_0000cfb4 (r0);
    0x00003620 blx 0x1b00                                    |     malloc (r0);
    0x00003624 b 0x35ea                                      |     goto label_4;
                                                             | label_17:
    0x00003626 adds r3, r6, 2                                |     r3 = r6 + 2;
                                                             |     if (r3 != r6) {
    0x00003628 bne 0x3670                                    |         goto label_19;
                                                             |     }
    0x0000362a ldr.w sl, [pc, 0x11c]                         |     
    0x0000362e ldr r3, [pc, 0x11c]                           |     
    0x00003630 add sl, pc                                    |     sl = 0x6d7e;
    0x00003632 add r3, pc                                    |     r3 = 0x6d84;
    0x00003634 str r3, [sp, 8]                               |     var_8h = r3;
                                                             | label_6:
    0x00003636 mov r0, r5                                    |     r0 = r5;
    0x00003638 bl 0xcfb4                                     |     fcn_0000cfb4 (r0);
    0x0000363c mov r1, sl                                    |     r1 = sl;
    0x0000363e mov r2, r0                                    |     r2 = r0;
    0x00003640 movs r0, 3                                    |     r0 = 3;
    0x00003642 bl 0x85e4                                     |     fcn_000085e4 (r0);
    0x00003646 mov r0, r5                                    |     r0 = r5;
    0x00003648 bl 0xcd5c                                     |     fcn_0000cd5c (r0);
    0x0000364c mov r1, r4                                    |     r1 = r4;
    0x0000364e ldr r0, [sp, 0x18]                            |     r0 = var_18h;
    0x00003650 bl 0xa43c                                     |     r0 = fcn_0000a43c (r0, r1);
    0x00003654 mov r4, r0                                    |     r4 = r0;
                                                             |     if (r0 == 0) {
    0x00003656 cbz r0, 0x36a2                                |         goto label_9;
                                                             |     }
    0x00003658 bl 0xcfa8                                     |     fcn_0000cfa8 (r0);
    0x0000365c ldr r3, [sp, 8]                               |     r3 = var_8h;
    0x0000365e mov r5, r0                                    |     r5 = r0;
    0x00003660 ldr r3, [r3]                                  |     r3 = *(r3);
    0x00003662 cmp r3, 0                                     |     
                                                             |     if (r3 == 0) {
    0x00003664 beq 0x35c0                                    |         goto label_5;
                                                             |     }
    0x00003666 bl 0xcfb4                                     |     r0 = fcn_0000cfb4 (r0);
    0x0000366a blx 0x1b00                                    |     malloc (r0);
    0x0000366e b 0x3636                                      |     goto label_6;
                                                             | label_19:
    0x00003670 mov r0, r5                                    |     r0 = r5;
    0x00003672 bl 0xcfb4                                     |     r0 = fcn_0000cfb4 (r0);
    0x00003676 mov sl, r0                                    |     sl = r0;
    0x00003678 rsbs r0, r6, 0                                |     r0 = r6 - ;
    0x0000367a blx 0x1b18                                    |     system (r0)
    0x0000367e ldr r1, [pc, 0xd0]                            |     
    0x00003680 mov r3, r0                                    |     r3 = r0;
    0x00003682 mov r2, sl                                    |     r2 = sl;
    0x00003684 movs r0, 3                                    |     r0 = 3;
    0x00003686 add r1, pc                                    |     r1 = 0x6ddc;
    0x00003688 bl 0x85e4                                     |     fcn_000085e4 (r0);
    0x0000368c mov r0, r5                                    |     r0 = r5;
    0x0000368e bl 0xcd5c                                     |     fcn_0000cd5c (r0);
    0x00003692 mov r1, r4                                    |     r1 = r4;
    0x00003694 ldr r0, [sp, 0x18]                            |     r0 = var_18h;
    0x00003696 bl 0xa43c                                     |     r0 = fcn_0000a43c (r0, r1);
    0x0000369a mov r4, r0                                    |     r4 = r0;
    0x0000369c cmp r0, 0                                     |     
                                                             |     if (r0 != 0) {
    0x0000369e bne.w 0x3538                                  |         goto label_7;
                                                             |     }
                                                             |     do {
                                                             | label_9:
    0x000036a2 ldr r0, [sp, 0x18]                            |         r0 = var_18h;
    0x000036a4 bl 0xcb50                                     |         fcn_0000cb50 (r0);
                                                             | label_10:
    0x000036a8 ldr r2, [pc, 0xa8]                            |         
    0x000036aa ldr r3, [pc, 0x58]                            |         r3 = *(0x3706);
    0x000036ac add r2, pc                                    |         r2 = 0x6e04;
    0x000036ae ldr r3, [r2, r3]                              |         r3 = *(0x6e04);
    0x000036b0 ldr r2, [r3]                                  |         r2 = *(0x6e04);
    0x000036b2 ldr r3, [sp, 0x1c]                            |         r3 = var_1ch;
    0x000036b4 eors r2, r3                                   |         r2 ^= r3;
    0x000036b6 mov.w r3, 0                                   |         r3 = 0;
                                                             |         if (r2 != r3) {
    0x000036ba bne 0x36fa                                    |             goto label_20;
                                                             |         }
    0x000036bc mov r0, r6                                    |         r0 = r6;
    0x000036be add sp, 0x24                                  |         
    0x000036c0 pop.w {r4, r5, r6, r7, r8, sb, sl, fp, pc}    |         
                                                             | label_16:
    0x000036c4 movs r6, 0                                    |         r6 = 0;
    0x000036c6 b 0x36a2                                      |         
                                                             |     } while (1);
                                                             | label_14:
    0x000036c8 orr r7, r7, 0x60000                           |     r7 |= 0x60000;
    0x000036cc b 0x3514                                      |     goto label_8;
                                                             | label_18:
    0x000036ce mov r6, r8                                    |     r6 = r8;
    0x000036d0 b 0x36a2                                      |     goto label_9;
                                                             | label_11:
    0x000036d2 ldr r3, [pc, 0x84]                            |     
    0x000036d4 add r3, pc                                    |     r3 = 0x6e32;
    0x000036d6 ldr r4, [r3]                                  |     r4 = *(0x6e32);
                                                             |     if (r5 == 0) {
    0x000036d8 cbz r5, 0x36f4                                |         goto label_21;
                                                             |     }
    0x000036da mov r0, r5                                    |     r0 = r5;
    0x000036dc bl 0x9af8                                     |     r0 = fcn_00009af8 (r0);
    0x000036e0 mov r3, r0                                    |     r3 = r0;
                                                             |     do {
    0x000036e2 ldr r1, [pc, 0x78]                            |         
    0x000036e4 mov r2, r7                                    |         r2 = r7;
    0x000036e6 mov r0, r4                                    |         r0 = r4;
    0x000036e8 mvn r6, 1                                     |         r6 = ~1;
    0x000036ec add r1, pc                                    |         r1 = 0x6e4e;
    0x000036ee bl 0x85e4                                     |         fcn_000085e4 (r0);
    0x000036f2 b 0x36a8                                      |         goto label_10;
                                                             | label_21:
    0x000036f4 ldr r3, [pc, 0x68]                            |         
    0x000036f6 add r3, pc                                    |         r3 = 0x6e5a;
    0x000036f8 b 0x36e2                                      |         
                                                             |     } while (1);
                                                             | label_20:
    0x000036fa blx 0x1a1c                                    |     stat64 ();
    0x000036fe nop                                           |     
    0x00003700 cmp r1, 0x9c                                  |     
    0x00003702 movs r2, r0                                   |     r2 = r0;
    0x00003704 lsls r4, r7, 6                                |     r4 = r7 << 6;
    0x00003706 movs r0, r0                                   |     
    0x00003708 cmp r3, 0xf8                                  |     
    0x0000370a movs r2, r0                                   |     r2 = r0;
    0x0000370c cmp r3, 0xdc                                  |     
    0x0000370e movs r2, r0                                   |     r2 = r0;
    0x00003710 cmp r3, 0xea                                  |     
    0x00003712 movs r2, r0                                   |     r2 = r0;
    0x00003714 cmp r3, 0xc8                                  |     
    0x00003716 movs r2, r0                                   |     r2 = r0;
    0x00003718 cmp r3, 0xc0                                  |     
    0x0000371a movs r2, r0                                   |     r2 = r0;
    0x0000371c cmp r3, 0xa4                                  |     
    0x0000371e movs r2, r0                                   |     r2 = r0;
    0x00003720 cmp r3, 0x94                                  |     
    0x00003722 movs r2, r0                                   |     r2 = r0;
    0x00003724 cmp r3, 0x4a                                  |     
    0x00003726 movs r2, r0                                   |     r2 = r0;
    0x00003728 lsls r7, r3, 9                                |     r7 = r3 << 9;
    0x0000372a movs r0, r0                                   |     
    0x0000372c cmp r3, 0x9e                                  |     
    0x0000372e movs r2, r0                                   |     r2 = r0;
    0x00003730 cmp r3, 0x6e                                  |     
    0x00003732 movs r2, r0                                   |     r2 = r0;
    0x00003734 cmp r3, 0x6e                                  |     
    0x00003736 movs r2, r0                                   |     r2 = r0;
    0x00003738 cmp r3, 0x6a                                  |     
    0x0000373a movs r2, r0                                   |     r2 = r0;
    0x0000373c mcrr p0, 0, r0, r2, c0                        |     __asm ("mcrr p0, 0, r0, r2, c0");
    0x00003740 cmp r3, 0x60                                  |     
    0x00003742 movs r2, r0                                   |     r2 = r0;
    0x00003744 lsls r3, r6, 6                                |     r3 = r6 << 6;
    0x00003746 movs r0, r0                                   |     
    0x00003748 sbcs.w r0, r4, r0                             |     __asm ("sbcs.w r0, r4, r0");
    0x0000374c cmp r2, 0x62                                  |     
    0x0000374e movs r2, r0                                   |     r2 = r0;
    0x00003750 sbcs.w r0, r2, r0                             |     __asm ("sbcs.w r0, r2, r0");
    0x00003754 movs r7, 0x6c                                 |     r7 = 0x6c;
    0x00003756 movs r2, r0                                   |     r2 = r0;
    0x00003758 cmp r1, 0x64                                  |     
    0x0000375a movs r2, r0                                   |     r2 = r0;
    0x0000375c orrs.w r0, ip, r0                             |     r0 = ip | r0;
    0x00003760 orr.w r0, r6, r0                              |     r0 = r6 | r0;
    0x00003764 push {r4, r5, r6, lr}                         |     
    0x00003766 mov r4, r2                                    |     r4 = r2;
                                                             |     if (r1 == 0) {
    0x00003768 cbnz r1, 0x378a                               |         
    0x0000376a mov r5, r0                                    |         r5 = r0;
    0x0000376c bl 0xcfbc                                     |         r0 = fcn_0000cfbc (r0);
                                                             |         if (r0 == 0) {
    0x00003770 cbz r0, 0x37a0                                |             goto label_22;
                                                             |         }
    0x00003772 mov r0, r5                                    |         r0 = r5;
    0x00003774 bl 0xcfbc                                     |         fcn_0000cfbc (r0);
    0x00003778 ldr r1, [pc, 0x44]                            |         
    0x0000377a mov r2, r0                                    |         r2 = r0;
    0x0000377c mov r3, r4                                    |         r3 = r4;
    0x0000377e movs r0, 1                                    |         r0 = 1;
    0x00003780 pop.w {r4, r5, r6, lr}                        |         
    0x00003784 add r1, pc                                    |         r1 = 0x6f48;
    0x00003786 b.w 0x1c50                                    |         void (*0x1c50)() ();
                                                             |     }
    0x0000378a bl 0xd284                                     |     fcn_0000d284 (r0);
    0x0000378e ldr r1, [pc, 0x34]                            |     
    0x00003790 mov r2, r0                                    |     r2 = r0;
    0x00003792 mov r3, r4                                    |     r3 = r4;
    0x00003794 movs r0, 1                                    |     r0 = 1;
    0x00003796 pop.w {r4, r5, r6, lr}                        |     
    0x0000379a add r1, pc                                    |     r1 = 0x6f64;
    0x0000379c b.w 0x1c50                                    |     void (*0x1c50)() ();
                                                             | label_22:
    0x000037a0 mov r0, r5                                    |     r0 = r5;
    0x000037a2 bl 0xd74c                                     |     r0 = fcn_0000d74c (r0);
                                                             |     if (r0 != 0) {
    0x000037a6 cbz r0, 0x37aa                                |         
    0x000037a8 pop {r4, r5, r6, pc}                          |         
                                                             |     }
    0x000037aa mov r0, r5                                    |     r0 = r5;
    0x000037ac bl 0xcfb4                                     |     fcn_0000cfb4 (r0);
    0x000037b0 ldr r1, [pc, 0x14]                            |     
    0x000037b2 mov r2, r0                                    |     r2 = r0;
    0x000037b4 pop.w {r4, r5, r6, lr}                        |     
    0x000037b8 movs r0, 1                                    |     r0 = 1;
    0x000037ba add r1, pc                                    |     r1 = 0x6f86;
    0x000037bc b.w 0x1c50                                    |     return void (*0x1c50)() ();
                                                             | }
    ; assembly                                                   | /* r2dec pseudo code output */
                                                                 | /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/bin/kmod @ 0x37cc */
                                                                 | #include <stdint.h>
                                                                 |  
    ; (fcn) fcn.000037cc ()                                      | void fcn_000037cc (int16_t arg1, int16_t arg2) {
                                                                 |     int16_t var_4h;
                                                                 |     int16_t var_ch;
                                                                 |     int16_t var_10h;
                                                                 |     int16_t var_14h;
                                                                 |     r0 = arg1;
                                                                 |     r1 = arg2;
    0x000037cc ldr r2, [pc, 0x26c]                               |     
    0x000037ce ldr r3, [pc, 0x270]                               |     r3 = *(0x3a42);
    0x000037d0 push.w {r4, r5, r6, r7, r8, sb, sl, fp, lr}       |     
    0x000037d4 sub sp, 0x1c                                      |     
    0x000037d6 add r2, pc                                        |     r2 = 0x7216;
    0x000037d8 mov r5, r0                                        |     r5 = r0;
    0x000037da mov r6, r1                                        |     r6 = r1;
    0x000037dc ldr r3, [r2, r3]                                  |     
    0x000037de ldr r3, [r3]                                      |     r3 = *(0x7216);
    0x000037e0 str r3, [sp, 0x14]                                |     var_14h = r3;
    0x000037e2 mov.w r3, 0                                       |     r3 = 0;
    0x000037e6 bl 0xcfb4                                         |     fcn_0000cfb4 (r0);
    0x000037ea ldr r3, [pc, 0x258]                               |     
    0x000037ec movs r2, 0                                        |     r2 = 0;
    0x000037ee mov r7, r0                                        |     r7 = r0;
    0x000037f0 strd r2, r2, [sp, 0xc]                            |     __asm ("strd r2, r2, [var_10h]");
    0x000037f4 add r3, pc                                        |     
    0x000037f6 ldr r3, [r3]                                      |     r3 = *(0x723e);
    0x000037f8 cmp r3, 0                                         |     
                                                                 |     if (r3 == 0) {
    0x000037fa beq.w 0x393e                                      |         goto label_10;
                                                                 |     }
                                                                 | label_5:
    0x000037fe ldr r3, [pc, 0x248]                               |     
    0x00003800 add r3, pc                                        |     
    0x00003802 ldr r3, [r3]                                      |     r3 = *(0x724e);
    0x00003804 cmp r3, 0                                         |     
                                                                 |     if (r3 == 0) {
    0x00003806 beq.w 0x3916                                      |         goto label_11;
                                                                 |     }
                                                                 | label_3:
    0x0000380a mov.w r8, 0                                       |     r8 = 0;
                                                                 | label_4:
    0x0000380e ldr r0, [sp, 0x10]                                |     r0 = var_10h;
    0x00003810 movs r1, 0                                        |     r1 = 0;
    0x00003812 bl 0x3a9c                                         |     fcn_00003a9c (r0, r1);
    0x00003816 cmp r6, 1                                         |     
                                                                 |     if (r6 == 1) {
    0x00003818 bne 0x3826                                        |         
    0x0000381a ldr r3, [pc, 0x230]                               |         
    0x0000381c add r3, pc                                        |         
    0x0000381e ldr r3, [r3]                                      |         r3 = *(0x726e);
    0x00003820 cmp r3, 0                                         |         
                                                                 |         if (r3 != 0) {
    0x00003822 bne.w 0x399e                                      |             goto label_12;
                                                                 |         }
                                                                 |     }
                                                                 | label_7:
    0x00003826 ldr r3, [pc, 0x228]                               |     
    0x00003828 add r3, pc                                        |     
    0x0000382a ldr r3, [r3]                                      |     r3 = *(0x727e);
    0x0000382c cmp r3, 0                                         |     
                                                                 |     if (r3 != 0) {
    0x0000382e bne 0x3902                                        |         goto label_13;
                                                                 |     }
    0x00003830 cmp.w r8, 0                                       |     
                                                                 |     if (r8 == 0) {
    0x00003834 beq.w 0x3a02                                      |         goto label_14;
                                                                 |     }
                                                                 | label_0:
    0x00003838 mov r0, r5                                        |     r0 = r5;
    0x0000383a bl 0xcfb4                                         |     r0 = fcn_0000cfb4 (r0);
    0x0000383e mov sb, r0                                        |     sb = r0;
    0x00003840 mov r0, r8                                        |     r0 = r8;
    0x00003842 str.w sb, [sp, 4]                                 |     __asm ("str.w sb, [var_4h]");
    0x00003846 blx 0x1a10                                        |     r0 = stack_chk_fail ();
    0x0000384a mov r5, r0                                        |     r5 = r0;
    0x0000384c cmp r0, 0                                         |     
                                                                 |     if (r0 == 0) {
    0x0000384e beq.w 0x3a30                                      |         goto label_15;
                                                                 |     }
    0x00003852 ldr r7, [pc, 0x200]                               |     
    0x00003854 mov.w r8, 0                                       |     r8 = 0;
    0x00003858 blx 0x1bb0                                        |     r0 = fcn_00001bb0 ();
    0x0000385c mov sl, r0                                        |     sl = r0;
    0x0000385e add r7, pc                                        |     r7 = 0x72b8;
    0x00003860 b 0x38a2                                          |     
                                                                 |     while (r0 != 0) {
    0x00003862 sub.w r0, sl, 0xc                                 |         r0 = sl - 0xc;
    0x00003866 sub.w fp, r4, r5                                  |         
    0x0000386a sub.w r6, sl, 0xd                                 |         r6 = sl - 0xd;
    0x0000386e adds r4, 0xd                                      |         r4 += 0xd;
    0x00003870 blx 0x1b0c                                        |         strerror (r0);
    0x00003874 sub.w sl, r6, fp                                  |         sl = r6 - fp;
    0x00003878 mov sb, r0                                        |         sb = r0;
    0x0000387a cmp r0, 0                                         |         
                                                                 |         if (r0 == 0) {
    0x0000387c beq.w 0x3a24                                      |             goto label_16;
                                                                 |         }
    0x00003880 mov r1, r5                                        |         r1 = r5;
    0x00003882 mov r2, fp                                        |         r2 = fp;
    0x00003884 blx 0x19c8                                        |         mmap64 ();
    0x00003888 mov r2, sl                                        |         r2 = sl;
    0x0000388a mov r1, r4                                        |         r1 = r4;
    0x0000388c add.w r0, sb, fp                                  |         r0 = sb + fp;
    0x00003890 mov sl, r6                                        |         sl = r6;
    0x00003892 blx 0x19c8                                        |         mmap64 ();
    0x00003896 mov r0, r5                                        |         r0 = r5;
    0x00003898 strb.w r8, [sb, r6]                               |         *((sb + r6)) = r8;
    0x0000389c mov r5, sb                                        |         r5 = sb;
    0x0000389e blx 0x19a0                                        |         fcn_000019a0 ();
    0x000038a2 mov r1, r7                                        |         r1 = r7;
    0x000038a4 mov r0, r5                                        |         r0 = r5;
    0x000038a6 blx 0x18e4                                        |         r0 = strstr (r0, r1);
    0x000038aa mov r4, r0                                        |         r4 = r0;
    0x000038ac cmp r0, 0                                         |         
    0x000038ae bne 0x3862                                        |         
                                                                 |     }
    0x000038b0 ldr r7, [pc, 0x1a4]                               |     
    0x000038b2 mov r2, r5                                        |     r2 = r5;
    0x000038b4 ldr r0, [pc, 0x1a4]                               |     
    0x000038b6 add r7, pc                                        |     r7 = 0x7312;
    0x000038b8 add r0, pc                                        |     r0 = 0x7318;
    0x000038ba mov r1, r7                                        |     r1 = r7;
    0x000038bc bl 0x3320                                         |     fcn_00003320 ();
    0x000038c0 ldr r3, [pc, 0x19c]                               |     
    0x000038c2 add r3, pc                                        |     
    0x000038c4 ldr r3, [r3]                                      |     r3 = *(0x7326);
    0x000038c6 cmp r3, 0                                         |     
                                                                 |     if (r3 == 0) {
    0x000038c8 beq 0x395c                                        |         goto label_17;
                                                                 |     }
    0x000038ca mov r0, r5                                        |     r0 = r5;
    0x000038cc blx 0x19a0                                        |     fcn_000019a0 ();
                                                                 | label_2:
    0x000038d0 ldr r0, [sp, 0xc]                                 |     r0 = var_ch;
    0x000038d2 movs r1, 0                                        |     r1 = 0;
    0x000038d4 bl 0x3a9c                                         |     fcn_00003a9c (r0, r1);
                                                                 | label_1:
    0x000038d8 ldr r0, [sp, 0xc]                                 |     r0 = var_ch;
    0x000038da bl 0xcb50                                         |     fcn_0000cb50 (r0);
    0x000038de ldr r0, [sp, 0x10]                                |     r0 = var_10h;
    0x000038e0 bl 0xcb50                                         |     fcn_0000cb50 (r0);
                                                                 | label_8:
    0x000038e4 ldr r2, [pc, 0x17c]                               |     
    0x000038e6 ldr r3, [pc, 0x158]                               |     r3 = *(0x3a42);
    0x000038e8 add r2, pc                                        |     r2 = 0x7350;
    0x000038ea ldr r3, [r2, r3]                                  |     r3 = *(0x7350);
    0x000038ec ldr r2, [r3]                                      |     r2 = *(0x7350);
    0x000038ee ldr r3, [sp, 0x14]                                |     r3 = var_14h;
    0x000038f0 eors r2, r3                                       |     r2 ^= r3;
    0x000038f2 mov.w r3, 0                                       |     r3 = 0;
                                                                 |     if (r2 != r3) {
    0x000038f6 bne.w 0x3a36                                      |         goto label_18;
                                                                 |     }
    0x000038fa mov r0, r4                                        |     r0 = r4;
    0x000038fc add sp, 0x1c                                      |     
    0x000038fe pop.w {r4, r5, r6, r7, r8, sb, sl, fp, pc}        |     
                                                                 | label_13:
    0x00003902 cmp.w r8, 0                                       |     
                                                                 |     if (r8 != 0) {
    0x00003906 bne 0x3838                                        |         goto label_0;
                                                                 |     }
                                                                 | label_9:
    0x00003908 mov r0, r5                                        |     r0 = r5;
    0x0000390a bl 0x33a8                                         |     r0 = fcn_000033a8 (r0);
    0x0000390e mov r4, r0                                        |     r4 = r0;
                                                                 | label_6:
    0x00003910 cmp r4, 0                                         |     
                                                                 |     if (r4 < 0) {
    0x00003912 blt 0x38d8                                        |         goto label_1;
                                                                 |     }
    0x00003914 b 0x38d0                                          |     goto label_2;
                                                                 | label_11:
    0x00003916 mov r0, r5                                        |     r0 = r5;
    0x00003918 bl 0xd74c                                         |     r0 = fcn_0000d74c (r0);
    0x0000391c subs r4, r0, 0                                    |     r4 = r0 - 0;
                                                                 |     if (r4 < r0) {
    0x0000391e blt 0x39b2                                        |         goto label_19;
                                                                 |     }
                                                                 |     if (r4 != r0) {
    0x00003920 bne.w 0x380a                                      |         goto label_3;
                                                                 |     }
    0x00003924 cmp r6, 1                                         |     
                                                                 |     if (r6 != 1) {
    0x00003926 bne 0x38d8                                        |         goto label_1;
                                                                 |     }
    0x00003928 ldr r3, [pc, 0x13c]                               |     
    0x0000392a mov r2, r7                                        |     r2 = r7;
    0x0000392c ldr r1, [pc, 0x13c]                               |     
    0x0000392e mvn r4, 1                                         |     r4 = ~1;
    0x00003930 lsls r1, r0, 0x10                                 |     r1 = r0 << 0x10;
    0x00003932 add r3, pc                                        |     r3 = 0x739e;
    0x00003934 ldr r0, [r3]                                      |     r0 = *(0x739e);
    0x00003936 add r1, pc                                        |     r1 = 0x73a6;
    0x00003938 bl 0x85e4                                         |     fcn_000085e4 (r0);
    0x0000393c b 0x38d8                                          |     goto label_1;
                                                                 | label_10:
    0x0000393e add r2, sp, 0x10                                  |     r2 += var_10h;
    0x00003940 add r1, sp, 0xc                                   |     r1 += var_ch;
    0x00003942 mov r0, r5                                        |     r0 = r5;
    0x00003944 bl 0xd2e4                                         |     r0 = fcn_0000d2e4 (r0, r1, r2);
    0x00003948 subs r4, r0, 0                                    |     r4 = r0 - 0;
                                                                 |     if (r4 < r0) {
    0x0000394a blt 0x39ec                                        |         goto label_20;
                                                                 |     }
    0x0000394c mov r0, r5                                        |     r0 = r5;
    0x0000394e bl 0xd59c                                         |     r0 = fcn_0000d59c (r0);
    0x00003952 mov r8, r0                                        |     r8 = r0;
    0x00003954 cmp r0, 0                                         |     
                                                                 |     if (r0 != 0) {
    0x00003956 bne.w 0x380e                                      |         goto label_4;
                                                                 |     }
    0x0000395a b 0x37fe                                          |     goto label_5;
                                                                 | label_17:
    0x0000395c ldr r6, [pc, 0x110]                               |     
    0x0000395e movs r2, 1                                        |     r2 = 1;
    0x00003960 ldr r1, [sp, 4]                                   |     r1 = var_4h;
    0x00003962 add r6, pc                                        |     r6 = 0x73d6;
    0x00003964 mov r0, r6                                        |     r0 = r6;
    0x00003966 blx 0x1bcc                                        |     errno_location ();
    0x0000396a mov r0, r5                                        |     r0 = r5;
    0x0000396c blx 0x1b24                                        |     r0 = vfprintf_chk ();
    0x00003970 mov r4, r0                                        |     r4 = r0;
    0x00003972 mov r0, r6                                        |     r0 = r6;
    0x00003974 blx 0x1d8c                                        |     fcn_00001d8c ();
    0x00003978 adds r3, r4, 1                                    |     r3 = r4 + 1;
                                                                 |     if (r3 == r4) {
    0x0000397a beq 0x39d2                                        |         goto label_21;
                                                                 |     }
    0x0000397c ubfx r1, r4, 8, 8                                 |     r1 = (r4 >> 8) & ((1 << 8) - 1);
                                                                 |     if (r1 != 0) {
    0x00003980 cbz r1, 0x3996                                    |         
    0x00003982 ldr r0, [pc, 0xf0]                                |         
    0x00003984 rsbs r4, r1, 0                                    |         r4 = r1 - ;
    0x00003986 ldr r1, [pc, 0xf0]                                |         
    0x00003988 mov r2, r7                                        |         r2 = r7;
    0x0000398a ldr r3, [sp, 4]                                   |         r3 = var_4h;
    0x0000398c add r0, pc                                        |         
    0x0000398e ldr r0, [r0]                                      |         r0 = *(0x7406);
    0x00003990 add r1, pc                                        |         r1 = 0x740e;
    0x00003992 bl 0x85e4                                         |         fcn_000085e4 (r0);
                                                                 |     }
    0x00003996 mov r0, r5                                        |     r0 = r5;
    0x00003998 blx 0x19a0                                        |     fcn_000019a0 ();
    0x0000399c b 0x3910                                          |     goto label_6;
                                                                 | label_12:
    0x0000399e mov r0, r5                                        |     r0 = r5;
    0x000039a0 bl 0xcf40                                         |     fcn_0000cf40 (r0);
    0x000039a4 mov r1, r6                                        |     r1 = r6;
    0x000039a6 bl 0x3a9c                                         |     r0 = fcn_00003a9c (r0, r1);
    0x000039aa subs r4, r0, 0                                    |     r4 = r0 - 0;
                                                                 |     if (r4 >= r0) {
    0x000039ac bge.w 0x3826                                      |         goto label_7;
                                                                 |     }
    0x000039b0 b 0x38d8                                          |     goto label_1;
                                                                 | label_19:
    0x000039b2 ldr r3, [pc, 0xc8]                                |     
    0x000039b4 add r3, pc                                        |     r3 = 0x7436;
    0x000039b6 ldr r4, [r3]                                      |     r4 = *(0x7436);
    0x000039b8 cmp r4, 0                                         |     
                                                                 |     if (r4 == 0) {
    0x000039ba beq 0x38d8                                        |         goto label_1;
                                                                 |     }
    0x000039bc ldr r3, [pc, 0xc0]                                |     
    0x000039be mov r2, r7                                        |     r2 = r7;
    0x000039c0 ldr r1, [pc, 0xc0]                                |     
    0x000039c2 mvn r4, 1                                         |     r4 = ~1;
    0x000039c6 add r3, pc                                        |     r3 = 0x744a;
    0x000039c8 ldr r0, [r3]                                      |     r0 = *(0x744a);
    0x000039ca add r1, pc                                        |     r1 = 0x7452;
    0x000039cc bl 0x85e4                                         |     fcn_000085e4 (r0);
    0x000039d0 b 0x38d8                                          |     goto label_1;
                                                                 | label_21:
    0x000039d2 ldr r1, [pc, 0xb4]                                |     
    0x000039d4 mov r2, r7                                        |     r2 = r7;
    0x000039d6 ldr r3, [sp, 4]                                   |     r3 = var_4h;
    0x000039d8 add r1, pc                                        |     r1 = 0x7466;
    0x000039da ldr r0, [r1]                                      |     r0 = *(0x7466);
    0x000039dc ldr r1, [pc, 0xac]                                |     
    0x000039de add r1, pc                                        |     r1 = 0x746e;
    0x000039e0 bl 0x85e4                                         |     fcn_000085e4 (r0);
    0x000039e4 mov r0, r5                                        |     r0 = r5;
    0x000039e6 blx 0x19a0                                        |     fcn_000019a0 ();
    0x000039ea b 0x38d8                                          |     goto label_1;
                                                                 | label_20:
    0x000039ec rsbs r0, r4, 0                                    |     r0 = r4 - ;
    0x000039ee blx 0x1b18                                        |     system (r0)
    0x000039f2 ldr r1, [pc, 0x9c]                                |     
    0x000039f4 mov r3, r0                                        |     r3 = r0;
    0x000039f6 mov r2, r7                                        |     r2 = r7;
    0x000039f8 movs r0, 4                                        |     r0 = 4;
    0x000039fa add r1, pc                                        |     r1 = 0x7490;
    0x000039fc bl 0x85e4                                         |     fcn_000085e4 (r0);
    0x00003a00 b 0x38e4                                          |     goto label_8;
                                                                 | label_14:
    0x00003a02 mov r0, r5                                        |     r0 = r5;
    0x00003a04 bl 0xddf0                                         |     r0 = fcn_0000ddf0 (r0);
    0x00003a08 cmp r0, 0                                         |     
                                                                 |     if (r0 <= 0) {
    0x00003a0a ble.w 0x3908                                      |         goto label_9;
                                                                 |     }
    0x00003a0e ldr r3, [pc, 0x84]                                |     
    0x00003a10 mov r2, r7                                        |     r2 = r7;
    0x00003a12 ldr r1, [pc, 0x84]                                |     
    0x00003a14 mvn r4, 0xf                                       |     r4 = ~0xf;
    0x00003a16 lsls r7, r1, 0x10                                 |     r7 = r1 << 0x10;
    0x00003a18 add r3, pc                                        |     r3 = 0x74b2;
    0x00003a1a ldr r0, [r3]                                      |     r0 = *(0x74b2);
    0x00003a1c add r1, pc                                        |     r1 = 0x74ba;
    0x00003a1e bl 0x85e4                                         |     fcn_000085e4 (r0);
    0x00003a22 b 0x38d8                                          |     goto label_1;
                                                                 | label_16:
    0x00003a24 mov r0, r5                                        |     r0 = r5;
    0x00003a26 mvn r4, 0xb                                       |     r4 = ~0xb;
    0x00003a2a blx 0x19a0                                        |     fcn_000019a0 ();
    0x00003a2e b 0x38d8                                          |     goto label_1;
                                                                 | label_15:
    0x00003a30 mvn r4, 0xb                                       |     r4 = ~0xb;
    0x00003a34 b 0x38d8                                          |     goto label_1;
                                                                 | label_18:
    0x00003a36 blx 0x1a1c                                        |     stat64 ();
    0x00003a3a nop                                               |     
    0x00003a3c movs r6, 0x42                                     |     r6 = 0x42;
    0x00003a3e movs r2, r0                                       |     r2 = r0;
    0x00003a40 lsls r4, r7, 6                                    |     r4 = r7 << 6;
    0x00003a42 movs r0, r0                                       |     
    0x00003a44 cmp r0, 0x98                                      |     
    0x00003a46 movs r2, r0                                       |     r2 = r0;
    0x00003a48 cmp r0, 0x90                                      |     
    0x00003a4a movs r2, r0                                       |     r2 = r0;
    0x00003a4c cmp r0, 0x7c                                      |     
    0x00003a4e movs r2, r0                                       |     r2 = r0;
    0x00003a50 cmp r0, 0x68                                      |     
    0x00003a52 movs r2, r0                                       |     r2 = r0;
    0x00003a54 ands.w r0, lr, r0                                 |     r0 = lr & r0;
    0x00003a58 ldrd r0, r0, [r6]                                 |     __asm ("ldrd r0, r0, [r6]");
    0x00003a5c lsrs r4, r3, 0x20                                 |     r4 = r3 >> 0x20;
    0x00003a5e movs r1, r0                                       |     r1 = r0;
    0x00003a60 movs r7, 0xbe                                     |     r7 = 0xbe;
    0x00003a62 movs r2, r0                                       |     r2 = r0;
    0x00003a64 movs r5, 0x30                                     |     r5 = 0x30;
    0x00003a66 movs r2, r0                                       |     r2 = r0;
    0x00003a68 movs r7, 6                                        |     r7 = 6;
    0x00003a6a movs r2, r0                                       |     r2 = r0;
    0x00003a6c b 0x3b14                                          |     
    0x00003b14 invalid                                           |     
                                                                 | }
    ; assembly                                                   | /* r2dec pseudo code output */
                                                                 | /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/bin/kmod @ 0x4754 */
                                                                 | #include <stdint.h>
                                                                 |  
    ; (fcn) fcn.00004754 ()                                      | uint32_t fcn_00004754 (int16_t arg1, int16_t arg2, int16_t arg3, int16_t arg4) {
                                                                 |     int16_t var_10h;
                                                                 |     char * string;
                                                                 |     int16_t var_18h;
                                                                 |     int16_t var_1ch;
                                                                 |     int16_t var_20h;
                                                                 |     int16_t var_30h;
                                                                 |     int16_t var_70h;
                                                                 |     int16_t var_8ch;
                                                                 |     r0 = arg1;
                                                                 |     r1 = arg2;
                                                                 |     r2 = arg3;
                                                                 |     r3 = arg4;
                                                                 | label_4:
    0x00004604 ldr r2, [r0]                                      |     r2 = *(r0);
    0x00004606 ldr r3, [r1]                                      |     r3 = *(r1);
    0x00004608 ldr r0, [r2, 0x30]                                |     r0 = *((r2 + 0x30));
    0x0000460a ldr r3, [r3, 0x30]                                |     r3 = *((r3 + 0x30));
    0x0000460c subs r0, r0, r3                                   |     r0 -= r3;
    0x0000460e bx lr                                             |     return r0;
    0x00004754 push.w {r4, r5, r6, r7, r8, sb, sl, fp, lr}       |     
    0x00004758 mov r7, r2                                        |     r7 = r2;
    0x0000475a ldr r2, [pc, 0x1f8]                               |     
    0x0000475c mov sb, r3                                        |     sb = r3;
    0x0000475e sub sp, 0x94                                      |     
    0x00004760 mov r6, r0                                        |     r6 = r0;
    0x00004762 ldr r3, [pc, 0x1f4]                               |     r3 = *(0x495a);
    0x00004764 add r2, pc                                        |     r2 = 0x90be;
    0x00004766 str r1, [sp, 0x1c]                                |     var_1ch = r1;
    0x00004768 ldr.w r8, [pc, 0x1f0]                             |     
    0x0000476c ldr r3, [r2, r3]                                  |     
    0x0000476e ldr.w fp, [pc, 0x1f0]                             |     
    0x00004772 add r8, pc                                        |     r8 = 0x90d2;
    0x00004774 ldr r3, [r3]                                      |     r3 = *(0x90be);
    0x00004776 str r3, [sp, 0x8c]                                |     var_8ch = r3;
    0x00004778 mov.w r3, 0                                       |     r3 = 0;
    0x0000477c blx 0x1d40                                        |     renameat ();
    0x00004780 ldr r3, [pc, 0x1e0]                               |     
    0x00004782 add fp, pc                                        |     fp = 0x90e8;
    0x00004784 str r0, [sp, 0x10]                                |     var_10h = r0;
    0x00004786 add r3, pc                                        |     r3 = 0x90ee;
    0x00004788 str r3, [sp, 0x18]                                |     var_18h = r3;
    0x0000478a movs r3, 1                                        |     r3 = 1;
    0x0000478c str r3, [sp, 0x14]                                |     string = r3;
                                                                 |     do {
                                                                 | label_0:
    0x0000478e mov r0, r6                                        |         r0 = r6;
    0x00004790 blx 0x1cf4                                        |         r0 = fcn_00001cf4 ();
    0x00004794 cmp r0, 0                                         |         
                                                                 |         if (r0 == 0) {
    0x00004796 beq 0x4822                                        |             goto label_3;
                                                                 |         }
                                                                 | label_1:
    0x00004798 ldrb r3, [r0, 0x13]                               |         r3 = *((r0 + 0x13));
    0x0000479a add.w r4, r0, 0x13                                |         r4 = r0 + 0x13;
    0x0000479e cmp r3, 0x2e                                      |         
                                                                 |         if (r3 == 0x2e) {
    0x000047a0 beq 0x4840                                        |             goto label_5;
                                                                 |         }
                                                                 | label_2:
    0x000047a2 mov r1, r8                                        |         r1 = r8;
    0x000047a4 mov r0, r4                                        |         r0 = r4;
    0x000047a6 blx 0x1924                                        |         r0 = fcn_00001924 ();
    0x000047aa cmp r0, 0                                         |         
    0x000047ac beq 0x478e                                        |         
                                                                 |     } while (r0 == 0);
    0x000047ae mov r1, fp                                        |     r1 = fp;
    0x000047b0 mov r0, r4                                        |     r0 = r4;
    0x000047b2 blx 0x1924                                        |     r0 = fcn_00001924 ();
    0x000047b6 cmp r0, 0                                         |     
                                                                 |     if (r0 == 0) {
    0x000047b8 beq 0x478e                                        |         goto label_0;
                                                                 |     }
    0x000047ba mov r0, r4                                        |     r0 = r4;
    0x000047bc blx 0x1bb0                                        |     r0 = fcn_00001bb0 ();
    0x000047c0 add.w sl, r0, r7                                  |     sl = r0 + r7;
    0x000047c4 mov r5, r0                                        |     r5 = r0;
    0x000047c6 add.w r3, sl, 2                                   |     r3 = sl + 2;
    0x000047ca cmp.w r3, 0x1000                                  |     
                                                                 |     if (r3 >= 0x1000) {
    0x000047ce bhs 0x4852                                        |         goto label_6;
                                                                 |     }
    0x000047d0 ldr r0, [sp, 0x10]                                |     r0 = var_10h;
    0x000047d2 movs r3, 0                                        |     r3 = 0;
    0x000047d4 add r2, sp, 0x20                                  |     r2 += var_20h;
    0x000047d6 mov r1, r4                                        |     r1 = r4;
    0x000047d8 blx 0x1adc                                        |     r0 = asprintf_chk ();
    0x000047dc cmp r0, 0                                         |     
                                                                 |     if (r0 < 0) {
    0x000047de blt.w 0x48ee                                      |         goto label_7;
                                                                 |     }
    0x000047e2 ldr r3, [sp, 0x30]                                |     r3 = var_30h;
    0x000047e4 and r3, r3, 0xf000                                |     r3 &= 0xf000;
    0x000047e8 cmp.w r3, 0x4000                                  |     
                                                                 |     if (r3 == 0x4000) {
    0x000047ec beq 0x4874                                        |         goto label_8;
                                                                 |     }
    0x000047ee cmp.w r3, 0x8000                                  |     
                                                                 |     if (r3 != 0x8000) {
    0x000047f2 bne 0x4868                                        |         goto label_9;
                                                                 |     }
    0x000047f4 mov r1, r5                                        |     r1 = r5;
    0x000047f6 mov r0, r4                                        |     r0 = r4;
    0x000047f8 bl 0x9400                                         |     r0 = fcn_00009400 (r0, r1);
    0x000047fc cmp r0, 0                                         |     
                                                                 |     if (r0 == 0) {
    0x000047fe beq 0x478e                                        |         goto label_0;
                                                                 |     }
    0x00004800 adds r2, r5, 1                                    |     r2 = r5 + 1;
    0x00004802 mov r1, r4                                        |     r1 = r4;
    0x00004804 add.w r0, sb, r7                                  |     r0 = sb + r7;
    0x00004808 blx 0x19c8                                        |     mmap64 ();
    0x0000480c ldr r3, [sp, 0x70]                                |     r3 = var_70h;
    0x0000480e ldr r2, [sp, 0x1c]                                |     r2 = var_1ch;
    0x00004810 cmp r3, r2                                        |     
                                                                 |     if (r3 > r2) {
    0x00004812 bgt 0x490e                                        |         goto label_10;
                                                                 |     }
    0x00004814 movs r3, 1                                        |     r3 = 1;
    0x00004816 mov r0, r6                                        |     r0 = r6;
    0x00004818 str r3, [sp, 0x14]                                |     string = r3;
    0x0000481a blx 0x1cf4                                        |     r0 = fcn_00001cf4 ();
    0x0000481e cmp r0, 0                                         |     
                                                                 |     if (r0 != 0) {
    0x00004820 bne 0x4798                                        |         goto label_1;
                                                                 |     }
                                                                 | label_3:
    0x00004822 ldr r2, [pc, 0x144]                               |     
    0x00004824 ldr r3, [pc, 0x130]                               |     r3 = *(0x4958);
    0x00004826 add r2, pc                                        |     r2 = 0x9194;
    0x00004828 ldr r3, [r2, r3]                                  |     r3 = *(0x9194);
    0x0000482a ldr r2, [r3]                                      |     r2 = *(0x9194);
    0x0000482c ldr r3, [sp, 0x8c]                                |     r3 = var_8ch;
    0x0000482e eors r2, r3                                       |     r2 ^= r3;
    0x00004830 mov.w r3, 0                                       |     r3 = 0;
                                                                 |     if (r2 != r3) {
    0x00004834 bne.w 0x4950                                      |         goto label_11;
                                                                 |     }
    0x00004838 ldr r0, [sp, 0x14]                                |     r0 = string;
    0x0000483a add sp, 0x94                                      |     
    0x0000483c pop.w {r4, r5, r6, r7, r8, sb, sl, fp, pc}        |     
                                                                 | label_5:
    0x00004840 ldrb r3, [r0, 0x14]                               |     r3 = *((r0 + 0x14));
    0x00004842 cmp r3, 0                                         |     
                                                                 |     if (r3 == 0) {
    0x00004844 beq 0x478e                                        |         goto label_0;
                                                                 |     }
    0x00004846 cmp r3, 0x2e                                      |     
                                                                 |     if (r3 != 0x2e) {
    0x00004848 bne 0x47a2                                        |         goto label_2;
                                                                 |     }
    0x0000484a ldrb r3, [r0, 0x15]                               |     r3 = *((r0 + 0x15));
    0x0000484c cmp r3, 0                                         |     
                                                                 |     if (r3 != 0) {
    0x0000484e bne 0x47a2                                        |         goto label_2;
                                                                 |     }
    0x00004850 b 0x478e                                          |     goto label_0;
                                                                 | label_6:
    0x00004852 ldr r1, [pc, 0x118]                               |     
    0x00004854 movs r2, 0                                        |     r2 = 0;
    0x00004856 strb.w r2, [sb, r7]                               |     *((sb + r7)) = r2;
    0x0000485a mov r3, r4                                        |     r3 = r4;
    0x0000485c mov r2, sb                                        |     r2 = sb;
    0x0000485e movs r0, 3                                        |     r0 = 3;
    0x00004860 add r1, pc                                        |     r1 = 0x91d2;
    0x00004862 bl 0x85e4                                         |     fcn_000085e4 (r0);
    0x00004866 b 0x478e                                          |     goto label_0;
                                                                 | label_9:
    0x00004868 ldr r1, [sp, 0x18]                                |     r1 = var_18h;
    0x0000486a mov r2, sb                                        |     r2 = sb;
    0x0000486c movs r0, 3                                        |     r0 = 3;
    0x0000486e bl 0x85e4                                         |     fcn_000085e4 (r0);
    0x00004872 b 0x478e                                          |     goto label_0;
                                                                 | label_8:
    0x00004874 adds r2, r5, 1                                    |     r2 = r5 + 1;
    0x00004876 mov r1, r4                                        |     r1 = r4;
    0x00004878 add.w r0, sb, r7                                  |     r0 = sb + r7;
    0x0000487c blx 0x19c8                                        |     mmap64 ();
    0x00004880 addw r3, sl, 0x101                                |     __asm ("addw r3, sl, 0x101");
    0x00004884 cmp.w r3, 0x1000                                  |     
                                                                 |     if (r3 >= 0x1000) {
    0x00004888 bhs 0x492e                                        |         goto label_12;
                                                                 |     }
    0x0000488a ldr r0, [sp, 0x10]                                |     r0 = var_10h;
    0x0000488c movs r2, 0                                        |     r2 = 0;
    0x0000488e mov r1, r4                                        |     r1 = r4;
    0x00004890 blx 0x1bd8                                        |     r0 = sprintf_chk ();
    0x00004894 subs r5, r0, 0                                    |     r5 = r0 - 0;
                                                                 |     if (r5 < r0) {
    0x00004896 blt 0x48fe                                        |         goto label_13;
                                                                 |     }
    0x00004898 blx 0x1d00                                        |     r0 = fcn_00001d00 ();
    0x0000489c mov r4, r0                                        |     r4 = r0;
    0x0000489e cmp r0, 0                                         |     
                                                                 |     if (r0 == 0) {
    0x000048a0 beq 0x493c                                        |         goto label_14;
                                                                 |     }
    0x000048a2 movs r3, 0x2f                                     |     r3 = 0x2f;
    0x000048a4 add.w r2, sl, 1                                   |     r2 = sl + 1;
    0x000048a8 strb.w r3, [sb, sl]                               |     *((sb + sl)) = r3;
    0x000048ac movs r3, 0                                        |     r3 = 0;
    0x000048ae strb.w r3, [sb, r2]                               |     *((sb + r2)) = r3;
    0x000048b2 mov r3, sb                                        |     r3 = sb;
    0x000048b4 ldr r1, [sp, 0x1c]                                |     r1 = var_1ch;
    0x000048b6 bl 0x4754                                         |     r0 = fcn_00004754 (r0, r1, r2, r3);
    0x000048ba mov r5, r0                                        |     r5 = r0;
    0x000048bc str r0, [sp, 0x14]                                |     string = r0;
    0x000048be mov r0, r4                                        |     r0 = r4;
    0x000048c0 blx 0x1dc8                                        |     fcn_00001dc8 ();
    0x000048c4 cmp r5, 0                                         |     
                                                                 |     if (r5 == 0) {
    0x000048c6 beq 0x4928                                        |         goto label_15;
                                                                 |     }
                                                                 |     if (r5 >= 0) {
    0x000048c8 bge.w 0x478e                                      |         goto label_0;
                                                                 |     }
    0x000048cc ldr r3, [sp, 0x14]                                |     r3 = string;
    0x000048ce rsbs r0, r3, 0                                    |     r0 = r3 - ;
    0x000048d0 movs r3, 0                                        |     r3 = 0;
    0x000048d2 strb.w r3, [sb, sl]                               |     *((sb + sl)) = r3;
    0x000048d6 blx 0x1b18                                        |     system (r0)
    0x000048da ldr r1, [pc, 0x94]                                |     
    0x000048dc mov r3, r0                                        |     r3 = r0;
    0x000048de mov r2, sb                                        |     r2 = sb;
    0x000048e0 movs r0, 3                                        |     r0 = 3;
    0x000048e2 add r1, pc                                        |     r1 = 0x9258;
    0x000048e4 bl 0x85e4                                         |     fcn_000085e4 (r0);
    0x000048e8 movs r3, 1                                        |     r3 = 1;
    0x000048ea str r3, [sp, 0x14]                                |     string = r3;
    0x000048ec b 0x478e                                          |     goto label_0;
                                                                 | label_7:
    0x000048ee ldr r1, [pc, 0x84]                                |     
    0x000048f0 mov r3, r4                                        |     r3 = r4;
    0x000048f2 ldr r2, [sp, 0x10]                                |     r2 = var_10h;
    0x000048f4 movs r0, 3                                        |     r0 = 3;
    0x000048f6 add r1, pc                                        |     r1 = 0x9270;
    0x000048f8 bl 0x85e4                                         |     fcn_000085e4 (r0);
    0x000048fc b 0x478e                                          |     goto label_0;
                                                                 | label_13:
    0x000048fe ldr r1, [pc, 0x78]                                |     
    0x00004900 mov r3, r4                                        |     r3 = r4;
    0x00004902 ldr r2, [sp, 0x10]                                |     r2 = var_10h;
    0x00004904 movs r0, 3                                        |     r0 = 3;
    0x00004906 add r1, pc                                        |     r1 = 0x9284;
    0x00004908 bl 0x85e4                                         |     fcn_000085e4 (r0);
    0x0000490c b 0x478e                                          |     goto label_0;
                                                                 | label_10:
    0x0000490e asrs r1, r2, 0x1f                                 |     r1 = r2 >> 0x1f;
    0x00004910 mov r0, r2                                        |     r0 = r2;
    0x00004912 asrs r4, r3, 0x1f                                 |     r4 = r3 >> 0x1f;
    0x00004914 mov r2, sb                                        |     r2 = sb;
    0x00004916 strd r0, r1, [sp, 8]                              |     __asm ("strd r0, r1, [sp, 8]");
    0x0000491a movs r0, 7                                        |     r0 = 7;
    0x0000491c ldr r1, [pc, 0x5c]                                |     
    0x0000491e strd r3, r4, [sp]                                 |     __asm ("strd r3, r4, [sp]");
    0x00004922 add r1, pc                                        |     r1 = 0x92a2;
    0x00004924 bl 0x85e4                                         |     fcn_000085e4 (r0);
                                                                 | label_15:
    0x00004928 movs r3, 0                                        |     r3 = 0;
    0x0000492a str r3, [sp, 0x14]                                |     string = r3;
    0x0000492c b 0x4822                                          |     goto label_3;
                                                                 | label_12:
    0x0000492e ldr r1, [pc, 0x50]                                |     
    0x00004930 mov r2, sb                                        |     r2 = sb;
    0x00004932 movs r0, 3                                        |     r0 = 3;
    0x00004934 add r1, pc                                        |     r1 = 0x92ba;
    0x00004936 bl 0x85e4                                         |     fcn_000085e4 (r0);
    0x0000493a b 0x478e                                          |     goto label_0;
                                                                 | label_14:
    0x0000493c ldr r1, [pc, 0x44]                                |     
    0x0000493e mov r2, r5                                        |     r2 = r5;
    0x00004940 movs r0, 3                                        |     r0 = 3;
    0x00004942 add r1, pc                                        |     r1 = 0x92ca;
    0x00004944 bl 0x85e4                                         |     fcn_000085e4 (r0);
    0x00004948 mov r0, r5                                        |     r0 = r5;
    0x0000494a blx 0x1dbc                                        |     fcn_00001dbc ();
    0x0000494e b 0x478e                                          |     goto label_0;
                                                                 | label_11:
    0x00004950 blx 0x1a1c                                        |     stat64 ();
    0x00004954 asrs r4, r6, 0x1a                                 |     r4 = r6 >> 0x1a;
    0x00004956 movs r2, r0                                       |     r2 = r0;
    0x00004958 lsls r4, r7, 6                                    |     r4 = r7 << 6;
    0x0000495a movs r0, r0                                       |     
    0x0000495c b 0x4604                                          |     goto label_4;
                                                                 | }
    ; assembly                                                       | /* r2dec pseudo code output */
                                                                     | /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/bin/kmod @ 0x4a80 */
                                                                     | #include <stdint.h>
                                                                     |  
    ; (fcn) fcn.00004a80 ()                                          | void fcn_00004a80 (int16_t arg_4h, int16_t arg_1000h, int16_t arg1, int16_t arg2) {
                                                                     |     int16_t var_0h;
                                                                     |     int16_t var_ch;
                                                                     |     r0 = arg1;
                                                                     |     r1 = arg2;
    0x00004a80 push.w {r4, r5, r6, r7, r8, sb, sl, fp, lr}           |     
    0x00004a84 mov r8, r0                                            |     r8 = r0;
    0x00004a86 sub sp, 0x14                                          |     
    0x00004a88 mov r0, r1                                            |     r0 = r1;
    0x00004a8a mov r7, r1                                            |     r7 = r1;
    0x00004a8c ldr.w fp, [r8]                                        |     fp = *(r8);
    0x00004a90 bl 0xcfb4                                             |     r0 = fcn_0000cfb4 (r0);
    0x00004a94 mov r5, r0                                            |     r5 = r0;
    0x00004a96 blx 0x1bb0                                            |     r0 = fcn_00001bb0 ();
    0x00004a9a mov sl, r0                                            |     sl = r0;
    0x00004a9c movs r0, 1                                            |     r0 = 1;
    0x00004a9e add.w r1, sl, 0x45                                    |     r1 = sl + 0x45;
    0x00004aa2 add sl, r0                                            |     sl += r0;
    0x00004aa4 blx 0x18d8                                            |     r0 = calloc (r0, r1);
    0x00004aa8 cmp r0, 0                                             |     
                                                                     |     if (r0 == 0) {
    0x00004aaa beq.w 0x4bb8                                          |         goto label_1;
                                                                     |     }
    0x00004aae ldr.w r3, [r8, 0xc]                                   |     r3 = *((r8 + 0xc));
    0x00004ab2 add.w sb, r0, 0x44                                    |     sb = r0 + 0x44;
    0x00004ab6 mov r2, sl                                            |     r2 = sl;
    0x00004ab8 mov r4, r0                                            |     r4 = r0;
    0x00004aba mov r1, r5                                            |     r1 = r5;
    0x00004abc str r7, [r0]                                          |     *(r0) = r7;
    0x00004abe adds r3, 1                                            |     r3++;
    0x00004ac0 str r3, [r0, 0x30]                                    |     *((r0 + 0x30)) = r3;
    0x00004ac2 mvn r3, 0x80000000                                    |     r3 = ~0x80000000;
    0x00004ac6 str r3, [r0, 0x34]                                    |     *((r0 + 0x34)) = r3;
    0x00004ac8 mov r0, sb                                            |     r0 = sb;
    0x00004aca blx 0x19c8                                            |     mmap64 ();
    0x00004ace movs r1, 4                                            |     r1 = 4;
    0x00004ad0 add.w r0, r4, 0x18                                    |     r0 = r4 + 0x18;
    0x00004ad4 str.w sl, [r4, 0x2c]                                  |     __asm ("str.w sl, [r4, 0x2c]");
    0x00004ad8 bl 0x8b68                                             |     fcn_00008b68 (r0, r1);
    0x00004adc mov r0, r7                                            |     r0 = r7;
    0x00004ade bl 0xcfbc                                             |     r0 = fcn_0000cfbc (r0);
    0x00004ae2 blx 0x1a10                                            |     stack_chk_fail ();
    0x00004ae6 movs r1, 0x2f                                         |     r1 = 0x2f;
    0x00004ae8 str r0, [r4, 4]                                       |     *((r4 + 4)) = r0;
    0x00004aea mov r6, r0                                            |     r6 = r0;
    0x00004aec blx 0x1cd0                                            |     fcn_00001cd0 ();
    0x00004af0 add.w r3, fp, 0x1000                                  |     r3 += arg_1000h;
    0x00004af4 mov r5, r0                                            |     r5 = r0;
    0x00004af6 ldr r2, [r3, 4]                                       |     r2 = *((r3 + 4));
    0x00004af8 subs r3, r0, r6                                       |     r3 = r0 - r6;
    0x00004afa add.w r1, fp, 4                                       |     r1 += arg_4h;
    0x00004afe mov r0, r6                                            |     r0 = r6;
    0x00004b00 str r3, [r4, 0x28]                                    |     *((r4 + 0x28)) = r3;
    0x00004b02 str r2, [sp, 0xc]                                     |     var_ch = r2;
    0x00004b04 blx 0x1da4                                            |     r0 = fcn_00001da4 ();
                                                                     |     if (r0 == 0) {
    0x00004b08 cbz r0, 0x4b60                                        |         goto label_2;
                                                                     |     }
    0x00004b0a movs r0, 0                                            |     r0 = 0;
                                                                     |     do {
    0x00004b0c str r0, [r4, 8]                                       |         *((r4 + 8)) = r0;
    0x00004b0e mov r2, r4                                            |         r2 = r4;
    0x00004b10 ldr.w r0, [r8, 0x1c]                                  |         r0 = *((r8 + 0x1c));
    0x00004b14 mov r1, sb                                            |         r1 = sb;
    0x00004b16 bl 0x8e20                                             |         r0 = fcn_00008e20 (r0, r1, r2);
    0x00004b1a subs r6, r0, 0                                        |         r6 = r0 - 0;
                                                                     |         if (r6 < r0) {
    0x00004b1c blt 0x4b6e                                            |             goto label_3;
                                                                     |         }
    0x00004b1e ldr r0, [r4, 8]                                       |         r0 = *((r4 + 8));
                                                                     |         if (r0 != 0) {
    0x00004b20 cbz r0, 0x4b44                                        |             
    0x00004b22 subs r5, r5, r0                                       |             r5 -= r0;
    0x00004b24 add r5, sl                                            |             r5 += sl;
    0x00004b26 adds r1, r5, 4                                        |             r1 = r5 + 4;
    0x00004b28 bl 0x92ac                                             |             fcn_000092ac (r0, r1);
    0x00004b2c movs r3, 0                                            |             r3 = 0;
    0x00004b2e add r5, r0                                            |             r5 += r0;
    0x00004b30 str r0, [r4, 0xc]                                     |             *((r4 + 0xc)) = r0;
    0x00004b32 mov r2, r4                                            |             r2 = r4;
    0x00004b34 strb r3, [r5, 3]                                      |             *((r5 + 3)) = r3;
    0x00004b36 ldr r1, [r4, 0xc]                                     |             r1 = *((r4 + 0xc));
    0x00004b38 ldr.w r0, [r8, 0x18]                                  |             r0 = *((r8 + 0x18));
    0x00004b3c bl 0x8e20                                             |             r0 = fcn_00008e20 (r0, r1, r2);
    0x00004b40 subs r6, r0, 0                                        |             r6 = r0 - 0;
                                                                     |             if (r6 < r0) {
    0x00004b42 blt 0x4b96                                            |                 goto label_4;
                                                                     |             }
                                                                     |         }
    0x00004b44 ldr r5, [r4, 4]                                       |         r5 = *((r4 + 4));
    0x00004b46 movs r6, 0                                            |         r6 = 0;
    0x00004b48 ldr r1, [pc, 0x74]                                    |         
    0x00004b4a mov r3, r7                                            |         r3 = r7;
    0x00004b4c mov r2, r4                                            |         r2 = r4;
    0x00004b4e movs r0, 7                                            |         r0 = 7;
    0x00004b50 str r5, [sp]                                          |         *(sp) = r5;
    0x00004b52 add r1, pc                                            |         r1 = 0x9716;
    0x00004b54 bl 0x85e4                                             |         fcn_000085e4 (r0);
                                                                     | label_0:
    0x00004b58 mov r0, r6                                            |         r0 = r6;
    0x00004b5a add sp, 0x14                                          |         
    0x00004b5c pop.w {r4, r5, r6, r7, r8, sb, sl, fp, pc}            |         
                                                                     | label_2:
    0x00004b60 ldr r2, [sp, 0xc]                                     |         r2 = var_ch;
    0x00004b62 ldrb r3, [r6, r2]                                     |         r3 = *((r6 + r2));
    0x00004b64 cmp r3, 0x2f                                          |         
    0x00004b66 itt eq                                                |         
                                                                     |         if (r3 != 0x2f) {
    0x00004b68 addeq r2, 1                                           |             r2++;
                                                                     |         }
                                                                     |         if (r3 != 0x2f) {
    0x00004b6a addeq r0, r6, r2                                      |             r0 = r6 + r2;
                                                                     |         }
    0x00004b6c b 0x4b0c                                              |         
                                                                     |     } while (1);
                                                                     | label_3:
    0x00004b6e rsbs r0, r6, 0                                        |     r0 = r6 - ;
    0x00004b70 blx 0x1b18                                            |     system (r0)
    0x00004b74 ldr r1, [pc, 0x4c]                                    |     
    0x00004b76 mov r3, r0                                            |     r3 = r0;
    0x00004b78 mov r2, sb                                            |     r2 = sb;
    0x00004b7a movs r0, 3                                            |     r0 = 3;
    0x00004b7c add r1, pc                                            |     r1 = 0x9744;
    0x00004b7e bl 0x85e4                                             |     fcn_000085e4 (r0);
                                                                     |     do {
    0x00004b82 ldr r0, [r4, 0xc]                                     |         r0 = *((r4 + 0xc));
    0x00004b84 blx 0x19a0                                            |         fcn_000019a0 ();
    0x00004b88 mov r0, r4                                            |         r0 = r4;
    0x00004b8a blx 0x19a0                                            |         fcn_000019a0 ();
    0x00004b8e mov r0, r6                                            |         r0 = r6;
    0x00004b90 add sp, 0x14                                          |         
    0x00004b92 pop.w {r4, r5, r6, r7, r8, sb, sl, fp, pc}            |         
                                                                     | label_4:
    0x00004b96 rsbs r0, r6, 0                                        |         r0 = r6 - ;
    0x00004b98 ldr r5, [r4, 0xc]                                     |         r5 = *((r4 + 0xc));
    0x00004b9a blx 0x1b18                                            |         system (r0)
    0x00004b9e ldr r1, [pc, 0x28]                                    |         
    0x00004ba0 mov r3, r0                                            |         r3 = r0;
    0x00004ba2 mov r2, r5                                            |         r2 = r5;
    0x00004ba4 movs r0, 3                                            |         r0 = 3;
    0x00004ba6 add r1, pc                                            |         r1 = 0x9774;
    0x00004ba8 bl 0x85e4                                             |         fcn_000085e4 (r0);
    0x00004bac ldr.w r0, [r8, 0x1c]                                  |         r0 = *((r8 + 0x1c));
    0x00004bb0 mov r1, sb                                            |         r1 = sb;
    0x00004bb2 bl 0x904c                                             |         fcn_0000904c (r0, r1);
    0x00004bb6 b 0x4b82                                              |         
                                                                     |     } while (1);
                                                                     | label_1:
    0x00004bb8 mvn r6, 0xb                                           |     r6 = ~0xb;
    0x00004bbc b 0x4b58                                              |     goto label_0;
                                                                     | }
    ; assembly                                                   | /* r2dec pseudo code output */
                                                                 | /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/bin/kmod @ 0x5624 */
                                                                 | #include <stdint.h>
                                                                 |  
    ; (fcn) fcn.00005624 ()                                      | void fcn_00005624 (int16_t arg_0h, int16_t arg1, int16_t arg2, int16_t arg3, int16_t arg4) {
                                                                 |     int16_t var_0h_2;
                                                                 |     int16_t var_4h;
                                                                 |     int16_t var_8h_2;
                                                                 |     int16_t var_14h_2;
                                                                 |     int16_t var_84h;
                                                                 |     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_50h;
                                                                 |     int16_t var_54h;
                                                                 |     int16_t var_58h;
                                                                 |     int32_t var_110h;
                                                                 |     int16_t var_1040h;
                                                                 |     int32_t var_0h_3;
                                                                 |     r0 = arg1;
                                                                 |     r1 = arg2;
                                                                 |     r2 = arg3;
                                                                 |     r3 = arg4;
    0x00005624 push.w {r4, r5, r6, r7, r8, sb, sl, fp, lr}       |     
    0x00005628 sub.w sp, sp, 0x1040                              |     
    0x0000562c sub sp, 0x1c                                      |     
    0x0000562e mov r5, r1                                        |     r5 = r1;
    0x00005630 mov r8, r3                                        |     r8 = r3;
    0x00005632 mov r1, r2                                        |     r1 = r2;
    0x00005634 mov r3, r0                                        |     r3 = r0;
    0x00005636 ldr r2, [pc, 0x3dc]                               |     
    0x00005638 str r3, [sp, 8]                                   |     var_8h = r3;
    0x0000563a add.w r4, sp, 0x1040                              |     r4 += var_1040h;
    0x0000563e ldr r3, [pc, 0x3d8]                               |     r3 = *(0x5a1a);
    0x00005640 adds r4, 0x14                                     |     r4 += 0x14;
    0x00005642 add r2, pc                                        |     r2 = 0xb05c;
    0x00005644 add.w r0, r8, r5                                  |     r0 = r8 + r5;
    0x00005648 ldr r3, [r2, r3]                                  |     
    0x0000564a ldr r3, [r3]                                      |     r3 = *(0xb05c);
    0x0000564c str r3, [r4]                                      |     *(r4) = r3;
    0x0000564e mov.w r3, 0                                       |     r3 = 0;
    0x00005652 bl 0x9400                                         |     r0 = fcn_00009400 (r0, r1);
                                                                 |     if (r0 == 0) {
    0x00005656 cbnz r0, 0x5682                                   |         
                                                                 | label_1:
    0x00005658 movs r4, 0                                        |         r4 = 0;
                                                                 | label_2:
    0x0000565a ldr r2, [pc, 0x3c0]                               |         
    0x0000565c add.w r1, sp, 0x1040                              |         r1 += var_1040h;
    0x00005660 ldr r3, [pc, 0x3b4]                               |         r3 = *(0x5a18);
    0x00005662 adds r1, 0x14                                     |         r1 += 0x14;
    0x00005664 add r2, pc                                        |         r2 = 0xb086;
    0x00005666 ldr r3, [r2, r3]                                  |         r3 = *(0xb086);
    0x00005668 ldr r2, [r3]                                      |         r2 = *(0xb086);
    0x0000566a ldr r3, [r1]                                      |         r3 = *(r1);
    0x0000566c eors r2, r3                                       |         r2 ^= r3;
    0x0000566e mov.w r3, 0                                       |         r3 = 0;
                                                                 |         if (r2 != r3) {
    0x00005672 bne.w 0x5a10                                      |             goto label_24;
                                                                 |         }
    0x00005676 mov r0, r4                                        |         r0 = r4;
    0x00005678 add.w sp, sp, 0x1040                              |         
    0x0000567c add sp, 0x1c                                      |         
    0x0000567e pop.w {r4, r5, r6, r7, r8, sb, sl, fp, pc}        |         
                                                                 |     }
    0x00005682 add r4, sp, 0x54                                  |     r4 += var_54h;
    0x00005684 add r3, sp, 0x58                                  |     r3 += var_58h;
    0x00005686 add r2, sp, 0x50                                  |     r2 += var_50h;
    0x00005688 mov r1, r4                                        |     r1 = r4;
    0x0000568a mov r0, r8                                        |     r0 = r8;
    0x0000568c str r3, [sp, 0x10]                                |     var_10h = r3;
    0x0000568e bl 0x93e0                                         |     r0 = fcn_000093e0 (r0, r1);
    0x00005692 cmp r0, 0                                         |     
                                                                 |     if (r0 == 0) {
    0x00005694 beq.w 0x59fe                                      |         goto label_25;
                                                                 |     }
    0x00005698 ldr r6, [sp, 8]                                   |     r6 = var_8h;
    0x0000569a movs r0, 7                                        |     r0 = 7;
    0x0000569c ldr r1, [pc, 0x380]                               |     
    0x0000569e ldr r3, [r6]                                      |     r3 = *(r6);
    0x000056a0 add r1, pc                                        |     r1 = 0xb0c4;
    0x000056a2 add.w r3, r3, 0x1000                              |     r3 += 0x1000;
    0x000056a6 ldr r3, [r3, 4]                                   |     r3 = *((r3 + 4));
    0x000056a8 adds r3, 1                                        |     r3++;
    0x000056aa add r3, r8                                        |     r3 += r8;
    0x000056ac mov r2, r3                                        |     r2 = r3;
    0x000056ae str r3, [sp, 0x38]                                |     var_38h = r3;
    0x000056b0 mov r3, r4                                        |     r3 = r4;
    0x000056b2 bl 0x85e4                                         |     fcn_000085e4 (r0);
    0x000056b6 ldr r0, [r6, 0x1c]                                |     r0 = *((r6 + 0x1c));
    0x000056b8 mov r1, r4                                        |     r1 = r4;
    0x000056ba bl 0x8f6c                                         |     r0 = fcn_00008f6c (r0, r1);
    0x000056be mov sl, r0                                        |     sl = r0;
    0x000056c0 cmp r0, 0                                         |     
                                                                 |     if (r0 == 0) {
    0x000056c2 beq 0x57be                                        |         goto label_26;
                                                                 |     }
    0x000056c4 ldr r3, [sp, 0x10]                                |     r3 = var_10h;
    0x000056c6 ldr r0, [r0, 4]                                   |     r0 = *((r0 + 4));
    0x000056c8 ldr r1, [pc, 0x358]                               |     
    0x000056ca ldr r3, [r3, -0x8]                                |     r3 = *((r3 - 0x8));
    0x000056ce ldr r4, [r6]                                      |     r4 = *(r6);
    0x000056d0 add r1, pc                                        |     r1 = 0xb0f8;
    0x000056d2 str r0, [sp, 0x20]                                |     var_20h = r0;
    0x000056d4 add r5, r3                                        |     r5 += r3;
    0x000056d6 ldrd r2, r3, [sl, 0x28]                           |     __asm ("ldrd r2, r3, [sl, 0x28]");
    0x000056da str r5, [sp, 0x3c]                                |     var_3ch = r5;
    0x000056dc adds r3, r2, r3                                   |     r3 = r2 + r3;
    0x000056de mov r2, r0                                        |     r2 = r0;
    0x000056e0 str r3, [sp, 0x2c]                                |     var_2ch = r3;
    0x000056e2 movs r0, 7                                        |     r0 = 7;
    0x000056e4 mov r3, r8                                        |     r3 = r8;
    0x000056e6 bl 0x85e4                                         |     fcn_000085e4 (r0);
    0x000056ea add.w r3, r4, 0x1000                              |     r3 = r4 + 0x1000;
    0x000056ee adds r4, 4                                        |     r4 += 4;
    0x000056f0 ldr r6, [r3, 4]                                   |     r6 = *((r3 + 4));
    0x000056f2 mov r1, r4                                        |     r1 = r4;
    0x000056f4 mov r0, r8                                        |     r0 = r8;
    0x000056f6 str r3, [sp, 0x28]                                |     var_28h = r3;
    0x000056f8 mov r2, r6                                        |     r2 = r6;
    0x000056fa blx 0x1da4                                        |     r0 = fcn_00001da4 ();
    0x000056fe cmp r0, 0                                         |     
                                                                 |     if (r0 == 0) {
    0x00005700 beq.w 0x5806                                      |         goto label_27;
                                                                 |     }
    0x00005704 mov r1, r4                                        |     r1 = r4;
    0x00005706 ldr r4, [sp, 0x20]                                |     r4 = var_20h;
    0x00005708 movs r3, 0                                        |     r3 = 0;
    0x0000570a mov r2, r6                                        |     r2 = r6;
    0x0000570c mov r7, r3                                        |     r7 = r3;
    0x0000570e str r3, [sp, 0x14]                                |     var_14h = r3;
    0x00005710 mov r0, r4                                        |     r0 = r4;
    0x00005712 blx 0x1da4                                        |     r0 = fcn_00001da4 ();
    0x00005716 cmp r0, 0                                         |     
                                                                 |     if (r0 != 0) {
    0x00005718 bne.w 0x5826                                      |         goto label_28;
                                                                 |     }
                                                                 | label_3:
    0x0000571c ldr r2, [sp, 0x2c]                                |     r2 = var_2ch;
    0x0000571e adds r3, r6, 1                                    |     r3 = r6 + 1;
    0x00005720 adds r3, r4, r3                                   |     r3 = r4 + r3;
    0x00005722 str r3, [sp, 0x18]                                |     var_18h = r3;
    0x00005724 subs r6, r2, r6                                   |     r6 = r2 - r6;
    0x00005726 subs r6, 1                                        |     r6--;
                                                                 | label_4:
    0x00005728 ldr r3, [sp, 0x28]                                |     r3 = var_28h;
    0x0000572a ldr r4, [r3, 0xc]                                 |     r4 = *((r3 + 0xc));
    0x0000572c cmp r4, 0                                         |     
                                                                 |     if (r4 == 0) {
    0x0000572e beq.w 0x5860                                      |         goto label_29;
                                                                 |     }
    0x00005732 ldr.w sb, [pc, 0x2f4]                             |     
    0x00005736 str.w sl, [sp, 0xc]                               |     __asm ("str.w sl, [var_ch]");
    0x0000573a str.w r8, [sp, 0x1c]                              |     __asm ("str.w r8, [var_1ch]");
    0x0000573e ldrd sl, fp, [sp, 0x14]                           |     __asm ("ldrd sl, fp, [var_18h]");
    0x00005742 add sb, pc                                        |     sb = 0xb170;
    0x00005744 b 0x5752                                          |     
                                                                 |     while (r5 != r7) {
                                                                 | label_0:
    0x00005746 cmp r5, r6                                        |         
                                                                 |         if (r5 == r6) {
    0x00005748 beq 0x582e                                        |             goto label_30;
                                                                 |         }
                                                                 | label_5:
    0x0000574a ldr r4, [r4]                                      |         r4 = *(r4);
    0x0000574c cmp r4, 0                                         |         
                                                                 |         if (r4 == 0) {
    0x0000574e beq.w 0x5858                                      |             goto label_31;
                                                                 |         }
    0x00005752 add.w r8, r4, 8                                   |         r8 = r4 + 8;
    0x00005756 mov r1, sb                                        |         r1 = sb;
    0x00005758 mov r2, r8                                        |         r2 = r8;
    0x0000575a movs r0, 7                                        |         r0 = 7;
    0x0000575c bl 0x85e4                                         |         fcn_000085e4 (r0);
    0x00005760 ldr r5, [r4, 4]                                   |         r5 = *((r4 + 4));
    0x00005762 cmp r5, r7                                        |         
    0x00005764 bne 0x5746                                        |         
                                                                 |     }
    0x00005766 mov r2, r7                                        |     r2 = r7;
    0x00005768 mov r1, sl                                        |     r1 = sl;
    0x0000576a mov r0, r8                                        |     r0 = r8;
    0x0000576c blx 0x19f8                                        |     r0 = uname ();
    0x00005770 cmp r0, 0                                         |     
                                                                 |     if (r0 != 0) {
    0x00005772 bne 0x5746                                        |         goto label_0;
                                                                 |     }
    0x00005774 ldr.w sl, [sp, 0xc]                               |     sl = var_ch;
    0x00005778 ldr.w r8, [sp, 0x1c]                              |     r8 = var_1ch;
                                                                 | label_7:
    0x0000577c ldr r1, [pc, 0x2ac]                               |     
    0x0000577e movs r0, 7                                        |     r0 = 7;
    0x00005780 ldr r3, [sp, 0x38]                                |     r3 = var_38h;
    0x00005782 ldr.w r2, [sl, 8]                                 |     r2 = *((sl + 8));
    0x00005786 add r1, pc                                        |     r1 = 0xb1b6;
    0x00005788 bl 0x85e4                                         |     fcn_000085e4 (r0);
    0x0000578c ldrd r3, r2, [sl]                                 |     __asm ("ldrd r3, r2, [sl]");
    0x00005790 movs r0, 7                                        |     r0 = 7;
    0x00005792 ldr r1, [pc, 0x29c]                               |     
    0x00005794 str r2, [sp]                                      |     *(sp) = r2;
    0x00005796 mov r2, sl                                        |     r2 = sl;
    0x00005798 add r1, pc                                        |     r1 = 0xb1ce;
    0x0000579a bl 0x85e4                                         |     fcn_000085e4 (r0);
    0x0000579e ldr.w r1, [sl, 0xc]                               |     r1 = *((sl + 0xc));
                                                                 |     if (r1 != 0) {
    0x000057a2 cbz r1, 0x57ac                                    |         
    0x000057a4 ldr r3, [sp, 8]                                   |         r3 = var_8h;
    0x000057a6 ldr r0, [r3, 0x18]                                |         r0 = *((r3 + 0x18));
    0x000057a8 bl 0x904c                                         |         fcn_0000904c (r0, r1);
                                                                 |     }
    0x000057ac ldr r3, [sp, 8]                                   |     r3 = var_8h;
    0x000057ae add.w r1, sl, 0x44                                |     r1 = sl + 0x44;
    0x000057b2 ldr r0, [r3, 0x1c]                                |     r0 = *((r3 + 0x1c));
    0x000057b4 bl 0x904c                                         |     fcn_0000904c (r0, r1);
    0x000057b8 mov r0, sl                                        |     r0 = sl;
    0x000057ba bl 0x4988                                         |     fcn_00004988 (r0, r1);
                                                                 | label_26:
    0x000057be ldr r3, [sp, 0x10]                                |     r3 = var_10h;
    0x000057c0 mov r1, r8                                        |     r1 = r8;
    0x000057c2 sub.w r2, r3, 0xc                                 |     r2 = r3 - 0xc;
    0x000057c6 ldr r3, [sp, 8]                                   |     r3 = var_8h;
    0x000057c8 ldr r0, [r3, 4]                                   |     r0 = *((r3 + 4));
    0x000057ca bl 0xc8c4                                         |     r0 = fcn_0000c8c4 (r0, r1, r2);
    0x000057ce subs r4, r0, 0                                    |     r4 = r0 - 0;
                                                                 |     if (r4 < r0) {
    0x000057d0 blt.w 0x59b8                                      |         goto label_32;
                                                                 |     }
    0x000057d4 ldr r3, [sp, 0x10]                                |     r3 = var_10h;
    0x000057d6 ldr r0, [sp, 8]                                   |     r0 = var_8h;
    0x000057d8 ldr r1, [r3, -0xc]                                |     r1 = *((r3 - 0xc));
    0x000057dc bl 0x4a80                                         |     r0 = fcn_00004a80 (r0, r1, r2, r3);
    0x000057e0 subs r4, r0, 0                                    |     r4 = r0 - 0;
                                                                 |     if (r4 >= r0) {
    0x000057e2 bge.w 0x5658                                      |         goto label_1;
                                                                 |     }
    0x000057e6 rsbs r0, r4, 0                                    |     r0 = r4 - ;
    0x000057e8 blx 0x1b18                                        |     system (r0)
    0x000057ec ldr r1, [pc, 0x244]                               |     
    0x000057ee mov r3, r0                                        |     r3 = r0;
    0x000057f0 mov r2, r8                                        |     r2 = r8;
    0x000057f2 movs r0, 3                                        |     r0 = 3;
    0x000057f4 add r1, pc                                        |     r1 = 0xb22c;
    0x000057f6 bl 0x85e4                                         |     fcn_000085e4 (r0);
    0x000057fa ldr r3, [sp, 0x10]                                |     r3 = var_10h;
    0x000057fc ldr r0, [r3, -0xc]                                |     r0 = *((r3 - 0xc));
    0x000057fe lsrs r4, r1, 0x10                                 |     r4 = r1 >> 0x10;
    0x00005800 bl 0xcd5c                                         |     fcn_0000cd5c (r0);
    0x00005804 b 0x565a                                          |     goto label_2;
                                                                 | label_27:
    0x00005806 mov r1, r4                                        |     r1 = r4;
    0x00005808 ldr r4, [sp, 0x20]                                |     r4 = var_20h;
    0x0000580a add.w fp, r6, 1                                   |     
    0x0000580e subs r7, r5, r6                                   |     r7 = r5 - r6;
    0x00005810 add.w r3, r8, fp                                  |     r3 = r8 + fp;
    0x00005814 mov r2, r6                                        |     r2 = r6;
    0x00005816 mov r0, r4                                        |     r0 = r4;
    0x00005818 subs r7, 1                                        |     r7--;
    0x0000581a str r3, [sp, 0x14]                                |     var_14h = r3;
    0x0000581c blx 0x1da4                                        |     r0 = fcn_00001da4 ();
    0x0000581e pkhbt r8, r2, r0, lsl 8                           |     __asm ("pkhbt r8, r2, r0, lsl 8");
                                                                 |     if (r7 == 1) {
    0x00005822 beq.w 0x571c                                      |         goto label_3;
                                                                 |     }
                                                                 | label_28:
    0x00005826 movs r3, 0                                        |     r3 = 0;
    0x00005828 mov r6, r3                                        |     r6 = r3;
    0x0000582a str r3, [sp, 0x18]                                |     var_18h = r3;
    0x0000582c b 0x5728                                          |     goto label_4;
                                                                 | label_30:
    0x0000582e mov r0, r8                                        |     r0 = r8;
    0x00005830 mov r2, r6                                        |     r2 = r6;
    0x00005832 mov r1, fp                                        |     r1 = fp;
    0x00005834 blx 0x19f8                                        |     r0 = uname ();
    0x00005838 cmp r0, 0                                         |     
                                                                 |     if (r0 != 0) {
    0x0000583a bne 0x574a                                        |         goto label_5;
                                                                 |     }
    0x0000583c ldr.w sl, [sp, 0xc]                               |     sl = var_ch;
    0x00005840 ldr.w r8, [sp, 0x1c]                              |     r8 = var_1ch;
    0x00005842 strh r4, [r3]                                     |     *(r3) = r4;
                                                                 | label_8:
    0x00005844 ldr r1, [pc, 0x1f0]                               |     
    0x00005846 mov r2, r8                                        |     r2 = r8;
    0x00005848 ldr.w r3, [sl, 4]                                 |     r3 = *((sl + 4));
    0x0000584c movs r0, 7                                        |     r0 = 7;
    0x0000584e movs r4, 0                                        |     r4 = 0;
    0x00005850 add r1, pc                                        |     r1 = 0xb28c;
    0x00005852 bl 0x85e4                                         |     fcn_000085e4 (r0);
    0x00005856 b 0x565a                                          |     goto label_2;
                                                                 | label_31:
    0x00005858 ldr.w sl, [sp, 0xc]                               |     sl = var_ch;
    0x0000585c ldr.w r8, [sp, 0x1c]                              |     r8 = var_1ch;
                                                                 | label_29:
    0x00005860 ldr r3, [sp, 0x28]                                |     r3 = var_28h;
    0x00005862 ldr r4, [r3, 0x10]                                |     r4 = *((r3 + 0x10));
    0x00005864 cmp r4, 0                                         |     
                                                                 |     if (r4 == 0) {
    0x00005866 beq.w 0x59ea                                      |         goto label_33;
                                                                 |     }
    0x0000586a ldr r3, [pc, 0x1d0]                               |     
    0x0000586c movs r5, 0                                        |     r5 = 0;
    0x0000586e ldr r2, [pc, 0x1d0]                               |     
    0x00005870 ldr.w fp, [sp, 0x20]                              |     fp = var_20h;
    0x00005874 add r3, pc                                        |     r3 = 0xb2b6;
    0x00005876 str.w sl, [sp, 0x40]                              |     __asm ("str.w sl, [var_40h]");
    0x0000587a str r3, [sp, 0x34]                                |     var_34h = r3;
    0x0000587c add r2, pc                                        |     r2 = 0xb2c2;
    0x0000587e ldr r3, [pc, 0x1c4]                               |     
    0x00005880 mov sb, r2                                        |     sb = r2;
    0x00005882 ldr.w sl, [sp, 0x2c]                              |     sl = var_2ch;
    0x00005886 str r7, [sp, 0x20]                                |     var_20h = r7;
    0x00005888 add r3, pc                                        |     r3 = 0xb2d2;
    0x0000588a str r6, [sp, 0x2c]                                |     var_2ch = r6;
    0x0000588c str r3, [sp, 0x30]                                |     var_30h = r3;
    0x0000588e mov.w r3, -1                                      |     r3 = -1;
    0x00005892 ldr r6, [sp, 0x3c]                                |     r6 = var_3ch;
    0x00005894 str r3, [sp, 0x24]                                |     var_24h = r3;
    0x00005896 str r3, [sp, 0xc]                                 |     var_ch = r3;
    0x00005898 str r3, [sp, 0x1c]                                |     var_1ch = r3;
    0x0000589a b 0x58f6                                          |     
                                                                 |     while (r3 != 1) {
    0x0000589c cmp r3, 2                                         |         
    0x0000589e it ne                                             |         
                                                                 |         if (r3 == 2) {
    0x000058a0 addne r2, r4, 0xc                                 |             r2 = r4 + 0xc;
                                                                 |         }
                                                                 |         if (r3 == 2) {
    0x000058a4 bne 0x58a8                                        |             
    0x000058a6 ldr r2, [sp, 0x30]                                |             r2 = var_30h;
                                                                 |         }
                                                                 | label_6:
    0x000058a8 mov r1, sb                                        |         r1 = sb;
    0x000058aa movs r0, 7                                        |         r0 = 7;
    0x000058ac bl 0x85e4                                         |         fcn_000085e4 (r0);
    0x000058b0 ldr r3, [r4, 4]                                   |         r3 = *((r4 + 4));
    0x000058b2 cmp r3, 1                                         |         
    0x000058b4 it eq                                             |         
                                                                 |         if (r3 != 1) {
    0x000058b6 streq r5, [sp, 0x24]                              |             var_24h = r5;
                                                                 |         }
                                                                 |         if (r3 != 1) {
    0x000058b8 beq 0x58f0                                        |             
    0x000058ba cmp r3, 2                                         |             
                                                                 |             if (r3 == 2) {
    0x000058bc beq 0x5936                                        |                 goto label_34;
                                                                 |             }
    0x000058be ldr r2, [r4, 8]                                   |             r2 = *((r4 + 8));
    0x000058c0 ldr r3, [sp, 0x20]                                |             r3 = var_20h;
    0x000058c2 cmp r3, r2                                        |             
                                                                 |             if (r3 >= r2) {
    0x000058c4 bls 0x58ce                                        |                 
    0x000058c6 ldr r3, [sp, 0x14]                                |                 r3 = var_14h;
    0x000058c8 ldrb r3, [r3, r2]                                 |                 r3 = *((r3 + r2));
    0x000058ca cmp r3, 0x2f                                      |                 
                                                                 |                 if (r3 == 0x2f) {
    0x000058cc beq 0x59a2                                        |                     goto label_35;
                                                                 |                 }
                                                                 |             }
                                                                 | label_10:
    0x000058ce ldr r3, [sp, 0x2c]                                |             r3 = var_2ch;
    0x000058d0 cmp r3, r2                                        |             
                                                                 |             if (r3 < r2) {
    0x000058d2 bls 0x58f0                                        |                 goto label_9;
                                                                 |             }
    0x000058d4 ldr r3, [sp, 0x18]                                |             r3 = var_18h;
    0x000058d6 ldrb r3, [r3, r2]                                 |             r3 = *((r3 + r2));
    0x000058d8 cmp r3, 0x2f                                      |             
                                                                 |             if (r3 != 0x2f) {
    0x000058da bne 0x58f0                                        |                 goto label_9;
                                                                 |             }
    0x000058dc ldr r1, [sp, 0x18]                                |             r1 = var_18h;
    0x000058de add.w r0, r4, 0xc                                 |             r0 = r4 + 0xc;
    0x000058e0 movs r4, r1                                       |             r4 = r1;
    0x000058e2 blx 0x19f8                                        |             uname ();
    0x000058e6 ldr r3, [sp, 0x1c]                                |             r3 = var_1ch;
    0x000058e8 cmp r0, 0                                         |             
    0x000058ea it eq                                             |             
                                                                 |             if (r0 != 0) {
    0x000058ec moveq r3, r5                                      |                 r3 = r5;
                                                                 |             }
    0x000058ee str r3, [sp, 0x1c]                                |             var_1ch = r3;
                                                                 |         }
                                                                 | label_9:
    0x000058f0 ldr r4, [r4]                                      |         r4 = *(r4);
    0x000058f2 adds r5, 1                                        |         r5++;
                                                                 |         if (r4 == 0) {
    0x000058f4 cbz r4, 0x5900                                    |             goto label_36;
                                                                 |         }
    0x000058f6 ldr r3, [r4, 4]                                   |         r3 = *((r4 + 4));
    0x000058f8 cmp r3, 1                                         |         
    0x000058fa bne 0x589c                                        |         
                                                                 |     }
    0x000058fc ldr r2, [sp, 0x34]                                |     r2 = var_34h;
    0x000058fe b 0x58a8                                          |     goto label_6;
                                                                 | label_36:
    0x00005900 ldr r3, [sp, 0xc]                                 |     r3 = var_ch;
    0x00005902 ldr.w sl, [sp, 0x40]                              |     sl = var_40h;
    0x00005906 adds r3, 1                                        |     r3++;
                                                                 |     if (r3 == 1) {
    0x00005908 beq 0x59ce                                        |         goto label_37;
                                                                 |     }
    0x0000590a ldr r2, [sp, 0x1c]                                |     r2 = var_1ch;
    0x0000590c ldr r1, [sp, 0x24]                                |     r1 = var_24h;
    0x0000590e mov r3, r2                                        |     r3 = r2;
    0x00005910 cmp.w r2, -1                                      |     
    0x00005914 it eq                                             |     
                                                                 |     if (r2 != -1) {
    0x00005916 moveq r3, r1                                      |         r3 = r1;
                                                                 |     }
    0x00005918 str r3, [sp, 0x1c]                                |     var_1ch = r3;
                                                                 | label_11:
    0x0000591a ldr r4, [sp, 0xc]                                 |     r4 = var_ch;
    0x0000591c movs r0, 7                                        |     r0 = 7;
    0x0000591e ldr r5, [sp, 0x1c]                                |     r5 = var_1ch;
    0x00005920 ldr r1, [pc, 0x124]                               |     
    0x00005922 ldr r2, [sp, 0x24]                                |     r2 = var_24h;
    0x00005924 mov r3, r5                                        |     r3 = r5;
    0x00005926 str r4, [sp]                                      |     *(sp) = r4;
    0x00005928 add r1, pc                                        |     r1 = 0xb374;
    0x0000592a bl 0x85e4                                         |     fcn_000085e4 (r0);
    0x0000592e cmp r5, r4                                        |     
                                                                 |     if (r5 < r4) {
    0x00005930 blt.w 0x577c                                      |         goto label_7;
                                                                 |     }
    0x00005934 b 0x5844                                          |     goto label_8;
                                                                 | label_34:
    0x00005936 ldr r3, [sp, 0x28]                                |     r3 = var_28h;
    0x00005938 ldr r7, [r3, 0x14]                                |     r7 = *((r3 + 0x14));
    0x0000593a cmp r7, 0                                         |     
                                                                 |     if (r7 == 0) {
                                                                 | label_14:
    0x0000593c beq 0x58f0                                        |         goto label_9;
                                                                 |     }
    0x0000593e invalid                                           |     
                                                                 | label_16:
    0x00005940 str r0, [sp, 0x110]                               |     var_110h = r0;
    0x00005942 mov sb, r8                                        |     sb = r8;
    0x00005944 ldr.w r8, [sp, 0x1c]                              |     r8 = var_1ch;
    0x00005948 str r4, [sp, 0x3c]                                |     var_3ch = r4;
                                                                 |     do {
    0x0000594a ldr r2, [r7, 4]                                   |         r2 = *((r7 + 4));
    0x0000594c add.w r4, r7, 8                                   |         r4 = r7 + 8;
    0x00005950 cmp r6, r2                                        |         
                                                                 |         if (r6 >= r2) {
    0x00005952 bls 0x5972                                        |             
    0x00005954 ldrb.w r0, [sb, r2]                               |             r0 = *((sb + r2));
    0x00005958 cmp r0, 0x2f                                      |             
                                                                 |             if (r0 != 0x2f) {
    0x0000595a bne 0x5972                                        |                 goto label_38;
                                                                 |             }
    0x0000595c mov r1, r4                                        |             r1 = r4;
    0x0000595e mov r0, sb                                        |             r0 = sb;
    0x00005960 str r2, [sp, 0x1c]                                |             var_1ch = r2;
    0x00005962 invalid                                           |             
                                                                 | label_17:
    0x00005964 strex fp, sb, [sl, 0xc]                           |             __asm ("strex fp, sb, [sl, 0xc]");
    0x00005968 ldr r2, [sp, 0x1c]                                |             r2 = var_1ch;
    0x0000596a cmp r0, 0                                         |             
                                                                 | label_20:
    0x0000596c it eq                                             |             
                                                                 |             if (r0 != 0) {
    0x0000596e moveq r3, r5                                      |                 r3 = r5;
                                                                 |             }
    0x00005970 str r3, [sp, 0xc]                                 |             var_ch = r3;
                                                                 |         }
                                                                 | label_38:
    0x00005972 cmp sl, r2                                        |         
                                                                 |         if (sl >= r2) {
                                                                 | label_21:
    0x00005974 bls 0x598c                                        |             
    0x00005976 invalid                                           |             
                                                                 | label_13:
    0x00005978 movs r2, r0                                       |             r2 = r0;
    0x0000597a cmp r0, 0x2f                                      |             
                                                                 |             if (r0 != 0x2f) {
                                                                 | label_15:
    0x0000597c bne 0x598c                                        |                 goto label_39;
                                                                 |             }
    0x0000597e mov r1, r4                                        |             r1 = r4;
    0x00005980 mov r0, fp                                        |             r0 = fp;
    0x00005982 blx 0x19f8                                        |             r0 = uname ();
    0x00005986 cmp r0, 0                                         |             
    0x00005988 it eq                                             |             
                                                                 |             if (r0 == 0) {
    0x0000598a moveq r8, r5                                      |                 r8 = r5;
                                                                 |                 goto label_39;
                                                                 |             }
                                                                 |         }
                                                                 | label_39:
    0x0000598c ldr r7, [r7]                                      |         r7 = *(r7);
    0x0000598e adds r5, 1                                        |         r5++;
                                                                 | label_19:
    0x00005990 cmp r7, 0                                         |         
    0x00005992 bne 0x594a                                        |         
                                                                 |     } while (r7 != 0);
    0x00005994 str.w r8, [sp, 0x1c]                              |     __asm ("str.w r8, [var_1ch]");
    0x00005998 mov r8, sb                                        |     r8 = sb;
    0x0000599a ldr r4, [sp, 0x3c]                                |     r4 = var_3ch;
    0x0000599c ldr.w sb, [sp, 0x44]                              |     sb = var_44h;
    0x000059a0 b 0x58f0                                          |     goto label_9;
                                                                 | label_35:
    0x000059a2 ldr r1, [sp, 0x14]                                |     r1 = var_14h;
    0x000059a4 add.w r0, r4, 0xc                                 |     r0 = r4 + 0xc;
    0x000059a8 str r2, [sp, 0x3c]                                |     var_3ch = r2;
    0x000059aa blx 0x19f8                                        |     uname ();
    0x000059ae ldr r2, [sp, 0x3c]                                |     r2 = var_3ch;
    0x000059b0 cmp r0, 0                                         |     
                                                                 |     if (r0 != 0) {
    0x000059b2 bne 0x58ce                                        |         goto label_10;
                                                                 |     }
                                                                 | label_12:
    0x000059b4 str r5, [sp, 0xc]                                 |     var_ch = r5;
    0x000059b6 b 0x58f0                                          |     goto label_9;
                                                                 | label_32:
    0x000059b8 rsbs r0, r4, 0                                    |     r0 = r4 - ;
    0x000059ba blx 0x1b18                                        |     system (r0)
    0x000059be ldr r1, [pc, 0x8c]                                |     
    0x000059c0 mov r3, r0                                        |     r3 = r0;
    0x000059c2 mov r2, r8                                        |     r2 = r8;
    0x000059c4 movs r0, 3                                        |     r0 = 3;
    0x000059c6 add r1, pc                                        |     r1 = 0xb418;
                                                                 | label_18:
    0x000059c8 bl 0x85e4                                         |     fcn_000085e4 (r0);
    0x000059cc b 0x565a                                          |     goto label_2;
                                                                 | label_37:
    0x000059ce ldr r3, [sp, 0x1c]                                |     r3 = var_1ch;
    0x000059d0 adds r3, 1                                        |     r3++;
    0x000059d2 ldr r3, [sp, 0x24]                                |     r3 = var_24h;
    0x000059d4 it ne                                             |     
                                                                 |     if (r3 != 1) {
    0x000059d6 strne r3, [sp, 0xc]                               |         var_ch = r3;
                                                                 |         goto label_40;
                                                                 |     }
                                                                 |     if (r3 != 1) {
                                                                 | label_40:
    0x000059d8 bne 0x591a                                        |         goto label_11;
                                                                 |     }
    0x000059da ldr r1, [pc, 0x74]                                |     r1 = *(0x5a52);
                                                                 | label_23:
    0x000059dc mov r2, r3                                        |     r2 = r3;
    0x000059de movs r0, 7                                        |     r0 = 7;
    0x000059e0 str r3, [sp]                                      |     *(sp) = r3;
    0x000059e2 add r1, pc                                        |     r1 += pc;
    0x000059e4 bl 0x85e4                                         |     fcn_000085e4 (r0);
    0x000059e8 b 0x5844                                          |     goto label_8;
                                                                 | label_33:
    0x000059ea ldr r1, [pc, 0x68]                                |     
    0x000059ec mov.w r3, -1                                      |     r3 = -1;
    0x000059f0 mov r2, r3                                        |     r2 = r3;
    0x000059f2 movs r0, 7                                        |     r0 = 7;
    0x000059f4 str r3, [sp]                                      |     *(sp) = r3;
    0x000059f6 add r1, pc                                        |     r1 = 0xb450;
    0x000059f8 bl 0x85e4                                         |     fcn_000085e4 (r0);
    0x000059fc b 0x5844                                          |     goto label_8;
                                                                 | label_25:
    0x000059fe ldr r1, [pc, 0x58]                                |     r1 = *(0x5a5a);
                                                                 | label_22:
    0x00005a00 mov r2, r8                                        |     r2 = r8;
    0x00005a02 movs r0, 3                                        |     r0 = 3;
    0x00005a04 mvn r4, 0x15                                      |     r4 = ~0x15;
    0x00005a08 add r1, pc                                        |     r1 += pc;
    0x00005a0a bl 0x85e4                                         |     fcn_000085e4 (r0);
    0x00005a0e b 0x565a                                          |     goto label_2;
                                                                 | label_24:
    0x00005a10 blx 0x1a1c                                        |     stat64 ();
    0x00005a14 lsls r6, r2, 0x1f                                 |     r6 = r2 << 0x1f;
    0x00005a16 movs r2, r0                                       |     r2 = r0;
    0x00005a18 lsls r4, r7, 6                                    |     r4 = r7 << 6;
    0x00005a1a movs r0, r0                                       |     
    0x00005a1c lsls r4, r6, 0x1e                                 |     r4 = r6 << 0x1e;
    0x00005a1e movs r2, r0                                       |     r2 = r0;
                                                                 |     if (r2 < r0) {
    0x00005a20 blt 0x59b4                                        |         goto label_12;
                                                                 |     }
    0x00005a22 movs r0, r0                                       |     
                                                                 |     if (r0 < r0) {
    0x00005a24 blt 0x5978                                        |         goto label_13;
                                                                 |     }
    0x00005a26 movs r0, r0                                       |     
                                                                 |     if (r0 < r0) {
    0x00005a28 blt 0x5ae0                                        |         void (*0x5ae0)() ();
                                                                 |     }
    0x00005a2a movs r0, r0                                       |     
                                                                 |     if (r0 < r0) {
    0x00005a2c blt 0x593c                                        |         goto label_14;
                                                                 |     }
    0x00005a2e movs r0, r0                                       |     
                                                                 |     if (r0 < r0) {
    0x00005a30 blt 0x597c                                        |         goto label_15;
                                                                 |     }
    0x00005a32 movs r0, r0                                       |     
                                                                 |     if (r0 < r0) {
    0x00005a34 blt 0x5940                                        |         goto label_16;
                                                                 |     }
    0x00005a36 movs r0, r0                                       |     
                                                                 |     if (r0 >= r0) {
    0x00005a38 bge 0x5964                                        |         goto label_17;
                                                                 |     }
    0x00005a3a movs r0, r0                                       |     
                                                                 |     if (r0 < r0) {
    0x00005a3c bls 0x59c8                                        |         goto label_18;
                                                                 |     }
    0x00005a3e movs r0, r0                                       |     
                                                                 |     if (r0 >= r0) {
    0x00005a40 bge 0x5aa4                                        |         void (*0x5aa4)() ();
                                                                 |     }
    0x00005a42 movs r0, r0                                       |     
                                                                 |     if (r0 < r0) {
    0x00005a44 bls 0x5990                                        |         goto label_19;
                                                                 |     }
    0x00005a46 movs r0, r0                                       |     
                                                                 |     if (r0 < r0) {
    0x00005a48 bls 0x596c                                        |         goto label_20;
                                                                 |     }
    0x00005a4a movs r0, r0                                       |     
                                                                 |     if (r0 < r0) {
    0x00005a4c bls 0x5974                                        |         goto label_21;
                                                                 |     }
    0x00005a4e movs r0, r0                                       |     
                                                                 |     if (r0 > r0) {
    0x00005a50 bhi 0x5a00                                        |         goto label_22;
                                                                 |     }
    0x00005a52 movs r0, r0                                       |     
                                                                 |     if (r0 > r0) {
    0x00005a54 bhi 0x59dc                                        |         goto label_23;
                                                                 |     }
    0x00005a56 movs r0, r0                                       |     
                                                                 |     if (r0 > r0) {
    0x00005a58 bhi 0x5ad4                                        |         void (*0x5ad4)() ();
                                                                 |     }
    0x00005a5a movs r0, r0                                       |     
                                                                 | }
    ; assembly                                                   | /* r2dec pseudo code output */
                                                                 | /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/bin/kmod @ 0x5a5c */
                                                                 | #include <stdint.h>
                                                                 |  
    ; (fcn) fcn.00005a5c ()                                      | void fcn_00005a5c (int16_t arg_12h, int16_t arg_13h, int16_t arg_14h, int16_t arg_15h, int16_t arg_108h, int16_t arg_10ch, int16_t arg_1a0h, int16_t arg_320h, int16_t arg_b20h, void * ptr, int16_t arg_1320h, char * * endptr, int16_t arg1, int16_t arg2, int16_t arg3, int16_t arg4) {
                                                                 |     int16_t var_0h_3;
                                                                 |     int32_t var_0h_4;
                                                                 |     int8_t var_8h_3;
                                                                 |     int16_t var_ch_2;
                                                                 |     int16_t var_0h_2;
                                                                 |     int16_t var_4h_2;
                                                                 |     int16_t var_8h_2;
                                                                 |     int16_t var_ch;
                                                                 |     int16_t var_10h;
                                                                 |     int16_t var_14h_2;
                                                                 |     char * var_18h;
                                                                 |     int16_t var_1ch;
                                                                 |     FILE * stream;
                                                                 |     int16_t var_24h;
                                                                 |     int16_t var_28h;
                                                                 |     int16_t var_2ch;
                                                                 |     int16_t var_30h;
                                                                 |     int16_t var_34h;
                                                                 |     int16_t var_38h;
                                                                 |     int16_t var_3ch;
                                                                 |     int16_t var_40h;
                                                                 |     int16_t var_44h;
                                                                 |     int16_t var_0h;
                                                                 |     int16_t var_4h;
                                                                 |     int16_t var_8h;
                                                                 |     int16_t var_54h;
                                                                 |     int16_t var_58h;
                                                                 |     int16_t var_14h;
                                                                 |     int16_t var_60h;
                                                                 |     int16_t var_64h;
                                                                 |     int16_t var_6ch;
                                                                 |     int16_t var_70h;
                                                                 |     int16_t var_a0h;
                                                                 |     int16_t var_84h;
                                                                 |     r0 = arg1;
                                                                 |     r1 = arg2;
                                                                 |     r2 = arg3;
                                                                 |     r3 = arg4;
    0x00005a5c push.w {r4, r5, r6, r7, r8, sb, sl, fp, lr}       |     
    0x00005a60 sub sp, 0x8c                                      |     
    0x00005a62 str r2, [sp]                                      |     *(sp) = r2;
    0x00005a64 mov sl, r3                                        |     sl = r3;
    0x00005a66 mov r4, r0                                        |     r4 = r0;
    0x00005a68 mov r0, r1                                        |     r0 = r1;
    0x00005a6a ldr r2, [pc, 0x1b4]                               |     
    0x00005a6c mov r5, r1                                        |     r5 = r1;
    0x00005a6e ldr r3, [pc, 0x1b4]                               |     r3 = *(0x5c26);
    0x00005a70 movs r7, 0                                        |     r7 = 0;
    0x00005a72 str r4, [sp, 8]                                   |     var_8h = r4;
    0x00005a74 add r2, pc                                        |     r2 = 0xb69a;
    0x00005a76 ldr.w r8, [pc, 0x1b0]                             |     
    0x00005a7a ldr r3, [r2, r3]                                  |     
    0x00005a7c ldr.w sb, [pc, 0x1ac]                             |     
    0x00005a80 add r8, pc                                        |     r8 = 0xb6ae;
    0x00005a82 ldr r3, [r3]                                      |     r3 = *(0xb69a);
    0x00005a84 str r3, [sp, 0x84]                                |     var_84h = r3;
    0x00005a86 mov.w r3, 0                                       |     r3 = 0;
    0x00005a8a blx 0x1d40                                        |     renameat ();
    0x00005a8e ldr r3, [pc, 0x1a0]                               |     
    0x00005a90 add sb, pc                                        |     sb = 0xb6c0;
    0x00005a92 str r0, [sp, 4]                                   |     var_4h = r0;
    0x00005a94 add r3, pc                                        |     r3 = 0xb6ca;
    0x00005a96 str r3, [sp, 0x14]                                |     var_14h = r3;
                                                                 |     do {
                                                                 | label_0:
    0x00005a98 mov r0, r5                                        |         r0 = r5;
    0x00005a9a blx 0x1cf4                                        |         r0 = fcn_00001cf4 ();
    0x00005a9e mov fp, r0                                        |         
    0x00005aa0 cmp r0, 0                                         |         
                                                                 |         if (r0 == 0) {
    0x00005aa2 beq 0x5b84                                        |             goto label_61;
                                                                 |         }
                                                                 | label_1:
    0x00005aa4 ldrb.w r2, [fp, 0x13]                             |         r2 = *(arg_13h);
    0x00005aa8 add.w r4, fp, 0x13                                |         r4 += arg_13h;
    0x00005aac cmp r2, 0x2e                                      |         
                                                                 |         if (r2 == 0x2e) {
    0x00005aae beq 0x5ba0                                        |             goto label_62;
                                                                 |         }
                                                                 | label_2:
    0x00005ab0 mov r1, r8                                        |         r1 = r8;
    0x00005ab2 mov r0, r4                                        |         r0 = r4;
    0x00005ab4 blx 0x1924                                        |         r0 = fcn_00001924 ();
    0x00005ab8 cmp r0, 0                                         |         
    0x00005aba beq 0x5a98                                        |         
                                                                 |     } while (r0 == 0);
    0x00005abc mov r1, sb                                        |     r1 = sb;
    0x00005abe mov r0, r4                                        |     r0 = r4;
    0x00005ac0 blx 0x1924                                        |     r0 = fcn_00001924 ();
    0x00005ac4 cmp r0, 0                                         |     
                                                                 |     if (r0 == 0) {
    0x00005ac6 beq 0x5a98                                        |         goto label_0;
                                                                 |     }
    0x00005ac8 mov r0, r4                                        |     r0 = r4;
    0x00005aca blx 0x1bb0                                        |     fcn_00001bb0 ();
    0x00005ace ldr r3, [sp]                                      |     r3 = *(sp);
    0x00005ad0 mov r6, r0                                        |     r6 = r0;
    0x00005ad2 mov r0, sl                                        |     r0 = sl;
    0x00005ad4 adds r3, r6, r3                                   |     r3 = r6 + r3;
    0x00005ad6 adds r1, r3, 2                                    |     r1 = r3 + 2;
    0x00005ad8 str r3, [sp, 0x10]                                |     var_58h = r3;
    0x00005ada bl 0x925c                                         |     r0 = fcn_0000925c (r0, r1);
    0x00005ade cmp r0, 0                                         |     
                                                                 |     if (r0 < 0) {
    0x00005ae0 blt 0x5bca                                        |         goto label_63;
                                                                 |     }
    0x00005ae2 ldr.w r3, [sl]                                    |     r3 = *(sl);
    0x00005ae6 adds r2, r6, 1                                    |     r2 = r6 + 1;
    0x00005ae8 ldr r0, [sp]                                      |     r0 = *(sp);
    0x00005aea mov r1, r4                                        |     r1 = r4;
    0x00005aec str r3, [sp, 0xc]                                 |     var_54h = r3;
    0x00005aee adds r0, r3, r0                                   |     r0 = r3 + r0;
    0x00005af0 blx 0x19c8                                        |     mmap64 ();
    0x00005af4 ldrb.w r3, [fp, 0x12]                             |     r3 = *(arg_12h);
    0x00005af8 cmp r3, 8                                         |     
                                                                 |     if (r3 == 8) {
    0x00005afa beq 0x5bba                                        |         goto label_64;
                                                                 |     }
    0x00005afc cmp r3, 4                                         |     
                                                                 |     if (r3 != 4) {
    0x00005afe beq 0x5b22                                        |         
    0x00005b00 ldr r0, [sp, 4]                                   |         r0 = var_4h;
    0x00005b02 movs r3, 0                                        |         r3 = 0;
    0x00005b04 add r2, sp, 0x18                                  |         r2 += var_60h;
    0x00005b06 mov r1, r4                                        |         r1 = r4;
    0x00005b08 blx 0x1adc                                        |         r0 = asprintf_chk ();
    0x00005b0c cmp r0, 0                                         |         
                                                                 |         if (r0 < 0) {
    0x00005b0e blt 0x5bf8                                        |             goto label_65;
                                                                 |         }
    0x00005b10 ldr r3, [sp, 0x28]                                |         r3 = var_70h;
    0x00005b12 and r3, r3, 0xf000                                |         r3 &= 0xf000;
    0x00005b16 cmp.w r3, 0x8000                                  |         
                                                                 |         if (r3 == 0x8000) {
    0x00005b1a beq 0x5bba                                        |             goto label_64;
                                                                 |         }
    0x00005b1c cmp.w r3, 0x4000                                  |         
                                                                 |         if (r3 != 0x4000) {
    0x00005b20 bne 0x5bda                                        |             goto label_66;
                                                                 |         }
                                                                 |     }
    0x00005b22 ldr r0, [sp, 4]                                   |     r0 = var_4h;
    0x00005b24 movs r2, 0                                        |     r2 = 0;
    0x00005b26 mov r1, r4                                        |     r1 = r4;
    0x00005b28 blx 0x1bd8                                        |     r0 = sprintf_chk ();
    0x00005b2c subs r6, r0, 0                                    |     r6 = r0 - 0;
                                                                 |     if (r6 < r0) {
    0x00005b2e blt 0x5be8                                        |         goto label_67;
                                                                 |     }
    0x00005b30 blx 0x1d00                                        |     r0 = fcn_00001d00 ();
    0x00005b34 mov r4, r0                                        |     r4 = r0;
    0x00005b36 cmp r0, 0                                         |     
                                                                 |     if (r0 == 0) {
    0x00005b38 beq 0x5c08                                        |         goto label_68;
                                                                 |     }
    0x00005b3a ldr r1, [sp, 0x10]                                |     r1 = var_58h;
    0x00005b3c movs r3, 0x2f                                     |     r3 = 0x2f;
    0x00005b3e ldr r0, [sp, 0xc]                                 |     r0 = var_54h;
    0x00005b40 adds r2, r1, 1                                    |     r2 = r1 + 1;
    0x00005b42 strb r3, [r0, r1]                                 |     *((r0 + r1)) = r3;
    0x00005b44 movs r3, 0                                        |     r3 = 0;
    0x00005b46 strb r3, [r0, r2]                                 |     *((r0 + r2)) = r3;
    0x00005b48 mov r1, r4                                        |     r1 = r4;
    0x00005b4a ldr r0, [sp, 8]                                   |     r0 = var_8h;
    0x00005b4c mov r3, sl                                        |     r3 = sl;
    0x00005b4e bl 0x5a5c                                         |     r0 = fcn_00005a5c (r0, r1, r2, r3, r4, r5, r6);
    0x00005b52 mov r7, r0                                        |     r7 = r0;
    0x00005b54 mov r0, r4                                        |     r0 = r4;
    0x00005b56 blx 0x1dc8                                        |     fcn_00001dc8 ();
                                                                 | label_3:
    0x00005b5a cmp r7, 0                                         |     
                                                                 |     if (r7 >= 0) {
    0x00005b5c bge 0x5a98                                        |         goto label_0;
                                                                 |     }
    0x00005b5e ldrd r4, r3, [sp, 0xc]                            |     __asm ("ldrd r4, r3, [var_54h]");
    0x00005b62 rsbs r0, r7, 0                                    |     r0 = r7 - ;
    0x00005b64 movs r7, 0                                        |     r7 = 0;
    0x00005b66 strb r7, [r4, r3]                                 |     *((r4 + r3)) = r7;
                                                                 | label_4:
    0x00005b68 blx 0x1b18                                        |     system (r0)
    0x00005b6c ldr r1, [sp, 0x14]                                |     r1 = var_14h;
    0x00005b6e mov r3, r0                                        |     r3 = r0;
    0x00005b70 mov r2, r4                                        |     r2 = r4;
    0x00005b72 movs r0, 3                                        |     r0 = 3;
    0x00005b74 bl 0x85e4                                         |     fcn_000085e4 (r0);
    0x00005b78 mov r0, r5                                        |     r0 = r5;
    0x00005b7a blx 0x1cf4                                        |     r0 = fcn_00001cf4 ();
    0x00005b7e mov fp, r0                                        |     
    0x00005b80 cmp r0, 0                                         |     
                                                                 |     if (r0 != 0) {
    0x00005b82 bne 0x5aa4                                        |         goto label_1;
                                                                 |     }
                                                                 | label_61:
    0x00005b84 ldr r2, [pc, 0xac]                                |     
    0x00005b86 ldr r3, [pc, 0x9c]                                |     r3 = *(0x5c26);
    0x00005b88 add r2, pc                                        |     r2 = 0xb7c0;
    0x00005b8a ldr r3, [r2, r3]                                  |     r3 = *(0xb7c0);
    0x00005b8c ldr r2, [r3]                                      |     r2 = *(0xb7c0);
    0x00005b8e ldr r3, [sp, 0x84]                                |     r3 = var_84h;
    0x00005b90 eors r2, r3                                       |     r2 ^= r3;
    0x00005b92 mov.w r3, 0                                       |     r3 = 0;
                                                                 |     if (r2 != r3) {
    0x00005b96 bne 0x5c1c                                        |         goto label_69;
                                                                 |     }
    0x00005b98 mov r0, r7                                        |     r0 = r7;
    0x00005b9a add sp, 0x8c                                      |     
    0x00005b9c pop.w {r4, r5, r6, r7, r8, sb, sl, fp, pc}        |     
                                                                 | label_62:
    0x00005ba0 ldrb.w r2, [fp, 0x14]                             |     r2 = *(arg_14h);
    0x00005ba4 cmp r2, 0                                         |     
                                                                 |     if (r2 == 0) {
    0x00005ba6 beq.w 0x5a98                                      |         goto label_0;
                                                                 |     }
    0x00005baa cmp r2, 0x2e                                      |     
                                                                 |     if (r2 != 0x2e) {
    0x00005bac bne 0x5ab0                                        |         goto label_2;
                                                                 |     }
    0x00005bae ldrb.w r2, [fp, 0x15]                             |     r2 = *(arg_15h);
    0x00005bb2 cmp r2, 0                                         |     
                                                                 |     if (r2 != 0) {
    0x00005bb4 bne.w 0x5ab0                                      |         goto label_2;
                                                                 |     }
    0x00005bb8 b 0x5a98                                          |     goto label_0;
                                                                 | label_64:
    0x00005bba ldr r3, [sp, 0xc]                                 |     r3 = var_54h;
    0x00005bbc mov r2, r6                                        |     r2 = r6;
    0x00005bbe ldr r1, [sp]                                      |     r1 = *(sp);
    0x00005bc0 ldr r0, [sp, 8]                                   |     r0 = var_8h;
    0x00005bc2 bl 0x5624                                         |     r0 = fcn_00005624 (r0, r1, r2, r3, r4);
    0x00005bc6 mov r7, r0                                        |     r7 = r0;
                                                                 |     do {
    0x00005bc8 b 0x5b5a                                          |         goto label_3;
                                                                 | label_63:
    0x00005bca ldr r1, [pc, 0x6c]                                |         
    0x00005bcc movs r0, 3                                        |         r0 = 3;
    0x00005bce mvn r7, 0xb                                       |         r7 = ~0xb;
    0x00005bd2 add r1, pc                                        |         r1 = 0xb810;
    0x00005bd4 bl 0x85e4                                         |         fcn_000085e4 (r0);
    0x00005bd8 b 0x5a98                                          |         goto label_0;
                                                                 | label_66:
    0x00005bda ldr r1, [pc, 0x60]                                |         
    0x00005bdc movs r0, 3                                        |         r0 = 3;
    0x00005bde ldr r2, [sp, 0xc]                                 |         r2 = var_54h;
    0x00005be0 add r1, pc                                        |         r1 = 0xb822;
    0x00005be2 bl 0x85e4                                         |         fcn_000085e4 (r0);
    0x00005be6 b 0x5a98                                          |         goto label_0;
                                                                 | label_67:
    0x00005be8 ldr r1, [pc, 0x54]                                |         
    0x00005bea mov r3, r4                                        |         r3 = r4;
    0x00005bec ldr r2, [sp, 4]                                   |         r2 = var_4h;
    0x00005bee movs r0, 3                                        |         r0 = 3;
    0x00005bf0 add r1, pc                                        |         r1 = 0xb834;
    0x00005bf2 bl 0x85e4                                         |         fcn_000085e4 (r0);
    0x00005bf6 b 0x5a98                                          |         goto label_0;
                                                                 | label_65:
    0x00005bf8 ldr r1, [pc, 0x48]                                |         
    0x00005bfa mov r3, r4                                        |         r3 = r4;
    0x00005bfc ldr r2, [sp, 4]                                   |         r2 = var_4h;
    0x00005bfe movs r0, 3                                        |         r0 = 3;
    0x00005c00 add r1, pc                                        |         r1 = 0xb848;
    0x00005c02 bl 0x85e4                                         |         fcn_000085e4 (r0);
    0x00005c04 stc2l p7, c14, [pc], 0x11c                        |         __asm ("stc2l p7, c14, [pc], 0x11c");
                                                                 | label_68:
    0x00005c08 ldr r1, [pc, 0x3c]                                |         
    0x00005c0a mov r2, r6                                        |         r2 = r6;
    0x00005c0c movs r0, 3                                        |         r0 = 3;
    0x00005c0e add r1, pc                                        |         r1 = 0xb85a;
    0x00005c10 bl 0x85e4                                         |         fcn_000085e4 (r0);
    0x00005c14 mov r0, r6                                        |         r0 = r6;
    0x00005c16 blx 0x1dbc                                        |         fcn_00001dbc ();
    0x00005c1a b 0x5a98                                          |         goto label_0;
                                                                 | label_69:
    0x00005c1c blx 0x1a1c                                        |         stat64 ();
                                                                 | label_5:
    0x00005c20 lsls r4, r4, 0xe                                  |         r4 <<= 0xe;
    0x00005c22 movs r2, r0                                       |         r2 = r0;
    0x00005c24 lsls r4, r7, 6                                    |         r4 = r7 << 6;
    0x00005c26 movs r0, r0                                       |         
                                                                 |         if (r0 <= r0) {
    0x00005c28 blo 0x5cb4                                        |             goto label_70;
                                                                 |         }
    0x00005c2a movs r0, r0                                       |         
                                                                 |         if (r0 <= r0) {
    0x00005c2c blo 0x5ca8                                        |             goto label_71;
                                                                 |         }
    0x00005c2e movs r0, r0                                       |         
                                                                 |         if (r0 >= r0) {
    0x00005c30 bmi 0x5c34                                        |             
    0x00005c32 movs r0, r0                                       |             
                                                                 |         }
    0x00005c34 lsls r0, r2, 0xa                                  |         r0 = r2 << 0xa;
    0x00005c36 movs r2, r0                                       |         r2 = r0;
    0x00005c38 bvc 0x5bc8                                        |         __asm ("bvc 0x5bc8");
                                                                 |     } while (1);
    0x00005c3a movs r0, r0                                       |     
                                                                 |     if (r0 >= r0) {
    0x00005c3c bhs 0x5b68                                        |         goto label_4;
                                                                 |     }
    0x00005c3e movs r0, r0                                       |     
                                                                 |     if (r0 >= r0) {
    0x00005c40 bhs 0x5cac                                        |         goto label_72;
                                                                 |     }
    0x00005c42 movs r0, r0                                       |     
                                                                 |     if (r0 != r0) {
    0x00005c44 bne 0x5c20                                        |         goto label_5;
                                                                 |     }
    0x00005c46 movs r0, r0                                       |     
                                                                 |     if (r0 < r0) {
    0x00005c48 bhs 0x5cb8                                        |         
    0x00005c4a movs r0, r0                                       |         
    0x00005c4c push.w {r4, r5, r6, r7, r8, sb, lr}               |         
    0x00005c50 mov r5, r1                                        |         r5 = r1;
    0x00005c52 ldr r1, [pc, 0xb0]                                |         
    0x00005c54 sub sp, 0x114                                     |         
    0x00005c56 mov r4, sp                                        |         r4 = sp;
    0x00005c58 mov.w r2, 0x100                                   |         r2 = 0x100;
    0x00005c5c ldr r3, [pc, 0xa8]                                |         r3 = *(0x5d08);
    0x00005c5e mov r8, r0                                        |         r8 = r0;
    0x00005c60 add r1, pc                                        |         r1 = 0xb96a;
    0x00005c62 mov.w sb, 0                                       |         sb = 0;
    0x00005c66 mov r0, r5                                        |         r0 = r5;
    0x00005c68 ldr r3, [r1, r3]                                  |         
    0x00005c6a ldr r3, [r3]                                      |         r3 = *(0xb96a);
    0x00005c6c str r3, [sp, 0x10c]                               |         var_24h = r3;
    0x00005c6e mov.w r3, 0                                       |         r3 = 0;
    0x00005c72 add r3, sp, 0xc                                   |         r3 += var_ch_2;
    0x00005c74 strd r3, r2, [r4]                                 |         __asm ("strd r3, r2, [r4]");
    0x00005c78 strb.w sb, [r4, 8]                                |         var_8h_3 = sb;
    0x00005c7c blx 0x1ab8                                        |         r0 = fnmatch ();
                                                                 |         if (r0 == 0) {
    0x00005c80 cbz r0, 0x5cea                                    |             goto label_73;
                                                                 |         }
    0x00005c82 mov r6, r0                                        |         r6 = r0;
    0x00005c84 mov r0, r5                                        |         r0 = r5;
    0x00005c86 blx 0x1bb0                                        |         r0 = fcn_00001bb0 ();
    0x00005c8a mov r7, r0                                        |         r7 = r0;
    0x00005c8c mov r0, r4                                        |         r0 = r4;
    0x00005c8e adds r1, r7, 2                                    |         r1 = r7 + 2;
    0x00005c90 bl 0x925c                                         |         r0 = fcn_0000925c (r0, r1);
    0x00005c94 cmp r0, 0                                         |         
    0x00005c96 it lt                                             |         
                                                                 |         if (r0 >= 0) {
    0x00005c98 mvnlt r5, 0xb                                     |             r5 = ~0xb;
                                                                 |         }
                                                                 |         if (r0 < 0) {
    0x00005c9c blt 0x5cc2                                        |             goto label_74;
                                                                 |         }
    0x00005c9e ldr r3, [r4]                                      |         r3 = *(r4);
    0x00005ca0 mov r1, r5                                        |         r1 = r5;
    0x00005ca2 mov r2, r7                                        |         r2 = r7;
    0x00005ca4 mov r0, r3                                        |         r0 = r3;
    0x00005ca6 blx 0x19c8                                        |         mmap64 ();
                                                                 | label_71:
    0x00005ca8 mrc p12, 4, r1, c0, c10, 3                        |         __asm ("mrc p12, 4, r1, c0, c10, 3");
                                                                 | label_72:
    0x00005cac mov r3, r0                                        |         r3 = r0;
    0x00005cae movs r1, 0x2f                                     |         r1 = 0x2f;
    0x00005cb0 mov r0, r8                                        |         r0 = r8;
    0x00005cb2 strb r1, [r3, r7]                                 |         *((r3 + r7)) = r1;
                                                                 | label_70:
    0x00005cb4 mov r1, r6                                        |         r1 = r6;
    0x00005cb6 invalid                                           |         
                                                                 |     }
    0x00005cb8 str r0, [sp, 8]                                   |     var_8h = r0;
    0x00005cba mov r3, r4                                        |     r3 = r4;
    0x00005cbc bl 0x5a5c                                         |     r0 = fcn_00005a5c (r0, r1, r2, r3, r4, r5, r6);
    0x00005cc0 mov r5, r0                                        |     r5 = r0;
                                                                 | label_74:
    0x00005cc2 mov r0, r6                                        |     r0 = r6;
    0x00005cc4 blx 0x1dc8                                        |     fcn_00001dc8 ();
                                                                 |     do {
                                                                 | label_6:
    0x00005cc8 mov r0, r4                                        |         r0 = r4;
    0x00005cca bl 0x92a0                                         |         fcn_000092a0 (r0);
    0x00005cce ldr r2, [pc, 0x3c]                                |         
    0x00005cd0 ldr r3, [pc, 0x34]                                |         r3 = *(0x5d08);
    0x00005cd2 add r2, pc                                        |         r2 = 0xb9e4;
    0x00005cd4 ldr r3, [r2, r3]                                  |         r3 = *(0xb9e4);
    0x00005cd6 ldr r2, [r3]                                      |         r2 = *(0xb9e4);
    0x00005cd8 ldr r3, [sp, 0x10c]                               |         r3 = *(arg_10ch);
    0x00005cda eors r2, r3                                       |         r2 ^= r3;
    0x00005cdc mov.w r3, 0                                       |         r3 = 0;
                                                                 |         if (r2 != r3) {
    0x00005ce0 bne 0x5d00                                        |             goto label_75;
                                                                 |         }
    0x00005ce2 mov r0, r5                                        |         r0 = r5;
    0x00005ce4 add sp, 0x114                                     |         
    0x00005ce6 pop.w {r4, r5, r6, r7, r8, sb, pc}                |         
                                                                 | label_73:
    0x00005cea blx 0x1be4                                        |         isoc99_sscanf ();
    0x00005cee ldr r1, [pc, 0x20]                                |         
    0x00005cf0 mov r2, r5                                        |         r2 = r5;
    0x00005cf2 ldr r3, [r0]                                      |         r3 = *(r0);
    0x00005cf4 movs r0, 3                                        |         r0 = 3;
    0x00005cf6 add r1, pc                                        |         r1 = 0xba0c;
    0x00005cf8 rsbs r5, r3, 0                                    |         r5 = r3 - ;
    0x00005cfa bl 0x85e4                                         |         fcn_000085e4 (r0);
    0x00005cfe b 0x5cc8                                          |         
                                                                 |     } while (1);
                                                                 | label_75:
    0x00005d00 blx 0x1a1c                                        |     stat64 ();
    0x00005d04 lsls r0, r7, 6                                    |     r0 = r7 << 6;
    0x00005d06 movs r2, r0                                       |     r2 = r0;
    0x00005d08 lsls r4, r7, 6                                    |     r4 = r7 << 6;
    0x00005d0a movs r0, r0                                       |     
    0x00005d0c lsls r6, r0, 5                                    |     r6 = r0 << 5;
    0x00005d0e movs r2, r0                                       |     r2 = r0;
                                                                 |     if (r2 <= r0) {
    0x00005d10 blo 0x5cc8                                        |         goto label_6;
                                                                 |     }
    0x00005d12 movs r0, r0                                       |     
    0x00005d14 push.w {r4, r5, r6, r7, r8, sb, sl, fp, lr}       |     
    0x00005d16 ldr r7, [pc, 0x3c0]                               |     r7 = *(0x60da);
    0x00005d18 movs r6, 0                                        |     r6 = 0;
    0x00005d1a vpush {d8}                                        |     __asm ("vpush {d8}");
    0x00005d1e sub.w sp, sp, 0x3b00                              |     
    0x00005d22 sub sp, 0x24                                      |     
    0x00005d24 mov r4, r1                                        |     r4 = r1;
    0x00005d26 add r3, sp, 0x320                                 |     r3 += arg_320h;
    0x00005d28 ldr.w r2, [pc, 0xb68]                             |     r2 = *(0x00006894);
    0x00005d2c str r3, [sp, 0x2c]                                |     var_2ch = r3;
    0x00005d2e add r3, sp, 0x70                                  |     r3 += var_70h;
    0x00005d30 str r6, [r3]                                      |     *(r3) = r6;
    0x00005d32 add.w r7, sp, 0xb20                               |     r7 += arg_b20h;
    0x00005d36 ldr.w r3, [pc, 0xb60]                             |     
    0x00005d3a add r2, pc                                        |     r2 += pc;
    0x00005d3c str r7, [sp, 0x20]                                |     stream = r7;
    0x00005d3e add.w r1, sp, 0x3b00                              |     r1 += endptr;
    0x00005d42 adds r1, 0x1c                                     |     r1 += 0x1c;
    0x00005d44 mov r5, r0                                        |     r5 = r0;
    0x00005d46 ldr r3, [r2, r3]                                  |     r3 = *((r2 + r3));
    0x00005d48 mov fp, r6                                        |     
    0x00005d4a ldr.w r2, [pc, 0xb50]                             |     r2 = *(0x0000689c);
    0x00005d4e mov r7, fp                                        |     r7 = fp;
    0x00005d50 ldr.w sb, [pc, 0xb4c]                             |     sb = *(0x000068a0);
    0x00005d54 ldr r3, [r3]                                      |     r3 = *(0x689a);
    0x00005d56 str r3, [r1]                                      |     *(r1) = r3;
    0x00005d58 mov.w r3, 0                                       |     r3 = 0;
    0x00005d5c ldr r3, [sp, 0x2c]                                |     r3 = var_2ch;
    0x00005d5e add r2, pc                                        |     r2 += pc;
    0x00005d60 mov r1, r6                                        |     r1 = r6;
    0x00005d62 str r2, [sp, 0x1c]                                |     var_1ch = r2;
    0x00005d64 movw r2, 0x1018                                   |     r2 = 0x1018;
    0x00005d68 sub.w r0, r3, 0x28                                |     r0 = r3 - 0x28;
    0x00005d6c add r3, sp, 0xa0                                  |     r3 += var_a0h;
    0x00005d6e str r3, [sp, 0x28]                                |     var_28h = r3;
    0x00005d70 add sb, pc                                        |     sb += pc;
    0x00005d72 str r0, [sp, 0x34]                                |     var_34h = r0;
    0x00005d74 blx 0x1c2c                                        |     strtoull (r0, r1, r2);
    0x00005d78 ldr r3, [sp, 0x28]                                |     r3 = var_28h;
    0x00005d7a mov r1, r6                                        |     r1 = r6;
    0x00005d7c ldr.w r8, [pc, 0xb24]                             |     
    0x00005d80 movs r2, 0x24                                     |     r2 = 0x24;
    0x00005d82 str r6, [sp, 0x24]                                |     var_24h = r6;
    0x00005d84 sub.w r0, r3, 0x24                                |     r0 = r3 - 0x24;
    0x00005d88 add r3, sp, 0x108                                 |     r3 += arg_108h;
    0x00005d8a str r6, [sp, 0x38]                                |     var_38h = r6;
    0x00005d8c add r8, pc                                        |     r8 = 0xc634;
    0x00005d8e str r6, [sp, 0x40]                                |     var_40h = r6;
    0x00005d90 str r6, [sp, 0x30]                                |     var_30h = r6;
    0x00005d92 strd r6, r6, [sp, 0x44]                           |     __asm ("strd r6, r6, [sp, 0x44]");
    0x00005d96 str r6, [sp, 0x3c]                                |     var_3ch = r6;
    0x00005d98 mov r6, r3                                        |     r6 = r3;
    0x00005d9a str r0, [sp, 0x4c]                                |     var_4h = r0;
    0x00005d9c str r3, [sp, 0x18]                                |     var_18h = r3;
    0x00005d9e blx 0x1c2c                                        |     strtoull (r0, r1, r2);
                                                                 |     do {
                                                                 | label_7:
    0x00005da2 ldr r3, [sp, 0x18]                                |         r3 = var_18h;
    0x00005da4 mov r2, r8                                        |         r2 = r8;
    0x00005da6 mov r1, r4                                        |         r1 = r4;
    0x00005da8 mov r0, r5                                        |         r0 = r5;
    0x00005daa str r3, [sp]                                      |         *(sp) = r3;
    0x00005dac mov r3, sb                                        |         r3 = sb;
    0x00005dae str r7, [r6]                                      |         *(r6) = r7;
    0x00005db0 blx 0x1b74                                        |         r0 = fcn_00001b74 ();
    0x00005db4 adds r2, r0, 1                                    |         r2 = r0 + 1;
                                                                 |         if (r2 == r0) {
    0x00005db6 beq.w 0x5fba                                      |             goto label_76;
                                                                 |         }
    0x00005dba sub.w r3, r0, 0x3f                                |         r3 = r0 - 0x3f;
    0x00005dbe cmp r3, 0x38                                      |         
                                                                 |         if (r3 <= 0x38) {
    0x00005dc0 bhi 0x5e38                                        |             
                                                                 |             /* switch table (58 cases) at 0x5dc6 */
    0x00005dc2 tbh [pc, r3, lsl 1]                               |             __asm ("tbh [pc, r3, lsl 1]");
                                                                 |         }
    0x00005e38 ldr.w r1, [pc, 0xa6c]                             |         
    0x00005e3c mov r2, r0                                        |         r2 = r0;
    0x00005e3e movs r0, 3                                        |         r0 = 3;
    0x00005e40 add r1, pc                                        |         r1 = 0xc6ec;
    0x00005e42 bl 0x85e4                                         |         fcn_000085e4 (r0);
                                                                 | label_11:
    0x00005e46 ldr r0, [sp, 0x34]                                |         r0 = var_34h;
    0x00005e48 movs r4, 1                                        |         r4 = 1;
    0x00005e4a bl 0x46d8                                         |         fcn_000046d8 (r0);
                                                                 | label_8:
    0x00005e4e mov r0, fp                                        |         r0 = fp;
    0x00005e50 blx 0x19a0                                        |         fcn_000019a0 ();
    0x00005e54 ldr r0, [sp, 0x24]                                |         r0 = var_24h;
    0x00005e56 blx 0x19a0                                        |         fcn_000019a0 ();
    0x00005e5a ldr.w r2, [pc, 0xa50]                             |         r2 = *(0x000068ac);
    0x00005e5e add.w r1, sp, 0x3b00                              |         r1 += endptr;
    0x00005e62 ldr.w r3, [pc, 0xa34]                             |         r3 = *(0x689a);
    0x00005e66 adds r1, 0x1c                                     |         r1 += 0x1c;
    0x00005e68 add r2, pc                                        |         r2 += pc;
    0x00005e6a ldr r3, [r2, r3]                                  |         r3 = *((r2 + r3));
    0x00005e6c ldr r2, [r3]                                      |         r2 = *(0x689a);
    0x00005e6e ldr r3, [r1]                                      |         r3 = *(r1);
    0x00005e70 eors r2, r3                                       |         r2 ^= r3;
    0x00005e72 mov.w r3, 0                                       |         r3 = 0;
                                                                 |         if (r2 != r3) {
    0x00005e76 bne.w 0x7456                                      |             goto label_77;
                                                                 |         }
    0x00005e7a mov r0, r4                                        |         r0 = r4;
    0x00005e7c add.w sp, sp, 0x3b00                              |         
    0x00005e80 add sp, 0x24                                      |         
    0x00005e82 vpop {d8}                                         |         __asm ("vpop {d8}");
    0x00005e86 pop.w {r4, r5, r6, r7, r8, sb, sl, fp, pc}        |         
    0x00005e8a ldr r3, [r6]                                      |         r3 = *(r6);
    0x00005e8c cmp r3, 0                                         |         
                                                                 |         if (r3 <= 0) {
    0x00005e8e ble.w 0x5faa                                      |             goto label_78;
                                                                 |         }
    0x00005e92 ldr.w r2, [pc, 0xa1c]                             |         r2 = *(0x000068b0);
    0x00005e96 lsls r3, r3, 4                                    |         r3 <<= 4;
    0x00005e98 ldr.w r1, [pc, 0xa18]                             |         
    0x00005e9c movs r0, 4                                        |         r0 = 4;
    0x00005e9e add r2, pc                                        |         r2 += pc;
    0x00005ea0 ldr r2, [r2, r3]                                  |         r2 = *((r2 + r3));
    0x00005ea2 add r1, pc                                        |         r1 = 0xc75a;
    0x00005ea4 bl 0x85e4                                         |         fcn_000085e4 (r0);
    0x00005ea8 b 0x5da2                                          |         
                                                                 |     } while (1);
    0x00005eaa ldr.w r3, [pc, 0xa0c]                             |     
    0x00005eae ldr r2, [sp, 0x1c]                                |     r2 = var_1ch;
    0x00005eb0 ldr r3, [r2, r3]                                  |     r3 = *((r2 + r3));
    0x00005eb2 ldr r3, [r3]                                      |     r3 = *(0x68ba);
    0x00005eb4 str r3, [sp, 0x3c]                                |     var_3ch = r3;
    0x00005eb6 b 0x5da2                                          |     goto label_7;
    0x00005eb8 ldr r2, [sp, 0x1c]                                |     r2 = var_1ch;
    0x00005eba movs r0, 1                                        |     r0 = 1;
    0x00005ebc ldr.w r3, [pc, 0x9fc]                             |     r3 = *(0x68bc);
    0x00005ec0 ldr.w r1, [pc, 0x9fc]                             |     
    0x00005ec4 ldr r3, [r2, r3]                                  |     r3 = *((r2 + r3));
    0x00005ec6 add r1, pc                                        |     r1 = 0xc78a;
    0x00005ec8 ldr r2, [r3]                                      |     r2 = *(0x68bc);
    0x00005eca blx 0x1c54                                        |     fcn_00001c54 ();
                                                                 |     do {
    0x00005ece movs r4, 0                                        |         r4 = 0;
    0x00005ed0 b 0x5e4e                                          |         goto label_8;
    0x00005ed2 ldr r2, [sp, 0x20]                                |         r2 = stream;
    0x00005ed4 movs r3, 1                                        |         r3 = 1;
    0x00005ed6 strb.w r3, [r2, 0x7e2]                            |         *((r2 + 0x7e2)) = r3;
    0x00005eda b 0x5da2                                          |         goto label_7;
    0x00005edc ldr r2, [sp, 0x20]                                |         r2 = stream;
    0x00005ede movs r3, 1                                        |         r3 = 1;
    0x00005ee0 strb.w r3, [r2, 0x7e3]                            |         *((r2 + 0x7e3)) = r3;
    0x00005ee4 b 0x5da2                                          |         goto label_7;
    0x00005ee6 ldr.w r2, [pc, 0x9dc]                             |         r2 = *(0x000068c4);
    0x00005eea add r2, pc                                        |         r2 += pc;
    0x00005eec ldr r3, [r2]                                      |         r3 = *(r2);
    0x00005eee adds r3, 1                                        |         r3++;
    0x00005ef0 str r3, [r2]                                      |         *(r2) = r3;
    0x00005ef2 b 0x5da2                                          |         goto label_7;
    0x00005ef4 ldr r3, [sp, 0x24]                                |         r3 = var_24h;
                                                                 |         if (r3 != 0) {
    0x00005ef6 cbz r3, 0x5efe                                    |             
    0x00005ef8 mov r0, r3                                        |             r0 = r3;
    0x00005efa blx 0x19a0                                        |             fcn_000019a0 ();
                                                                 |         }
    0x00005efe ldr r2, [sp, 0x1c]                                |         r2 = var_1ch;
    0x00005f00 ldr.w r3, [pc, 0x9c4]                             |         r3 = *(0x68c8);
    0x00005f04 ldr r3, [r2, r3]                                  |         r3 = *((r2 + r3));
    0x00005f06 ldr r0, [r3]                                      |         r0 = *(0x68c8);
    0x00005f08 bl 0x960c                                         |         fcn_0000960c (r0);
    0x00005f0c str r0, [sp, 0x24]                                |         var_24h = r0;
    0x00005f0e b 0x5da2                                          |         goto label_7;
    0x00005f10 ldr.w r0, [pc, 0x9b8]                             |         
    0x00005f14 add r0, pc                                        |         r0 = 0xc7e4;
    0x00005f16 blx 0x1b00                                        |         malloc (r0);
    0x00005f1a ldr.w r0, [pc, 0x9b4]                             |         
    0x00005f1e add r0, pc                                        |         r0 = 0xc7f4;
    0x00005f20 blx 0x1b00                                        |         malloc (r0);
    0x00005f24 b 0x5ece                                          |         
                                                                 |     } while (1);
    0x00005f26 ldr r2, [sp, 0x1c]                                |     r2 = var_1ch;
    0x00005f28 ldr.w r3, [pc, 0x99c]                             |     
    0x00005f2c ldr r3, [r2, r3]                                  |     r3 = *((r2 + r3));
    0x00005f2e ldr r3, [r3]                                      |     r3 = *(0x68c8);
    0x00005f30 ldrb r2, [r3, 1]                                  |     r2 = *((r3 + 1));
    0x00005f32 cmp r2, 0                                         |     
                                                                 |     if (r2 != 0) {
    0x00005f34 bne.w 0x70a6                                      |         goto label_79;
                                                                 |     }
    0x00005f38 ldrb r3, [r3]                                     |     r3 = *(r3);
    0x00005f3a ldr r2, [sp, 0x20]                                |     r2 = stream;
    0x00005f3c strb.w r3, [r2, 0x7e0]                            |     *((r2 + 0x7e0)) = r3;
    0x00005f40 b 0x5da2                                          |     goto label_7;
    0x00005f42 ldr.w r3, [pc, 0x984]                             |     
    0x00005f46 ldr r2, [sp, 0x1c]                                |     r2 = var_1ch;
    0x00005f48 ldr r3, [r2, r3]                                  |     r3 = *((r2 + r3));
    0x00005f4a ldr r3, [r3]                                      |     r3 = *(0x68ca);
    0x00005f4c str r3, [sp, 0x40]                                |     var_40h = r3;
    0x00005f4e b 0x5da2                                          |     goto label_7;
    0x00005f50 ldr r2, [sp, 0x1c]                                |     r2 = var_1ch;
    0x00005f52 ldr.w r3, [pc, 0x974]                             |     
    0x00005f56 ldr r3, [r2, r3]                                  |     r3 = *((r2 + r3));
    0x00005f58 ldr r2, [sp, 0x20]                                |     r2 = stream;
    0x00005f5a ldr r3, [r3]                                      |     r3 = *(0x68ca);
    0x00005f5c str r3, [sp, 0x38]                                |     var_38h = r3;
    0x00005f5e movs r3, 1                                        |     r3 = 1;
    0x00005f60 strb.w r3, [r2, 0x7e1]                            |     *((r2 + 0x7e1)) = r3;
    0x00005f62 adds r7, 0xe1                                     |     r7 += 0xe1;
    0x00005f64 b 0x5da2                                          |     goto label_7;
    0x00005f66 ldr r3, [sp, 0x30]                                |     r3 = var_30h;
    0x00005f68 mov r0, fp                                        |     r0 = fp;
    0x00005f6a add.w sl, r3, 2                                   |     sl = r3 + 2;
    0x00005f6e lsl.w sl, sl, 2                                   |     sl <<= 2;
    0x00005f72 mov r1, sl                                        |     r1 = sl;
    0x00005f74 blx 0x1a34                                        |     r0 = regexec ();
    0x00005f78 cmp r0, 0                                         |     
                                                                 |     if (r0 == 0) {
    0x00005f7a beq.w 0x75ea                                      |         goto label_80;
                                                                 |     }
    0x00005f7e ldr r3, [sp, 0x30]                                |     r3 = var_30h;
    0x00005f80 add sl, r0                                        |     sl += r0;
    0x00005f82 ldr r2, [sp, 0x1c]                                |     r2 = var_1ch;
    0x00005f84 mov fp, r0                                        |     
    0x00005f86 adds r3, 1                                        |     r3++;
    0x00005f88 str r3, [sp, 0x30]                                |     var_30h = r3;
    0x00005f8a ldr.w r3, [pc, 0x93c]                             |     
    0x00005f8e ldr r3, [r2, r3]                                  |     r3 = *((r2 + r3));
    0x00005f90 movs r2, 0                                        |     r2 = 0;
    0x00005f92 str r2, [sl, -0x4]                                |     *((sl - 0x4)) = r2;
    0x00005f96 ldr r3, [r3]                                      |     r3 = *(0x68ca);
    0x00005f98 str r3, [sl, -0x8]                                |     *((sl - 0x8)) = r3;
    0x00005f9c b 0x5da2                                          |     goto label_7;
    0x00005f9e movs r3, 1                                        |     r3 = 1;
    0x00005fa0 str r3, [sp, 0x44]                                |     var_44h = r3;
    0x00005fa2 b 0x5da2                                          |     goto label_7;
    0x00005fa4 movs r3, 1                                        |     r3 = 1;
    0x00005fa6 str r3, [sp, 0x48]                                |     var_0h = r3;
    0x00005fa8 b 0x5da2                                          |     goto label_7;
                                                                 | label_78:
    0x00005faa ldr.w r1, [pc, 0x928]                             |     
    0x00005fae mov r2, r0                                        |     r2 = r0;
    0x00005fb0 movs r0, 4                                        |     r0 = 4;
    0x00005fb2 add r1, pc                                        |     r1 = 0xc88c;
    0x00005fb4 bl 0x85e4                                         |     fcn_000085e4 (r0);
    0x00005fb8 b 0x5da2                                          |     goto label_7;
                                                                 | label_76:
    0x00005fba ldr.w r3, [pc, 0x91c]                             |     
    0x00005fbe mov sl, r0                                        |     sl = r0;
    0x00005fc0 ldr r2, [sp, 0x1c]                                |     r2 = var_1ch;
    0x00005fc2 ldr r3, [r2, r3]                                  |     r3 = *((r2 + r3));
    0x00005fc4 str r3, [sp, 0x30]                                |     var_30h = r3;
    0x00005fc6 ldr r3, [r3]                                      |     r3 = *(0x68da);
    0x00005fc8 cmp r3, r5                                        |     
                                                                 |     if (r3 < r5) {
    0x00005fca blt.w 0x62a4                                      |         goto label_81;
                                                                 |     }
    0x00005fce add r6, sp, 0x1a0                                 |     r6 += arg_1a0h;
    0x00005fd0 sub.w r0, r6, 0x30                                |     r0 = r6 - 0x30;
    0x00005fd4 blx 0x1a04                                        |     r0 = strdup (r0);
    0x00005fd8 cmp r0, 0                                         |     
                                                                 |     if (r0 < 0) {
    0x00005fda blt.w 0x6ff0                                      |         goto label_82;
                                                                 |     }
    0x00005fde ldr r2, [sp, 0x20]                                |     r2 = stream;
    0x00005fe0 add.w r3, r6, 0x52                                |     r3 = r6 + 0x52;
    0x00005fe4 subw r2, r2, 0x828                                |     __asm ("subw r2, r2, 0x828");
    0x00005fe8 str r3, [r2]                                      |     *(r2) = r3;
                                                                 | label_12:
    0x00005fea ldr r2, [sp, 0x24]                                |     r2 = var_24h;
    0x00005fec cmp r2, 0                                         |     
                                                                 |     if (r2 == 0) {
    0x00005fee beq.w 0x62e8                                      |         goto label_83;
                                                                 |     }
    0x00005ff2 ldr r2, [sp, 0x24]                                |     r2 = var_24h;
                                                                 | label_14:
    0x00005ff4 strd r2, r3, [sp, 4]                              |     __asm ("strd r2, r3, [sp, 4]");
    0x00005ff8 ldr.w r3, [pc, 0x8e0]                             |     
    0x00005ffc ldr r2, [sp, 0x2c]                                |     r2 = var_2ch;
    0x00005ffe add r3, pc                                        |     r3 = 0xc8de;
    0x00006000 sub.w r6, r2, 0x24                                |     r6 = r2 - 0x24;
    0x00006004 str r3, [sp]                                      |     *(sp) = r3;
    0x00006006 mov.w r3, 0x1000                                  |     r3 = 0x1000;
    0x0000600a movs r2, 1                                        |     r2 = 1;
    0x0000600c mov r1, r3                                        |     r1 = r3;
    0x0000600e mov r0, r6                                        |     r0 = r6;
    0x00006010 blx 0x1dd4                                        |     fcn_00001dd4 ();
    0x00006014 ldr r3, [sp, 0x20]                                |     r3 = stream;
    0x00006016 ldr r2, [sp, 0x44]                                |     r2 = var_44h;
    0x00006018 str.w r0, [r3, 0x7dc]                             |     __asm ("str.w r0, [r3, 0x7dc]");
    0x0000601c ldr r3, [sp, 0x30]                                |     r3 = var_30h;
    0x0000601e ldr r3, [r3]                                      |     r3 = *(r3);
    0x00006020 cmp r3, r5                                        |     
    0x00006022 it eq                                             |     
                                                                 |     if (r3 != r5) {
    0x00006024 moveq r2, 1                                       |         r2 = 1;
                                                                 |     }
    0x00006026 ldr r3, [sp, 0x48]                                |     r3 = var_0h;
    0x00006028 str r2, [sp, 0x44]                                |     var_44h = r2;
    0x0000602a cmp r3, 0                                         |     
                                                                 |     if (r3 == 0) {
    0x0000602c beq.w 0x62d2                                      |         goto label_84;
                                                                 |     }
    0x00006030 ldr r2, [sp, 0x1c]                                |     r2 = var_1ch;
    0x00006032 ldr.w r3, [pc, 0x884]                             |     
    0x00006036 ldr r3, [r2, r3]                                  |     r3 = *((r2 + r3));
    0x00006038 ldr r2, [sp, 0x3c]                                |     r2 = var_3ch;
    0x0000603a ldr r3, [r3]                                      |     r3 = *(0x68ba);
    0x0000603c cmp r3, r2                                        |     
                                                                 |     if (r3 == r2) {
    0x0000603e beq.w 0x62d8                                      |         goto label_85;
                                                                 |     }
    0x00006042 mov r0, r6                                        |     r0 = r6;
    0x00006044 blx 0x1ab8                                        |     r0 = fnmatch ();
    0x00006048 mov r7, r0                                        |     r7 = r0;
    0x0000604a cmp r0, 0                                         |     
                                                                 |     if (r0 == 0) {
    0x0000604c beq.w 0x700c                                      |         goto label_86;
                                                                 |     }
    0x00006050 blx 0x1d40                                        |     renameat ();
    0x00006054 ldr.w r1, [pc, 0x888]                             |     
    0x00006058 movs r3, 0                                        |     r3 = 0;
    0x0000605a ldr r2, [sp, 0x18]                                |     r2 = var_18h;
    0x0000605c add r1, pc                                        |     r1 = 0xc940;
    0x0000605e blx 0x1adc                                        |     r0 = asprintf_chk ();
    0x00006062 mov r8, r0                                        |     r8 = r0;
    0x00006064 cmp r0, 0                                         |     
                                                                 |     if (r0 != 0) {
    0x00006066 bne.w 0x6aea                                      |         goto label_87;
                                                                 |     }
    0x0000606a mov r0, r6                                        |     r0 = r6;
    0x0000606c blx 0x1bb0                                        |     fcn_00001bb0 ();
    0x00006070 mov r1, r6                                        |     r1 = r6;
    0x00006072 add.w r6, sp, 0x1300                              |     r6 += ptr;
    0x00006076 adds r6, 0x1c                                     |     r6 += 0x1c;
    0x00006078 mov sb, r0                                        |     sb = r0;
    0x0000607a mov r2, r0                                        |     r2 = r0;
    0x0000607c mov.w r3, 0x1000                                  |     r3 = 0x1000;
    0x00006080 mov r0, r6                                        |     r0 = r6;
    0x00006082 blx 0x1a4c                                        |     fwrite (r0, r1, r2, r3);
    0x00006086 ldr r1, [sp, 0x20]                                |     r1 = stream;
    0x00006088 mov r3, r6                                        |     r3 = r6;
    0x0000608a add.w r2, sb, 1                                   |     r2 = sb + 1;
    0x0000608e movs r6, 0x2f                                     |     r6 = 0x2f;
    0x00006090 strb.w r6, [r3, sb]                               |     *((r3 + sb)) = r6;
    0x00006094 mov r0, r7                                        |     r0 = r7;
    0x00006096 subw r1, r1, 0xa18                                |     __asm ("subw r1, r1, 0xa18");
    0x0000609a strb.w r8, [r3, r2]                               |     *((r3 + r2)) = r8;
    0x0000609e ldr r1, [r1, 0x50]                                |     r1 = *((r1 + 0x50));
    0x000060a0 bl 0x4754                                         |     r0 = fcn_00004754 (r0, r1, r2, r3);
    0x000060a4 mov r6, r0                                        |     r6 = r0;
    0x000060a6 mov r0, r7                                        |     r0 = r7;
    0x000060a8 blx 0x1dc8                                        |     fcn_00001dc8 ();
                                                                 | label_30:
    0x000060ac cmp r6, 1                                         |     
                                                                 |     if (r6 == 1) {
    0x000060ae beq.w 0x62d8                                      |         goto label_85;
                                                                 |     }
                                                                 | label_13:
    0x000060b2 ldr r3, [sp, 0x2c]                                |     r3 = var_2ch;
    0x000060b4 sub.w r7, r3, 0x24                                |     r7 = r3 - 0x24;
    0x000060b8 ldr r3, [sp, 0x28]                                |     r3 = var_28h;
    0x000060ba mov r0, r7                                        |     r0 = r7;
    0x000060bc sub.w r1, r3, 0x30                                |     r1 = r3 - 0x30;
    0x000060c0 bl 0x9b18                                         |     r0 = fcn_00009b18 (r0, r1, r2, r3, r4);
    0x000060c4 mov r6, r0                                        |     r6 = r0;
    0x000060c6 cmp r0, 0                                         |     
                                                                 |     if (r0 == 0) {
    0x000060c8 beq.w 0x6ad8                                      |         goto label_88;
                                                                 |     }
    0x000060cc ldr.w r3, [pc, 0x814]                             |     r3 = *(0x000068e4);
    0x000060d0 add r3, pc                                        |     r3 += pc;
    0x000060d2 ldr r1, [r3]                                      |     r1 = *(r3);
    0x000060d4 bl 0x86bc                                         |     fcn_000086bc (r0, r1);
    0x000060d8 ldr r3, [sp, 0x20]                                |     r3 = stream;
    0x000060da movs r1, 0x80                                     |     r1 = 0x80;
    0x000060dc subw r7, r3, 0xaa4                                |     __asm ("subw r7, r3, 0xaa4");
    0x000060e0 ldr r3, [sp, 0x34]                                |     r3 = var_34h;
    0x000060e2 strd r3, r6, [r7]                                 |     __asm ("strd r3, r6, [r7]");
    0x000060e6 ldr r3, [sp, 0x28]                                |     r3 = var_28h;
    0x000060e8 sub.w r0, r3, 0x1c                                |     r0 = r3 - 0x1c;
    0x000060ec bl 0x8b68                                         |     fcn_00008b68 (r0, r1);
    0x000060f0 movs r1, 0                                        |     r1 = 0;
    0x000060f2 mov.w r0, 0x200                                   |     r0 = 0x200;
    0x000060f6 bl 0x8c14                                         |     fcn_00008c14 (r0, r1);
    0x000060fa str r0, [r7, 0x18]                                |     *((r7 + 0x18)) = r0;
    0x000060fc cmp r0, 0                                         |     
                                                                 |     if (r0 == 0) {
    0x000060fe beq.w 0x6414                                      |         goto label_89;
                                                                 |     }
    0x00006102 movs r1, 0                                        |     r1 = 0;
    0x00006104 mov.w r0, 0x200                                   |     r0 = 0x200;
    0x00006108 bl 0x8c14                                         |     fcn_00008c14 (r0, r1);
    0x0000610c str r0, [r7, 0x1c]                                |     *((r7 + 0x1c)) = r0;
    0x0000610e cmp r0, 0                                         |     
                                                                 |     if (r0 == 0) {
    0x00006110 beq.w 0x6f8e                                      |         goto label_90;
                                                                 |     }
    0x00006114 ldr.w r1, [pc, 0x7d0]                             |     r1 = *(0x000068e8);
    0x00006118 mov.w r0, 0x800                                   |     r0 = 0x800;
    0x0000611c add r1, pc                                        |     r1 += pc;
    0x0000611e bl 0x8c14                                         |     fcn_00008c14 (r0, r1);
    0x00006122 str r0, [r7, 0x20]                                |     *((r7 + 0x20)) = r0;
    0x00006124 cmp r0, 0                                         |     
                                                                 |     if (r0 == 0) {
    0x00006126 beq.w 0x7144                                      |         goto label_91;
                                                                 |     }
                                                                 | label_18:
    0x0000612a ldr r3, [sp, 0x38]                                |     r3 = var_38h;
    0x0000612c cmp r3, 0                                         |     
                                                                 |     if (r3 == 0) {
    0x0000612e beq.w 0x62f0                                      |         goto label_92;
                                                                 |     }
    0x00006132 ldr.w r1, [pc, 0x7b8]                             |     
    0x00006136 mov r0, r3                                        |     r0 = r3;
    0x00006138 add r1, pc                                        |     r1 = 0xca2a;
    0x0000613a blx 0x1d4c                                        |     r0 = fstat64 ();
    0x0000613e mov r8, r0                                        |     r8 = r0;
    0x00006140 cmp r0, 0                                         |     
                                                                 |     if (r0 == 0) {
    0x00006142 beq.w 0x756a                                      |         goto label_93;
                                                                 |     }
    0x00006146 ldr.w r1, [pc, 0x7a8]                             |     
    0x0000614a movs r0, 7                                        |     r0 = 7;
    0x0000614c ldr r2, [sp, 0x38]                                |     r2 = var_38h;
    0x0000614e add.w r6, sp, 0x1300                              |     r6 += ptr;
    0x00006152 ldr.w sb, [pc, 0x7a0]                             |     
    0x00006156 adds r6, 0x1c                                     |     r6 += 0x1c;
    0x00006158 add r1, pc                                        |     r1 = 0xca4e;
    0x0000615a bl 0x85e4                                         |     fcn_000085e4 (r0);
    0x0000615e ldr.w r3, [pc, 0x798]                             |     
    0x00006162 add sb, pc                                        |     sb = 0xca5c;
    0x00006164 str.w sl, [sp, 0x40]                              |     __asm ("str.w sl, [var_40h]");
    0x00006168 add r3, pc                                        |     r3 = 0xca66;
    0x0000616a str r3, [sp, 0x2c]                                |     var_2ch = r3;
    0x0000616c ldr.w r3, [pc, 0x78c]                             |     
    0x00006170 add r3, pc                                        |     r3 = 0xca70;
    0x00006172 str r3, [sp, 0x44]                                |     var_44h = r3;
    0x00006174 movs r3, 0                                        |     r3 = 0;
    0x00006176 str r3, [sp, 0x1c]                                |     var_1ch = r3;
                                                                 |     do {
                                                                 | label_9:
    0x00006178 mov r2, r8                                        |         r2 = r8;
    0x0000617a mov.w r1, 0x2800                                  |         r1 = 0x2800;
    0x0000617e mov r0, r6                                        |         r0 = r6;
    0x00006180 blx 0x19ac                                        |         r0 = fcn_000019ac ();
    0x00006184 cmp r0, 0                                         |         
                                                                 |         if (r0 == 0) {
    0x00006186 beq 0x6206                                        |             goto label_94;
                                                                 |         }
                                                                 | label_10:
    0x00006188 ldr r3, [sp, 0x1c]                                |         r3 = var_1ch;
    0x0000618a mov r1, sb                                        |         r1 = sb;
    0x0000618c mov r0, r6                                        |         r0 = r6;
    0x0000618e adds r3, 1                                        |         r3++;
    0x00006190 str r3, [sp, 0x1c]                                |         var_1ch = r3;
    0x00006192 blx 0x1cac                                        |         fcn_00001cac ();
    0x00006196 mov r1, sb                                        |         r1 = sb;
    0x00006198 mov r7, r0                                        |         r7 = r0;
    0x0000619a movs r0, 0                                        |         r0 = 0;
    0x0000619c blx 0x1cac                                        |         fcn_00001cac ();
    0x000061a0 mov r1, sb                                        |         r1 = sb;
    0x000061a2 mov sl, r0                                        |         sl = r0;
    0x000061a4 movs r0, 0                                        |         r0 = 0;
    0x000061a6 blx 0x1cac                                        |         fcn_00001cac ();
    0x000061aa cmp.w sl, 0                                       |         
    0x000061ae it ne                                             |         
                                                                 |         if (sl != 0) {
    0x000061b0 cmpne r7, 0                                       |             __asm ("cmpne r7, 0");
                                                                 |         }
    0x000061b2 ite eq                                            |         
                                                                 |         if (sl != 0) {
    0x000061b4 moveq r3, 1                                       |             r3 = 1;
                                                                 |         }
                                                                 |         if (sl == 0) {
    0x000061b6 movne r3, 0                                       |             r3 = 0;
                                                                 |         }
    0x000061b8 cmp r0, 0                                         |         
    0x000061ba it eq                                             |         
                                                                 |         if (r0 != 0) {
    0x000061bc orreq r3, r3, 1                                   |             r3 |= 1;
                                                                 |         }
    0x000061c0 cmp r3, 0                                         |         
    0x000061c2 bne 0x6178                                        |         
                                                                 |     } while (r3 != 0);
    0x000061c4 ldr r1, [sp, 0x2c]                                |     r1 = var_2ch;
    0x000061c6 blx 0x1924                                        |     r0 = fcn_00001924 ();
    0x000061ca cmp r0, 0                                         |     
                                                                 |     if (r0 != 0) {
    0x000061cc bne 0x6178                                        |         goto label_9;
                                                                 |     }
    0x000061ce movs r2, 0x10                                     |     r2 = 0x10;
    0x000061d0 ldr r1, [sp, 0x18]                                |     r1 = var_18h;
    0x000061d2 mov r0, r7                                        |     r0 = r7;
    0x000061d4 blx 0x1c44                                        |     write (r0, r1, r2);
    0x000061d8 ldr r3, [sp, 0x20]                                |     r3 = stream;
    0x000061da subw r3, r3, 0xa18                                |     __asm ("subw r3, r3, 0xa18");
    0x000061de ldr r3, [r3]                                      |     r3 = *(r3);
    0x000061e0 ldrb r2, [r3]                                     |     r2 = *(r3);
    0x000061e2 cmp r2, 0                                         |     
                                                                 |     if (r2 != 0) {
    0x000061e4 bne.w 0x6404                                      |         goto label_95;
                                                                 |     }
    0x000061e8 strd r0, r1, [sp]                                 |     __asm ("strd r0, r1, [sp]");
    0x000061ec mov r1, sl                                        |     r1 = sl;
    0x000061ee ldr r0, [sp, 0x4c]                                |     r0 = var_4h;
    0x000061f0 str r2, [sp, 8]                                   |     var_8h_2 = r2;
    0x000061f2 bl 0x5330                                         |     fcn_00005330 (r0, r1, r2, r3);
    0x000061f6 mov r2, r8                                        |     r2 = r8;
    0x000061f8 mov.w r1, 0x2800                                  |     r1 = 0x2800;
    0x000061fc mov r0, r6                                        |     r0 = r6;
    0x000061fe blx 0x19ac                                        |     r0 = fcn_000019ac ();
    0x00006202 cmp r0, 0                                         |     
                                                                 |     if (r0 != 0) {
    0x00006204 bne 0x6188                                        |         goto label_10;
                                                                 |     }
                                                                 | label_94:
    0x00006206 ldr r0, [sp, 0x4c]                                |     r0 = var_4h;
    0x00006208 ldr.w sl, [sp, 0x40]                              |     sl = var_40h;
    0x0000620c bl 0x53c0                                         |     fcn_000053c0 (r0);
    0x00006210 ldr.w r1, [pc, 0x6ec]                             |     
    0x00006212 asrs r4, r5, 0x1b                                 |     r4 = r5 >> 0x1b;
    0x00006214 movs r0, 7                                        |     r0 = 7;
    0x00006216 ldr r2, [sp, 0x38]                                |     r2 = var_38h;
    0x00006218 add r1, pc                                        |     r1 = 0xcb1c;
    0x0000621a bl 0x85e4                                         |     fcn_000085e4 (r0);
    0x0000621e mov r0, r8                                        |     r0 = r8;
    0x00006220 blx 0x1c84                                        |     fcn_00001c84 ();
                                                                 | label_16:
    0x00006224 ldr r3, [sp, 0x48]                                |     r3 = var_0h;
    0x00006226 cmp r3, 0                                         |     
                                                                 |     if (r3 != 0) {
    0x00006228 bne.w 0x6724                                      |         goto label_96;
                                                                 |     }
    0x0000622c ldr r3, [sp, 0x30]                                |     r3 = var_30h;
    0x0000622e ldr r6, [r3]                                      |     r6 = *(r3);
    0x00006230 cmp r5, r6                                        |     
                                                                 |     if (r5 <= r6) {
    0x00006232 ble.w 0x65b2                                      |         goto label_43;
                                                                 |     }
    0x00006236 ldr r3, [sp, 0x20]                                |     r3 = stream;
    0x00006238 add.w r4, r4, r6, lsl 2                           |     r4 += (r6 << 2);
    0x0000623c str.w sl, [sp, 0x2c]                              |     __asm ("str.w sl, [var_2ch]");
    0x00006240 str.w fp, [sp, 0x1c]                              |     __asm ("str.w fp, [var_1ch]");
    0x00006244 ldr.w sl, [sp, 0x18]                              |     sl = var_18h;
    0x00006248 subw sb, r3, 0xaa4                                |     __asm ("subw sb, r3, 0xaa4");
    0x0000624c ldr.w fp, [sp, 0x4c]                              |     fp = var_4h;
    0x00006250 subw r8, r3, 0xa18                                |     __asm ("subw r8, r3, 0xa18");
    0x00006252 cmp r0, 0x18                                      |     
    0x00006254 b 0x6280                                          |     
                                                                 |     while (r3 == 0x2f) {
    0x00006256 ldr.w r0, [sb, 4]                                 |         r0 = *((sb + 4));
    0x0000625a mov r2, sl                                        |         r2 = sl;
    0x0000625c mov r1, r7                                        |         r1 = r7;
    0x0000625e bl 0xc8c4                                         |         r0 = fcn_0000c8c4 (r0, r1, r2);
    0x00006260 smlawb r8, r1, r0, r2                             |         __asm ("smlawb r8, r1, r0, r2");
                                                                 |         if (r0 < 0x18) {
    0x00006264 blt.w 0x70b6                                      |             goto label_97;
                                                                 |         }
    0x00006268 ldr.w r1, [r8]                                    |         r1 = *(r8);
    0x0000626c mov r0, fp                                        |         r0 = fp;
    0x0000626e bl 0x4a80                                         |         fcn_00004a80 (r0, r1, r2, r3);
    0x00006270 invalid                                           |         
    0x00006272 cmp r0, 0                                         |         
                                                                 |         if (r0 < 0) {
    0x00006274 blt.w 0x70d4                                      |             goto label_98;
                                                                 |         }
    0x00006278 adds r6, 1                                        |         r6++;
    0x0000627a cmp r5, r6                                        |         
                                                                 |         if (r5 == r6) {
    0x0000627c beq.w 0x70fa                                      |             goto label_99;
                                                                 |         }
    0x00006280 ldr r7, [r4], 4                                   |         r7 = *(r4);
                                                                 |         r4 += 4;
    0x00006284 ldrb r3, [r7]                                     |         r3 = *(r7);
    0x00006286 cmp r3, 0x2f                                      |         
    0x00006288 beq 0x6256                                        |         
                                                                 |     }
    0x0000628a ldr.w r1, [pc, 0x678]                             |     
    0x0000628e mov r2, r7                                        |     r2 = r7;
    0x00006290 movs r0, 2                                        |     r0 = 2;
    0x00006292 ldr.w fp, [sp, 0x1c]                              |     fp = var_1ch;
    0x00006296 add r1, pc                                        |     r1 = 0xcba0;
    0x00006298 bl 0x85e4                                         |     fcn_000085e4 (r0);
                                                                 | label_32:
    0x0000629c ldr r0, [sp, 0x4c]                                |     r0 = var_4h;
    0x0000629e bl 0x49d8                                         |     fcn_000049d8 (r0);
    0x000062a2 b 0x5e46                                          |     goto label_11;
                                                                 | label_81:
    0x000062a4 ldr.w r1, [pc, 0x660]                             |     
    0x000062a8 ldr.w r0, [r4, r3, lsl 2]                         |     offset_0 = r3 << 2;
                                                                 |     r0 = *((r4 + offset_0));
    0x000062ac ldr r2, [sp, 0x28]                                |     r2 = var_28h;
    0x000062ae ldr r3, [sp, 0x18]                                |     r3 = var_18h;
    0x000062b0 add r1, pc                                        |     r1 = 0xcbbc;
    0x000062b2 blx 0x1bfc                                        |     r0 = mkdir ();
    0x000062b6 cmp r0, 2                                         |     
                                                                 |     if (r0 != 2) {
    0x000062b8 bne.w 0x6b0a                                      |         goto label_100;
                                                                 |     }
    0x000062bc ldr r0, [sp, 0x30]                                |     r0 = var_30h;
    0x000062be ldr r3, [sp, 0x20]                                |     r3 = stream;
    0x000062c0 ldr r2, [r0]                                      |     r2 = *(r0);
    0x000062c2 subw r1, r3, 0x828                                |     __asm ("subw r1, r3, 0x828");
    0x000062c6 ldr.w r3, [r4, r2, lsl 2]                         |     offset_1 = r2 << 2;
                                                                 |     r3 = *((r4 + offset_1));
    0x000062ca adds r2, 1                                        |     r2++;
    0x000062cc str r2, [r0]                                      |     *(r0) = r2;
    0x000062ce str r3, [r1]                                      |     *(r1) = r3;
    0x000062d0 b 0x5fea                                          |     goto label_12;
                                                                 | label_84:
    0x000062d2 ldr r3, [sp, 0x44]                                |     r3 = var_44h;
    0x000062d4 str r3, [sp, 0x48]                                |     var_0h = r3;
    0x000062d6 b 0x60b2                                          |     goto label_13;
                                                                 | label_85:
    0x000062d8 movs r4, 0                                        |     r4 = 0;
                                                                 | label_35:
    0x000062da ldr r0, [sp, 0x4c]                                |     r0 = var_4h;
    0x000062dc bl 0x49d8                                         |     fcn_000049d8 (r0);
    0x000062e0 ldr r0, [sp, 0x34]                                |     r0 = var_34h;
    0x000062e2 bl 0x46d8                                         |     fcn_000046d8 (r0);
    0x000062e6 b 0x5e4e                                          |     goto label_8;
                                                                 | label_83:
    0x000062e8 ldr.w r2, [pc, 0x620]                             |     
    0x000062ec add r2, pc                                        |     r2 = 0xcbfc;
    0x000062ee b 0x5ff4                                          |     goto label_14;
                                                                 | label_92:
    0x000062f0 ldr r6, [sp, 0x40]                                |     r6 = var_40h;
    0x000062f2 cmp r6, 0                                         |     
                                                                 |     if (r6 == 0) {
    0x000062f4 beq.w 0x6fa6                                      |         goto label_101;
                                                                 |     }
    0x000062f8 ldr.w r2, [pc, 0x614]                             |     
    0x000062fc add.w r3, sp, 0x1300                              |     r3 += ptr;
    0x000062fe strh r0, [r3, r6]                                 |     *((r3 + r6)) = r0;
    0x00006300 adds r3, 0x10                                     |     r3 += 0x10;
    0x00006302 add r2, pc                                        |     r2 = 0xcc16;
    0x00006304 ldm r2, {r0, r1, r2}                              |     r0 = *(r2);
                                                                 |     r1 = *((r2 + 4));
                                                                 |     r2 = *((r2 + 8));
    0x00006306 stm r3!, {r0, r1}                                 |     *(r3!) = r0;
                                                                 |     *((r3! + 4)) = r1;
    0x00006308 mov r0, r6                                        |     r0 = r6;
    0x0000630a ldr.w r1, [pc, 0x608]                             |     
    0x0000630e strh r2, [r3], 2                                  |     *(r3) = r2;
                                                                 |     r3 += 2;
    0x00006312 lsrs r2, r2, 0x10                                 |     r2 >>= 0x10;
    0x00006314 add r1, pc                                        |     r1 = 0xcc2e;
    0x00006316 strb r2, [r3]                                     |     *(r3) = r2;
    0x00006318 blx 0x1d4c                                        |     r0 = fstat64 ();
    0x0000631c mov r8, r0                                        |     r8 = r0;
    0x0000631e cmp r0, 0                                         |     
                                                                 |     if (r0 == 0) {
    0x00006320 beq.w 0x752c                                      |         goto label_102;
                                                                 |     }
    0x00006324 ldr.w r1, [pc, 0x5f0]                             |     
    0x00006328 movs r0, 7                                        |     r0 = 7;
    0x0000632a ldr r2, [sp, 0x40]                                |     r2 = var_40h;
    0x0000632c add.w r6, sp, 0x1300                              |     r6 += ptr;
    0x0000632e ldrsb r0, [r3, r2]                                |     r0 = *((r3 + r2));
    0x00006330 ldr r7, [sp, 0x38]                                |     r7 = var_38h;
    0x00006332 adds r6, 0x1c                                     |     r6 += 0x1c;
    0x00006334 add r1, pc                                        |     r1 = 0xcc50;
    0x00006336 vmov.i32 d8, 0                                    |     __asm ("vmov.i32 d8, 0");
    0x0000633a bl 0x85e4                                         |     fcn_000085e4 (r0);
    0x0000633e ldr.w r3, [pc, 0x5dc]                             |     
    0x00006342 add r3, pc                                        |     r3 = 0xcc64;
    0x00006344 str r3, [sp, 0x38]                                |     var_38h = r3;
    0x00006346 add.w r3, sp, 0x1320                              |     r3 += arg_1320h;
    0x0000634a str r3, [sp, 0x2c]                                |     var_2ch = r3;
                                                                 |     do {
                                                                 | label_17:
    0x0000634c mov r2, r8                                        |         r2 = r8;
    0x0000634e mov.w r1, 0x2800                                  |         r1 = 0x2800;
    0x00006352 mov r0, r6                                        |         r0 = r6;
    0x00006354 blx 0x19ac                                        |         r0 = fcn_000019ac ();
    0x00006358 cmp r0, 0                                         |         
                                                                 |         if (r0 == 0) {
    0x0000635a beq 0x63d8                                        |             goto label_103;
                                                                 |         }
                                                                 | label_15:
    0x0000635c movs r1, 0x20                                     |         r1 = 0x20;
    0x0000635e mov r0, r6                                        |         r0 = r6;
    0x00006360 adds r7, 1                                        |         r7++;
    0x00006362 blx 0x1bbc                                        |         r0 = fcn_00001bbc ();
    0x00006366 cmp r0, 0                                         |         
                                                                 |         if (r0 == 0) {
    0x00006368 beq 0x63f4                                        |             goto label_104;
                                                                 |         }
    0x0000636a adds r0, 1                                        |         r0++;
    0x0000636c movs r1, 0x20                                     |         r1 = 0x20;
    0x0000636e blx 0x1bbc                                        |         r0 = fcn_00001bbc ();
    0x00006372 cmp r0, 0                                         |         
                                                                 |         if (r0 == 0) {
    0x00006374 beq 0x63f4                                        |             goto label_104;
                                                                 |         }
    0x00006376 ldr r3, [sp, 0x20]                                |         r3 = stream;
    0x00006378 ldrb r2, [r0, 1]                                  |         r2 = *((r0 + 1));
    0x0000637a subw r3, r3, 0xaa4                                |         __asm ("subw r3, r3, 0xaa4");
    0x0000637e ldr r3, [r3]                                      |         r3 = *(r3);
    0x00006380 add.w r3, r3, 0x1000                              |         r3 += 0x1000;
    0x00006384 ldrb r3, [r3, 8]                                  |         r3 = *((r3 + 8));
    0x00006386 cmp r2, r3                                        |         
    0x00006388 ldr r3, [sp, 0x2c]                                |         r3 = var_2ch;
    0x0000638a ite ne                                            |         
                                                                 |         if (r2 == r3) {
    0x0000638c addne sb, r0, 1                                   |             sb = r0 + 1;
                                                                 |         }
                                                                 |         if (r2 == r3) {
    0x00006390 add.w sb, r0, 2                                   |             sb = r0 + 2;
                                                                 |         }
    0x00006394 movs r2, 0xa                                      |         r2 = 0xa;
    0x00006396 mov r0, sb                                        |         r0 = sb;
    0x00006398 sub.w r1, r3, 0x10                                |         r1 = r3 - 0x10;
    0x0000639c blx 0x1da4                                        |         fcn_00001da4 ();
    0x000063a0 str r0, [sp, 0x1c]                                |         var_1ch = r0;
    0x000063a2 cmp r0, 0                                         |         
    0x000063a4 bne 0x634c                                        |         
                                                                 |     } while (r0 != 0);
    0x000063a6 movs r1, 0xa                                      |     r1 = 0xa;
    0x000063a8 mov r0, sb                                        |     r0 = sb;
    0x000063aa blx 0x1bbc                                        |     r0 = fcn_00001bbc ();
                                                                 |     if (r0 != 0) {
    0x000063ae cbz r0, 0x63b4                                    |         
    0x000063b0 ldr r3, [sp, 0x1c]                                |         r3 = var_1ch;
    0x000063b2 strb r3, [r0]                                     |         *(r0) = r3;
                                                                 |     }
    0x000063b4 movs r3, 0                                        |     r3 = 0;
    0x000063b6 ldr r0, [sp, 0x4c]                                |     r0 = var_4h;
    0x000063b8 add.w r1, sb, 0xa                                 |     r1 = sb + 0xa;
    0x000063bc movs r2, 1                                        |     r2 = 1;
    0x000063be vstr d8, [sp]                                     |     __asm ("vstr d8, [sp]");
    0x000063c2 str r3, [sp, 8]                                   |     var_8h_2 = r3;
    0x000063c4 bl 0x5330                                         |     fcn_00005330 (r0, r1, r2, r3);
    0x000063c8 mov r2, r8                                        |     r2 = r8;
    0x000063ca mov.w r1, 0x2800                                  |     r1 = 0x2800;
    0x000063ce mov r0, r6                                        |     r0 = r6;
    0x000063d0 blx 0x19ac                                        |     r0 = fcn_000019ac ();
    0x000063d4 cmp r0, 0                                         |     
                                                                 |     if (r0 != 0) {
    0x000063d6 bne 0x635c                                        |         goto label_15;
                                                                 |     }
                                                                 | label_103:
    0x000063d8 ldr r0, [sp, 0x4c]                                |     r0 = var_4h;
    0x000063da bl 0x53c0                                         |     fcn_000053c0 (r0);
    0x000063de ldr.w r1, [pc, 0x540]                             |     
    0x000063e2 movs r0, 7                                        |     r0 = 7;
    0x000063e4 ldr r2, [sp, 0x40]                                |     r2 = var_40h;
    0x000063e6 add r1, pc                                        |     r1 = 0xcd0c;
    0x000063e8 bl 0x85e4                                         |     fcn_000085e4 (r0);
    0x000063ec mov r0, r8                                        |     r0 = r8;
    0x000063ee blx 0x1c84                                        |     fcn_00001c84 ();
    0x000063f2 b 0x6224                                          |     goto label_16;
                                                                 | label_104:
    0x000063f4 ldr r2, [sp, 0x40]                                |     r2 = var_40h;
    0x000063f6 mov r3, r7                                        |     r3 = r7;
    0x000063f8 ldr r1, [sp, 0x38]                                |     r1 = var_38h;
    0x000063fa movs r0, 3                                        |     r0 = 3;
    0x000063fc str r6, [sp]                                      |     *(sp) = r6;
    0x000063fe bl 0x85e4                                         |     fcn_000085e4 (r0);
    0x00006402 b 0x634c                                          |     goto label_17;
                                                                 | label_95:
    0x00006404 ldr r3, [sp, 0x1c]                                |     r3 = var_1ch;
    0x00006406 movs r0, 3                                        |     r0 = 3;
    0x00006408 ldr r2, [sp, 0x38]                                |     r2 = var_38h;
    0x0000640a ldr r1, [sp, 0x44]                                |     r1 = var_44h;
    0x0000640c str r7, [sp]                                      |     *(sp) = r7;
    0x0000640e bl 0x85e4                                         |     fcn_000085e4 (r0);
    0x00006412 b 0x6178                                          |     goto label_9;
                                                                 | label_89:
    0x00006414 blx 0x1be4                                        |     r0 = isoc99_sscanf ();
    0x00006418 ldr r7, [r0]                                      |     r7 = *(r0);
    0x0000641a rsbs r7, r7, 0                                    |     r7 -= ;
                                                                 | label_40:
    0x0000641c cmp r7, 0                                         |     
                                                                 |     if (r7 >= 0) {
    0x0000641e bge.w 0x612a                                      |         goto label_18;
                                                                 |     }
    0x00006422 rsbs r0, r7, 0                                    |     r0 = r7 - ;
    0x00006424 blx 0x1b18                                        |     system (r0)
    0x00006426 sbcs.w r8, r8, pc, lsr 31                         |     __asm ("sbcs.w r8, r8, pc, lsr 31");
    0x0000642a asrs r0, r7, 0x13                                 |     r0 = r7 >> 0x13;
    0x0000642c mov r2, r0                                        |     r2 = r0;
    0x0000642e movs r0, 2                                        |     r0 = 2;
    0x00006430 add r1, pc                                        |     r1 += pc;
    0x00006432 bl 0x85e4                                         |     fcn_000085e4 (r0);
    0x00006434 ldr.w r4, [r7, 0x630]                             |     r4 = *((r7 + 0x630));
    0x00006438 bl 0xa164                                         |     fcn_0000a164 (r0);
    0x0000643c b 0x5e46                                          |     goto label_11;
                                                                 | label_23:
    0x0000643e ldr r2, [sp, 0x20]                                |     r2 = stream;
    0x00006440 ldr.w sl, [sp, 0x38]                              |     sl = var_38h;
    0x00006444 ldr.w fp, [sp, 0x40]                              |     fp = var_40h;
    0x00006448 subw r3, r2, 0xaac                                |     __asm ("subw r3, r2, 0xaac");
    0x0000644c ldr r1, [r3]                                      |     r1 = *(r3);
    0x0000644e subw r3, r2, 0xaa8                                |     __asm ("subw r3, r2, 0xaa8");
    0x00006452 ldr.w sb, [r3]                                    |     sb = *(r3);
    0x00006456 str r1, [sp, 0x54]                                |     var_54h = r1;
    0x00006458 cmp r1, 0                                         |     
                                                                 |     if (r1 == 0) {
    0x0000645a beq.w 0x656e                                      |         goto label_22;
                                                                 |     }
    0x0000645e ldr.w r3, [pc, 0x4c8]                             |     
    0x00006462 ldr.w r6, [pc, 0x4c8]                             |     
    0x00006466 strd sl, fp, [sp, 0x64]                           |     __asm ("strd sl, fp, [var_0h_2x64]");
    0x0000646a add r3, pc                                        |     r3 = 0xcd98;
    0x0000646c ldr.w fp, [sp, 0x34]                              |     fp = var_34h;
    0x0000646e add sp, 0xd0                                      |     
    0x00006470 str r3, [sp, 0x58]                                |     var_58h = r3;
    0x00006472 add r6, pc                                        |     r6 = 0xcda4;
    0x00006474 ldr.w r3, [pc, 0x4b8]                             |     
    0x00006478 ldr r7, [sp, 0x28]                                |     r7 = var_28h;
    0x0000647a ldr r5, [sp, 0x18]                                |     r5 = var_18h;
    0x0000647c add r3, pc                                        |     
    0x0000647e str.w sb, [sp, 0x6c]                              |     __asm ("str.w sb, [var_6ch]");
    0x00006482 str r3, [sp, 0x1c]                                |     var_1ch = r3;
    0x00006484 ldr.w r3, [pc, 0x4ac]                             |     r3 = fcn.0000d5fc;
    0x00006488 add r3, pc                                        |     r3 = "built-in";
    0x0000648a str r3, [sp, 0x30]                                |     var_30h = r3;
    0x0000648c sub.w r3, sb, 4                                   |     r3 = sb - 4;
    0x0000648e lsls r4, r0, 0xc                                  |     r4 = r0 << 0xc;
    0x00006490 mov sb, r6                                        |     sb = r6;
    0x00006492 str r3, [sp, 0x40]                                |     var_40h = r3;
    0x00006494 movs r3, 0                                        |     r3 = 0;
    0x00006496 str r3, [sp, 0x38]                                |     var_38h = r3;
                                                                 | label_19:
    0x00006498 ldr r3, [sp, 0x40]                                |     r3 = var_40h;
    0x0000649a mov r8, r5                                        |     r8 = r5;
    0x0000649c ldr r1, [sp, 0x58]                                |     r1 = var_58h;
    0x0000649e ldr r2, [r3, 4]!                                  |     r2 = *((r3 += 4));
    0x000064a2 strd r3, r2, [sp, 0x40]                           |     __asm ("strd r3, r2, [sp, 0x40]");
    0x000064a6 movs r3, 0                                        |     r3 = 0;
    0x000064a8 str r3, [r7]                                      |     *(r7) = r3;
    0x000064aa add.w r3, r2, 0xc                                 |     r3 = r2 + 0xc;
    0x000064ac lsls r4, r1, 0xc                                  |     r4 = r1 << 0xc;
    0x000064ae mov r0, r3                                        |     r0 = r3;
    0x000064b0 str r3, [sp, 0x2c]                                |     var_2ch = r3;
    0x000064b2 blx 0x1d4c                                        |     r0 = fstat64 ();
    0x000064b6 mov r6, r0                                        |     r6 = r0;
    0x000064b8 cmp r0, 0                                         |     
                                                                 |     if (r0 != 0) {
    0x000064ba bne 0x653e                                        |         goto label_105;
                                                                 |     }
    0x000064bc b.w 0x7602                                        |     goto label_106;
                                                                 |     do {
    0x000064c0 ldrb r3, [r4]                                     |         r3 = *(r4);
    0x000064c2 cmp r3, 0x23                                      |         
    0x000064c4 it ne                                             |         
                                                                 |         if (r3 != 0x23) {
    0x000064c6 cmpne r3, 0                                       |             __asm ("cmpne r3, 0");
                                                                 |         }
                                                                 |         if (r3 != 0x23) {
    0x000064c8 beq 0x6538                                        |             
    0x000064ca mov r2, r8                                        |             r2 = r8;
    0x000064cc mov r1, sb                                        |             r1 = sb;
    0x000064ce blx 0x1aac                                        |             r0 = opendir ();
    0x000064d2 mov r5, r0                                        |             r5 = r0;
                                                                 |             if (r0 == 0) {
    0x000064d4 cbz r0, 0x6538                                    |                 goto label_28;
                                                                 |             }
    0x000064d6 ldr r1, [sp, 0x1c]                                |             r1 = var_1ch;
    0x000064d8 blx 0x1924                                        |             r0 = fcn_00001924 ();
    0x000064dc cmp r0, 0                                         |             
                                                                 |             if (r0 == 0) {
    0x000064de beq.w 0x6876                                      |                 goto label_107;
                                                                 |             }
    0x000064e2 ldr r1, [sp, 0x30]                                |             r1 = var_30h;
    0x000064e4 mov r0, r5                                        |             r0 = r5;
    0x000064e6 blx 0x1924                                        |             r0 = fcn_00001924 ();
    0x000064ea mov sl, r0                                        |             sl = r0;
    0x000064ec cmp r0, 0                                         |             
                                                                 |             if (r0 == 0) {
    0x000064ee beq.w 0x697c                                      |                 goto label_108;
                                                                 |             }
    0x000064f2 ldr.w r1, [pc, 0x444]                             |             
    0x000064f6 mov r0, r5                                        |             r0 = r5;
    0x000064f8 add r1, pc                                        |             r1 = 0xce36;
    0x000064fa blx 0x1924                                        |             r0 = fcn_00001924 ();
    0x000064fe mov sl, r0                                        |             sl = r0;
    0x00006500 cmp r0, 0                                         |             
                                                                 |             if (r0 == 0) {
    0x00006502 beq.w 0x6a46                                      |                 goto label_109;
                                                                 |             }
    0x00006506 ldr.w r1, [pc, 0x434]                             |             
    0x0000650a mov r0, r5                                        |             r0 = r5;
    0x0000650c add r1, pc                                        |             r1 = 0xce4e;
    0x0000650e blx 0x1924                                        |             r0 = fcn_00001924 ();
                                                                 |             if (r0 != 0) {
    0x00006512 cbz r0, 0x6526                                    |                 
    0x00006514 ldr.w r1, [pc, 0x428]                             |                 
    0x00006518 mov r0, r5                                        |                 r0 = r5;
    0x0000651a add r1, pc                                        |                 r1 = 0xce5e;
    0x0000651c blx 0x1924                                        |                 r0 = fcn_00001924 ();
    0x00006520 cmp r0, 0                                         |                 
                                                                 |                 if (r0 != 0) {
    0x00006522 bne.w 0x6864                                      |                     goto label_29;
                                                                 |                 }
                                                                 |             }
    0x00006526 ldr.w r1, [pc, 0x41c]                             |             
    0x0000652a movs r0, 6                                        |             r0 = 6;
    0x0000652c str r5, [sp]                                      |             *(sp) = r5;
    0x0000652e ldr r3, [r7]                                      |             r3 = *(r7);
    0x00006530 ldr r2, [sp, 0x2c]                                |             r2 = var_2ch;
    0x00006532 add r1, pc                                        |             r1 = 0xce7c;
    0x00006534 bl 0x85e4                                         |             fcn_000085e4 (r0);
                                                                 |         }
                                                                 | label_28:
    0x00006538 mov r0, r4                                        |         r0 = r4;
    0x0000653a blx 0x19a0                                        |         fcn_000019a0 ();
                                                                 | label_105:
    0x0000653e mov r1, r7                                        |         r1 = r7;
    0x00006540 mov r0, r6                                        |         r0 = r6;
    0x00006542 bl 0x9550                                         |         r0 = fcn_00009550 (r0, r1);
    0x00006546 mov r4, r0                                        |         r4 = r0;
    0x00006548 cmp r0, 0                                         |         
    0x0000654a bne 0x64c0                                        |         
                                                                 |     } while (r0 != 0);
    0x0000654c mov r0, r6                                        |     r0 = r6;
    0x0000654e mov r5, r8                                        |     r5 = r8;
    0x00006550 blx 0x1c84                                        |     fcn_00001c84 ();
                                                                 | label_59:
    0x00006554 ldr r0, [sp, 0x44]                                |     r0 = var_44h;
    0x00006556 blx 0x19a0                                        |     fcn_000019a0 ();
    0x0000655a ldr r3, [sp, 0x38]                                |     r3 = var_38h;
    0x0000655c ldr r2, [sp, 0x54]                                |     r2 = var_54h;
    0x0000655e adds r3, 1                                        |     r3++;
    0x00006560 cmp r2, r3                                        |     
    0x00006562 str r3, [sp, 0x38]                                |     var_38h = r3;
                                                                 |     if (r2 != r3) {
    0x00006564 bne 0x6498                                        |         goto label_19;
                                                                 |     }
    0x00006566 ldrd sl, fp, [sp, 0x64]                           |     __asm ("ldrd sl, fp, [var_64h]");
    0x0000656a ldr.w sb, [sp, 0x6c]                              |     sb = var_6ch;
    0x0000656c str r0, [sp, 0x1b0]                               |     *((sp + 0x1b0)) = r0;
                                                                 | label_22:
    0x0000656e mov r0, sb                                        |     r0 = sb;
    0x00006570 blx 0x19a0                                        |     fcn_000019a0 ();
    0x00006572 ands.w fp, r6, r8, lsl 4                          |     
    0x00006574 ldr r3, [sp, 0x20]                                |     r3 = stream;
    0x00006576 ldr.w r3, [r3, 0x7e8]                             |     r3 = *((r3 + 0x7e8));
    0x00006578 adds r7, 0xe8                                     |     r7 += 0xe8;
    0x0000657a cmp r3, 0                                         |     
                                                                 |     if (r3 == 0) {
    0x0000657c beq.w 0x7154                                      |         goto label_110;
                                                                 |     }
                                                                 | label_47:
    0x00006580 ldr r3, [sp, 0x20]                                |     r3 = stream;
    0x00006582 ldr r5, [sp, 0x4c]                                |     r5 = var_4h;
    0x00006584 subw r4, r3, 0xaa4                                |     __asm ("subw r4, r3, 0xaa4");
    0x00006588 ldr r1, [r4]                                      |     r1 = *(r4);
    0x0000658a mov r0, r5                                        |     r0 = r5;
    0x0000658c adds r1, 4                                        |     r1 += 4;
    0x0000658e bl 0x5c4c                                         |     r0 = void (*0x5c4c)(uint32_t, uint32_t, uint32_t, uint32_t, uint32_t, uint32_t, uint32_t) (r0, r1, r2, r3, r4, r5, r6);
    0x00006592 cmp r0, 0                                         |     
                                                                 |     if (r0 < 0) {
    0x00006594 blt.w 0x7164                                      |         goto label_111;
                                                                 |     }
    0x00006598 ldr r3, [r4]                                      |     r3 = *(r4);
    0x0000659a add.w r3, r3, 0x1000                              |     r3 += 0x1000;
    0x0000659e ldr r4, [r3, 0x14]                                |     r4 = *((r3 + 0x14));
                                                                 |     if (r4 == 0) {
    0x000065a0 cbz r4, 0x65b2                                    |         goto label_43;
                                                                 |     }
                                                                 |     do {
    0x000065a2 add.w r1, r4, 8                                   |         r1 = r4 + 8;
    0x000065a6 mov r0, r5                                        |         r0 = r5;
    0x000065a8 bl 0x5c4c                                         |         void (*0x5c4c)(uint32_t, uint32_t, uint32_t, uint32_t, uint32_t, uint32_t, uint32_t) (r0, r1, r2, r3, r4, r5, r6);
    0x000065ac ldr r4, [r4]                                      |         r4 = *(r4);
    0x000065ae cmp r4, 0                                         |         
    0x000065b0 bne 0x65a2                                        |         
                                                                 |     } while (r4 != 0);
                                                                 | label_43:
    0x000065b2 ldr r3, [sp, 0x20]                                |     r3 = stream;
    0x000065b4 ldr r7, [sp, 0x18]                                |     r7 = var_18h;
    0x000065b6 subw r5, r3, 0xaa4                                |     __asm ("subw r5, r3, 0xaa4");
    0x000065ba ldr r0, [r5, 0x1c]                                |     r0 = *((r5 + 0x1c));
    0x000065bc mov r1, r7                                        |     r1 = r7;
    0x000065be bl 0x91d8                                         |     fcn_000091d8 (r0, r1);
    0x000065c2 ldr r4, [sp, 0x28]                                |     r4 = var_28h;
    0x000065c4 sub.w r6, r4, 0x1c                                |     r6 = r4 - 0x1c;
    0x000065c8 b 0x65dc                                          |     
                                                                 |     while (r0 != 0) {
    0x000065ca ldr r1, [r4]                                      |         r1 = *(r4);
    0x000065cc mov r0, r6                                        |         r0 = r6;
    0x000065ce ldr r3, [r5, 0xc]                                 |         r3 = *((r5 + 0xc));
    0x000065d0 strh r3, [r1, 0x38]                               |         *((r1 + 0x38)) = r3;
    0x000065d2 bl 0x8b98                                         |         r0 = fcn_00008b98 (r0, r1);
    0x000065d6 cmp r0, 0                                         |         
                                                                 |         if (r0 < 0) {
    0x000065d8 blt.w 0x7106                                      |             goto label_112;
                                                                 |         }
    0x000065dc mov r2, r4                                        |         r2 = r4;
    0x000065de movs r1, 0                                        |         r1 = 0;
    0x000065e0 mov r0, r7                                        |         r0 = r7;
    0x000065e2 bl 0x91e8                                         |         r0 = fcn_000091e8 (r0, r1, r2, r3);
    0x000065e6 cmp r0, 0                                         |         
    0x000065e8 bne 0x65ca                                        |         
                                                                 |     }
    0x000065ea ldr r3, [sp, 0x20]                                |     r3 = stream;
    0x000065ec mov r4, r0                                        |     r4 = r0;
    0x000065ee ldr r1, [pc, 0x358]                               |     
    0x000065f0 subw r3, r3, 0xaa4                                |     __asm ("subw r3, r3, 0xaa4");
    0x000065f4 ldr r0, [r3]                                      |     r0 = *(r3);
    0x000065f6 add r1, pc                                        |     r1 = 0xcf44;
    0x000065f8 adds r0, 4                                        |     r0 += 4;
    0x000065fa bl 0x5238                                         |     r0 = fcn_00005238 (r0, r1);
    0x000065fe mov r5, r0                                        |     r5 = r0;
                                                                 |     if (r0 == 0) {
    0x00006600 cbz r0, 0x6652                                    |         goto label_113;
                                                                 |     }
    0x00006602 add.w r6, sp, 0x1300                              |     r6 += ptr;
    0x00006606 adds r6, 0x1c                                     |     r6 += 0x1c;
    0x00006608 mov r7, r6                                        |     r7 = r6;
                                                                 |     do {
                                                                 | label_20:
    0x0000660a mov r2, r5                                        |         r2 = r5;
    0x0000660c mov.w r1, 0x1000                                  |         r1 = 0x1000;
    0x00006610 mov r0, r6                                        |         r0 = r6;
    0x00006612 blx 0x19ac                                        |         r0 = fcn_000019ac ();
    0x00006616 cmp r0, 0                                         |         
                                                                 |         if (r0 == 0) {
    0x00006618 beq.w 0x7026                                      |             goto label_114;
                                                                 |         }
    0x0000661c mov r0, r6                                        |         r0 = r6;
    0x0000661e adds r4, 1                                        |         r4++;
    0x00006620 blx 0x1bb0                                        |         r0 = fcn_00001bb0 ();
    0x00006624 cmp r0, 0                                         |         
    0x00006626 beq 0x660a                                        |         
                                                                 |     } while (r0 == 0);
    0x00006628 add r0, r7                                        |     r0 += r7;
    0x0000662a ldrb r3, [r0, -0x1]                               |     r3 = *((r0 - 0x1));
    0x0000662e cmp r3, 0xa                                       |     
                                                                 |     if (r3 == 0xa) {
    0x00006630 beq 0x660a                                        |         goto label_20;
                                                                 |     }
    0x00006632 ldr r3, [sp, 0x20]                                |     r3 = stream;
    0x00006634 movs r0, 3                                        |     r0 = 3;
    0x00006636 ldr r1, [pc, 0x314]                               |     
    0x00006638 str r4, [sp]                                      |     *(sp) = r4;
    0x0000663a subw r3, r3, 0xaa4                                |     __asm ("subw r3, r3, 0xaa4");
    0x0000663e ldr r2, [r3]                                      |     r2 = *(r3);
    0x00006640 add r1, pc                                        |     r1 = 0xcf92;
    0x00006642 ldr r3, [pc, 0x30c]                               |     
    0x00006644 adds r2, 4                                        |     r2 += 4;
    0x00006646 add r3, pc                                        |     r3 = 0xcf9c;
    0x00006648 bl 0x85e4                                         |     fcn_000085e4 (r0);
                                                                 | label_42:
    0x0000664c mov r0, r5                                        |     r0 = r5;
    0x0000664e blx 0x1c84                                        |     fcn_00001c84 ();
                                                                 | label_113:
    0x00006652 ldr r3, [sp, 0x20]                                |     r3 = stream;
    0x00006654 movs r0, 7                                        |     r0 = 7;
    0x00006656 ldr r1, [pc, 0x2fc]                               |     
    0x00006658 subw r4, r3, 0xaa4                                |     __asm ("subw r4, r3, 0xaa4");
    0x0000665c ldr r2, [r4, 0xc]                                 |     r2 = *((r4 + 0xc));
    0x0000665e add r1, pc                                        |     r1 = 0xcfb8;
    0x00006660 bl 0x85e4                                         |     fcn_000085e4 (r0);
    0x00006664 ldrd r6, r2, [r4, 8]                              |     __asm ("ldrd r6, r2, [r4, 8]");
    0x00006668 add.w r8, r6, r2, lsl 2                           |     r8 = r6 + (r2 << 2);
    0x0000666c cmp r6, r8                                        |     
                                                                 |     if (r6 >= r8) {
    0x0000666e bhs.w 0x6b26                                      |         goto label_115;
                                                                 |     }
    0x00006672 ldr r3, [pc, 0x2e4]                               |     
    0x00006674 ldr r2, [sp, 0x20]                                |     r2 = stream;
    0x00006676 strd sl, fp, [sp, 0x28]                           |     __asm ("strd sl, fp, [var_0h_2x28]");
    0x0000667a add r3, pc                                        |     r3 = 0xcfd8;
    0x0000667c ldr r7, [sp, 0x4c]                                |     r7 = var_4h;
    0x0000667e ldr.w sb, [sp, 0x18]                              |     sb = var_18h;
    0x00006682 subw r5, r2, 0xa18                                |     __asm ("subw r5, r2, 0xa18");
    0x00006686 mov sl, r3                                        |     sl = r3;
    0x00006688 str r6, [sp, 0x1c]                                |     var_1ch = r6;
    0x0000668a b 0x66ca                                          |     
                                                                 |     while (r0 < 0) {
    0x0000668c adds r3, r0, 2                                    |         r3 = r0 + 2;
    0x0000668e ldr r6, [r4, 4]                                   |         r6 = *((r4 + 4));
                                                                 |         if (r3 == r0) {
    0x00006690 beq 0x6716                                        |             goto label_116;
                                                                 |         }
    0x00006692 rsbs r0, r0, 0                                    |         r0 -= ;
    0x00006694 blx 0x1b18                                        |         system (r0)
    0x00006698 mov r2, r6                                        |         r2 = r6;
    0x0000669a mov r3, r0                                        |         r3 = r0;
    0x0000669c mov r1, sl                                        |         r1 = sl;
    0x0000669e movs r0, 3                                        |         r0 = 3;
    0x000066a0 bl 0x85e4                                         |         fcn_000085e4 (r0);
                                                                 | label_21:
    0x000066a4 mov r1, r4                                        |         r1 = r4;
    0x000066a6 ldr r0, [r1], 0x10                                |         r0 = *(r1);
                                                                 |         r1 += 0x10;
    0x000066aa bl 0xdfec                                         |         fcn_0000dfec (r0, r1);
    0x000066ae mov r1, r4                                        |         r1 = r4;
    0x000066b0 ldr r0, [r1], 0x14                                |         r0 = *(r1);
                                                                 |         r1 += 0x14;
    0x000066b4 bl 0xe4cc                                         |         fcn_0000e4cc (r0, r1);
    0x000066b8 ldr r0, [r4]                                      |         r0 = *(r4);
    0x000066ba bl 0xcd5c                                         |         fcn_0000cd5c (r0);
    0x000066be movs r3, 0                                        |         r3 = 0;
    0x000066c0 str r3, [r4]                                      |         *(r4) = r3;
    0x000066c2 ldr r3, [sp, 0x1c]                                |         r3 = var_1ch;
    0x000066c4 cmp r8, r3                                        |         
                                                                 |         if (r8 < r3) {
    0x000066c6 bls.w 0x6b22                                      |             goto label_117;
                                                                 |         }
    0x000066ca ldr r3, [sp, 0x1c]                                |         r3 = var_1ch;
    0x000066cc mov r1, sb                                        |         r1 = sb;
    0x000066ce ldr r4, [r3], 4                                   |         r4 = *(r3);
                                                                 |         r3 += 4;
    0x000066d2 str r3, [sp, 0x1c]                                |         var_1ch = r3;
    0x000066d4 movs r3, 0                                        |         r3 = 0;
    0x000066d6 ldr r0, [r4]                                      |         r0 = *(r4);
    0x000066d8 str r3, [r5]                                      |         *(r5) = r3;
    0x000066da bl 0xe378                                         |         r0 = fcn_0000e378 (r0, r1);
    0x000066de cmp r0, 0                                         |         
    0x000066e0 blt 0x668c                                        |         
                                                                 |     }
    0x000066e2 ldr r6, [r5]                                      |     r6 = *(r5);
                                                                 |     do {
                                                                 |         if (r6 == 0) {
    0x000066e4 cbz r6, 0x6712                                    |             goto label_118;
                                                                 |         }
    0x000066e6 mov r0, r6                                        |         r0 = r6;
    0x000066e8 bl 0xe33c                                         |         r0 = fcn_0000e33c (r0);
    0x000066ec mov fp, r0                                        |         
    0x000066ee mov r0, r6                                        |         r0 = r6;
    0x000066f0 bl 0xe348                                         |         fcn_0000e348 (r0);
    0x000066f4 movs r2, 0                                        |         r2 = 0;
    0x000066f6 strd r0, r1, [sp]                                 |         __asm ("strd r0, r1, [sp]");
    0x000066fa str r4, [sp, 8]                                   |         var_8h_2 = r4;
    0x000066fc mov r0, r7                                        |         r0 = r7;
    0x000066fe mov r1, fp                                        |         r1 = fp;
    0x00006700 bl 0x5330                                         |         fcn_00005330 (r0, r1, r2, r3);
    0x00006704 ldr r6, [r6]                                      |         r6 = *(r6);
    0x00006706 ldr r0, [r5]                                      |         r0 = *(r5);
    0x00006708 cmp r6, r0                                        |         
    0x0000670a bne 0x66e4                                        |         
                                                                 |     } while (r6 != r0);
                                                                 |     do {
    0x0000670c bl 0xe35c                                         |         fcn_0000e35c (r0);
    0x00006710 b 0x66a4                                          |         goto label_21;
                                                                 | label_118:
    0x00006712 ldr r0, [r5]                                      |         r0 = *(r5);
    0x00006714 b 0x670c                                          |         
                                                                 |     } while (1);
                                                                 | label_116:
    0x00006716 ldr r1, [pc, 0x244]                               |     
    0x00006718 mov r2, r6                                        |     r2 = r6;
    0x0000671a movs r0, 7                                        |     r0 = 7;
    0x0000671c add r1, pc                                        |     r1 = 0xd07e;
    0x0000671e bl 0x85e4                                         |     fcn_000085e4 (r0);
    0x00006722 b 0x66a4                                          |     goto label_21;
                                                                 | label_96:
    0x00006724 ldr r1, [sp, 0x20]                                |     r1 = stream;
    0x00006726 movs r3, 0                                        |     r3 = 0;
    0x00006728 subw r2, r1, 0xaac                                |     __asm ("subw r2, r1, 0xaac");
    0x0000672c str r3, [r2]                                      |     *(r2) = r3;
    0x0000672e subw r2, r1, 0xaa8                                |     __asm ("subw r2, r1, 0xaa8");
    0x00006732 str r3, [r2]                                      |     *(r2) = r3;
    0x00006734 mov r3, fp                                        |     r3 = fp;
    0x00006736 cmp.w fp, 0                                       |     
                                                                 |     if (fp == 0) {
    0x0000673a beq.w 0x711e                                      |         goto label_119;
                                                                 |     }
    0x0000673c strh r0, [r6, 0x26]                               |     *((r6 + 0x26)) = r0;
                                                                 | label_44:
    0x0000673e ldr.w sb, [r3]                                    |     sb = *(r3);
    0x00006742 cmp.w sb, 0                                       |     
                                                                 |     if (sb == 0) {
    0x00006746 beq.w 0x656e                                      |         goto label_22;
                                                                 |     }
    0x0000674a ldr r2, [pc, 0x214]                               |     
    0x0000674c mov r5, sb                                        |     r5 = sb;
    0x0000674e ldr r7, [pc, 0x214]                               |     
    0x00006750 ldr r6, [pc, 0x214]                               |     
    0x00006752 add r2, pc                                        |     r2 = 0xd0b8;
    0x00006754 str.w sl, [sp, 0x38]                              |     __asm ("str.w sl, [var_38h]");
    0x00006758 str r2, [sp, 0x30]                                |     var_30h = r2;
    0x0000675a add r7, pc                                        |     r7 = 0xd0c4;
    0x0000675c ldr r2, [pc, 0x20c]                               |     
    0x0000675e add r6, pc                                        |     r6 = 0xd0ca;
    0x00006760 ldr.w sb, [sp, 0x28]                              |     sb = var_28h;
    0x00006764 mov sl, r3                                        |     sl = r3;
    0x00006766 str.w fp, [sp, 0x40]                              |     __asm ("str.w fp, [var_40h]");
    0x0000676a add r2, pc                                        |     r2 = 0xd0da;
    0x0000676c str r2, [sp, 0x2c]                                |     var_2ch = r2;
    0x0000676e b 0x678a                                          |     goto label_120;
                                                                 | label_24:
    0x00006770 mov r3, r0                                        |     r3 = r0;
    0x00006772 mov r2, r5                                        |     r2 = r5;
    0x00006774 sub.w r1, sb, 0x2c                                |     r1 = sb - 0x2c;
    0x00006778 sub.w r0, sb, 0x28                                |     r0 = sb - 0x28;
    0x0000677c bl 0x5458                                         |     fcn_00005458 (r0, r1, r2, r3, r4);
                                                                 | label_27:
    0x00006780 ldr r5, [sl, 4]!                                  |     r5 = *((sl += 4));
    0x00006784 cmp r5, 0                                         |     
                                                                 |     if (r5 == 0) {
    0x00006786 beq.w 0x643e                                      |         goto label_23;
                                                                 |     }
                                                                 | label_120:
    0x0000678a mov r1, sb                                        |     r1 = sb;
    0x0000678c mov r0, r5                                        |     r0 = r5;
    0x0000678e blx 0x1a28                                        |     r0 = realloc (r0, r1);
    0x00006792 cmp r0, 0                                         |     
                                                                 |     if (r0 != 0) {
    0x00006794 bne 0x684c                                        |         goto label_121;
                                                                 |     }
    0x00006796 ldr.w r2, [sb, 0x10]                              |     r2 = *((sb + 0x10));
    0x0000679a and r2, r2, 0xf000                                |     r2 &= 0xf000;
    0x0000679e cmp.w r2, 0x4000                                  |     
                                                                 |     if (r2 != 0x4000) {
    0x000067a2 bne 0x6770                                        |         goto label_24;
                                                                 |     }
    0x000067a4 mov r0, r5                                        |     r0 = r5;
    0x000067a6 blx 0x1ab8                                        |     r0 = fnmatch ();
    0x000067aa mov r8, r0                                        |     r8 = r0;
    0x000067ac cmp r0, 0                                         |     
                                                                 |     if (r0 == 0) {
    0x000067ae beq.w 0x7516                                      |         goto label_122;
                                                                 |     }
    0x000067b2 blx 0x1cf4                                        |     r0 = fcn_00001cf4 ();
    0x000067b6 cmp r0, 0                                         |     
                                                                 |     if (r0 == 0) {
    0x000067b8 beq 0x683a                                        |         goto label_123;
                                                                 |     }
    0x000067ba str.w sl, [sp, 0x1c]                              |     __asm ("str.w sl, [var_1ch]");
    0x000067be mov sl, r0                                        |     sl = r0;
    0x000067c0 ldr.w fp, [sp, 0x18]                              |     fp = var_18h;
    0x000067c4 b 0x6802                                          |     goto label_124;
                                                                 | label_25:
    0x000067c6 mov r0, r8                                        |     r0 = r8;
    0x000067c8 blx 0x1d40                                        |     renameat ();
    0x000067cc mov r3, sl                                        |     r3 = sl;
    0x000067ce mov r2, fp                                        |     r2 = fp;
    0x000067d0 mov r1, r4                                        |     r1 = r4;
    0x000067d2 blx 0x1adc                                        |     asprintf_chk ();
    0x000067d6 ldr r3, [sp, 0x20]                                |     r3 = stream;
    0x000067d8 mov r2, r5                                        |     r2 = r5;
    0x000067da subw r3, r3, 0xa18                                |     __asm ("subw r3, r3, 0xa18");
    0x000067de ldr r3, [r3, 0x10]                                |     r3 = *((r3 + 0x10));
    0x000067e0 and r3, r3, 0xf000                                |     r3 &= 0xf000;
    0x000067e4 cmp.w r3, 0x4000                                  |     
    0x000067e8 mov r3, r4                                        |     r3 = r4;
                                                                 |     if (r3 == 0x4000) {
    0x000067ea beq 0x685a                                        |         goto label_125;
                                                                 |     }
    0x000067ec sub.w r1, sb, 0x2c                                |     r1 = sb - 0x2c;
    0x000067f0 sub.w r0, sb, 0x28                                |     r0 = sb - 0x28;
    0x000067f4 bl 0x5458                                         |     fcn_00005458 (r0, r1, r2, r3, r4);
                                                                 |     do {
                                                                 | label_26:
    0x000067f8 mov r0, r8                                        |         r0 = r8;
    0x000067fa blx 0x1cf4                                        |         r0 = fcn_00001cf4 ();
    0x000067fe mov sl, r0                                        |         sl = r0;
                                                                 |         if (r0 == 0) {
    0x00006800 cbz r0, 0x6836                                    |             goto label_126;
                                                                 |         }
                                                                 | label_124:
    0x00006802 add.w r4, sl, 0x13                                |         r4 = sl + 0x13;
    0x00006806 mov r0, r4                                        |         r0 = r4;
    0x00006808 blx 0x1bb0                                        |         fcn_00001bb0 ();
    0x0000680c ldrb.w r3, [sl, 0x13]                             |         r3 = *((sl + 0x13));
    0x00006810 cmp r3, 0x2e                                      |         
    0x00006812 beq 0x67f8                                        |         
                                                                 |     } while (r3 == 0x2e);
    0x00006814 cmp r0, 5                                         |     
                                                                 |     if (r0 < 5) {
    0x00006816 bls 0x6828                                        |         goto label_127;
                                                                 |     }
    0x00006818 subs r0, 5                                        |     r0 -= 5;
    0x0000681a mov r1, r6                                        |     r1 = r6;
    0x0000681c add r0, r4                                        |     r0 += r4;
    0x0000681e blx 0x1924                                        |     r0 = fcn_00001924 ();
    0x00006822 mov sl, r0                                        |     sl = r0;
    0x00006824 cmp r0, 0                                         |     
                                                                 |     if (r0 == 0) {
    0x00006826 beq 0x67c6                                        |         goto label_25;
                                                                 |     }
                                                                 | label_127:
    0x00006828 mov r3, r4                                        |     r3 = r4;
    0x0000682a mov r2, r5                                        |     r2 = r5;
    0x0000682c mov r1, r7                                        |     r1 = r7;
    0x0000682e movs r0, 6                                        |     r0 = 6;
    0x00006830 bl 0x85e4                                         |     fcn_000085e4 (r0);
    0x00006834 b 0x67f8                                          |     goto label_26;
                                                                 | label_126:
    0x00006836 ldr.w sl, [sp, 0x1c]                              |     sl = var_1ch;
                                                                 | label_123:
    0x0000683a mov r0, r8                                        |     r0 = r8;
    0x0000683c blx 0x1dc8                                        |     fcn_00001dc8 ();
    0x00006840 ldr r1, [sp, 0x2c]                                |     r1 = var_2ch;
    0x00006842 mov r2, r5                                        |     r2 = r5;
    0x00006844 movs r0, 7                                        |     r0 = 7;
    0x00006846 bl 0x85e4                                         |     fcn_000085e4 (r0);
    0x0000684a b 0x6780                                          |     goto label_27;
                                                                 | label_121:
    0x0000684c ldr r1, [pc, 0x120]                               |     
    0x0000684e mov r2, r5                                        |     r2 = r5;
    0x00006850 movs r0, 7                                        |     r0 = 7;
    0x00006852 add r1, pc                                        |     r1 = 0xd1c6;
    0x00006854 bl 0x85e4                                         |     fcn_000085e4 (r0);
    0x00006856 mcr2 p7, 6, lr, c6, c2, 4                         |     __asm ("mcr2 p7, 6, lr, c6, c2, 4");
                                                                 | label_125:
    0x0000685a ldr r1, [sp, 0x30]                                |     r1 = var_30h;
    0x0000685c movs r0, 3                                        |     r0 = 3;
    0x0000685e bl 0x85e4                                         |     fcn_000085e4 (r0);
    0x00006862 b 0x67f8                                          |     goto label_26;
                                                                 | label_29:
    0x00006864 ldr r1, [pc, 0x10c]                               |     
    0x00006866 movs r0, 3                                        |     r0 = 3;
    0x00006868 str r5, [sp]                                      |     *(sp) = r5;
    0x0000686a ldr r3, [r7]                                      |     r3 = *(r7);
    0x0000686c ldr r2, [sp, 0x2c]                                |     r2 = var_2ch;
    0x0000686e add r1, pc                                        |     r1 = 0xd1e6;
    0x00006870 bl 0x85e4                                         |     fcn_000085e4 (r0);
    0x00006874 b 0x6538                                          |     goto label_28;
                                                                 | label_107:
    0x00006876 ldr r5, [pc, 0x100]                               |     
    0x00006878 add r5, pc                                        |     r5 = 0xd1f6;
    0x0000687a b 0x6882                                          |     
                                                                 |     while (r0 != 0) {
    0x0000687c mov r0, fp                                        |         r0 = fp;
    0x0000687e bl 0x5590                                         |         fcn_00005590 (r0, r1);
    0x00006882 mov r1, r5                                        |         r1 = r5;
    0x00006884 mov r2, r8                                        |         r2 = r8;
    0x00006886 movs r0, 0                                        |         r0 = 0;
    0x00006888 blx 0x1aac                                        |         r0 = opendir ();
    0x0000688c mov r1, r0                                        |         r1 = r0;
    0x0000688e cmp r0, 0                                         |         
    0x00006890 bne 0x687c                                        |         
                                                                 |     }
    0x00006892 b 0x6538                                          |     goto label_28;
                                                                 | label_108:
    0x0000697c mov r2, r8                                        |     r2 = r8;
    0x0000697e mov r1, sb                                        |     r1 = sb;
    0x00006980 blx 0x1aac                                        |     opendir ();
    0x00006984 mov r2, r8                                        |     r2 = r8;
    0x00006986 mov r1, sb                                        |     r1 = sb;
    0x00006988 str r0, [sp, 0x48]                                |     var_0h = r0;
    0x0000698a mov r0, sl                                        |     r0 = sl;
    0x0000698c blx 0x1aac                                        |     opendir ();
    0x00006990 mov r2, r8                                        |     r2 = r8;
    0x00006992 str r0, [sp, 0x50]                                |     var_8h = r0;
    0x00006994 mov r1, sb                                        |     r1 = sb;
    0x00006996 mov r0, sl                                        |     r0 = sl;
    0x00006998 blx 0x1aac                                        |     opendir ();
    0x0000699c ldr r2, [sp, 0x48]                                |     r2 = var_0h;
    0x0000699e mov sl, r0                                        |     sl = r0;
    0x000069a0 ldr r3, [sp, 0x50]                                |     r3 = var_8h;
    0x000069a2 cmp r3, 0                                         |     
    0x000069a4 it ne                                             |     
                                                                 |     if (r3 != 0) {
    0x000069a6 cmpne r2, 0                                       |         __asm ("cmpne r2, 0");
                                                                 |     }
    0x000069a8 ite eq                                            |     
                                                                 |     if (r3 != 0) {
    0x000069aa moveq r2, 1                                       |         r2 = 1;
                                                                 |     }
                                                                 |     if (r3 == 0) {
    0x000069ac movne r2, 0                                       |         r2 = 0;
                                                                 |     }
    0x000069ae cmp r0, 0                                         |     
    0x000069b0 it eq                                             |     
                                                                 |     if (r0 != 0) {
    0x000069b2 orreq r2, r2, 1                                   |         r2 |= 1;
                                                                 |     }
    0x000069b6 str r2, [sp, 0x50]                                |     var_8h = r2;
    0x000069b8 cmp r2, 0                                         |     
                                                                 |     if (r2 != 0) {
    0x000069ba bne.w 0x6864                                      |         goto label_29;
                                                                 |     }
    0x000069be mov r1, r3                                        |     r1 = r3;
    0x000069c0 mov r0, fp                                        |     r0 = fp;
    0x000069c2 str r3, [sp, 0x5c]                                |     var_14h = r3;
    0x000069c4 bl 0x51c0                                         |     fcn_000051c0 (r0, r1);
    0x000069c8 ldr r3, [sp, 0x5c]                                |     r3 = var_14h;
    0x000069ca cmp r0, 0                                         |     
                                                                 |     if (r0 == 0) {
    0x000069cc beq 0x6ac4                                        |         goto label_128;
                                                                 |     }
    0x000069ce ldr r0, [sp, 0x48]                                |     r0 = var_0h;
    0x000069d0 blx 0x1bb0                                        |     r0 = fcn_00001bb0 ();
    0x000069d4 mov r5, r0                                        |     r5 = r0;
    0x000069d6 str r0, [sp, 0x5c]                                |     var_14h = r0;
    0x000069d8 mov r0, sl                                        |     r0 = sl;
    0x000069da blx 0x1bb0                                        |     r0 = fcn_00001bb0 ();
    0x000069de mov r2, r0                                        |     r2 = r0;
    0x000069e0 adds r0, r5, r0                                   |     r0 = r5 + r0;
    0x000069e2 adds r0, 0xa                                      |     r0 += 0xa;
    0x000069e4 str r2, [sp, 0x60]                                |     var_60h = r2;
    0x000069e6 blx 0x1b0c                                        |     strerror (r0);
    0x000069ea ldr r2, [sp, 0x60]                                |     r2 = var_60h;
    0x000069ec mov r5, r0                                        |     r5 = r0;
    0x000069ee cmp r0, 0                                         |     
                                                                 |     if (r0 == 0) {
    0x000069f0 beq.w 0x7612                                      |         goto label_129;
                                                                 |     }
    0x000069f2 strh r7, [r1, 0x30]                               |     *((r1 + 0x30)) = r7;
    0x000069f4 mov r1, sl                                        |     r1 = sl;
    0x000069f6 add.w sl, r0, 8                                   |     sl = r0 + 8;
    0x000069fa mov r0, sl                                        |     r0 = sl;
    0x000069fc str r2, [sp, 0x60]                                |     var_60h = r2;
    0x000069fe blx 0x19c8                                        |     mmap64 ();
    0x00006a02 ldr r2, [sp, 0x60]                                |     r2 = var_60h;
    0x00006a04 movs r0, 0x2f                                     |     r0 = 0x2f;
    0x00006a06 ldr r1, [sp, 0x48]                                |     r1 = var_0h;
    0x00006a08 adds r3, r2, 1                                    |     r3 = r2 + 1;
    0x00006a0a add r2, r5                                        |     r2 += r5;
    0x00006a0c strb r0, [r2, 8]                                  |     *((r2 + 8)) = r0;
    0x00006a0e add.w r0, sl, r3                                  |     r0 = sl + r3;
    0x00006a12 ldr r2, [sp, 0x5c]                                |     r2 = var_14h;
    0x00006a14 str r3, [sp, 0x48]                                |     var_0h = r3;
    0x00006a16 blx 0x19c8                                        |     mmap64 ();
    0x00006a1a ldr r3, [sp, 0x48]                                |     r3 = var_0h;
    0x00006a1c ldr r2, [sp, 0x5c]                                |     r2 = var_14h;
    0x00006a1e ldr r0, [sp, 0x50]                                |     r0 = var_8h;
    0x00006a20 add r2, r3                                        |     r2 += r3;
    0x00006a22 mov r3, r2                                        |     r3 = r2;
    0x00006a24 mov r2, sl                                        |     r2 = sl;
    0x00006a26 adds r1, r5, r3                                   |     r1 = r5 + r3;
    0x00006a28 strb r0, [r1, 8]                                  |     *((r1 + 8)) = r0;
    0x00006a2a movs r0, 7                                        |     r0 = 7;
    0x00006a2c ldr.w r1, [pc, 0xc20]                             |     
    0x00006a30 str r3, [r5, 4]                                   |     *((r5 + 4)) = r3;
    0x00006a32 add r1, pc                                        |     r1 = 0xe086;
    0x00006a34 bl 0x85e4                                         |     fcn_000085e4 (r0);
    0x00006a38 ldr r2, [sp, 0x20]                                |     r2 = stream;
    0x00006a3a ldr.w r3, [r2, 0x7e4]                             |     r3 = *((r2 + 0x7e4));
    0x00006a3e str.w r5, [r2, 0x7e4]                             |     __asm ("str.w r5, [r2, 0x7e4]");
    0x00006a42 str r3, [r5]                                      |     *(r5) = r3;
    0x00006a44 b 0x6538                                          |     goto label_28;
                                                                 | label_109:
    0x00006a46 mov r2, r8                                        |     r2 = r8;
    0x00006a48 mov r1, sb                                        |     r1 = sb;
    0x00006a4a blx 0x1aac                                        |     r0 = opendir ();
    0x00006a4e mov r3, r0                                        |     r3 = r0;
    0x00006a50 mov r2, r8                                        |     r2 = r8;
    0x00006a52 mov r0, sl                                        |     r0 = sl;
    0x00006a54 mov r1, sb                                        |     r1 = sb;
    0x00006a56 mov sl, r3                                        |     sl = r3;
    0x00006a58 blx 0x1aac                                        |     r0 = opendir ();
    0x00006a5c cmp r0, 0                                         |     
    0x00006a5e it ne                                             |     
                                                                 |     if (r0 != 0) {
    0x00006a60 cmpne sl, 0                                       |         __asm ("cmpne sl, 0");
                                                                 |     }
    0x00006a64 str r0, [sp, 0x48]                                |     var_0h = r0;
                                                                 |     if (r0 == 0) {
    0x00006a66 beq.w 0x6864                                      |         goto label_29;
                                                                 |     }
    0x00006a6a mov r1, sl                                        |     r1 = sl;
    0x00006a6c mov r0, fp                                        |     r0 = fp;
    0x00006a6e bl 0x51c0                                         |     fcn_000051c0 (r0, r1);
    0x00006a72 ldr r3, [sp, 0x48]                                |     r3 = var_0h;
    0x00006a74 cmp r0, 0                                         |     
                                                                 |     if (r0 == 0) {
    0x00006a76 beq.w 0x6fd8                                      |         goto label_130;
                                                                 |     }
    0x00006a7a mov r0, r3                                        |     r0 = r3;
    0x00006a7c str r3, [sp, 0x48]                                |     var_0h = r3;
    0x00006a7e blx 0x1bb0                                        |     r0 = fcn_00001bb0 ();
    0x00006a82 mov sl, r0                                        |     sl = r0;
    0x00006a84 adds r0, 9                                        |     r0 += 9;
    0x00006a86 blx 0x1b0c                                        |     strerror (r0);
    0x00006a8a ldr r3, [sp, 0x48]                                |     r3 = var_0h;
    0x00006a8c mov r5, r0                                        |     r5 = r0;
    0x00006a8e cmp r0, 0                                         |     
                                                                 |     if (r0 == 0) {
    0x00006a90 beq.w 0x755c                                      |         goto label_131;
                                                                 |     }
    0x00006a94 mov r1, r3                                        |     r1 = r3;
    0x00006a96 add.w r3, r0, 8                                   |     r3 = r0 + 8;
    0x00006a9a mov r0, r3                                        |     r0 = r3;
    0x00006a9c add.w r2, sl, 1                                   |     r2 = sl + 1;
    0x00006aa0 blx 0x19c8                                        |     mmap64 ();
    0x00006aa4 ldr.w r1, [pc, 0xbac]                             |     
    0x00006aa8 mov r2, r0                                        |     r2 = r0;
    0x00006aaa str.w sl, [r5, 4]                                 |     __asm ("str.w sl, [r5, 4]");
    0x00006aae movs r0, 7                                        |     r0 = 7;
    0x00006ab0 add r1, pc                                        |     r1 = 0xe108;
    0x00006ab2 bl 0x85e4                                         |     fcn_000085e4 (r0);
    0x00006ab6 ldr r2, [sp, 0x20]                                |     r2 = stream;
    0x00006ab8 ldr.w r3, [r2, 0x7ec]                             |     r3 = *((r2 + 0x7ec));
    0x00006abc str.w r5, [r2, 0x7ec]                             |     __asm ("str.w r5, [r2, 0x7ec]");
    0x00006ac0 str r3, [r5]                                      |     *(r5) = r3;
    0x00006ac2 b 0x6538                                          |     goto label_28;
                                                                 | label_128:
    0x00006ac4 ldr.w r1, [pc, 0xb90]                             |     
    0x00006ac8 movs r0, 6                                        |     r0 = 6;
    0x00006aca str r3, [sp]                                      |     *(sp) = r3;
    0x00006acc ldr r3, [r7]                                      |     r3 = *(r7);
    0x00006ace ldr r2, [sp, 0x2c]                                |     r2 = var_2ch;
    0x00006ad0 add r1, pc                                        |     r1 = 0xe12c;
    0x00006ad2 bl 0x85e4                                         |     fcn_000085e4 (r0);
    0x00006ad6 b 0x6538                                          |     goto label_28;
                                                                 | label_88:
    0x00006ad8 ldr.w r1, [pc, 0xb80]                             |     
    0x00006adc mov r2, r7                                        |     r2 = r7;
    0x00006ade movs r0, 2                                        |     r0 = 2;
    0x00006ae0 add r1, pc                                        |     r1 = 0xe140;
    0x00006ae2 bl 0x85e4                                         |     fcn_000085e4 (r0);
    0x00006ae6 b.w 0x5e46                                        |     goto label_11;
                                                                 | label_87:
    0x00006aea blx 0x1be4                                        |     isoc99_sscanf ();
    0x00006aee ldr.w r1, [pc, 0xb70]                             |     
    0x00006af2 mov r2, r6                                        |     r2 = r6;
    0x00006af4 ldr r3, [r0]                                      |     r3 = *(r0);
    0x00006af6 movs r0, 3                                        |     r0 = 3;
    0x00006af8 add r1, pc                                        |     r1 = 0xe15e;
    0x00006afa rsbs r6, r3, 0                                    |     r6 = r3 - ;
    0x00006afc bl 0x85e4                                         |     fcn_000085e4 (r0);
    0x00006b00 mov r0, r7                                        |     r0 = r7;
    0x00006b02 blx 0x1dc8                                        |     fcn_00001dc8 ();
    0x00006b06 b.w 0x60ac                                        |     goto label_30;
                                                                 | label_100:
    0x00006b0a ldr r3, [sp, 0x30]                                |     r3 = var_30h;
    0x00006b0c movs r0, 3                                        |     r0 = 3;
    0x00006b0e ldr.w r1, [pc, 0xb54]                             |     
    0x00006b12 ldr r3, [r3]                                      |     r3 = *(r3);
    0x00006b14 add r1, pc                                        |     r1 = 0xe17e;
    0x00006b16 ldr.w r2, [r4, r3, lsl 2]                         |     offset_2 = r3 << 2;
                                                                 |     r2 = *((r4 + offset_2));
    0x00006b1a bl 0x85e4                                         |     fcn_000085e4 (r0);
    0x00006b1e b.w 0x5e46                                        |     goto label_11;
                                                                 |     if (r2 == 0) {
    0x00006b20 cbnz r2, 0x6b48                                   |         
                                                                 | label_117:
    0x00006b22 ldrd sl, fp, [sp, 0x28]                           |         __asm ("ldrd sl, fp, [var_28h]");
                                                                 | label_115:
    0x00006b26 ldr r3, [sp, 0x20]                                |         r3 = stream;
    0x00006b28 subw r4, r3, 0xaa4                                |         __asm ("subw r4, r3, 0xaa4");
    0x00006b2c ldr r0, [r4, 0x20]                                |         r0 = *((r4 + 0x20));
    0x00006b2e ldr r5, [r4, 0xc]                                 |         r5 = *((r4 + 0xc));
    0x00006b30 bl 0x91d4                                         |         fcn_000091d4 (r0);
    0x00006b34 ldr.w r1, [pc, 0xb30]                             |         
    0x00006b38 mov r3, r0                                        |         r3 = r0;
    0x00006b3a mov r2, r5                                        |         r2 = r5;
    0x00006b3c movs r0, 7                                        |         r0 = 7;
    0x00006b3e add r1, pc                                        |         r1 = 0xe1aa;
    0x00006b40 bl 0x85e4                                         |         fcn_000085e4 (r0);
    0x00006b44 ldr r0, [r4, 0x20]                                |         r0 = *((r4 + 0x20));
    0x00006b46 ldr r5, [r4, 0xc]                                 |         r5 = *((r4 + 0xc));
                                                                 |     }
    0x00006b48 bl 0x91d4                                         |     fcn_000091d4 (r0);
    0x00006b4c ldr.w r1, [pc, 0xb1c]                             |     
    0x00006b50 mov r3, r0                                        |     r3 = r0;
    0x00006b52 mov r2, r5                                        |     r2 = r5;
    0x00006b54 movs r0, 7                                        |     r0 = 7;
    0x00006b56 add r1, pc                                        |     r1 = 0xe1c6;
    0x00006b58 bl 0x85e4                                         |     fcn_000085e4 (r0);
    0x00006b5c ldrd r3, r2, [r4, 8]                              |     __asm ("ldrd r3, r2, [r4, 8]");
    0x00006b60 add.w r2, r3, r2, lsl 2                           |     r2 = r3 + (r2 << 2);
    0x00006b64 cmp r3, r2                                        |     
    0x00006b66 str r2, [sp, 0x44]                                |     var_44h = r2;
                                                                 |     if (r3 >= r2) {
    0x00006b68 bhs.w 0x6c94                                      |         goto label_132;
                                                                 |     }
    0x00006b6c str r3, [sp, 0x2c]                                |     var_2ch = r3;
    0x00006b6e ldr.w r3, [pc, 0xb00]                             |     
    0x00006b72 ldr.w r2, [pc, 0xb00]                             |     
    0x00006b76 strd sl, fp, [sp, 0x50]                           |     __asm ("strd sl, fp, [var_0h_2x50]");
    0x00006b7a add r3, pc                                        |     r3 = 0xe1f0;
    0x00006b7c str r3, [sp, 0x48]                                |     var_0h = r3;
    0x00006b7e add r2, pc                                        |     r2 = 0xe1f8;
    0x00006b80 ldr.w r3, [pc, 0xaf4]                             |     
    0x00006b84 str r2, [sp, 0x30]                                |     var_30h = r2;
    0x00006b86 ldr.w r2, [pc, 0xaf4]                             |     
    0x00006b8a add r3, pc                                        |     r3 = 0xe206;
    0x00006b8c mov sb, r3                                        |     sb = r3;
    0x00006b8e add r2, pc                                        |     r2 = 0xe210;
    0x00006b90 str r2, [sp, 0x38]                                |     var_38h = r2;
                                                                 | label_31:
    0x00006b92 ldr r3, [sp, 0x2c]                                |     r3 = var_2ch;
    0x00006b94 ldr r8, [r3], 4                                   |     r8 = *(r3);
                                                                 |     r3 += 4;
    0x00006b98 str r3, [sp, 0x2c]                                |     var_2ch = r3;
    0x00006b9a ldr.w r3, [r8, 0x14]                              |     r3 = *((r8 + 0x14));
    0x00006b9e ldr.w r2, [r8, 4]                                 |     r2 = *((r8 + 4));
    0x00006ba2 cmp r3, 0                                         |     
                                                                 |     if (r3 == 0) {
    0x00006ba4 beq.w 0x6fca                                      |         goto label_133;
                                                                 |     }
    0x00006ba8 ldr r3, [sp, 0x20]                                |     r3 = stream;
    0x00006baa movs r0, 7                                        |     r0 = 7;
    0x00006bac ldr r1, [sp, 0x48]                                |     r1 = var_0h;
    0x00006bae subw r3, r3, 0xaa4                                |     __asm ("subw r3, r3, 0xaa4");
    0x00006bb2 ldr r3, [r3]                                      |     r3 = *(r3);
    0x00006bb4 str r3, [sp, 0x28]                                |     var_28h = r3;
    0x00006bb6 bl 0x85e4                                         |     fcn_000085e4 (r0);
    0x00006bba ldr.w r5, [r8, 0x14]                              |     r5 = *((r8 + 0x14));
                                                                 |     do {
    0x00006bbe cmp r5, 0                                         |         
                                                                 |         if (r5 == 0) {
    0x00006bc0 beq 0x6c88                                        |             goto label_41;
                                                                 |         }
    0x00006bc2 mov r0, r5                                        |         r0 = r5;
    0x00006bc4 bl 0xe484                                         |         r0 = fcn_0000e484 (r0);
    0x00006bc8 mov r6, r0                                        |         r6 = r0;
    0x00006bca mov r0, r5                                        |         r0 = r5;
    0x00006bcc bl 0xe490                                         |         r0 = fcn_0000e490 (r0);
    0x00006bd0 mov sl, r0                                        |         sl = r0;
    0x00006bd2 mov r0, r5                                        |         r0 = r5;
    0x00006bd4 str r1, [sp, 0x1c]                                |         var_1ch = r1;
    0x00006bd6 bl 0xe4a4                                         |         fcn_0000e4a4 (r0);
    0x00006bda ldr r3, [sp, 0x20]                                |         r3 = stream;
    0x00006bdc mov r7, r0                                        |         r7 = r0;
    0x00006bde ldrb r2, [r6]                                     |         r2 = *(r6);
    0x00006be0 subw r1, r3, 0xaa4                                |         __asm ("subw r1, r3, 0xaa4");
    0x00006be4 ldr r3, [r1]                                      |         r3 = *(r1);
    0x00006be6 cmp r2, 0x2e                                      |         
    0x00006be8 it eq                                             |         
                                                                 |         if (r2 != 0x2e) {
    0x00006bea ldrbeq r2, [r6, 1]                                |             r2 = *((r6 + 1));
                                                                 |         }
    0x00006bec ldr r0, [r1, 0x20]                                |         r0 = *((r1 + 0x20));
    0x00006bee it eq                                             |         
                                                                 |         if (r2 != 0x2e) {
    0x00006bf0 addeq r1, r6, 1                                   |             r1 = r6 + 1;
                                                                 |         }
    0x00006bf2 add.w r3, r3, 0x1000                              |         r3 += 0x1000;
    0x00006bf6 it ne                                             |         
                                                                 |         if (r2 == 0x2e) {
    0x00006bf8 movne r1, r6                                      |             r1 = r6;
                                                                 |         }
    0x00006bfa ldrb r3, [r3, 8]                                  |         r3 = *((r3 + 8));
    0x00006bfc cmp r3, r2                                        |         
    0x00006bfe it eq                                             |         
                                                                 |         if (r3 != r2) {
    0x00006c00 addeq r1, 1                                       |             r1++;
                                                                 |         }
    0x00006c02 bl 0x8f6c                                         |         r0 = fcn_00008f6c (r0, r1);
    0x00006c06 mov r4, r0                                        |         r4 = r0;
    0x00006c08 cmp r0, 0                                         |         
                                                                 |         if (r0 == 0) {
    0x00006c0a beq.w 0x6f40                                      |             goto label_134;
                                                                 |         }
    0x00006c0e ldr r3, [sp, 0x28]                                |         r3 = var_28h;
    0x00006c10 add.w fp, r0, 0x10                                |         
    0x00006c14 ldr.w r2, [r8, 4]                                 |         r2 = *((r8 + 4));
    0x00006c16 movs r0, 4                                        |         r0 = 4;
    0x00006c18 add.w r3, r3, 0x1000                              |         r3 += 0x1000;
    0x00006c1c ldrb r1, [r3, 9]                                  |         r1 = *((r3 + 9));
                                                                 |         if (r1 != 0) {
    0x00006c1e cbz r1, 0x6c42                                    |             
    0x00006c20 ldr r1, [sp, 0x1c]                                |             r1 = var_1ch;
    0x00006c22 ldrd ip, r0, [r0, 8]                              |             __asm ("ldrd ip, r0, [r0, 8]");
    0x00006c26 cmp r1, r0                                        |             
    0x00006c28 it eq                                             |             
                                                                 |             if (r1 == r0) {
    0x00006c2a cmpeq sl, ip                                      |                 __asm ("cmpeq sl, ip");
                                                                 |             }
    0x00006c2c ite ne                                            |             
                                                                 |             if (r1 == r0) {
    0x00006c2e movne r1, 1                                       |                 r1 = 1;
                                                                 |             }
                                                                 |             if (r1 != r0) {
    0x00006c30 moveq r1, 0                                       |                 r1 = 0;
                                                                 |             }
    0x00006c32 cmp r7, 0x57                                      |             
    0x00006c34 ite eq                                            |             
                                                                 |             if (r7 != 0x57) {
    0x00006c36 moveq r1, 0                                       |                 r1 = 0;
                                                                 |             }
                                                                 |             if (r7 == 0x57) {
    0x00006c38 andne r1, r1, 1                                   |                 r1 &= 1;
                                                                 |             }
    0x00006c3c cmp r1, 0                                         |             
                                                                 |             if (r1 != 0) {
    0x00006c3e bne.w 0x6f16                                      |                 goto label_135;
                                                                 |             }
                                                                 |         }
                                                                 | label_37:
    0x00006c42 ldr r3, [r4]                                      |         r3 = *(r4);
    0x00006c44 cmp r3, 0                                         |         
                                                                 |         if (r3 == 0) {
    0x00006c46 beq.w 0x6f12                                      |             goto label_136;
                                                                 |         }
    0x00006c4a ldr r3, [r3, 4]                                   |         r3 = *((r3 + 4));
                                                                 | label_36:
    0x00006c4c mov r1, sb                                        |         r1 = sb;
    0x00006c4e str r3, [sp]                                      |         *(sp) = r3;
    0x00006c50 movs r0, 7                                        |         r0 = 7;
    0x00006c52 mov r3, fp                                        |         r3 = fp;
    0x00006c54 bl 0x85e4                                         |         fcn_000085e4 (r0);
    0x00006c58 ldr r1, [r4]                                      |         r1 = *(r4);
                                                                 |         if (r1 != 0) {
    0x00006c5a cbz r1, 0x6c7e                                    |             
    0x00006c5c add.w r0, r8, 0x18                                |             r0 = r8 + 0x18;
    0x00006c60 bl 0x8bd0                                         |             fcn_00008bd0 (r0, r1, r2);
    0x00006c62 vtbl.8 d2, {d6}, d0                               |             __asm ("vtbl.8 d2, {d6}, d0");
                                                                 |             if (r1 < 0) {
    0x00006c66 blt 0x6c7e                                        |                 goto label_38;
                                                                 |             }
    0x00006c68 ldr r3, [r4]                                      |             r3 = *(r4);
    0x00006c6a mov r2, fp                                        |             r2 = fp;
    0x00006c6c ldr.w r1, [r8, 4]                                 |             r1 = *((r8 + 4));
    0x00006c70 ldr r0, [sp, 0x30]                                |             r0 = var_30h;
    0x00006c72 ldrh r4, [r3, 0x3a]                               |             r4 = *((r3 + 0x3a));
    0x00006c74 adds r4, 1                                        |             r4++;
    0x00006c76 strh r4, [r3, 0x3a]                               |             *((r3 + 0x3a)) = r4;
    0x00006c78 ldr r3, [r3, 4]                                   |             r3 = *((r3 + 4));
    0x00006c7a bl 0x52b0                                         |             fcn_000052b0 ();
                                                                 |         }
                                                                 | label_38:
    0x00006c7e ldr r5, [r5]                                      |         r5 = *(r5);
    0x00006c80 ldr.w r3, [r8, 0x14]                              |         r3 = *((r8 + 0x14));
    0x00006c84 cmp r5, r3                                        |         
    0x00006c86 bne 0x6bbe                                        |         
                                                                 |     } while (r5 != r3);
                                                                 | label_41:
    0x00006c88 ldr r3, [sp, 0x44]                                |     r3 = var_44h;
    0x00006c8a ldr r2, [sp, 0x2c]                                |     r2 = var_2ch;
    0x00006c8c cmp r3, r2                                        |     
                                                                 |     if (r3 > r2) {
    0x00006c8e bhi 0x6b92                                        |         goto label_31;
                                                                 |     }
    0x00006c90 ldrd sl, fp, [sp, 0x50]                           |     __asm ("ldrd sl, fp, [var_8h]");
                                                                 | label_132:
    0x00006c94 ldr r3, [sp, 0x20]                                |     r3 = stream;
    0x00006c96 subw r4, r3, 0xaa4                                |     __asm ("subw r4, r3, 0xaa4");
    0x00006c9a ldr r0, [r4, 0x20]                                |     r0 = *((r4 + 0x20));
    0x00006c9c ldr r5, [r4, 0xc]                                 |     r5 = *((r4 + 0xc));
    0x00006c9e bl 0x91d4                                         |     fcn_000091d4 (r0);
    0x00006ca2 ldr.w r1, [pc, 0x9dc]                             |     
    0x00006ca6 mov r3, r0                                        |     r3 = r0;
    0x00006ca8 mov r2, r5                                        |     r2 = r5;
    0x00006caa movs r0, 7                                        |     r0 = 7;
    0x00006cac add r1, pc                                        |     r1 = 0xe332;
    0x00006cae bl 0x85e4                                         |     fcn_000085e4 (r0);
    0x00006cb0 ldc2 p8, c6, [sb], {0xe6}                         |     __asm ("ldc2 p8, c6, [sb], {0xe6}");
    0x00006cb4 uxth r3, r6                                       |     r3 = (int16_t) r6;
    0x00006cb6 lsls r5, r3, 1                                    |     r5 = r3 << 1;
    0x00006cb8 str r3, [sp, 0x28]                                |     var_28h = r3;
    0x00006cba adds r0, r5, r3                                   |     r0 = r5 + r3;
    0x00006cbc lsls r0, r0, 1                                    |     r0 <<= 1;
    0x00006cbe blx 0x1b0c                                        |     r0 = strerror (r0);
    0x00006cc2 mov r8, r0                                        |     r8 = r0;
    0x00006cc4 cmp r0, 0                                         |     
                                                                 |     if (r0 == 0) {
    0x00006cc6 beq.w 0x629c                                      |         goto label_32;
                                                                 |     }
    0x00006cca ldr.w r1, [pc, 0x9b8]                             |     
    0x00006cce add r5, r0                                        |     r5 += r0;
    0x00006cd0 ldr r2, [sp, 0x28]                                |     r2 = var_28h;
    0x00006cd2 movs r0, 7                                        |     r0 = 7;
    0x00006cd4 add r1, pc                                        |     r1 = 0xe35e;
    0x00006cd6 bl 0x85e4                                         |     fcn_000085e4 (r0);
    0x00006cda ldr.w lr, [r4, 0xc]                               |     
    0x00006cde movw r3, 0xfffe                                   |     r3 = 0xfffe;
    0x00006ce2 cmp lr, r3                                        |     
                                                                 |     if (lr > r3) {
    0x00006ce4 bhi.w 0x75d6                                      |         goto label_137;
                                                                 |     }
    0x00006ce8 uxth r6, r6                                       |     r6 = (int16_t) r6;
    0x00006cea ldr.w ip, [r4, 8]                                 |     ip = *((r4 + 8));
    0x00006cee cmp r6, 0                                         |     
                                                                 |     if (r6 == 0) {
    0x00006cf0 beq 0x6d7c                                        |         goto label_138;
                                                                 |     }
    0x00006cf2 movs r0, 0                                        |     r0 = 0;
    0x00006cf4 sub.w r1, ip, 4                                   |     r1 = ip - 4;
    0x00006cf8 sub.w r2, r8, 2                                   |     r2 = r8 - 2;
    0x00006cfc mov r7, r0                                        |     r7 = r0;
                                                                 |     do {
    0x00006cfe ldr r3, [r1, 4]!                                  |         r3 = *((r1 += 4));
    0x00006d02 ldrh r3, [r3, 0x3a]                               |         r3 = *((r3 + 0x3a));
    0x00006d04 strh r3, [r2, 2]!                                 |         *((r2 += 2)) = r3;
                                                                 |         if (r3 == 0) {
    0x00006d08 cbnz r3, 0x6d12                                   |             
    0x00006d0a strh.w r7, [r5, r0, lsl 1]                        |             offset_3 = r0 << 1;
                                                                 |             *((r5 + offset_3)) = r7;
    0x00006d0e adds r0, 1                                        |             r0++;
    0x00006d10 uxth r0, r0                                       |             r0 = (int16_t) r0;
                                                                 |         }
    0x00006d12 adds r7, 1                                        |         r7++;
    0x00006d14 uxth r7, r7                                       |         r7 = (int16_t) r7;
    0x00006d16 cmp r6, r7                                        |         
    0x00006d18 bne 0x6cfe                                        |         
                                                                 |     } while (r6 != r7);
    0x00006d1a ldr.w sb, [sp, 0x28]                              |     sb = var_28h;
    0x00006d1e movs r6, 0                                        |     r6 = 0;
    0x00006d20 cmp r0, 0                                         |     
                                                                 |     if (r0 == 0) {
    0x00006d22 beq.w 0x7184                                      |         goto label_139;
                                                                 |     }
                                                                 | label_33:
    0x00006d26 subs r0, 1                                        |     r0--;
    0x00006d28 add.w r1, r6, sb                                  |     r1 = r6 + sb;
    0x00006d2c uxth r0, r0                                       |     r0 = (int16_t) r0;
    0x00006d2e adds r2, r6, 1                                    |     r2 = r6 + 1;
    0x00006d30 ldrh.w r3, [r5, r0, lsl 1]                        |     offset_4 = r0 << 1;
                                                                 |     r3 = *((r5 + offset_4));
    0x00006d34 strh.w r3, [r5, r1, lsl 1]                        |     offset_5 = r1 << 1;
                                                                 |     *((r5 + offset_5)) = r3;
    0x00006d38 ldr.w r3, [ip, r3, lsl 2]                         |     offset_6 = r3 << 2;
                                                                 |     r3 = *((ip + offset_6));
    0x00006d3c ldrd r1, r4, [r3, 0x18]                           |     __asm ("ldrd r1, r4, [r3, 0x18]");
    0x00006d40 str r6, [r3, 0x34]                                |     *((r3 + 0x34)) = r6;
    0x00006d42 uxth r6, r2                                       |     r6 = (int16_t) r2;
    0x00006d44 add.w r4, r1, r4, lsl 2                           |     r4 = r1 + (r4 << 2);
    0x00006d48 cmp r1, r4                                        |     
                                                                 |     if (r1 >= r4) {
    0x00006d4a bhs 0x6d72                                        |         goto label_140;
                                                                 |     }
                                                                 |     do {
    0x00006d4c ldr r3, [r1], 4                                   |         r3 = *(r1);
                                                                 |         r1 += 4;
    0x00006d50 ldrh r2, [r3, 0x38]                               |         r2 = *((r3 + 0x38));
    0x00006d52 ldrh.w r3, [r8, r2, lsl 1]                        |         offset_7 = r2 << 1;
                                                                 |         r3 = *((r8 + offset_7));
    0x00006d56 cmp r3, 0                                         |         
                                                                 |         if (r3 == 0) {
    0x00006d58 beq.w 0x7442                                      |             goto label_141;
                                                                 |         }
    0x00006d5c subs r3, 1                                        |         r3--;
    0x00006d5e uxth r3, r3                                       |         r3 = (int16_t) r3;
    0x00006d60 strh.w r3, [r8, r2, lsl 1]                        |         offset_8 = r2 << 1;
                                                                 |         *((r8 + offset_8)) = r3;
                                                                 |         if (r3 == 0) {
    0x00006d64 cbnz r3, 0x6d6e                                   |             
    0x00006d66 strh.w r2, [r5, r0, lsl 1]                        |             offset_9 = r0 << 1;
                                                                 |             *((r5 + offset_9)) = r2;
    0x00006d6a adds r0, 1                                        |             r0++;
    0x00006d6c uxth r0, r0                                       |             r0 = (int16_t) r0;
                                                                 |         }
    0x00006d6e cmp r4, r1                                        |         
    0x00006d70 bhi 0x6d4c                                        |         
                                                                 |     } while (r4 > r1);
                                                                 | label_140:
    0x00006d72 cmp r0, 0                                         |     
                                                                 |     if (r0 != 0) {
    0x00006d74 bne 0x6d26                                        |         goto label_33;
                                                                 |     }
    0x00006d76 cmp r7, r6                                        |     
                                                                 |     if (r7 > r6) {
    0x00006d78 bhi.w 0x7184                                      |         goto label_139;
                                                                 |     }
                                                                 | label_138:
    0x00006d7c add.w r5, ip, lr, lsl 2                           |     r5 = ip + (lr << 2);
    0x00006d80 cmp ip, r5                                        |     
                                                                 |     if (ip >= r5) {
    0x00006d82 bhs 0x6da2                                        |         goto label_142;
                                                                 |     }
    0x00006d84 ldr.w r6, [pc, 0x900]                             |     r6 = *(0x00007688);
    0x00006d88 mov r4, ip                                        |     r4 = ip;
    0x00006d8a add r6, pc                                        |     r6 += pc;
                                                                 |     do {
    0x00006d8c ldr r0, [r4], 4                                   |         r0 = *(r4);
                                                                 |         r4 += 4;
    0x00006d90 ldr r3, [r0, 0x1c]                                |         r3 = *((r0 + 0x1c));
    0x00006d92 cmp r3, 1                                         |         
                                                                 |         if (r3 >= 1) {
    0x00006d94 bls 0x6d9e                                        |             
    0x00006d96 adds r0, 0x18                                     |             r0 += 0x18;
    0x00006d98 mov r1, r6                                        |             r1 = r6;
    0x00006d9a bl 0x8c08                                         |             fcn_00008c08 (r0, r1);
                                                                 |         }
    0x00006d9e cmp r5, r4                                        |         
    0x00006da0 bhi 0x6d8c                                        |         
                                                                 |     } while (r5 > r4);
                                                                 | label_142:
    0x00006da2 ldr.w r1, [pc, 0x8e8]                             |     
    0x00006da6 movs r0, 7                                        |     r0 = 7;
    0x00006da8 ldr r2, [sp, 0x28]                                |     r2 = var_28h;
    0x00006daa add r1, pc                                        |     r1 = 0xe43c;
    0x00006dac bl 0x85e4                                         |     fcn_000085e4 (r0);
    0x00006db0 mov r0, r8                                        |     r0 = r8;
    0x00006db2 blx 0x19a0                                        |     fcn_000019a0 ();
    0x00006db6 ldr r3, [sp, 0x20]                                |     r3 = stream;
    0x00006db8 movs r1, 0                                        |     r1 = 0;
    0x00006dba ldr r0, [sp, 0x18]                                |     r0 = var_18h;
    0x00006dbc subw r3, r3, 0xaa4                                |     __asm ("subw r3, r3, 0xaa4");
    0x00006dc0 ldr r3, [r3]                                      |     r3 = *(r3);
    0x00006dc2 adds r3, 4                                        |     r3 += 4;
    0x00006dc4 str r3, [sp, 0x1c]                                |     var_1ch = r3;
    0x00006dc6 blx 0x1a88                                        |     fread (r0, r1, r2, r3);
    0x00006dca ldr r3, [sp, 0x3c]                                |     r3 = var_3ch;
    0x00006dcc cmp r3, 0                                         |     
                                                                 |     if (r3 == 0) {
    0x00006dce beq.w 0x73e8                                      |         goto label_143;
                                                                 |     }
                                                                 | label_53:
    0x00006dd2 ldr.w r4, [pc, 0x8bc]                             |     r4 = *(0x00007690);
    0x00006dd6 add.w r8, sp, 0x1300                              |     r8 += ptr;
    0x00006dda ldr.w r3, [pc, 0x8b8]                             |     r3 = *(0x00007694);
    0x00006dde add.w r8, r8, 0x1c                                |     r8 += 0x1c;
    0x00006de2 ldr.w sb, [pc, 0x8b4]                             |     sb = *(0x00007698);
    0x00006de6 add r4, pc                                        |     r4 += pc;
    0x00006de8 str.w fp, [sp, 0x28]                              |     __asm ("str.w fp, [var_28h]");
    0x00006dec add r3, pc                                        |     r3 += pc;
    0x00006dee ldr r7, [sp, 0x3c]                                |     r7 = var_3ch;
    0x00006df0 add sb, pc                                        |     sb += pc;
    0x00006df2 str r4, [r3]                                      |     *(r3) = r4;
    0x00006df4 add.w r3, sp, 0x1320                              |     r3 += arg_1320h;
    0x00006df8 str.w sb, [sp, 0x2c]                              |     __asm ("str.w sb, [var_2ch]");
    0x00006dfc ldr.w fp, [sp, 0x4c]                              |     fp = var_4h;
    0x00006e00 mov sb, r3                                        |     sb = r3;
    0x00006e02 str.w r8, [sp, 0x18]                              |     __asm ("str.w r8, [var_18h]");
    0x00006e06 b 0x6e2e                                          |     
                                                                 |     while (r7 != 0) {
    0x00006e08 ldr r3, [sp, 0x2c]                                |         r3 = var_2ch;
    0x00006e0a mov r1, r7                                        |         r1 = r7;
    0x00006e0c mov r0, fp                                        |         r0 = fp;
    0x00006e0e ldr r3, [r3]                                      |         r3 = *(r3);
    0x00006e10 ldr r3, [r3, 4]                                   |         r3 = *((r3 + 4));
    0x00006e12 blx r3                                            |         uint32_t (*r3)(uint32_t, uint32_t, uint32_t) (r0, r1, r3);
                                                                 | label_45:
    0x00006e14 ldr.w r3, [pc, 0x884]                             |         r3 = *(0x0000769c);
    0x00006e18 add r3, pc                                        |         r3 += pc;
    0x00006e1a ldr r4, [r3]                                      |         r4 = *(r3);
                                                                 | label_34:
    0x00006e1c ldr r3, [r4, 8]                                   |         r3 = *((r4 + 8));
    0x00006e1e adds r4, 8                                        |         r4 += 8;
    0x00006e20 ldr.w r2, [pc, 0x87c]                             |         r2 = *(0x000076a0);
    0x00006e24 add r2, pc                                        |         r2 += pc;
    0x00006e26 str r4, [r2]                                      |         *(r2) = r4;
    0x00006e28 cmp r3, 0                                         |         
                                                                 |         if (r3 == 0) {
    0x00006e2a beq.w 0x717c                                      |             goto label_144;
                                                                 |         }
    0x00006e2e ldr r3, [sp, 0x18]                                |         r3 = var_18h;
    0x00006e30 movs r2, 0                                        |         r2 = 0;
    0x00006e32 movs r1, 0                                        |         r1 = 0;
    0x00006e34 mov r0, sb                                        |         r0 = sb;
    0x00006e36 str r2, [r3]                                      |         *(r3) = r2;
    0x00006e38 movs r2, 0xfb                                     |         r2 = 0xfb;
    0x00006e3a blx 0x1c2c                                        |         strtoull (r0, r1, r2);
    0x00006e3e cmp r7, 0                                         |         
    0x00006e40 bne 0x6e08                                        |         
                                                                 |     }
    0x00006e42 ldr r4, [r4]                                      |     r4 = *(r4);
    0x00006e44 sub.w r6, sb, 4                                   |     r6 = sb - 4;
    0x00006e48 blx 0x1b8c                                        |     fcn_00001b8c ();
    0x00006e4c ldr r3, [sp, 0x20]                                |     r3 = stream;
    0x00006e4e strd r4, r0, [sp, 4]                              |     __asm ("strd r4, r0, [sp, 4]");
    0x00006e52 mov r0, r6                                        |     r0 = r6;
    0x00006e54 subw r3, r3, 0xa18                                |     __asm ("subw r3, r3, 0xa18");
    0x00006e58 ldr r2, [r3]                                      |     r2 = *(r3);
    0x00006e5a str r2, [sp, 0x10]                                |     var_10h = r2;
    0x00006e5c movs r2, 1                                        |     r2 = 1;
    0x00006e5e ldr r3, [r3, 4]                                   |     r3 = *((r3 + 4));
    0x00006e60 str r3, [sp, 0xc]                                 |     var_ch = r3;
    0x00006e62 ldr.w r3, [pc, 0x840]                             |     
    0x00006e66 add r3, pc                                        |     r3 = 0xe510;
    0x00006e68 str r3, [sp]                                      |     *(sp) = r3;
    0x00006e6a movs r3, 0xff                                     |     r3 = 0xff;
    0x00006e6c mov r1, r3                                        |     r1 = r3;
    0x00006e6e blx 0x1dd4                                        |     fcn_00001dd4 ();
    0x00006e70 invalid                                           |     
    0x00006e72 mov.w r3, 0x1a4                                   |     r3 = 0x1a4;
    0x00006e76 movs r2, 0xc1                                     |     r2 = 0xc1;
    0x00006e78 mov r1, r6                                        |     r1 = r6;
    0x00006e7a mov r0, sl                                        |     r0 = sl;
    0x00006e7c blx 0x1bd8                                        |     r0 = sprintf_chk ();
    0x00006e80 subs r4, r0, 0                                    |     r4 = r0 - 0;
                                                                 |     if (r4 < r0) {
    0x00006e82 blt.w 0x7128                                      |         goto label_145;
                                                                 |     }
    0x00006e86 ldr.w r1, [pc, 0x820]                             |     
    0x00006e8a add r1, pc                                        |     r1 = 0xe538;
    0x00006e8c blx 0x18cc                                        |     r0 = fdopen ();
    0x00006e90 mov r5, r0                                        |     r5 = r0;
    0x00006e92 cmp r0, 0                                         |     
                                                                 |     if (r0 == 0) {
    0x00006e94 beq.w 0x74fe                                      |         goto label_146;
                                                                 |     }
    0x00006e98 ldr.w r4, [pc, 0x810]                             |     r4 = *(0x000076ac);
    0x00006e9c mov r1, r0                                        |     r1 = r0;
    0x00006e9e mov r0, fp                                        |     r0 = fp;
    0x00006ea0 add r4, pc                                        |     r4 += pc;
    0x00006ea2 ldr r3, [r4]                                      |     r3 = *(r4);
    0x00006ea4 ldr r3, [r3, 4]                                   |     r3 = *((r3 + 4));
    0x00006ea6 blx r3                                            |     r0 = uint32_t (*r3)(uint32_t, uint32_t, uint32_t) (r0, r1, r3);
    0x00006ea8 mov r8, r0                                        |     r8 = r0;
    0x00006eaa mov r0, r5                                        |     r0 = r5;
    0x00006eac blx 0x19b8                                        |     r0 = fcn_000019b8 ();
    0x00006eb0 mov r2, r0                                        |     r2 = r0;
    0x00006eb2 mov r0, r5                                        |     r0 = r5;
    0x00006eb4 mov r5, r2                                        |     r5 = r2;
    0x00006eb6 blx 0x1c84                                        |     fcn_00001c84 ();
    0x00006eba cmp.w r8, 0                                       |     
    0x00006ebe orr.w r5, r5, r0                                  |     r5 |= r0;
                                                                 |     if (r8 < 0) {
    0x00006ec2 blt.w 0x73ac                                      |         goto label_147;
                                                                 |     }
    0x00006ec6 ldr r4, [r4]                                      |     r4 = *(r4);
    0x00006ec8 mov r2, sl                                        |     r2 = sl;
    0x00006eca mov r1, r6                                        |     r1 = r6;
    0x00006ecc mov r0, sl                                        |     r0 = sl;
    0x00006ece ldr r3, [r4]                                      |     r3 = *(r4);
    0x00006ed0 blx 0x1d68                                        |     r0 = fcn_00001d68 ();
    0x00006ed4 cmp r0, 0                                         |     
                                                                 |     if (r0 != 0) {
    0x00006ed6 bne.w 0x738a                                      |         goto label_148;
                                                                 |     }
    0x00006eda cmp r5, 0                                         |     
                                                                 |     if (r5 == 0) {
    0x00006edc beq 0x6e1c                                        |         goto label_34;
                                                                 |     }
    0x00006ede ldr r4, [r4]                                      |     r4 = *(r4);
    0x00006ee0 movs r0, 0x1c                                     |     r0 = 0x1c;
    0x00006ee2 ldr.w fp, [sp, 0x28]                              |     fp = var_28h;
    0x00006ee6 blx 0x1b18                                        |     system (r0)
    0x00006eea ldr.w r1, [pc, 0x7c4]                             |     
    0x00006eee mov r2, r4                                        |     r2 = r4;
    0x00006ef0 mvn r4, 0x1b                                      |     r4 = ~0x1b;
    0x00006ef4 mov r3, r0                                        |     r3 = r0;
    0x00006ef6 movs r0, 3                                        |     r0 = 3;
    0x00006ef8 add r1, pc                                        |     r1 = 0xe5ae;
    0x00006efa bl 0x85e4                                         |     fcn_000085e4 (r0);
                                                                 | label_52:
    0x00006efe lsrs r4, r4, 0x1f                                 |     r4 >>= 0x1f;
                                                                 | label_48:
    0x00006f00 cmp.w sl, -1                                      |     
                                                                 |     if (sl == -1) {
    0x00006f04 beq.w 0x62da                                      |         goto label_35;
                                                                 |     }
    0x00006f08 mov r0, sl                                        |     r0 = sl;
    0x00006f0a blx 0x1dbc                                        |     fcn_00001dbc ();
    0x00006f0e b.w 0x62da                                        |     goto label_35;
                                                                 | label_136:
    0x00006f12 ldr r3, [sp, 0x38]                                |     r3 = var_38h;
    0x00006f14 b 0x6c4c                                          |     goto label_36;
                                                                 | label_135:
    0x00006f16 str r3, [sp, 0x40]                                |     var_40h = r3;
    0x00006f18 ldr.w r1, [pc, 0x798]                             |     
    0x00006f1c ldr r3, [sp, 0x1c]                                |     r3 = var_1ch;
    0x00006f1e str r2, [sp, 8]                                   |     var_8h_2 = r2;
    0x00006f20 mov r2, fp                                        |     r2 = fp;
    0x00006f22 strd ip, r0, [sp]                                 |     __asm ("strd ip, r0, [sp]");
    0x00006f26 add r1, pc                                        |     r1 = 0xe5de;
    0x00006f28 str r3, [sp, 0x14]                                |     var_14h_2 = r3;
    0x00006f2a movs r0, 7                                        |     r0 = 7;
    0x00006f2c str.w sl, [sp, 0x10]                              |     __asm ("str.w sl, [var_10h]");
    0x00006f30 bl 0x85e4                                         |     fcn_000085e4 (r0);
    0x00006f34 ldr r3, [sp, 0x40]                                |     r3 = var_40h;
    0x00006f36 ldrb r3, [r3, 0xa]                                |     r3 = *((r3 + 0xa));
                                                                 |     if (r3 != 0) {
    0x00006f38 cbnz r3, 0x6f7a                                   |         goto label_149;
                                                                 |     }
                                                                 | label_39:
    0x00006f3a ldr.w r2, [r8, 4]                                 |     r2 = *((r8 + 4));
    0x00006f3e b 0x6c42                                          |     goto label_37;
                                                                 | label_134:
    0x00006f40 ldr.w r1, [pc, 0x774]                             |     
    0x00006f44 mov r3, r7                                        |     r3 = r7;
    0x00006f46 ldr.w r2, [r8, 4]                                 |     r2 = *((r8 + 4));
    0x00006f4a movs r0, 7                                        |     r0 = 7;
    0x00006f4c str r6, [sp]                                      |     *(sp) = r6;
    0x00006f4e add r1, pc                                        |     r1 = 0xe60a;
    0x00006f50 bl 0x85e4                                         |     fcn_000085e4 (r0);
    0x00006f54 ldr r3, [sp, 0x28]                                |     r3 = var_28h;
    0x00006f56 add.w r3, r3, 0x1000                              |     r3 += 0x1000;
    0x00006f5a ldrb r3, [r3, 0xa]                                |     r3 = *((r3 + 0xa));
    0x00006f5c cmp r3, 0                                         |     
    0x00006f5e it ne                                             |     
                                                                 |     if (r3 == 0) {
    0x00006f60 cmpne r7, 0x57                                    |         __asm ("cmpne r7, 0x57");
                                                                 |         goto label_150;
                                                                 |     }
                                                                 |     if (r3 == 0) {
                                                                 | label_150:
    0x00006f62 beq.w 0x6c7e                                      |         goto label_38;
                                                                 |     }
    0x00006f66 ldr.w r1, [pc, 0x754]                             |     
    0x00006f6a mov r3, r6                                        |     r3 = r6;
    0x00006f6c ldr.w r2, [r8, 4]                                 |     r2 = *((r8 + 4));
    0x00006f70 movs r0, 4                                        |     r0 = 4;
    0x00006f72 add r1, pc                                        |     r1 = 0xe634;
    0x00006f74 bl 0x85e4                                         |     fcn_000085e4 (r0);
    0x00006f78 b 0x6c7e                                          |     goto label_38;
                                                                 | label_149:
    0x00006f7a ldr.w r1, [pc, 0x744]                             |     
    0x00006f7e mov r3, r6                                        |     r3 = r6;
    0x00006f80 ldr.w r2, [r8, 4]                                 |     r2 = *((r8 + 4));
    0x00006f84 movs r0, 4                                        |     r0 = 4;
    0x00006f86 add r1, pc                                        |     r1 = 0xe64c;
    0x00006f88 bl 0x85e4                                         |     fcn_000085e4 (r0);
    0x00006f8c b 0x6f3a                                          |     goto label_39;
                                                                 | label_90:
    0x00006f8e blx 0x1be4                                        |     r0 = isoc99_sscanf ();
    0x00006f92 ldr r7, [r0]                                      |     r7 = *(r0);
    0x00006f94 rsbs r7, r7, 0                                    |     r7 -= ;
                                                                 | label_46:
    0x00006f96 ldr r3, [sp, 0x20]                                |     r3 = stream;
    0x00006f98 subw r3, r3, 0xaa4                                |     __asm ("subw r3, r3, 0xaa4");
    0x00006f9c ldr r0, [r3, 0x18]                                |     r0 = *((r3 + 0x18));
    0x00006f9e bl 0x8c50                                         |     fcn_00008c50 (r0);
    0x00006fa2 b.w 0x641c                                        |     goto label_40;
                                                                 | label_101:
    0x00006fa6 ldr r2, [sp, 0x20]                                |     r2 = stream;
    0x00006fa8 ldrb.w r3, [r2, 0x7e2]                            |     r3 = *((r2 + 0x7e2));
    0x00006fac add.w r6, r2, 0x7d8                               |     r6 = r2 + 0x7d8;
    0x00006fb0 cmp r3, 0                                         |     
                                                                 |     if (r3 == 0) {
    0x00006fb2 beq.w 0x6224                                      |         goto label_16;
                                                                 |     }
    0x00006fb6 ldr.w r1, [pc, 0x70c]                             |     
    0x00006fba movs r0, 4                                        |     r0 = 4;
    0x00006fbc add r1, pc                                        |     r1 = 0xe686;
    0x00006fbe bl 0x85e4                                         |     fcn_000085e4 (r0);
    0x00006fc2 ldr r3, [sp, 0x40]                                |     r3 = var_40h;
    0x00006fc4 strb r3, [r6, 0xa]                                |     *((r6 + 0xa)) = r3;
    0x00006fc6 b.w 0x6224                                        |     goto label_16;
                                                                 | label_133:
    0x00006fca ldr.w r1, [pc, 0x6fc]                             |     
    0x00006fce movs r0, 7                                        |     r0 = 7;
    0x00006fd0 add r1, pc                                        |     r1 = 0xe69e;
    0x00006fd2 bl 0x85e4                                         |     fcn_000085e4 (r0);
    0x00006fd6 b 0x6c88                                          |     goto label_41;
                                                                 | label_130:
    0x00006fd8 ldr.w r1, [pc, 0x6f0]                             |     
    0x00006fdc movs r0, 6                                        |     r0 = 6;
    0x00006fde str.w sl, [sp]                                    |     __asm ("str.w sl, [sp]");
    0x00006fe2 ldr r3, [r7]                                      |     r3 = *(r7);
    0x00006fe4 ldr r2, [sp, 0x2c]                                |     r2 = var_2ch;
    0x00006fe6 add r1, pc                                        |     r1 = 0xe6b6;
    0x00006fe8 bl 0x85e4                                         |     fcn_000085e4 (r0);
    0x00006fec b.w 0x6538                                        |     goto label_28;
                                                                 | label_82:
    0x00006ff0 blx 0x1be4                                        |     r0 = isoc99_sscanf ();
    0x00006ff4 ldr r0, [r0]                                      |     r0 = *(r0);
    0x00006ff6 blx 0x1b18                                        |     system (r0)
    0x00006ffa ldr.w r1, [pc, 0x6d4]                             |     
    0x00006ffe mov r2, r0                                        |     r2 = r0;
    0x00007000 movs r0, 2                                        |     r0 = 2;
    0x00007002 add r1, pc                                        |     r1 = 0xe6d8;
    0x00007004 bl 0x85e4                                         |     fcn_000085e4 (r0);
    0x00007008 b.w 0x5e46                                        |     goto label_11;
                                                                 | label_86:
    0x0000700c blx 0x1be4                                        |     isoc99_sscanf ();
    0x00007010 ldr.w r1, [pc, 0x6c0]                             |     
    0x00007014 mov r2, r6                                        |     r2 = r6;
    0x00007016 ldr r3, [r0]                                      |     r3 = *(r0);
    0x00007018 movs r0, 3                                        |     r0 = 3;
    0x0000701a add r1, pc                                        |     r1 = 0xe6f2;
    0x0000701c rsbs r6, r3, 0                                    |     r6 = r3 - ;
    0x0000701e bl 0x85e4                                         |     fcn_000085e4 (r0);
    0x00007022 b.w 0x60ac                                        |     goto label_30;
                                                                 | label_114:
    0x00007026 mov r2, r0                                        |     r2 = r0;
    0x00007028 mov r1, r0                                        |     r1 = r0;
    0x0000702a add.w r7, sp, 0x1300                              |     r7 += ptr;
    0x0000702e mov r0, r5                                        |     r0 = r5;
    0x00007030 blx 0x1d80                                        |     fcn_00001d80 ();
    0x00007034 rsbs r4, r4, 0                                    |     r4 -= ;
    0x00007036 ldr.w sb, [sp, 0x20]                              |     sb = stream;
    0x0000703a adds r7, 0x1c                                     |     r7 += 0x1c;
    0x0000703c b 0x7060                                          |     
                                                                 |     while (r0 != 0) {
    0x0000703e mov r0, r6                                        |         r0 = r6;
    0x00007040 blx 0x1bb0                                        |         r0 = fcn_00001bb0 ();
                                                                 |         if (r0 != 0) {
    0x00007044 cbz r0, 0x705e                                    |             
    0x00007046 subw r2, sb, 0xaa4                                |             __asm ("subw r2, sb, 0xaa4");
    0x0000704a adds r3, r7, r0                                   |             r3 = r7 + r0;
    0x0000704c ldr r0, [r2, 0x18]                                |             r0 = *((r2 + 0x18));
    0x0000704e movs r2, 0                                        |             r2 = 0;
    0x00007050 mov r1, r6                                        |             r1 = r6;
    0x00007052 strb r2, [r3, -0x1]                               |             *((r3 - 0x1)) = r2;
    0x00007056 bl 0x8f6c                                         |             r0 = fcn_00008f6c (r0, r1);
                                                                 |             if (r0 == 0) {
    0x0000705a cbz r0, 0x705e                                    |                 goto label_151;
                                                                 |             }
    0x0000705c str r4, [r0, 0x30]                                |             *((r0 + 0x30)) = r4;
                                                                 |         }
                                                                 | label_151:
    0x0000705e adds r4, 1                                        |         r4++;
    0x00007060 mov r2, r5                                        |         r2 = r5;
    0x00007062 mov.w r1, 0x1000                                  |         r1 = 0x1000;
    0x00007066 mov r0, r6                                        |         r0 = r6;
    0x00007068 blx 0x19ac                                        |         r0 = fcn_000019ac ();
    0x0000706c cmp r0, 0                                         |         
    0x0000706e bne 0x703e                                        |         
                                                                 |     }
    0x00007070 ldr r3, [sp, 0x28]                                |     r3 = var_28h;
    0x00007072 mov r8, r0                                        |     r8 = r0;
    0x00007074 ldr.w r1, [pc, 0x660]                             |     r1 = *(0x000076d8);
    0x00007078 sub.w r0, r3, 0x1c                                |     r0 = r3 - 0x1c;
    0x0000707c add r1, pc                                        |     r1 += pc;
    0x0000707e bl 0x8c08                                         |     fcn_00008c08 (r0, r1);
    0x00007082 ldr r3, [sp, 0x20]                                |     r3 = stream;
    0x00007084 subw r3, r3, 0xaa4                                |     __asm ("subw r3, r3, 0xaa4");
    0x00007088 ldr r1, [r3, 0xc]                                 |     r1 = *((r3 + 0xc));
    0x0000708a cmp r1, 0                                         |     
                                                                 |     if (r1 == 0) {
    0x0000708c beq.w 0x664c                                      |         goto label_42;
                                                                 |     }
    0x00007090 ldr r3, [r3, 8]                                   |     r3 = *((r3 + 8));
    0x00007092 mov r0, r8                                        |     r0 = r8;
    0x00007094 subs r3, 4                                        |     r3 -= 4;
                                                                 |     do {
    0x00007096 ldr r2, [r3, 4]!                                  |         r2 = *((r3 += 4));
    0x0000709a strh r0, [r2, 0x38]                               |         *((r2 + 0x38)) = r0;
    0x0000709c adds r0, 1                                        |         r0++;
    0x0000709e cmp r0, r1                                        |         
    0x000070a0 bne 0x7096                                        |         
                                                                 |     } while (r0 != r1);
    0x000070a2 b.w 0x664c                                        |     goto label_42;
                                                                 | label_79:
    0x000070a6 ldr.w r1, [pc, 0x634]                             |     
    0x000070aa movs r0, 2                                        |     r0 = 2;
    0x000070ac add r1, pc                                        |     r1 = 0xe78e;
    0x000070ae bl 0x85e4                                         |     fcn_000085e4 (r0);
    0x000070b2 b.w 0x5e46                                        |     goto label_11;
                                                                 | label_97:
    0x000070b6 rsbs r0, r0, 0                                    |     r0 -= ;
    0x000070b8 ldr.w fp, [sp, 0x1c]                              |     fp = var_1ch;
    0x000070bc blx 0x1b18                                        |     system (r0)
    0x000070c0 ldr.w r1, [pc, 0x61c]                             |     
    0x000070c4 mov r3, r0                                        |     r3 = r0;
    0x000070c6 mov r2, r7                                        |     r2 = r7;
    0x000070c8 movs r0, 2                                        |     r0 = 2;
    0x000070ca add r1, pc                                        |     r1 = 0xe7ae;
    0x000070cc bl 0x85e4                                         |     fcn_000085e4 (r0);
    0x000070d0 b.w 0x629c                                        |     goto label_32;
                                                                 | label_98:
    0x000070d4 rsbs r0, r0, 0                                    |     r0 -= ;
    0x000070d6 ldr.w fp, [sp, 0x1c]                              |     fp = var_1ch;
    0x000070da blx 0x1b18                                        |     system (r0)
    0x000070de ldr.w r1, [pc, 0x604]                             |     
    0x000070e2 mov r3, r0                                        |     r3 = r0;
    0x000070e4 mov r2, r7                                        |     r2 = r7;
    0x000070e6 movs r0, 2                                        |     r0 = 2;
    0x000070e8 add r1, pc                                        |     r1 = 0xe7d2;
    0x000070ea bl 0x85e4                                         |     fcn_000085e4 (r0);
    0x000070ee ldr.w r0, [r8]                                    |     r0 = *(r8);
    0x000070f2 bl 0xcd5c                                         |     fcn_0000cd5c (r0);
    0x000070f6 b.w 0x629c                                        |     goto label_32;
                                                                 | label_99:
    0x000070fa ldr.w sl, [sp, 0x2c]                              |     sl = var_2ch;
    0x000070fe ldr.w fp, [sp, 0x1c]                              |     fp = var_1ch;
    0x00007102 b.w 0x65b2                                        |     goto label_43;
                                                                 | label_112:
    0x00007106 rsbs r0, r0, 0                                    |     r0 -= ;
    0x00007108 blx 0x1b18                                        |     system (r0)
    0x0000710c ldr.w r1, [pc, 0x5d8]                             |     
    0x00007110 mov r2, r0                                        |     r2 = r0;
    0x00007112 movs r0, 2                                        |     r0 = 2;
    0x00007114 add r1, pc                                        |     r1 = 0xe800;
    0x00007116 bl 0x85e4                                         |     fcn_000085e4 (r0);
    0x0000711a b.w 0x629c                                        |     goto label_32;
                                                                 | label_119:
    0x0000711e ldr.w r3, [pc, 0x5cc]                             |     r3 = *(0x000076ec);
    0x00007122 add r3, pc                                        |     r3 += pc;
    0x00007124 b.w 0x673e                                        |     goto label_44;
                                                                 | label_145:
    0x00007128 movs r2, 0xc1                                     |     r2 = 0xc1;
    0x0000712a mov.w r1, 0x1a4                                   |     r1 = 0x1a4;
    0x0000712e strd r2, r1, [sp]                                 |     __asm ("strd r2, r1, [sp]");
    0x00007132 mov r3, r6                                        |     r3 = r6;
    0x00007134 ldr.w r1, [pc, 0x5b8]                             |     
    0x00007138 movs r0, 3                                        |     r0 = 3;
    0x0000713a ldr r2, [sp, 0x1c]                                |     r2 = var_1ch;
    0x0000713c add r1, pc                                        |     r1 = 0xe830;
    0x0000713e bl 0x85e4                                         |     fcn_000085e4 (r0);
    0x00007142 b 0x6e14                                          |     goto label_45;
                                                                 | label_91:
    0x00007144 blx 0x1be4                                        |     r0 = isoc99_sscanf ();
    0x00007148 ldr r3, [r0]                                      |     r3 = *(r0);
    0x0000714a ldr r0, [r7, 0x1c]                                |     r0 = *((r7 + 0x1c));
    0x0000714c rsbs r7, r3, 0                                    |     r7 = r3 - ;
    0x0000714e bl 0x8c50                                         |     fcn_00008c50 (r0);
    0x00007152 b 0x6f96                                          |     goto label_46;
                                                                 | label_110:
    0x00007154 ldr.w r1, [pc, 0x59c]                             |     
    0x00007158 ldr r0, [sp, 0x34]                                |     r0 = var_34h;
    0x0000715a add r1, pc                                        |     r1 = 0xe852;
    0x0000715c bl 0x5590                                         |     fcn_00005590 (r0, r1);
    0x00007160 b.w 0x6580                                        |     goto label_47;
                                                                 | label_111:
    0x00007164 rsbs r0, r0, 0                                    |     r0 -= ;
    0x00007166 blx 0x1b18                                        |     system (r0)
    0x0000716a ldr.w r1, [pc, 0x58c]                             |     
    0x0000716e mov r2, r0                                        |     r2 = r0;
    0x00007170 movs r0, 2                                        |     r0 = 2;
    0x00007172 add r1, pc                                        |     r1 = 0xe870;
    0x00007174 bl 0x85e4                                         |     fcn_000085e4 (r0);
    0x00007178 b.w 0x629c                                        |     goto label_32;
                                                                 | label_144:
    0x0000717c ldr.w fp, [sp, 0x28]                              |     fp = var_28h;
    0x00007180 mov r4, r3                                        |     r4 = r3;
    0x00007182 b 0x6f00                                          |     goto label_48;
                                                                 | label_139:
    0x00007184 ldr r3, [sp, 0x28]                                |     r3 = var_28h;
    0x00007186 cmp r3, 0                                         |     
                                                                 |     if (r3 == 0) {
    0x00007188 beq.w 0x764c                                      |         goto label_152;
                                                                 |     }
    0x0000718c ldr r3, [sp, 0x20]                                |     r3 = stream;
    0x0000718e movs r4, 0                                        |     r4 = 0;
    0x00007190 mov r6, r8                                        |     r6 = r8;
    0x00007192 mov sb, r4                                        |     sb = r4;
    0x00007194 mov sl, r4                                        |     sl = r4;
    0x00007196 subw r7, r3, 0xaa4                                |     __asm ("subw r7, r3, 0xaa4");
                                                                 |     do {
    0x0000719a ldrh r3, [r6], 2                                  |         r3 = *(r6);
                                                                 |         r6 += 2;
                                                                 |         if (r3 != 0) {
    0x0000719e cbz r3, 0x71b6                                    |             
    0x000071a0 ldr r3, [r7, 8]                                   |             r3 = *((r7 + 8));
    0x000071a2 mov r0, sb                                        |             r0 = sb;
    0x000071a4 ldr r1, [r3, r4]                                  |             r1 = *((r3 + r4));
    0x000071a6 bl 0xa350                                         |             r0 = fcn_0000a350 (r0, r1);
    0x000071aa cmp r0, 0                                         |             
                                                                 |             if (r0 == 0) {
    0x000071ac beq.w 0x7430                                      |                 goto label_153;
                                                                 |             }
    0x000071b0 add.w sl, sl, 1                                   |             sl++;
    0x000071b4 mov sb, r0                                        |             sb = r0;
                                                                 |         }
    0x000071b6 cmp r5, r6                                        |         
    0x000071b8 add.w r4, r4, 4                                   |         r4 += 4;
    0x000071bc bne 0x719a                                        |         
                                                                 |     } while (r5 != r6);
    0x000071be str.w sb, [sp, 0x1c]                              |     __asm ("str.w sb, [var_1ch]");
    0x000071c2 str.w sl, [sp, 0x28]                              |     __asm ("str.w sl, [var_28h]");
                                                                 | label_60:
    0x000071c6 ldr r3, [sp, 0x28]                                |     r3 = var_28h;
    0x000071c8 lsls r0, r3, 2                                    |     r0 = r3 << 2;
    0x000071ca blx 0x1b0c                                        |     strerror (r0);
    0x000071ce str r0, [sp, 0x2c]                                |     var_2ch = r0;
    0x000071d0 cmp r0, 0                                         |     
                                                                 |     if (r0 == 0) {
    0x000071d2 beq.w 0x7634                                      |         goto label_154;
                                                                 |     }
    0x000071d6 movs r1, 0                                        |     r1 = 0;
    0x000071d8 movs r0, 0x10                                     |     r0 = 0x10;
    0x000071da bl 0x8c14                                         |     fcn_00008c14 (r0, r1);
    0x000071de str r0, [sp, 0x3c]                                |     var_3ch = r0;
    0x000071e0 cmp r0, 0                                         |     
                                                                 |     if (r0 == 0) {
    0x000071e2 beq.w 0x7640                                      |         goto label_155;
                                                                 |     }
    0x000071e6 ldr.w r3, [pc, 0x514]                             |     
    0x000071ea ldr.w sl, [sp, 0x28]                              |     sl = var_28h;
    0x000071ee str.w fp, [sp, 0x30]                              |     __asm ("str.w fp, [var_30h]");
    0x000071f2 add r3, pc                                        |     r3 = 0xe8f4;
    0x000071f4 str.w r8, [sp, 0x38]                              |     __asm ("str.w r8, [var_38h]");
    0x000071f8 str r3, [sp, 0x48]                                |     var_0h = r3;
    0x000071fa ldr.w r3, [pc, 0x504]                             |     
    0x000071fe add r3, pc                                        |     r3 = 0xe904;
    0x00007200 str r3, [sp, 0x50]                                |     var_8h = r3;
    0x00007202 add.w r3, sp, 0x1300                              |     r3 += ptr;
    0x00007206 adds r3, 0x1c                                     |     r3 += 0x1c;
    0x00007208 str r3, [sp, 0x44]                                |     var_44h = r3;
                                                                 | label_49:
    0x0000720a ldr r3, [sp, 0x1c]                                |     r3 = var_1ch;
    0x0000720c cmp r3, 0                                         |     
                                                                 |     if (r3 == 0) {
    0x0000720e beq.w 0x7416                                      |         goto label_156;
                                                                 |     }
    0x00007212 ldr r3, [sp, 0x1c]                                |     r3 = var_1ch;
    0x00007214 mov r0, r3                                        |     r0 = r3;
    0x00007216 ldr r4, [r3, 8]                                   |     r4 = *((r3 + 8));
    0x00007218 bl 0xa3ec                                         |     fcn_0000a3ec (r0);
    0x0000721c str r0, [sp, 0x1c]                                |     var_1ch = r0;
    0x0000721e movs r0, 8                                        |     r0 = 8;
    0x00007220 blx 0x1b0c                                        |     strerror (r0);
    0x00007224 str r0, [sp, 0x40]                                |     var_40h = r0;
    0x00007226 cmp r0, 0                                         |     
                                                                 |     if (r0 == 0) {
    0x00007228 beq.w 0x75c2                                      |         goto label_157;
                                                                 |     }
    0x0000722c ldr r3, [sp, 0x40]                                |     r3 = var_40h;
    0x0000722e movs r5, 0                                        |     r5 = 0;
    0x00007230 mov r0, r5                                        |     r0 = r5;
    0x00007232 str r4, [r3, 4]                                   |     *((r3 + 4)) = r4;
    0x00007234 mov r1, r3                                        |     r1 = r3;
    0x00007236 str r5, [r3]                                      |     *(r3) = r5;
    0x00007238 bl 0xa350                                         |     r0 = fcn_0000a350 (r0, r1);
    0x0000723c mov r4, r0                                        |     r4 = r0;
    0x0000723e cmp r0, 0                                         |     
                                                                 |     if (r0 == 0) {
    0x00007240 beq.w 0x75ae                                      |         goto label_158;
                                                                 |     }
    0x00007244 ldr r3, [sp, 0x40]                                |     r3 = var_40h;
    0x00007246 ldr r2, [sp, 0x2c]                                |     r2 = var_2ch;
    0x00007248 str r5, [sp, 0x28]                                |     var_28h = r5;
    0x0000724a movs r5, 1                                        |     r5 = 1;
    0x0000724c mov r8, r3                                        |     r8 = r3;
    0x0000724e str r3, [r2]                                      |     *(r2) = r3;
                                                                 | label_51:
    0x00007250 ldr.w r1, [r8, 4]                                 |     r1 = *((r8 + 4));
    0x00007254 ldrb.w r3, [r1, 0x3c]                             |     r3 = *((r1 + 0x3c));
                                                                 |     if (r3 != 0) {
    0x00007258 cbz r3, 0x7262                                    |         
    0x0000725a ldr r3, [sp, 0x40]                                |         r3 = var_40h;
    0x0000725c ldr r3, [r3, 4]                                   |         r3 = *((r3 + 4));
    0x0000725e cmp r1, r3                                        |         
                                                                 |         if (r1 == r3) {
    0x00007260 beq 0x7326                                        |             goto label_159;
                                                                 |         }
                                                                 |     }
    0x00007262 ldr r3, [r1, 0x1c]                                |     r3 = *((r1 + 0x1c));
    0x00007264 movs r2, 1                                        |     r2 = 1;
    0x00007266 strb.w r2, [r1, 0x3c]                             |     *((r1 + 0x3c)) = r2;
    0x0000726a cmp r3, 0                                         |     
                                                                 |     if (r3 == 0) {
    0x0000726c beq 0x730c                                        |         goto label_160;
                                                                 |     }
    0x0000726e ldr r6, [r1, 0x18]                                |     r6 = *((r1 + 0x18));
    0x00007270 add.w sb, r6, r3, lsl 2                           |     sb = r6 + (r3 << 2);
    0x00007274 cmp r6, sb                                        |     
                                                                 |     if (r6 >= sb) {
    0x00007276 bhs.w 0x75aa                                      |         goto label_161;
                                                                 |     }
    0x0000727a add.w r7, r5, 0x40000000                          |     r7 = r5 + 0x40000000;
    0x0000727e ldrd r5, r3, [sp, 0x28]                           |     __asm ("ldrd r5, r3, [var_28h]");
    0x00007282 subs r7, 2                                        |     r7 -= 2;
    0x00007284 add.w r7, r3, r7, lsl 2                           |     r7 = r3 + (r7 << 2);
    0x00007288 b 0x7290                                          |     
                                                                 |     while (r0 != 0) {
    0x0000728a cmp sb, r6                                        |         
    0x0000728c mov r4, r0                                        |         r4 = r0;
                                                                 |         if (sb < r6) {
    0x0000728e bls 0x7316                                        |             goto label_56;
                                                                 |         }
    0x00007290 movs r0, 8                                        |         r0 = 8;
    0x00007292 ldr fp, [r6], 4                                   |         fp = *(r6);
                                                                 |         r6 += 4;
    0x00007296 blx 0x1b0c                                        |         r0 = strerror (r0);
    0x0000729a mov r1, r0                                        |         r1 = r0;
    0x0000729c cmp r0, 0                                         |         
                                                                 |         if (r0 == 0) {
    0x0000729e beq.w 0x759a                                      |             goto label_162;
                                                                 |         }
    0x000072a2 cmp sl, r5                                        |         
    0x000072a4 strd r8, fp, [r0]                                 |         __asm ("strd r8, fp, [r0]");
                                                                 |         if (sl < r5) {
    0x000072a8 bls.w 0x7620                                      |             goto label_163;
                                                                 |         }
    0x000072ac str r0, [r7, 4]!                                  |         *((r7 += 4)) = r0;
    0x000072b0 mov r0, r4                                        |         r0 = r4;
    0x000072b2 adds r5, 1                                        |         r5++;
    0x000072b4 bl 0xa350                                         |         r0 = fcn_0000a350 (r0, r1);
    0x000072b8 cmp r0, 0                                         |         
    0x000072ba bne 0x728a                                        |         
                                                                 |     }
    0x000072bc mvn r5, 0xb                                       |     r5 = ~0xb;
    0x000072c0 ldr r1, [sp, 0x50]                                |     r1 = var_8h;
    0x000072c2 movs r0, 3                                        |     r0 = 3;
    0x000072c4 bl 0x85e4                                         |     fcn_000085e4 (r0);
                                                                 |     do {
                                                                 | label_50:
    0x000072c8 ldr r6, [r4, 8]                                   |         r6 = *((r4 + 8));
    0x000072ca mov r0, r4                                        |         r0 = r4;
    0x000072cc bl 0xa3ec                                         |         r0 = fcn_0000a3ec (r0);
    0x000072d0 mov r4, r0                                        |         r4 = r0;
    0x000072d2 mov r0, r6                                        |         r0 = r6;
    0x000072d4 blx 0x19a0                                        |         fcn_000019a0 ();
    0x000072d8 cmp r4, 0                                         |         
    0x000072da bne 0x72c8                                        |         
                                                                 |     } while (r4 != 0);
    0x000072dc cmp r5, 0                                         |     
                                                                 |     if (r5 >= 0) {
    0x000072de bge 0x720a                                        |         goto label_49;
                                                                 |     }
    0x000072e0 ldr.w fp, [sp, 0x30]                              |     fp = var_30h;
    0x000072e4 ldr.w r8, [sp, 0x38]                              |     r8 = var_38h;
                                                                 | label_54:
    0x000072e8 ldr r0, [sp, 0x3c]                                |     r0 = var_3ch;
    0x000072ea bl 0x8c50                                         |     fcn_00008c50 (r0);
                                                                 | label_55:
    0x000072ee ldr r3, [sp, 0x1c]                                |     r3 = var_1ch;
    0x000072f0 ldr r0, [sp, 0x1c]                                |     r0 = var_1ch;
                                                                 |     if (r3 == 0) {
    0x000072f2 cbz r3, 0x72fc                                    |         goto label_164;
                                                                 |     }
                                                                 |     do {
    0x000072f4 bl 0xa3ec                                         |         r0 = fcn_0000a3ec (r0);
    0x000072f8 cmp r0, 0                                         |         
    0x000072fa bne 0x72f4                                        |         
                                                                 |     } while (r0 != 0);
                                                                 | label_164:
    0x000072fc ldr r0, [sp, 0x2c]                                |     r0 = var_2ch;
    0x000072fe blx 0x19a0                                        |     fcn_000019a0 ();
    0x00007302 mov r0, r8                                        |     r0 = r8;
    0x00007304 blx 0x19a0                                        |     fcn_000019a0 ();
    0x00007308 b.w 0x629c                                        |     goto label_32;
                                                                 | label_160:
    0x0000730c ldr r0, [sp, 0x1c]                                |     r0 = var_1ch;
    0x0000730e bl 0xa454                                         |     fcn_0000a454 (r0, r1);
    0x00007312 ldr r5, [sp, 0x28]                                |     r5 = var_28h;
    0x00007314 str r0, [sp, 0x1c]                                |     var_1ch = r0;
                                                                 | label_56:
    0x00007316 cmp r5, 0                                         |     
                                                                 |     if (r5 == 0) {
    0x00007318 beq 0x72c8                                        |         goto label_50;
                                                                 |     }
    0x0000731a ldr r2, [sp, 0x2c]                                |     r2 = var_2ch;
    0x0000731c subs r3, r5, 1                                    |     r3 = r5 - 1;
    0x0000731e str r3, [sp, 0x28]                                |     var_28h = r3;
    0x00007320 ldr.w r8, [r2, r3, lsl 2]                         |     offset_10 = r3 << 2;
                                                                 |     r8 = *((r2 + offset_10));
    0x00007324 b 0x7250                                          |     goto label_51;
                                                                 | label_159:
    0x00007326 ldr r3, [sp, 0x48]                                |     r3 = var_0h;
    0x00007328 ldm.w r3, {r0, r1}                                |     r0 = *(r3);
                                                                 |     r1 = *((r3 + 4));
    0x0000732c add.w r3, sp, 0x1320                              |     r3 += arg_1320h;
    0x0000732e strh r1, [r3, r6]                                 |     *((r3 + r6)) = r1;
    0x00007330 strb r1, [r3]                                     |     *(r3) = r1;
    0x00007332 movs r1, 3                                        |     r1 = 3;
    0x00007334 ldr r3, [sp, 0x44]                                |     r3 = var_44h;
    0x00007336 str r0, [r3]                                      |     *(r3) = r0;
    0x00007338 ldr r0, [sp, 0x18]                                |     r0 = var_18h;
    0x0000733a bl 0x8b68                                         |     fcn_00008b68 (r0, r1);
    0x0000733e ldr.w r6, [r8]                                    |     r6 = *(r8);
    0x00007342 cmp r6, 0                                         |     
                                                                 |     if (r6 == 0) {
    0x00007344 beq.w 0x7526                                      |         goto label_165;
                                                                 |     }
    0x00007348 mov.w sb, 0                                       |     sb = 0;
    0x0000734c mov r3, r8                                        |     r3 = r8;
    0x0000734e mov r7, sb                                        |     r7 = sb;
    0x00007350 mov r8, r4                                        |     r8 = r4;
    0x00007352 ldr.w fp, [sp, 0x3c]                              |     fp = var_3ch;
    0x00007356 mov r4, sb                                        |     r4 = sb;
    0x00007358 mov sb, r3                                        |     sb = r3;
    0x0000735a b 0x7364                                          |     
                                                                 |     while (r0 == 0) {
    0x0000735c ldr r6, [r6]                                      |         r6 = *(r6);
    0x0000735e adds r4, 1                                        |         r4++;
    0x00007360 cmp r6, 0                                         |         
                                                                 |         if (r6 == 0) {
    0x00007362 beq 0x745a                                        |             goto label_166;
                                                                 |         }
    0x00007364 ldr r2, [r6, 4]                                   |         r2 = *((r6 + 4));
    0x00007366 mov r1, r6                                        |         r1 = r6;
    0x00007368 ldr r0, [sp, 0x18]                                |         r0 = var_18h;
    0x0000736a ldr r2, [r2, 0x2c]                                |         r2 = *((r2 + 0x2c));
    0x0000736c subs r2, 1                                        |         r2--;
    0x0000736e add r7, r2                                        |         r7 += r2;
    0x00007370 bl 0x8b98                                         |         fcn_00008b98 (r0, r1);
    0x00007372 invalid                                           |         
    0x00007374 ldr r1, [r6, 4]                                   |         r1 = *((r6 + 4));
    0x00007376 movs r2, 0                                        |         r2 = 0;
    0x00007378 mov r0, fp                                        |         r0 = fp;
    0x0000737a adds r1, 0x44                                     |         r1 += 0x44;
    0x0000737c bl 0x8cc0                                         |         r0 = fcn_00008cc0 (r0, r1, r2);
    0x00007380 mov r5, r0                                        |         r5 = r0;
    0x00007382 cmp r0, 0                                         |         
    0x00007384 beq 0x735c                                        |         
                                                                 |     }
    0x00007386 mov r4, r8                                        |     r4 = r8;
    0x00007388 b 0x72c8                                          |     goto label_50;
                                                                 | label_148:
    0x0000738a blx 0x1be4                                        |     isoc99_sscanf ();
    0x0000738e ldr r3, [r4]                                      |     r3 = *(r4);
    0x00007390 ldr r2, [sp, 0x1c]                                |     r2 = var_1ch;
    0x00007392 ldr r1, [pc, 0x370]                               |     
    0x00007394 ldr r4, [r0]                                      |     r4 = *(r0);
    0x00007396 movs r0, 2                                        |     r0 = 2;
    0x00007398 str r3, [sp, 4]                                   |     var_4h_2 = r3;
    0x0000739a mov r3, r6                                        |     r3 = r6;
    0x0000739c add r1, pc                                        |     r1 = 0xeaa6;
    0x0000739e str r2, [sp]                                      |     *(sp) = r2;
    0x000073a0 ldr.w fp, [sp, 0x28]                              |     fp = var_28h;
    0x000073a4 rsbs r4, r4, 0                                    |     r4 -= ;
    0x000073a6 bl 0x85e4                                         |     fcn_000085e4 (r0);
    0x000073aa b 0x6efe                                          |     goto label_52;
                                                                 | label_147:
    0x000073ac ldr r2, [sp, 0x3c]                                |     r2 = var_3ch;
    0x000073ae mov r1, r6                                        |     r1 = r6;
    0x000073b0 mov r0, sl                                        |     r0 = sl;
    0x000073b2 ldr.w fp, [sp, 0x28]                              |     fp = var_28h;
    0x000073b6 mov r4, r8                                        |     r4 = r8;
    0x000073b8 blx 0x1984                                        |     r0 = fcn_00001984 ();
    0x000073bc cmp r0, 0                                         |     
                                                                 |     if (r0 != 0) {
    0x000073be bne.w 0x74ee                                      |         goto label_167;
                                                                 |     }
                                                                 | label_57:
    0x000073c2 ldr r3, [pc, 0x344]                               |     
    0x000073c4 rsbs r0, r4, 0                                    |     r0 = r4 - ;
    0x000073c6 add r3, pc                                        |     
    0x000073c8 ldr r3, [r3]                                      |     r3 = *(0xead4);
    0x000073ca ldr r4, [r3]                                      |     r4 = *(0xead4);
    0x000073cc blx 0x1b18                                        |     system (r0)
    0x000073d0 ldr r1, [pc, 0x338]                               |     
    0x000073d2 mov r3, r0                                        |     r3 = r0;
    0x000073d4 mov r2, r4                                        |     r2 = r4;
    0x000073d6 movs r0, 3                                        |     r0 = 3;
    0x000073d8 add r1, pc                                        |     r1 = 0xeae8;
    0x000073da bl 0x85e4                                         |     r0 = fcn_000085e4 (r0);
    0x000073de blx 0x1be4                                        |     r0 = isoc99_sscanf ();
    0x000073e2 ldr r4, [r0]                                      |     r4 = *(r0);
    0x000073e4 rsbs r4, r4, 0                                    |     r4 -= ;
    0x000073e6 b 0x6efe                                          |     goto label_52;
                                                                 | label_143:
    0x000073e8 ldr r1, [sp, 0x3c]                                |     r1 = var_3ch;
    0x000073ea ldr r0, [sp, 0x1c]                                |     r0 = var_1ch;
    0x000073ec blx 0x1ad0                                        |     r0 = fstatat64 ();
    0x000073f0 subs.w sl, r0, 0                                  |     sl = r0 - 0;
                                                                 |     if (sl >= r0) {
    0x000073f4 bge.w 0x6dd2                                      |         goto label_53;
                                                                 |     }
    0x000073f8 blx 0x1be4                                        |     isoc99_sscanf ();
    0x000073fc ldr r1, [pc, 0x310]                               |     
    0x000073fe ldr r4, [r0]                                      |     r4 = *(r0);
    0x00007400 movs r0, 2                                        |     r0 = 2;
    0x00007402 ldr r2, [sp, 0x1c]                                |     r2 = var_1ch;
    0x00007404 add r1, pc                                        |     r1 = 0xeb18;
    0x00007406 cmp r4, 0                                         |     
    0x00007408 ite le                                            |     
                                                                 |     if (r4 > 0) {
    0x0000740a movle r4, 0                                       |         r4 = 0;
                                                                 |     }
                                                                 |     if (r4 <= 0) {
    0x0000740c movgt r4, 1                                       |         r4 = 1;
                                                                 |     }
    0x0000740e bl 0x85e4                                         |     fcn_000085e4 (r0);
    0x00007412 b.w 0x62da                                        |     goto label_35;
                                                                 | label_156:
    0x00007416 ldrd r8, r0, [sp, 0x38]                           |     __asm ("ldrd r8, r0, [var_38h]");
    0x0000741a ldr.w fp, [sp, 0x30]                              |     fp = var_30h;
    0x0000741e bl 0x91d4                                         |     fcn_000091d4 (r0);
    0x00007422 ldr r1, [pc, 0x2f0]                               |     
    0x00007424 mov r2, r0                                        |     r2 = r0;
    0x00007426 movs r0, 3                                        |     r0 = 3;
    0x00007428 add r1, pc                                        |     r1 = 0xeb42;
    0x0000742a bl 0x85e4                                         |     fcn_000085e4 (r0);
    0x0000742e b 0x72e8                                          |     goto label_54;
                                                                 | label_153:
    0x00007430 ldr r1, [pc, 0x2e4]                               |     
    0x00007432 str r0, [sp, 0x2c]                                |     var_2ch = r0;
    0x00007434 movs r0, 3                                        |     r0 = 3;
    0x00007436 str.w sb, [sp, 0x1c]                              |     __asm ("str.w sb, [var_1ch]");
    0x0000743a add r1, pc                                        |     r1 = 0xeb56;
    0x0000743c bl 0x85e4                                         |     fcn_000085e4 (r0);
    0x00007440 b 0x72ee                                          |     goto label_55;
                                                                 | label_141:
    0x00007442 ldr r3, [pc, 0x2d8]                               |     
    0x00007444 movw r2, 0x785                                    |     r2 = 0x785;
    0x00007448 ldr r1, [pc, 0x2d4]                               |     
    0x0000744a ldr r0, [pc, 0x2d8]                               |     
    0x0000744c add r3, pc                                        |     r3 = 0xeb6e;
    0x0000744e add r1, pc                                        |     r1 = 0xeb72;
    0x00007450 add r0, pc                                        |     r0 = 0xeb7a;
    0x00007452 blx 0x1de0                                        |     fcn_00001de0 ();
                                                                 | label_77:
    0x00007456 blx 0x1a1c                                        |     stat64 ();
                                                                 | label_166:
    0x0000745a mov r3, sb                                        |     r3 = sb;
    0x0000745c mov sb, r4                                        |     sb = r4;
    0x0000745e mov r4, r8                                        |     r4 = r8;
    0x00007460 mov r8, r3                                        |     r8 = r3;
                                                                 | label_58:
    0x00007462 ldr.w r3, [r8, 4]                                 |     r3 = *((r8 + 4));
    0x00007466 movs r5, 0                                        |     r5 = 0;
    0x00007468 ldr r0, [r3, 0x2c]                                |     r0 = *((r3 + 0x2c));
    0x0000746a add r0, r7                                        |     r0 += r7;
    0x0000746c add.w r0, r0, sb, lsl 2                           |     r0 += (sb << 2);
    0x0000746e lsls r1, r1, 2                                    |     r1 <<= 2;
    0x00007470 blx 0x1b0c                                        |     strerror (r0);
    0x00007474 ldr r3, [sp, 0x20]                                |     r3 = stream;
    0x00007476 mov r6, r0                                        |     r6 = r0;
    0x00007478 subw sb, r3, 0xa18                                |     __asm ("subw sb, r3, 0xa18");
    0x0000747c ldr.w r7, [sb, 4]                                 |     r7 = *((sb + 4));
    0x00007480 subs r7, 1                                        |     r7--;
                                                                 |     if (r7 < 1) {
    0x00007482 bmi 0x74c6                                        |         goto label_168;
                                                                 |     }
    0x00007484 mov fp, r8                                        |     
    0x00007486 mov r8, r4                                        |     r8 = r4;
                                                                 |     do {
    0x00007488 ldr.w r2, [sb]                                    |         r2 = *(sb);
    0x0000748c adds r0, r6, r5                                   |         r0 = r6 + r5;
    0x0000748e ldr.w r4, [r2, r7, lsl 2]                         |         offset_11 = r7 << 2;
                                                                 |         r4 = *((r2 + offset_11));
    0x00007492 subs r7, 1                                        |         r7--;
    0x00007494 ldr r1, [r4, 4]                                   |         r1 = *((r4 + 4));
    0x00007496 ldr r2, [r1, 0x2c]                                |         r2 = *((r1 + 0x2c));
    0x00007498 adds r1, 0x44                                     |         r1 += 0x44;
    0x0000749a subs r2, 1                                        |         r2--;
    0x0000749c str r2, [sp, 0x54]                                |         var_54h = r2;
    0x0000749e blx 0x19c8                                        |         mmap64 ();
    0x000074a2 ldr r3, [sp, 0x44]                                |         r3 = var_44h;
    0x000074a4 ldr r2, [sp, 0x54]                                |         r2 = var_54h;
    0x000074a6 ldr r0, [r3]                                      |         r0 = *(r3);
    0x000074a8 add r2, r5                                        |         r2 += r5;
    0x000074aa ldrb r5, [r3, 4]                                  |         r5 = *((r3 + 4));
    0x000074ac adds r1, r6, r2                                   |         r1 = r6 + r2;
    0x000074ae str r0, [r6, r2]                                  |         *((r6 + r2)) = r0;
    0x000074b0 strb r5, [r1, 4]                                  |         *((r1 + 4)) = r5;
    0x000074b2 adds r5, r2, 4                                    |         r5 = r2 + 4;
    0x000074b4 ldr r0, [sp, 0x1c]                                |         r0 = var_1ch;
    0x000074b6 ldr r1, [r4, 4]                                   |         r1 = *((r4 + 4));
    0x000074b8 bl 0xa454                                         |         fcn_0000a454 (r0, r1);
    0x000074bc str r0, [sp, 0x1c]                                |         var_1ch = r0;
    0x000074be adds r0, r7, 1                                    |         r0 = r7 + 1;
    0x000074c0 bne 0x7488                                        |         
                                                                 |     } while (r0 != r7);
    0x000074c2 mov r4, r8                                        |     r4 = r8;
    0x000074c4 mov r8, fp                                        |     r8 = fp;
                                                                 | label_168:
    0x000074c6 ldr.w r1, [r8, 4]                                 |     r1 = *((r8 + 4));
    0x000074ca adds r0, r6, r5                                   |     r0 = r6 + r5;
    0x000074cc ldr r5, [sp, 0x28]                                |     r5 = var_28h;
    0x000074ce adds r1, 0x44                                     |     r1 += 0x44;
    0x000074d0 blx 0x1a7c                                        |     gettimeofday ();
    0x000074d4 ldr r1, [pc, 0x250]                               |     
    0x000074d6 mov r2, r6                                        |     r2 = r6;
    0x000074d8 movs r0, 3                                        |     r0 = 3;
    0x000074da add r1, pc                                        |     r1 = 0xec06;
    0x000074dc bl 0x85e4                                         |     fcn_000085e4 (r0);
    0x000074e0 mov r0, r6                                        |     r0 = r6;
    0x000074e2 blx 0x19a0                                        |     fcn_000019a0 ();
    0x000074e6 ldr r0, [sp, 0x18]                                |     r0 = var_18h;
    0x000074e8 bl 0x8bf4                                         |     fcn_00008bf4 (r0);
    0x000074ec b 0x7316                                          |     goto label_56;
                                                                 | label_167:
    0x000074ee ldr r1, [pc, 0x23c]                               |     
    0x000074f0 mov r3, r6                                        |     r3 = r6;
    0x000074f2 ldr r2, [sp, 0x1c]                                |     r2 = var_1ch;
    0x000074f4 movs r0, 3                                        |     r0 = 3;
    0x000074f6 add r1, pc                                        |     r1 = 0xec28;
    0x000074f8 bl 0x85e4                                         |     fcn_000085e4 (r0);
    0x000074fc b 0x73c2                                          |     goto label_57;
                                                                 | label_146:
    0x000074fe ldr r1, [pc, 0x230]                               |     
    0x00007500 mov r2, r4                                        |     r2 = r4;
    0x00007502 ldr r3, [sp, 0x1c]                                |     r3 = var_1ch;
    0x00007504 movs r0, 3                                        |     r0 = 3;
    0x00007506 str r6, [sp]                                      |     *(sp) = r6;
    0x00007508 add r1, pc                                        |     r1 = 0xec3e;
    0x0000750a bl 0x85e4                                         |     fcn_000085e4 (r0);
    0x0000750e mov r0, r4                                        |     r0 = r4;
    0x00007510 blx 0x1dbc                                        |     fcn_00001dbc ();
    0x00007514 b 0x6e14                                          |     goto label_45;
                                                                 | label_122:
    0x00007516 ldr r1, [pc, 0x21c]                               |     
    0x00007518 mov r2, r5                                        |     r2 = r5;
    0x0000751a movs r0, 3                                        |     r0 = 3;
    0x0000751c add r1, pc                                        |     r1 = 0xec56;
    0x0000751e bl 0x85e4                                         |     fcn_000085e4 (r0);
    0x00007522 b.w 0x6780                                        |     goto label_27;
                                                                 | label_165:
    0x00007526 mov sb, r6                                        |     sb = r6;
    0x00007528 mov r7, r6                                        |     r7 = r6;
    0x0000752a b 0x7462                                          |     goto label_58;
                                                                 | label_102:
    0x0000752c blx 0x1be4                                        |     isoc99_sscanf ();
    0x00007530 ldr r1, [pc, 0x204]                               |     
    0x00007532 ldr r6, [r0]                                      |     r6 = *(r0);
    0x00007534 movs r0, 7                                        |     r0 = 7;
    0x00007536 ldr r2, [sp, 0x40]                                |     r2 = var_40h;
    0x00007538 add r1, pc                                        |     r1 = 0xec74;
    0x0000753a bl 0x85e4                                         |     fcn_000085e4 (r0);
    0x0000753e cmp r6, 0                                         |     
                                                                 |     if (r6 <= 0) {
    0x00007540 ble.w 0x6224                                      |         goto label_16;
                                                                 |     }
    0x00007544 mov r0, r6                                        |     r0 = r6;
    0x00007546 blx 0x1b18                                        |     system (r0)
    0x0000754a ldr r1, [pc, 0x1f0]                               |     
    0x0000754c mov r3, r0                                        |     r3 = r0;
    0x0000754e ldr r2, [sp, 0x40]                                |     r2 = var_40h;
    0x00007550 movs r0, 2                                        |     r0 = 2;
    0x00007552 add r1, pc                                        |     r1 = 0xec94;
    0x00007554 bl 0x85e4                                         |     fcn_000085e4 (r0);
    0x00007558 b.w 0x5e46                                        |     goto label_11;
                                                                 | label_131:
    0x0000755c ldr r1, [pc, 0x1e0]                               |     
    0x0000755e movs r0, 3                                        |     r0 = 3;
    0x00007560 add r1, pc                                        |     r1 = 0xeca4;
    0x00007562 bl 0x85e4                                         |     fcn_000085e4 (r0);
    0x00007566 b.w 0x6538                                        |     goto label_28;
                                                                 | label_93:
    0x0000756a blx 0x1be4                                        |     isoc99_sscanf ();
    0x0000756e ldr r1, [pc, 0x1d4]                               |     
    0x00007570 ldr r6, [r0]                                      |     r6 = *(r0);
    0x00007572 movs r0, 7                                        |     r0 = 7;
    0x00007574 ldr r2, [sp, 0x38]                                |     r2 = var_38h;
    0x00007576 add r1, pc                                        |     r1 = 0xecc0;
    0x00007578 bl 0x85e4                                         |     fcn_000085e4 (r0);
    0x0000757c cmp r6, 0                                         |     
                                                                 |     if (r6 <= 0) {
    0x0000757e ble.w 0x6224                                      |         goto label_16;
                                                                 |     }
    0x00007582 mov r0, r6                                        |     r0 = r6;
    0x00007584 blx 0x1b18                                        |     system (r0)
    0x00007588 ldr r1, [pc, 0x1bc]                               |     
    0x0000758a mov r3, r0                                        |     r3 = r0;
    0x0000758c ldr r2, [sp, 0x38]                                |     r2 = var_38h;
    0x0000758e movs r0, 2                                        |     r0 = 2;
    0x00007590 add r1, pc                                        |     r1 = 0xecdc;
    0x00007592 bl 0x85e4                                         |     fcn_000085e4 (r0);
    0x00007596 b.w 0x5e46                                        |     goto label_11;
                                                                 | label_162:
    0x0000759a ldr r1, [pc, 0x1b0]                               |     
    0x0000759c movs r0, 3                                        |     r0 = 3;
    0x0000759e mvn r5, 0xb                                       |     r5 = ~0xb;
    0x000075a2 add r1, pc                                        |     r1 = 0xecf4;
    0x000075a4 bl 0x85e4                                         |     fcn_000085e4 (r0);
    0x000075a8 b 0x72c8                                          |     goto label_50;
                                                                 | label_161:
    0x000075aa ldr r5, [sp, 0x28]                                |     r5 = var_28h;
    0x000075ac b 0x7316                                          |     goto label_56;
                                                                 | label_158:
    0x000075ae ldr r1, [pc, 0x1a0]                               |     
    0x000075b0 movs r0, 3                                        |     r0 = 3;
    0x000075b2 ldr.w fp, [sp, 0x30]                              |     fp = var_30h;
    0x000075b6 ldr.w r8, [sp, 0x38]                              |     r8 = var_38h;
    0x000075ba add r1, pc                                        |     r1 = 0xed10;
    0x000075bc bl 0x85e4                                         |     fcn_000085e4 (r0);
    0x000075c0 b 0x72e8                                          |     goto label_54;
                                                                 | label_157:
    0x000075c2 ldr r1, [pc, 0x190]                               |     
    0x000075c4 movs r0, 3                                        |     r0 = 3;
    0x000075c6 ldr.w fp, [sp, 0x30]                              |     fp = var_30h;
    0x000075ca ldr.w r8, [sp, 0x38]                              |     r8 = var_38h;
    0x000075ce add r1, pc                                        |     r1 = 0xed28;
    0x000075d0 bl 0x85e4                                         |     fcn_000085e4 (r0);
    0x000075d4 b 0x72e8                                          |     goto label_54;
                                                                 | label_137:
    0x000075d6 ldr r3, [pc, 0x180]                               |     
    0x000075d8 mov.w r2, 0x768                                   |     r2 = 0x768;
    0x000075dc ldr r1, [pc, 0x17c]                               |     
    0x000075de ldr r0, [pc, 0x180]                               |     
    0x000075e0 add r3, pc                                        |     r3 = 0xed3e;
    0x000075e2 add r1, pc                                        |     r1 = 0xed42;
    0x000075e4 add r0, pc                                        |     r0 = 0xed4a;
    0x000075e6 blx 0x1de0                                        |     fcn_00001de0 ();
                                                                 | label_80:
    0x000075ea ldr r2, [sp, 0x1c]                                |     r2 = var_1ch;
    0x000075ec movs r1, 1                                        |     r1 = 1;
    0x000075ee ldr r3, [pc, 0x174]                               |     
    0x000075f0 ldr r0, [pc, 0x174]                               |     
    0x000075f2 ldr r3, [r2, r3]                                  |     r3 = *((r2 + r3));
    0x000075f4 movs r2, 0x15                                     |     r2 = 0x15;
    0x000075f6 add r0, pc                                        |     r0 = 0xed62;
    0x000075f8 ldr r3, [r3]                                      |     r3 = *(0x7766);
    0x000075fa blx 0x1a58                                        |     lseek64 ();
    0x000075fe b.w 0x5e46                                        |     goto label_11;
                                                                 | label_106:
    0x00007602 ldr r1, [pc, 0x168]                               |     
    0x00007604 movs r0, 3                                        |     r0 = 3;
    0x00007606 ldr r2, [sp, 0x2c]                                |     r2 = var_2ch;
    0x00007608 add r1, pc                                        |     r1 = 0xed7a;
    0x0000760a bl 0x85e4                                         |     fcn_000085e4 (r0);
    0x0000760e b.w 0x6554                                        |     goto label_59;
                                                                 | label_129:
    0x00007612 ldr r1, [pc, 0x15c]                               |     
    0x00007614 movs r0, 3                                        |     r0 = 3;
    0x00007616 add r1, pc                                        |     r1 = 0xed8c;
    0x00007618 bl 0x85e4                                         |     fcn_000085e4 (r0);
    0x0000761c b.w 0x6538                                        |     goto label_28;
                                                                 | label_163:
    0x00007620 ldr r3, [pc, 0x150]                               |     
    0x00007622 movw r2, 0x701                                    |     r2 = 0x701;
    0x00007626 ldr r1, [pc, 0x150]                               |     
    0x00007628 ldr r0, [pc, 0x150]                               |     
    0x0000762a add r3, pc                                        |     r3 = 0xeda2;
    0x0000762c add r1, pc                                        |     r1 = 0xedaa;
    0x0000762e add r0, pc                                        |     r0 = 0xedae;
    0x00007630 blx 0x1de0                                        |     fcn_00001de0 ();
                                                                 | label_154:
    0x00007634 ldr r1, [pc, 0x148]                               |     
    0x00007636 movs r0, 3                                        |     r0 = 3;
    0x00007638 add r1, pc                                        |     r1 = 0xedbc;
    0x0000763a bl 0x85e4                                         |     fcn_000085e4 (r0);
    0x0000763e b 0x72ee                                          |     goto label_55;
                                                                 | label_155:
    0x00007640 ldr r1, [pc, 0x140]                               |     
    0x00007642 movs r0, 3                                        |     r0 = 3;
    0x00007644 add r1, pc                                        |     r1 = 0xedcc;
    0x00007646 bl 0x85e4                                         |     fcn_000085e4 (r0);
    0x0000764a b 0x72ee                                          |     goto label_55;
                                                                 | label_152:
    0x0000764c str r3, [sp, 0x1c]                                |     var_1ch = r3;
    0x0000764e b 0x71c6                                          |     goto label_60;
                                                                 | }
    ; assembly                                                   | /* r2dec pseudo code output */
                                                                 | /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/bin/kmod @ 0x98b0 */
                                                                 | #include <stdint.h>
                                                                 |  
    ; (fcn) fcn.000098b0 ()                                      | void fcn_000098b0 (int16_t arg1, int16_t arg2, int16_t arg3, int16_t arg4) {
                                                                 |     int16_t var_20h;
                                                                 |     int16_t var_3d0h;
                                                                 |     int16_t var_1000h;
                                                                 |     int16_t var_14h_2;
                                                                 |     int16_t var_18h;
                                                                 |     int16_t var_1ch;
                                                                 |     r0 = arg1;
                                                                 |     r1 = arg2;
                                                                 |     r2 = arg3;
                                                                 |     r3 = arg4;
    0x000098b0 push.w {r4, r5, r6, r7, r8, sb, sl, fp, lr}       |     
    0x000098b4 mov r8, r2                                        |     r8 = r2;
    0x000098b6 ldr r2, [pc, 0x100]                               |     
    0x000098b8 mov r5, r3                                        |     r5 = r3;
    0x000098ba mov r7, r0                                        |     r7 = r0;
    0x000098bc add.w r0, r1, 8                                   |     r0 = r1 + 8;
    0x000098c0 ldr r3, [pc, 0xf8]                                |     r3 = *(0x99bc);
    0x000098c2 sub.w sp, sp, 0x1020                              |     
    0x000098c6 add r2, pc                                        |     r2 = 0x13284;
    0x000098c8 ldr.w r0, [r7, r0, lsl 2]                         |     offset_0 = r0 << 2;
                                                                 |     r0 = *((r7 + offset_0));
    0x000098cc sub sp, 4                                         |     
    0x000098ce ldr r3, [r2, r3]                                  |     
    0x000098d0 add.w r4, sp, 0x1000                              |     r4 += var_1000h;
    0x000098d4 adds r4, 0x1c                                     |     r4 += 0x1c;
    0x000098d6 ldr r3, [r3]                                      |     r3 = *(0x13284);
    0x000098d8 str r3, [r4]                                      |     *(r4) = r3;
    0x000098da mov.w r3, 0                                       |     r3 = 0;
    0x000098de cmp r0, 0                                         |     
                                                                 |     if (r0 == 0) {
    0x000098e0 beq 0x996e                                        |         goto label_1;
                                                                 |     }
    0x000098e2 mov r1, r8                                        |     r1 = r8;
    0x000098e4 bl 0xc308                                         |     r0 = fcn_0000c308 (r0, r1, r2);
    0x000098e8 mov fp, r0                                        |     
                                                                 | label_0:
    0x000098ea cmp.w fp, 0                                       |     
                                                                 |     if (fp == 0) {
    0x000098ee beq 0x9940                                        |         goto label_2;
                                                                 |     }
    0x000098f0 mov r4, fp                                        |     r4 = fp;
    0x000098f2 movs r6, 0                                        |     r6 = 0;
    0x000098f4 add.w sl, sp, 0x20                                |     sl += var_20h;
    0x000098f8 add.w sb, sp, 0x18                                |     sb += var_18h;
    0x000098fc b 0x9910                                          |     
                                                                 |     while (r3 >= r0) {
    0x000098fe ldr r1, [sl, -0x8]                                |         r1 = *((sl - 0x8));
    0x00009902 adds r6, 1                                        |         r6++;
    0x00009904 ldr r0, [r5]                                      |         r0 = *(r5);
    0x00009906 bl 0xa350                                         |         fcn_0000a350 (r0, r1);
    0x0000990a ldr r4, [r4]                                      |         r4 = *(r4);
    0x0000990c str r0, [r5]                                      |         *(r5) = r0;
                                                                 |         if (r4 == 0) {
    0x0000990e cbz r4, 0x9942                                    |             goto label_3;
                                                                 |         }
    0x00009910 mov r3, sb                                        |         r3 = sb;
    0x00009912 add.w r2, r4, 0xc                                 |         r2 = r4 + 0xc;
    0x00009916 mov r1, r8                                        |         r1 = r8;
    0x00009918 mov r0, r7                                        |         r0 = r7;
    0x0000991a bl 0xca04                                         |         r0 = fcn_0000ca04 (r0, r1, r2, r3);
    0x0000991e subs r3, r0, 0                                    |         r3 = r0 - 0;
    0x00009920 bge 0x98fe                                        |         
                                                                 |     }
    0x00009922 rsbs r0, r3, 0                                    |     r0 = r3 - ;
    0x00009924 str r3, [sp, 0x14]                                |     var_14h_2 = r3;
    0x00009926 blx 0x1b18                                        |     system (r0)
    0x0000992a ldr r3, [sp, 0x14]                                |     r3 = var_14h_2;
    0x0000992c mov r1, r6                                        |     r1 = r6;
    0x0000992e ldr r0, [r5]                                      |     r0 = *(r5);
    0x00009930 mov r6, r3                                        |     r6 = r3;
    0x00009932 bl 0xa4a4                                         |     fcn_0000a4a4 (r0, r1);
    0x00009936 str r0, [r5]                                      |     *(r5) = r0;
    0x00009938 mov r0, fp                                        |     r0 = fp;
    0x0000993a bl 0xbc6c                                         |     fcn_0000bc6c (r0);
    0x0000993e b 0x9948                                          |     goto label_4;
                                                                 | label_2:
    0x00009940 mov r6, fp                                        |     r6 = fp;
                                                                 | label_3:
    0x00009942 mov r0, fp                                        |     r0 = fp;
    0x00009944 bl 0xbc6c                                         |     fcn_0000bc6c (r0);
                                                                 |     do {
                                                                 | label_4:
    0x00009948 ldr r2, [pc, 0x74]                                |         
    0x0000994a add.w r1, sp, 0x1000                              |         r1 += var_1000h;
    0x0000994e ldr r3, [pc, 0x6c]                                |         r3 = *(0x99be);
    0x00009950 adds r1, 0x1c                                     |         r1 += 0x1c;
    0x00009952 add r2, pc                                        |         r2 = 0x13316;
    0x00009954 ldr r3, [r2, r3]                                  |         r3 = *(0x13316);
    0x00009956 ldr r2, [r3]                                      |         r2 = *(0x13316);
    0x00009958 ldr r3, [r1]                                      |         r3 = *(r1);
    0x0000995a eors r2, r3                                       |         r2 ^= r3;
    0x0000995c mov.w r3, 0                                       |         r3 = 0;
                                                                 |         if (r2 != r3) {
    0x00009960 bne 0x99b2                                        |             goto label_5;
                                                                 |         }
    0x00009962 mov r0, r6                                        |         r0 = r6;
    0x00009964 add.w sp, sp, 0x1020                              |         
    0x00009968 add sp, 4                                         |         
    0x0000996a pop.w {r4, r5, r6, r7, r8, sb, sl, fp, pc}        |         
                                                                 | label_1:
    0x0000996e ldr r3, [pc, 0x54]                                |         
    0x00009970 add r4, sp, 0x1c                                  |         r4 += var_1ch;
    0x00009972 movs r2, 1                                        |         r2 = 1;
    0x00009974 mov r0, r4                                        |         r0 = r4;
    0x00009976 mvn r6, 0x25                                      |         r6 = ~0x25;
    0x0000997a add r3, pc                                        |         
    0x0000997c ldr.w r3, [r3, r1, lsl 3]                         |         r3 = *(0x13344);
    0x00009980 str r3, [sp, 8]                                   |         *((sp + 8)) = r3;
    0x00009982 ldr r3, [r7, 0x14]                                |         r3 = *((r7 + 0x14));
    0x00009984 str r3, [sp, 4]                                   |         *((sp + 4)) = r3;
    0x00009986 ldr r3, [pc, 0x40]                                |         
    0x00009988 add r3, pc                                        |         r3 = 0x13356;
    0x0000998a str r3, [sp]                                      |         *(sp) = r3;
    0x0000998c mov.w r3, 0x1000                                  |         r3 = 0x1000;
    0x00009990 mov r1, r3                                        |         r1 = r3;
    0x00009992 blx 0x1dd4                                        |         fcn_00001dd4 ();
    0x00009996 mov r0, r4                                        |         r0 = r4;
    0x00009998 bl 0xbc84                                         |         r0 = fcn_0000bc84 ();
    0x0000999c mov r4, r0                                        |         r4 = r0;
    0x0000999e cmp r0, 0                                         |         
    0x000099a0 beq 0x9948                                        |         
                                                                 |     } while (r0 == 0);
    0x000099a2 mov r1, r8                                        |     r1 = r8;
    0x000099a4 bl 0xbeb0                                         |     r0 = fcn_0000beb0 (r0, r1, r2, r3);
    0x000099a8 mov fp, r0                                        |     
    0x000099aa mov r0, r4                                        |     r0 = r4;
    0x000099ac bl 0xbd44                                         |     fcn_0000bd44 (r0);
    0x000099b0 b 0x98ea                                          |     goto label_0;
                                                                 | label_5:
    0x000099b2 blx 0x1a1c                                        |     stat64 ();
    0x000099b6 nop                                               |     
    0x000099b8 stm r5!, {r1, r4, r6}                             |     *(r5!) = r1;
                                                                 |     *((r5! + 4)) = r4;
                                                                 |     *((r5! + 8)) = r6;
    0x000099ba movs r1, r0                                       |     r1 = r0;
    0x000099bc lsls r4, r7, 6                                    |     r4 = r7 << 6;
    0x000099be movs r0, r0                                       |     
    0x000099c0 stm r4!, {r1, r2, r6, r7}                         |     *(r4!) = r1;
                                                                 |     *((r4! + 4)) = r2;
                                                                 |     *((r4! + 8)) = r6;
                                                                 |     *((r4! + 12)) = r7;
    0x000099c2 movs r1, r0                                       |     r1 = r0;
    0x000099c4 stm r2!, {r1, r2, r3, r5, r6, r7}                 |     *(r2!) = r1;
                                                                 |     *((r2! + 4)) = r2;
                                                                 |     *((r2! + 8)) = r3;
                                                                 |     *((r2! + 12)) = r5;
                                                                 |     *((r2! + 16)) = r6;
                                                                 |     *((r2! + 20)) = r7;
    0x000099c6 movs r1, r0                                       |     r1 = r0;
    0x000099c8 add r6, sp, 0x3d0                                 |     r6 += var_3d0h;
    0x000099ca movs r0, r0                                       |     
                                                                 | }
    ; assembly                                   | /* r2dec pseudo code output */
                                                 | /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/bin/kmod @ 0x9d08 */
                                                 | #include <stdint.h>
                                                 |  
    ; (fcn) fcn.00009d08 ()                      | void fcn_00009d08 (int16_t arg_50h, int16_t arg_250h, int16_t arg_3e8h, int16_t arg1, int16_t arg2, int16_t arg3) {
                                                 |     int16_t var_0h;
                                                 |     int16_t var_4h;
                                                 |     r0 = arg1;
                                                 |     r1 = arg2;
                                                 |     r2 = arg3;
    0x00009d08 invalid                           |     
    0x00009d0c ldr r0, [pc, 0x9c]                |     
    0x00009d0e mov r6, r2                        |     r6 = r2;
    0x00009d10 sub sp, 0xc                       |     
    0x00009d12 ldr r3, [r2]                      |     r3 = *(r2);
    0x00009d14 ldr r2, [pc, 0x98]                |     r2 = *(0x9db0);
    0x00009d16 add r0, pc                        |     r0 = 0x13ac6;
    0x00009d18 ldr r2, [r0, r2]                  |     
    0x00009d1a ldr r2, [r2]                      |     r2 = *(0x13ac6);
    0x00009d1c str r2, [sp, 4]                   |     var_4h = r2;
    0x00009d1e mov.w r2, 0                       |     r2 = 0;
    0x00009d22 cmp r3, 0                         |     
                                                 |     if (r3 != 0) {
    0x00009d24 bne 0x9d96                        |         goto label_2;
                                                 |     }
    0x00009d26 ldr r0, [r5, 0x30]                |     r0 = *((r5 + 0x30));
    0x00009d28 mov r7, r1                        |     r7 = r1;
                                                 |     if (r0 == 0) {
    0x00009d2a cbz r0, 0x9d80                    |         goto label_3;
                                                 |     }
    0x00009d2c bl 0xc27c                         |     r0 = fcn_0000c27c (r0, r1);
    0x00009d30 mov r4, r0                        |     r4 = r0;
                                                 |     if (r4 == 0) {
                                                 | label_0:
    0x00009d32 cbz r4, 0x9d7c                    |         goto label_4;
                                                 |     }
    0x00009d34 mov r0, r5                        |     r0 = r5;
    0x00009d36 mov r2, sp                        |     r2 = sp;
    0x00009d38 mov r1, r7                        |     r1 = r7;
    0x00009d3a bl 0xcabc                         |     r0 = fcn_0000cabc (r0, r1, r2);
    0x00009d3e subs r5, r0, 0                    |     r5 = r0 - 0;
                                                 |     if (r5 < r0) {
    0x00009d40 blt 0x9d8a                        |         goto label_5;
                                                 |     }
    0x00009d42 ldr r0, [sp]                      |     r0 = *(sp);
    0x00009d44 movs r1, 1                        |     r1 = 1;
    0x00009d46 bl 0xc7cc                         |     fcn_0000c7cc (r0);
    0x00009d4a ldr r1, [sp]                      |     r1 = *(sp);
    0x00009d4c ldr r0, [r6]                      |     r0 = *(r6);
    0x00009d4e bl 0xa350                         |     r0 = fcn_0000a350 (r0, r1);
    0x00009d52 cmp r0, 0                         |     
    0x00009d54 str r0, [r6]                      |     *(r6) = r0;
    0x00009d56 it eq                             |     
    0x00009d58 mvneq r5, 0xb                     |     r5 = ~0xb;
                                                 |     while (1) {
                                                 | label_1:
    0x00009d5c mov r0, r4                        |         r0 = r4;
    0x00009d5e blx 0x19a0                        |         fcn_000019a0 ();
    0x00009d62 ldr r2, [pc, 0x50]                |         
    0x00009d64 ldr r3, [pc, 0x48]                |         r3 = *(0x9db0);
    0x00009d66 add r2, pc                        |         r2 = "external add: out of memory\n";
    0x00009d68 ldr r3, [r2, r3]                  |         r3 = "external add: out of memory\n";
    0x00009d6a ldr r2, [r3]                      |         r2 = "external add: out of memory\n";
    0x00009d6c ldr r3, [sp, 4]                   |         r3 = var_4h;
    0x00009d6e eors r2, r3                       |         r2 ^= r3;
    0x00009d70 mov.w r3, 0                       |         r3 = 0;
                                                 |         if (r2 != r3) {
    0x00009d74 bne 0x9d92                        |             goto label_6;
                                                 |         }
    0x00009d76 mov r0, r5                        |         r0 = r5;
    0x00009d78 add sp, 0xc                       |         
    0x00009d7a pop {r4, r5, r6, r7, pc}          |         
                                                 | label_4:
    0x00009d7c mov r5, r4                        |         r5 = r4;
    0x00009d7e b 0x9d5c                          |         
                                                 |     }
                                                 | label_3:
    0x00009d80 ldr r0, [r5, 0x14]                |     r0 = *((r5 + 0x14));
    0x00009d82 bl 0x9a64                         |     r0 = fcn_00009a64 (r0, r1);
    0x00009d86 mov r4, r0                        |     r4 = r0;
    0x00009d88 b 0x9d32                          |     goto label_0;
                                                 | label_5:
    0x00009d8a rsbs r0, r5, 0                    |     r0 = r5 - ;
    0x00009d8c blx 0x1b18                        |     system (r0)
    0x00009d90 b 0x9d5c                          |     goto label_1;
                                                 | label_6:
    0x00009d92 blx 0x1a1c                        |     stat64 ();
                                                 | label_2:
    0x00009d96 ldr r3, [pc, 0x20]                |     
    0x00009d98 movw r2, 0x22b                    |     r2 = 0x22b;
    0x00009d9c ldr r1, [pc, 0x1c]                |     
    0x00009d9e ldr r0, [pc, 0x20]                |     
    0x00009da0 add r3, pc                        |     r3 = 0x13b5e;
    0x00009da2 add r1, pc                        |     r1 = 0x13b62;
    0x00009da4 add r0, pc                        |     r0 = 0x13b6a;
    0x00009da6 blx 0x1de0                        |     fcn_00001de0 ();
    0x00009daa nop                               |     
    0x00009dac stm r1!, {r1}                     |     *(r1!) = r1;
    0x00009dae movs r1, r0                       |     r1 = r0;
    0x00009db0 lsls r4, r7, 6                    |     r4 = r7 << 6;
    0x00009db2 movs r0, r0                       |     
    0x00009db4 stm r0!, {r1, r4, r5, r7}         |     *(r0!) = r1;
                                                 |     *((r0! + 4)) = r4;
                                                 |     *((r0! + 8)) = r5;
                                                 |     *((r0! + 12)) = r7;
    0x00009db6 movs r1, r0                       |     r1 = r0;
    0x00009db8 add r3, sp, 0x250                 |     r3 += arg_250h;
    0x00009dba movs r0, r0                       |     
    0x00009dbc add r2, sp, 0x3e8                 |     r2 += arg_3e8h;
    0x00009dbe movs r0, r0                       |     
    0x00009dc0 add r3, sp, 0x50                  |     r3 += arg_50h;
    0x00009dc2 movs r0, r0                       |     
                                                 | }


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


r2dec has crashed (info: /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/bin/kmod @ 0x9e9c).
Please report the bug at https://github.com/radareorg/r2dec-js/issues
Use the option '--issue' or the command 'pddi' to generate 
the needed data for the issue.
    ; assembly                                           | /* r2dec pseudo code output */
                                                         | /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/bin/kmod @ 0x9f58 */
                                                         | #include <stdint.h>
                                                         |  
    ; (fcn) fcn.00009f58 ()                              | void fcn_00009f58 (int16_t arg1, int16_t arg2, int16_t arg3) {
                                                         |     int16_t var_0h;
                                                         |     int16_t var_4h_2;
                                                         |     r0 = arg1;
                                                         |     r1 = arg2;
                                                         |     r2 = arg3;
                                                         |     if (? < ?) {
    0x00009f58 mvnhs lr, 0xb4000                         |         lr = ~0xb4000;
                                                         |     }
    0x00009f5c mov r8, r2                                |     r8 = r2;
    0x00009f5e ldr r2, [pc, 0xf4]                        |     
    0x00009f60 sub sp, 0xc                               |     
    0x00009f62 mov r7, r0                                |     r7 = r0;
    0x00009f64 mov r6, r1                                |     r6 = r1;
    0x00009f66 ldr r3, [pc, 0xf0]                        |     r3 = *(0xa05a);
    0x00009f68 ldr.w sb, [r0, 0x18]                      |     sb = *(var_0hx18);
    0x00009f6c add r2, pc                                |     r2 = 0x13fc6;
    0x00009f6e ldr r3, [r2, r3]                          |     
    0x00009f70 ldr.w r4, [sb, 0x14]                      |     r4 = *((sb + 0x14));
    0x00009f74 ldr r3, [r3]                              |     r3 = *(0x13fc6);
    0x00009f76 str r3, [sp, 4]                           |     var_4h_2 = r3;
    0x00009f78 mov.w r3, 0                               |     r3 = 0;
                                                         |     do {
                                                         |         if (r4 == 0) {
    0x00009f7c cbz r4, 0x9f98                            |             goto label_1;
                                                         |         }
    0x00009f7e mov r0, r4                                |         r0 = r4;
    0x00009f80 bl 0xa7cc                                 |         fcn_0000a7cc (r0);
    0x00009f84 mov r1, r6                                |         r1 = r6;
    0x00009f86 mov r5, r0                                |         r5 = r0;
    0x00009f88 blx 0x1924                                |         r0 = fcn_00001924 ();
                                                         |         if (r0 == 0) {
    0x00009f8c cbz r0, 0x9fd6                            |             goto label_2;
                                                         |         }
    0x00009f8e ldr r4, [r4]                              |         r4 = *(r4);
    0x00009f90 ldr.w r3, [sb, 0x14]                      |         r3 = *((sb + 0x14));
    0x00009f94 cmp r4, r3                                |         
    0x00009f96 bne 0x9f7c                                |         
                                                         |     } while (r4 != r3);
                                                         | label_1:
    0x00009f98 ldr.w r4, [sb, 0x10]                      |     r4 = *((sb + 0x10));
                                                         |     if (r4 == 0) {
                                                         |         do {
    0x00009f9c cbz r4, 0x9fb8                            |             goto label_3;
                                                         |         }
    0x00009f9e mov r0, r4                                |         r0 = r4;
    0x00009fa0 bl 0xa7cc                                 |         fcn_0000a7cc (r0);
    0x00009fa4 mov r1, r6                                |         r1 = r6;
    0x00009fa6 mov r5, r0                                |         r5 = r0;
    0x00009fa8 blx 0x1924                                |         r0 = fcn_00001924 ();
                                                         |         if (r0 == 0) {
    0x00009fac cbz r0, 0xa00c                            |             goto label_4;
                                                         |         }
    0x00009fae ldr r4, [r4]                              |         r4 = *(r4);
    0x00009fb0 ldr.w r3, [sb, 0x10]                      |         r3 = *((sb + 0x10));
    0x00009fb4 cmp r4, r3                                |         
    0x00009fb6 bne 0x9f9c                                |         
                                                         |     } while (r4 != r3);
                                                         | label_3:
    0x00009fb8 movs r4, 0                                |     r4 = 0;
                                                         |     do {
                                                         | label_0:
    0x00009fba ldr r2, [pc, 0xa0]                        |         
    0x00009fbc ldr r3, [pc, 0x98]                        |         r3 = *(0xa058);
    0x00009fbe add r2, pc                                |         r2 = 0x14020;
    0x00009fc0 ldr r3, [r2, r3]                          |         r3 = imp.__progname;
    0x00009fc2 ldr r2, [r3]                              |         r2 = imp.__progname;
    0x00009fc4 ldr r3, [sp, 4]                           |         r3 = var_4h_2;
    0x00009fc6 eors r2, r3                               |         r2 ^= r3;
    0x00009fc8 mov.w r3, 0                               |         r3 = 0;
                                                         |         if (r2 != r3) {
    0x00009fcc bne 0xa050                                |             goto label_5;
                                                         |         }
    0x00009fce mov r0, r4                                |         r0 = r4;
    0x00009fd0 add sp, 0xc                               |         
    0x00009fd2 pop.w {r4, r5, r6, r7, r8, sb, pc}        |         
                                                         | label_2:
    0x00009fd6 mov r0, r4                                |         r0 = r4;
    0x00009fd8 bl 0xa4fc                                 |         fcn_0000a4fc (r0);
    0x00009fdc mov r1, r5                                |         r1 = r5;
    0x00009fde mov r3, r0                                |         r3 = r0;
    0x00009fe0 mov r2, sp                                |         r2 = sp;
    0x00009fe2 mov r0, r7                                |         r0 = r7;
    0x00009fe4 mov r5, r3                                |         r5 = r3;
    0x00009fe6 bl 0xcabc                                 |         r0 = fcn_0000cabc (r0, r1, r2);
    0x00009fea subs r4, r0, 0                            |         r4 = r0 - 0;
                                                         |         if (r4 < r0) {
    0x00009fec blt 0xa048                                |             goto label_6;
                                                         |         }
    0x00009fee ldr r1, [sp]                              |         r1 = *(sp);
    0x00009ff0 ldr.w r0, [r8]                            |         r0 = *(r8);
    0x00009ff4 bl 0xa350                                 |         r0 = fcn_0000a350 (r0, r1);
    0x00009ff8 mov r3, r0                                |         r3 = r0;
                                                         |         if (r0 == 0) {
    0x00009ffa cbz r0, 0xa042                            |             goto label_7;
                                                         |         }
    0x00009ffc ldr r0, [sp]                              |         r0 = *(sp);
    0x00009ffe mov r1, r5                                |         r1 = r5;
    0x0000a000 str.w r3, [r8]                            |         __asm ("str.w r3, [r8]");
    0x0000a004 movs r4, 1                                |         r4 = 1;
    0x0000a006 bl 0xd2d4                                 |         fcn_0000d2d4 (r0, r1);
    0x0000a00a b 0x9fba                                  |         
                                                         |     } while (1);
                                                         | label_4:
    0x0000a00c mov r0, r4                                |     r0 = r4;
    0x0000a00e bl 0xa4fc                                 |     fcn_0000a4fc (r0);
    0x0000a012 mov r1, r5                                |     r1 = r5;
    0x0000a014 mov r3, r0                                |     r3 = r0;
    0x0000a016 mov r2, sp                                |     r2 = sp;
    0x0000a018 mov r0, r7                                |     r0 = r7;
    0x0000a01a mov r5, r3                                |     r5 = r3;
    0x0000a01c bl 0xcabc                                 |     r0 = fcn_0000cabc (r0, r1, r2);
    0x0000a020 subs r4, r0, 0                            |     r4 = r0 - 0;
                                                         |     if (r4 >= r0) {
    0x0000a022 blt 0xa048                                |         
    0x0000a024 ldr r1, [sp]                              |         r1 = *(sp);
    0x0000a026 ldr.w r0, [r8]                            |         r0 = *(r8);
    0x0000a02a bl 0xa350                                 |         r0 = fcn_0000a350 (r0, r1);
    0x0000a02e mov r3, r0                                |         r3 = r0;
                                                         |         if (r0 != 0) {
    0x0000a030 cbz r0, 0xa042                            |             
    0x0000a032 ldr r0, [sp]                              |             r0 = *(sp);
    0x0000a034 mov r1, r5                                |             r1 = r5;
    0x0000a036 str.w r3, [r8]                            |             __asm ("str.w r3, [r8]");
    0x0000a03a movs r4, 1                                |             r4 = 1;
    0x0000a03c bl 0xd5ec                                 |             fcn_0000d5ec (r0, r1);
    0x0000a040 b 0x9fba                                  |             goto label_0;
                                                         |         }
                                                         | label_7:
    0x0000a042 mvn r4, 0xb                               |         r4 = ~0xb;
    0x0000a046 b 0x9fba                                  |         goto label_0;
                                                         |     }
                                                         | label_6:
    0x0000a048 rsbs r0, r4, 0                            |     r0 = r4 - ;
    0x0000a04a blx 0x1b18                                |     system (r0)
    0x0000a04e b 0x9fba                                  |     goto label_0;
                                                         | label_5:
    0x0000a050 blx 0x1a1c                                |     stat64 ();
    0x0000a054 bkpt 0xac                                 |     __asm ("bkpt 0xac");
                                                         | }
    ; assembly                                                   | /* r2dec pseudo code output */
                                                                 | /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/bin/kmod @ 0xa8a8 */
                                                                 | #include <stdint.h>
                                                                 |  
    ; (fcn) fcn.0000a8a8 ()                                      | void fcn_0000a8a8 (int16_t arg1, int16_t arg2, int16_t arg3) {
                                                                 |     int16_t var_bp_c8h;
                                                                 |     int16_t var_bp_60h;
                                                                 |     int16_t var_4h;
                                                                 |     int32_t var_0h_2;
                                                                 |     int32_t var_0h_3;
                                                                 |     int16_t var_8h;
                                                                 |     int16_t var_10h;
                                                                 |     int32_t var_10h_2;
                                                                 |     int16_t var_18h;
                                                                 |     int16_t var_1ch;
                                                                 |     int16_t var_20h;
                                                                 |     int16_t var_24h;
                                                                 |     int16_t var_28h;
                                                                 |     int16_t var_2ch;
                                                                 |     int16_t var_30h;
                                                                 |     int16_t var_34h;
                                                                 |     int16_t var_38h;
                                                                 |     int16_t var_3ch;
                                                                 |     int16_t var_40h;
                                                                 |     int16_t var_44h;
                                                                 |     int16_t var_48h;
                                                                 |     int16_t errnum;
                                                                 |     int16_t var_50h;
                                                                 |     int16_t var_54h;
                                                                 |     int16_t var_5ch;
                                                                 |     size_t size;
                                                                 |     int16_t var_c8h;
                                                                 |     int16_t var_138h;
                                                                 |     int16_t var_1120h;
                                                                 |     int32_t var_0h;
                                                                 |     r0 = arg1;
                                                                 |     r1 = arg2;
                                                                 |     r2 = arg3;
    0x0000a8a8 svcmi 0xf0e92d                                    |     __asm ("svcmi 0xf0e92d");
    0x0000a8ac mov sb, r2                                        |     sb = r2;
    0x0000a8ae ldr.w r2, [pc, 0xa04]                             |     r2 = *(0x0000b2b4);
    0x0000a8b2 sub.w sp, sp, 0x1120                              |     
    0x0000a8b6 sub sp, 0x1c                                      |     
    0x0000a8b8 movs r7, 0                                        |     r7 = 0;
    0x0000a8ba ldr.w r3, [pc, 0x9fc]                             |     
    0x0000a8be add.w fp, sp, 0x138                               |     
    0x0000a8c2 add r2, pc                                        |     r2 += pc;
    0x0000a8c4 strd r0, r1, [sp, 0x2c]                           |     __asm ("strd r0, r1, [var_30h]");
    0x0000a8c8 add.w r1, sp, 0x1120                              |     r1 += var_1120h;
    0x0000a8cc add.w r8, sp, 0x5c                                |     r8 += var_5ch;
    0x0000a8d0 ldr r3, [r2, r3]                                  |     r3 = *((r2 + r3));
    0x0000a8d2 adds r1, 0x14                                     |     r1 += 0x14;
    0x0000a8d4 ldr r3, [r3]                                      |     r3 = *(0xb2ba);
    0x0000a8d6 str r3, [r1]                                      |     *(r1) = r3;
    0x0000a8d8 mov.w r3, 0                                       |     r3 = 0;
    0x0000a8dc str r7, [fp, -0xdc]                               |     var_5ch = r7;
    0x0000a8e0 bl 0x9af8                                         |     fcn_00009af8 (r0);
    0x0000a8e4 ldr.w r2, [pc, 0x9d4]                             |     
    0x0000a8e8 mov r1, r0                                        |     r1 = r0;
    0x0000a8ea mov r0, r8                                        |     r0 = r8;
    0x0000a8ec add r2, pc                                        |     r2 = 0x15bac;
    0x0000a8ee bl 0xa610                                         |     fcn_0000a610 (r0, r1, r2);
    0x0000a8f2 ldr.w r5, [sb]                                    |     r5 = *(sb);
    0x0000a8f6 cmp r5, 0                                         |     
                                                                 |     if (r5 == 0) {
    0x0000a8f8 beq.w 0xb290                                      |         goto label_18;
                                                                 |     }
    0x0000a8fc ldr.w r3, [pc, 0x9c0]                             |     
    0x0000a900 add.w sl, sp, 0x60                                |     sl += size;
    0x0000a904 str r7, [sp, 0x18]                                |     var_18h = r7;
    0x0000a906 add r3, pc                                        |     r3 = 0x15bca;
    0x0000a908 str r3, [sp, 0x28]                                |     var_28h = r3;
    0x0000a90a ldr.w r3, [pc, 0x9b8]                             |     
    0x0000a90e add r3, pc                                        |     r3 = 0x15bd8;
    0x0000a910 str r3, [sp, 0x1c]                                |     var_1ch = r3;
    0x0000a912 b 0xa928                                          |     
                                                                 |     while (r0 != 0) {
    0x0000a914 blx 0x1be4                                        |         r0 = isoc99_sscanf ();
    0x0000a918 ldr r3, [r0]                                      |         r3 = *(r0);
    0x0000a91a cmp r3, 0                                         |         
                                                                 |         if (r3 <= 0) {
    0x0000a91c ble.w 0xabfa                                      |             goto label_19;
                                                                 |         }
                                                                 | label_3:
    0x0000a920 ldr r5, [sb, 4]!                                  |         r5 = *((sb += 4));
    0x0000a924 cmp r5, 0                                         |         
                                                                 |         if (r5 == 0) {
    0x0000a926 beq 0xa99a                                        |             goto label_20;
                                                                 |         }
                                                                 | label_0:
    0x0000a928 mov r1, sl                                        |         r1 = sl;
    0x0000a92a mov r0, r5                                        |         r0 = r5;
    0x0000a92c blx 0x1a28                                        |         r0 = realloc (r0, r1);
    0x0000a930 mov r4, r0                                        |         r4 = r0;
    0x0000a932 cmp r0, 0                                         |         
    0x0000a934 bne 0xa914                                        |         
                                                                 |     }
    0x0000a936 mov r0, sl                                        |     r0 = sl;
    0x0000a938 bl 0x97d0                                         |     fcn_000097d0 (r0);
    0x0000a93c ldr r3, [fp, -0xc8]                               |     r3 = var_bp_c8h;
    0x0000a940 strd r0, r1, [sp, 0x10]                           |     __asm ("strd r0, r1, [var_10h]");
    0x0000a944 and r3, r3, 0xf000                                |     r3 &= 0xf000;
    0x0000a948 cmp.w r3, 0x4000                                  |     
                                                                 |     if (r3 == 0x4000) {
    0x0000a94c beq.w 0xab66                                      |         goto label_21;
                                                                 |     }
    0x0000a950 mov r2, r4                                        |     r2 = r4;
    0x0000a952 mov r1, r5                                        |     r1 = r5;
    0x0000a954 mov r0, r8                                        |     r0 = r8;
    0x0000a956 bl 0xa610                                         |     fcn_0000a610 (r0, r1, r2);
                                                                 | label_4:
    0x0000a95a mov r0, r5                                        |     r0 = r5;
    0x0000a95c blx 0x1bb0                                        |     r0 = fcn_00001bb0 ();
    0x0000a960 mov r2, r0                                        |     r2 = r0;
    0x0000a962 adds r0, 9                                        |     r0 += 9;
    0x0000a964 adds r6, r2, 1                                    |     r6 = r2 + 1;
    0x0000a966 blx 0x1b0c                                        |     r0 = strerror (r0);
    0x0000a96a mov r4, r0                                        |     r4 = r0;
    0x0000a96c cmp r0, 0                                         |     
                                                                 |     if (r0 == 0) {
    0x0000a96e beq.w 0xb296                                      |         goto label_22;
                                                                 |     }
    0x0000a972 mov r1, r5                                        |     r1 = r5;
    0x0000a974 mov r2, r6                                        |     r2 = r6;
    0x0000a976 ldrd r5, r6, [sp, 0x10]                           |     __asm ("ldrd r5, r6, [var_10h]");
    0x0000a97a strd r5, r6, [r0], 8                              |     __asm ("strd r5, r6, [r0], 8");
    0x0000a97e blx 0x19c8                                        |     mmap64 ();
    0x0000a982 ldr r0, [sp, 0x18]                                |     r0 = var_18h;
    0x0000a984 mov r1, r4                                        |     r1 = r4;
    0x0000a986 bl 0xa350                                         |     r0 = fcn_0000a350 (r0, r1);
    0x0000a98a cmp r0, 0                                         |     
                                                                 |     if (r0 == 0) {
    0x0000a98c beq.w 0xaf92                                      |         goto label_23;
                                                                 |     }
    0x0000a990 ldr r5, [sb, 4]!                                  |     r5 = *((sb += 4));
    0x0000a994 str r0, [sp, 0x18]                                |     var_18h = r0;
    0x0000a996 cmp r5, 0                                         |     
                                                                 |     if (r5 != 0) {
    0x0000a998 bne 0xa928                                        |         goto label_0;
                                                                 |     }
                                                                 | label_20:
    0x0000a99a ldr r7, [sp, 0x18]                                |     r7 = var_18h;
                                                                 | label_16:
    0x0000a99c movs r1, 0x20                                     |     r1 = 0x20;
    0x0000a99e movs r0, 1                                        |     r0 = 1;
    0x0000a9a0 blx 0x18d8                                        |     calloc (r0, r1);
    0x0000a9a4 ldr r2, [sp, 0x30]                                |     r2 = var_30h;
    0x0000a9a6 str r0, [sp, 0x24]                                |     var_24h = r0;
    0x0000a9a8 str r0, [r2]                                      |     *(r2) = r0;
    0x0000a9aa ldr r2, [fp, -0xdc]                               |     r2 = var_5ch;
    0x0000a9ae str r2, [sp, 0x10]                                |     var_10h = r2;
    0x0000a9b0 cmp r0, 0                                         |     
                                                                 |     if (r0 == 0) {
    0x0000a9b2 beq.w 0xaf9a                                      |         goto label_17;
                                                                 |     }
    0x0000a9b6 ldr r1, [sp, 0x2c]                                |     r1 = var_2ch;
    0x0000a9b8 str r7, [r0, 0x1c]                                |     *((r0 + 0x1c)) = r7;
    0x0000a9ba str r1, [r0]                                      |     *(r0) = r1;
    0x0000a9bc cmp r2, 0                                         |     
                                                                 |     if (r2 == 0) {
    0x0000a9be beq.w 0xacf0                                      |         goto label_24;
                                                                 |     }
    0x0000a9c2 ldr.w r3, [pc, 0x904]                             |     
    0x0000a9c6 str.w fp, [sp, 0x1c]                              |     __asm ("str.w fp, [var_1ch]");
    0x0000a9ca add r3, pc                                        |     r3 = 0x15c98;
    0x0000a9cc str r3, [sp, 0x38]                                |     var_38h = r3;
    0x0000a9ce ldr.w r3, [pc, 0x8fc]                             |     
    0x0000a9d2 add r3, pc                                        |     r3 = 0x15ca4;
    0x0000a9d4 str r3, [sp, 0x3c]                                |     var_3ch = r3;
    0x0000a9d6 b 0xa9f2                                          |     
                                                                 |     while (r4 < r0) {
                                                                 | label_5:
    0x0000a9d8 ldr r0, [sp, 0x18]                                |         r0 = var_18h;
    0x0000a9da blx 0x19a0                                        |         fcn_000019a0 ();
    0x0000a9de ldr r0, [sp, 0x10]                                |         r0 = var_10h;
    0x0000a9e0 bl 0xa3ec                                         |         fcn_0000a3ec (r0);
    0x0000a9e4 ldr r2, [sp, 0x1c]                                |         r2 = var_1ch;
    0x0000a9e6 str r0, [sp, 0x10]                                |         var_10h = r0;
    0x0000a9e8 str r0, [r2, -0xdc]                               |         *((r2 - 0xdc)) = r0;
    0x0000a9ec cmp r0, 0                                         |         
                                                                 |         if (r0 == 0) {
    0x0000a9ee beq.w 0xacee                                      |             goto label_25;
                                                                 |         }
    0x0000a9f2 ldr r3, [sp, 0x10]                                |         r3 = var_10h;
    0x0000a9f4 ldr r2, [r3, 8]                                   |         r2 = *((r3 + 8));
    0x0000a9f6 ldrb r3, [r2, 4]                                  |         r3 = *((r2 + 4));
    0x0000a9f8 ldr r0, [r2]                                      |         r0 = *(r2);
    0x0000a9fa str r2, [sp, 0x18]                                |         var_18h = r2;
    0x0000a9fc cmp r3, 0                                         |         
                                                                 |         if (r3 == 0) {
    0x0000a9fe beq.w 0xac0c                                      |             goto label_26;
                                                                 |         }
                                                                 | label_6:
    0x0000aa02 mov.w r1, 0x80000                                 |         r1 = 0x80000;
    0x0000aa06 blx 0x1ad0                                        |         r0 = fstatat64 ();
    0x0000aa0a subs r4, r0, 0                                    |         r4 = r0 - 0;
    0x0000aa0c blt 0xa9d8                                        |         
                                                                 |     }
    0x0000aa0e ldr r2, [sp, 0x1c]                                |     r2 = var_1ch;
    0x0000aa10 movs r3, 0                                        |     r3 = 0;
    0x0000aa12 ldr.w r1, [pc, 0x8bc]                             |     
    0x0000aa16 str r3, [r2, -0xd8]                               |     *((r2 - 0xd8)) = r3;
    0x0000aa1a add r1, pc                                        |     r1 = 0x15cf0;
    0x0000aa1c blx 0x18cc                                        |     r0 = fdopen ();
    0x0000aa20 mov sb, r0                                        |     sb = r0;
    0x0000aa22 cmp r0, 0                                         |     
                                                                 |     if (r0 == 0) {
    0x0000aa24 beq.w 0xb29a                                      |         goto label_27;
                                                                 |     }
    0x0000aa28 ldr.w r3, [pc, 0x8a8]                             |     
    0x0000aa2c add.w sl, sp, 0x60                                |     sl += size;
    0x0000aa30 ldr.w fp, [pc, 0x8a4]                             |     
    0x0000aa34 add r3, pc                                        |     r3 = 0x15d0c;
    0x0000aa36 add fp, pc                                        |     fp = 0x15d12;
    0x0000aa38 str r3, [sp, 0x20]                                |     var_20h = r3;
    0x0000aa3a b 0xaaa6                                          |     goto label_28;
                                                                 | label_2:
    0x0000aa3c ldr.w r1, [pc, 0x89c]                             |     
    0x0000aa40 mov r0, r6                                        |     r0 = r6;
    0x0000aa42 add r1, pc                                        |     r1 = 0x15d22;
    0x0000aa44 blx 0x1924                                        |     r0 = fcn_00001924 ();
    0x0000aa48 mov r5, r0                                        |     r5 = r0;
    0x0000aa4a cmp r0, 0                                         |     
                                                                 |     if (r0 == 0) {
    0x0000aa4c beq.w 0xac3c                                      |         goto label_29;
                                                                 |     }
    0x0000aa50 ldr.w r1, [pc, 0x88c]                             |     
    0x0000aa54 mov r0, r6                                        |     r0 = r6;
    0x0000aa56 add r1, pc                                        |     r1 = 0x15d3a;
    0x0000aa58 blx 0x1924                                        |     r0 = fcn_00001924 ();
    0x0000aa5c mov r5, r0                                        |     r5 = r0;
    0x0000aa5e cmp r0, 0                                         |     
                                                                 |     if (r0 == 0) {
    0x0000aa60 beq.w 0xac72                                      |         goto label_30;
                                                                 |     }
    0x0000aa64 ldr.w r1, [pc, 0x87c]                             |     
    0x0000aa68 mov r0, r6                                        |     r0 = r6;
    0x0000aa6a add r1, pc                                        |     r1 = 0x15d52;
    0x0000aa6c blx 0x1924                                        |     r0 = fcn_00001924 ();
    0x0000aa70 mov r5, r0                                        |     r5 = r0;
    0x0000aa72 cmp r0, 0                                         |     
                                                                 |     if (r0 == 0) {
    0x0000aa74 beq.w 0xacae                                      |         goto label_31;
                                                                 |     }
    0x0000aa78 ldr.w r1, [pc, 0x86c]                             |     
    0x0000aa7c mov r0, r6                                        |     r0 = r6;
    0x0000aa7e add r1, pc                                        |     r1 = 0x15d6a;
    0x0000aa80 blx 0x1924                                        |     r0 = fcn_00001924 ();
    0x0000aa84 mov r5, r0                                        |     r5 = r0;
    0x0000aa86 cmp r0, 0                                         |     
                                                                 |     if (r0 == 0) {
    0x0000aa88 beq.w 0xaf54                                      |         goto label_32;
                                                                 |     }
    0x0000aa8c ldr.w r1, [pc, 0x85c]                             |     
    0x0000aa90 mov r0, r6                                        |     r0 = r6;
    0x0000aa92 add r1, pc                                        |     r1 = 0x15d82;
    0x0000aa94 blx 0x1924                                        |     r0 = fcn_00001924 ();
    0x0000aa98 mov r5, r0                                        |     r5 = r0;
    0x0000aa9a cmp r0, 0                                         |     
                                                                 |     if (r0 == 0) {
    0x0000aa9c beq.w 0xafd0                                      |         goto label_33;
                                                                 |     }
                                                                 |     do {
                                                                 | label_1:
    0x0000aaa0 mov r0, r4                                        |         r0 = r4;
    0x0000aaa2 blx 0x19a0                                        |         fcn_000019a0 ();
                                                                 | label_28:
    0x0000aaa6 mov r1, sl                                        |         r1 = sl;
    0x0000aaa8 mov r0, sb                                        |         r0 = sb;
    0x0000aaaa bl 0x9550                                         |         r0 = fcn_00009550 (r0, r1);
    0x0000aaae mov r4, r0                                        |         r4 = r0;
    0x0000aab0 cmp r0, 0                                         |         
                                                                 |         if (r0 == 0) {
    0x0000aab2 beq.w 0xac04                                      |             goto label_34;
                                                                 |         }
    0x0000aab6 ldrb r3, [r4]                                     |         r3 = *(r4);
    0x0000aab8 cmp r3, 0x23                                      |         
    0x0000aaba it ne                                             |         
                                                                 |         if (r3 != 0x23) {
    0x0000aabc cmpne r3, 0                                       |             __asm ("cmpne r3, 0");
                                                                 |         }
    0x0000aabe beq 0xaaa0                                        |         
                                                                 |     } while (r3 == 0x23);
    0x0000aac0 add r7, sp, 0xc8                                  |     r7 += var_c8h;
    0x0000aac2 mov r1, fp                                        |     r1 = fp;
    0x0000aac4 mov r2, r7                                        |     r2 = r7;
    0x0000aac6 blx 0x1aac                                        |     r0 = opendir ();
    0x0000aaca mov r6, r0                                        |     r6 = r0;
    0x0000aacc cmp r0, 0                                         |     
                                                                 |     if (r0 == 0) {
    0x0000aace beq 0xaaa0                                        |         goto label_1;
                                                                 |     }
    0x0000aad0 ldr r1, [sp, 0x20]                                |     r1 = var_20h;
    0x0000aad2 blx 0x1924                                        |     r0 = fcn_00001924 ();
    0x0000aad6 mov r5, r0                                        |     r5 = r0;
    0x0000aad8 cmp r0, 0                                         |     
                                                                 |     if (r0 != 0) {
    0x0000aada bne 0xaa3c                                        |         goto label_2;
                                                                 |     }
    0x0000aadc mov r2, r7                                        |     r2 = r7;
    0x0000aade mov r1, fp                                        |     r1 = fp;
    0x0000aae0 blx 0x1aac                                        |     opendir ();
    0x0000aae4 mov r2, r7                                        |     r2 = r7;
    0x0000aae6 mov r6, r0                                        |     r6 = r0;
    0x0000aae8 mov r1, fp                                        |     r1 = fp;
    0x0000aaea mov r0, r5                                        |     r0 = r5;
    0x0000aaec blx 0x1aac                                        |     r0 = opendir ();
    0x0000aaf0 mov r7, r0                                        |     r7 = r0;
    0x0000aaf2 mov r0, r6                                        |     r0 = r6;
    0x0000aaf4 bl 0x9344                                         |     r0 = fcn_00009344 (r0);
    0x0000aaf8 cmp r0, 0                                         |     
                                                                 |     if (r0 < 0) {
    0x0000aafa blt 0xaaa0                                        |         goto label_1;
                                                                 |     }
    0x0000aafc mov r0, r7                                        |     r0 = r7;
    0x0000aafe bl 0x9344                                         |     r0 = fcn_00009344 (r0);
    0x0000ab02 cmp r0, 0                                         |     
                                                                 |     if (r0 < 0) {
    0x0000ab04 blt 0xaaa0                                        |         goto label_1;
                                                                 |     }
    0x0000ab06 mov r0, r6                                        |     r0 = r6;
    0x0000ab08 blx 0x1bb0                                        |     r0 = fcn_00001bb0 ();
    0x0000ab0c adds r3, r0, 1                                    |     r3 = r0 + 1;
    0x0000ab0e mov r0, r7                                        |     r0 = r7;
    0x0000ab10 str r3, [sp, 0x28]                                |     var_28h = r3;
    0x0000ab12 blx 0x1bb0                                        |     fcn_00001bb0 ();
    0x0000ab14 strex fp, sb, [lr, 0x28]                          |     __asm ("strex fp, sb, [lr, 0x28]");
    0x0000ab18 adds r2, r0, 1                                    |     r2 = r0 + 1;
    0x0000ab1a mov r8, r0                                        |     r8 = r0;
    0x0000ab1c str r2, [sp, 0x2c]                                |     var_2ch = r2;
    0x0000ab1e adds r0, r3, r2                                   |     r0 = r3 + r2;
    0x0000ab20 adds r0, 4                                        |     r0 += 4;
    0x0000ab22 blx 0x1b0c                                        |     r0 = strerror (r0);
    0x0000ab26 mov r3, r0                                        |     r3 = r0;
                                                                 |     if (r0 != 0) {
    0x0000ab28 cbz r0, 0xab5e                                    |         
    0x0000ab2a add.w r8, r8, 5                                   |         r8 += 5;
    0x0000ab2e ldr r2, [sp, 0x2c]                                |         r2 = var_2ch;
    0x0000ab30 add r8, r0                                        |         r8 += r0;
    0x0000ab32 mov r1, r7                                        |         r1 = r7;
    0x0000ab34 str r0, [sp, 0x2c]                                |         var_2ch = r0;
    0x0000ab36 str r8, [r0], 4                                   |         *(r0) = r8;
                                                                 |         r0 += 4;
    0x0000ab3a blx 0x19c8                                        |         mmap64 ();
    0x0000ab3e mov r1, r6                                        |         r1 = r6;
    0x0000ab40 ldr r2, [sp, 0x28]                                |         r2 = var_28h;
    0x0000ab42 mov r0, r8                                        |         r0 = r8;
    0x0000ab44 blx 0x19c8                                        |         mmap64 ();
    0x0000ab48 ldr r3, [sp, 0x2c]                                |         r3 = var_2ch;
    0x0000ab4a ldr r6, [sp, 0x24]                                |         r6 = var_24h;
    0x0000ab4c mov r1, r3                                        |         r1 = r3;
    0x0000ab4e str r3, [sp, 0x28]                                |         var_28h = r3;
    0x0000ab50 ldr r0, [r6, 4]                                   |         r0 = *((r6 + 4));
    0x0000ab52 bl 0xa350                                         |         fcn_0000a350 (r0, r1);
    0x0000ab56 ldr r3, [sp, 0x28]                                |         r3 = var_28h;
                                                                 |         if (r0 == 0) {
    0x0000ab58 cbz r0, 0xab5e                                    |             goto label_35;
                                                                 |         }
    0x0000ab5a mov r3, r5                                        |         r3 = r5;
    0x0000ab5c str r0, [r6, 4]                                   |         *((r6 + 4)) = r0;
                                                                 |     }
                                                                 | label_35:
    0x0000ab5e mov r0, r3                                        |     r0 = r3;
    0x0000ab60 blx 0x19a0                                        |     fcn_000019a0 ();
    0x0000ab64 b 0xaaa0                                          |     goto label_1;
                                                                 | label_21:
    0x0000ab66 mov r0, r5                                        |     r0 = r5;
    0x0000ab68 blx 0x1ab8                                        |     r0 = fnmatch ();
    0x0000ab6c mov r6, r0                                        |     r6 = r0;
    0x0000ab6e cmp r0, 0                                         |     
                                                                 |     if (r0 == 0) {
    0x0000ab70 beq.w 0xa920                                      |         goto label_3;
                                                                 |     }
    0x0000ab74 blx 0x1cf4                                        |     r0 = fcn_00001cf4 ();
                                                                 |     if (r0 == 0) {
    0x0000ab78 cbz r0, 0xabf2                                    |         goto label_36;
                                                                 |     }
    0x0000ab7a strd sb, sl, [sp, 0x20]                           |     __asm ("strd sb, sl, [var_24h]");
    0x0000ab7e add r3, sp, 0xc8                                  |     r3 += var_c8h;
    0x0000ab80 ldr.w sb, [sp, 0x28]                              |     sb = var_28h;
    0x0000ab84 mov sl, r0                                        |     sl = r0;
    0x0000ab86 mov r7, r3                                        |     r7 = r3;
                                                                 |     do {
    0x0000ab88 add.w r4, sl, 0x13                                |         r4 = sl + 0x13;
    0x0000ab8c mov r0, r4                                        |         r0 = r4;
    0x0000ab8e blx 0x1bb0                                        |         fcn_00001bb0 ();
    0x0000ab92 ldrb.w r2, [sl, 0x13]                             |         r2 = *((sl + 0x13));
    0x0000ab94 movs r0, 0x13                                     |         r0 = 0x13;
    0x0000ab96 mov sl, r0                                        |         sl = r0;
    0x0000ab98 cmp r2, 0x2e                                      |         
                                                                 |         if (r2 != 0x2e) {
    0x0000ab9a beq 0xabe2                                        |             
    0x0000ab9c cmp r0, 5                                         |             
                                                                 |             if (r0 < 5) {
    0x0000ab9e bls 0xabe2                                        |                 goto label_37;
                                                                 |             }
    0x0000aba0 subs r0, 5                                        |             r0 -= 5;
    0x0000aba2 mov r1, sb                                        |             r1 = sb;
    0x0000aba4 add r0, r4                                        |             r0 += r4;
    0x0000aba6 blx 0x1924                                        |             fcn_00001924 ();
    0x0000aba8 mrc p1, 5, fp, c14, c0, 1                         |             __asm ("mrc p1, 5, fp, c14, c0, 1");
    0x0000abac sub.w r0, sl, 6                                   |             r0 = sl - 6;
    0x0000abb0 ldr r1, [sp, 0x1c]                                |             r1 = var_1ch;
    0x0000abb2 add r0, r4                                        |             r0 += r4;
    0x0000abb4 blx 0x1924                                        |             r0 = fcn_00001924 ();
                                                                 |             if (r0 != 0) {
    0x0000abb8 cbnz r0, 0xabe2                                   |                 goto label_37;
                                                                 |             }
    0x0000abba mov r0, r6                                        |             r0 = r6;
    0x0000abbc blx 0x1d40                                        |             renameat ();
    0x0000abc0 movs r3, 0                                        |             r3 = 0;
    0x0000abc2 mov r2, r7                                        |             r2 = r7;
    0x0000abc4 mov r1, r4                                        |             r1 = r4;
    0x0000abc6 blx 0x1adc                                        |             asprintf_chk ();
    0x0000abca ldr r3, [fp, -0x60]                               |             r3 = var_bp_60h;
    0x0000abce and r3, r3, 0xf000                                |             r3 &= 0xf000;
    0x0000abd2 cmp.w r3, 0x4000                                  |             
                                                                 |             if (r3 == 0x4000) {
    0x0000abd6 beq 0xabe2                                        |                 goto label_37;
                                                                 |             }
    0x0000abd8 mov r2, r4                                        |             r2 = r4;
    0x0000abda mov r1, r5                                        |             r1 = r5;
    0x0000abdc mov r0, r8                                        |             r0 = r8;
    0x0000abde bl 0xa610                                         |             fcn_0000a610 (r0, r1, r2);
                                                                 |         }
                                                                 | label_37:
    0x0000abe2 mov r0, r6                                        |         r0 = r6;
    0x0000abe4 blx 0x1cf4                                        |         r0 = fcn_00001cf4 ();
    0x0000abe8 mov sl, r0                                        |         sl = r0;
    0x0000abea cmp r0, 0                                         |         
    0x0000abec bne 0xab88                                        |         
                                                                 |     } while (r0 != 0);
    0x0000abee ldrd sb, sl, [sp, 0x20]                           |     __asm ("ldrd sb, sl, [var_24h]");
                                                                 | label_36:
    0x0000abf2 mov r0, r6                                        |     r0 = r6;
    0x0000abf4 blx 0x1dc8                                        |     fcn_00001dc8 ();
    0x0000abf8 b 0xa95a                                          |     goto label_4;
                                                                 | label_19:
    0x0000abfa vmov.i32 d16, 0                                   |     __asm ("vmov.i32 d16, 0");
    0x0000abfe vstr d16, [sp, 0x10]                              |     __asm ("vstr d16, [sp, 0x10]");
    0x0000ac02 b 0xa95a                                          |     goto label_4;
                                                                 | label_34:
    0x0000ac04 mov r0, sb                                        |     r0 = sb;
    0x0000ac06 blx 0x1c84                                        |     fcn_00001c84 ();
    0x0000ac0a b 0xa9d8                                          |     goto label_5;
                                                                 | label_26:
    0x0000ac0c ldr r3, [sp, 0x1c]                                |     r3 = var_1ch;
    0x0000ac0e subs r4, r3, 4                                    |     r4 = r3 - 4;
    0x0000ac10 mov r3, r2                                        |     r3 = r2;
    0x0000ac12 adds r3, 5                                        |     r3 += 5;
    0x0000ac14 movs r2, 1                                        |     r2 = 1;
    0x0000ac16 str r3, [sp, 8]                                   |     var_8h = r3;
    0x0000ac18 ldr.w r3, [pc, 0x6d4]                             |     
    0x0000ac1c add r3, pc                                        |     r3 = 0x15f10;
    0x0000ac1e strd r3, r0, [sp]                                 |     __asm ("strd r3, r0, [sp]");
    0x0000ac22 mov.w r3, 0x1000                                  |     r3 = 0x1000;
    0x0000ac26 mov r1, r3                                        |     r1 = r3;
    0x0000ac28 mov r0, r4                                        |     r0 = r4;
    0x0000ac2a blx 0x1dd4                                        |     r0 = fcn_00001dd4 ();
    0x0000ac2e cmp.w r0, 0x1000                                  |     
    0x0000ac32 it lt                                             |     
                                                                 |     if (r0 < 0x1000) {
    0x0000ac34 movlt r0, r4                                      |         r0 = r4;
                                                                 |         goto label_38;
                                                                 |     }
                                                                 |     if (r0 < 0x1000) {
                                                                 | label_38:
    0x0000ac36 blt.w 0xaa02                                      |         goto label_6;
                                                                 |     }
    0x0000ac3a b 0xa9d8                                          |     goto label_5;
                                                                 | label_29:
    0x0000ac3c mov r2, r7                                        |     r2 = r7;
    0x0000ac3e mov r1, fp                                        |     r1 = fp;
    0x0000ac40 blx 0x1aac                                        |     r0 = opendir ();
    0x0000ac44 mov r6, r0                                        |     r6 = r0;
    0x0000ac46 bl 0x9344                                         |     r0 = fcn_00009344 (r0);
    0x0000ac4a cmp r0, 0                                         |     
                                                                 |     if (r0 < 0) {
    0x0000ac4c blt.w 0xaaa0                                      |         goto label_1;
                                                                 |     }
    0x0000ac50 mov r0, r6                                        |     r0 = r6;
    0x0000ac52 blx 0x1a10                                        |     r0 = stack_chk_fail ();
    0x0000ac56 mov r6, r0                                        |     r6 = r0;
                                                                 |     if (r0 != 0) {
    0x0000ac58 cbz r0, 0xac6a                                    |         
    0x0000ac5a ldr r7, [sp, 0x24]                                |         r7 = var_24h;
    0x0000ac5c mov r1, r6                                        |         r1 = r6;
    0x0000ac5e ldr r0, [r7, 8]                                   |         r0 = *((r7 + 8));
    0x0000ac60 bl 0xa350                                         |         r0 = fcn_0000a350 (r0, r1);
                                                                 |         if (r0 == 0) {
    0x0000ac64 cbz r0, 0xac6a                                    |             goto label_39;
                                                                 |         }
    0x0000ac66 mov r6, r5                                        |         r6 = r5;
    0x0000ac68 str r0, [r7, 8]                                   |         *((r7 + 8)) = r0;
                                                                 |     }
                                                                 | label_39:
    0x0000ac6a mov r0, r6                                        |     r0 = r6;
    0x0000ac6c blx 0x19a0                                        |     fcn_000019a0 ();
    0x0000ac70 b 0xaaa0                                          |     goto label_1;
                                                                 | label_30:
    0x0000ac72 mov r2, r7                                        |     r2 = r7;
    0x0000ac74 mov r1, fp                                        |     r1 = fp;
    0x0000ac76 blx 0x1aac                                        |     opendir ();
    0x0000ac7a ldr.w r1, [pc, 0x678]                             |     
    0x0000ac7e mov r3, r0                                        |     r3 = r0;
    0x0000ac80 mov r2, r7                                        |     r2 = r7;
    0x0000ac82 mov r0, r5                                        |     r0 = r5;
    0x0000ac84 mov r5, r3                                        |     r5 = r3;
    0x0000ac86 add r1, pc                                        |     r1 = 0x15f80;
    0x0000ac88 blx 0x1aac                                        |     r0 = opendir ();
    0x0000ac8c mov r6, r0                                        |     r6 = r0;
    0x0000ac8e mov r0, r5                                        |     r0 = r5;
    0x0000ac90 bl 0x9344                                         |     fcn_00009344 (r0);
    0x0000ac94 clz r3, r6                                        |     r3 &= r6;
    0x0000ac98 lsrs r3, r3, 5                                    |     r3 >>= 5;
    0x0000ac9a orrs.w r3, r3, r0, lsr 31                         |     r3 |= (r0 >> 31);
                                                                 |     if (r3 != r3) {
    0x0000ac9e bne.w 0xaaa0                                      |         goto label_1;
                                                                 |     }
    0x0000aca2 ldr r0, [sp, 0x24]                                |     r0 = var_24h;
    0x0000aca4 mov r2, r6                                        |     r2 = r6;
    0x0000aca6 mov r1, r5                                        |     r1 = r5;
    0x0000aca8 bl 0xa760                                         |     fcn_0000a760 (r0, r1, r2);
    0x0000acac b 0xaaa0                                          |     goto label_1;
                                                                 | label_31:
    0x0000acae mov r2, r7                                        |     r2 = r7;
    0x0000acb0 mov r1, fp                                        |     r1 = fp;
    0x0000acb2 blx 0x1aac                                        |     opendir ();
    0x0000acb6 ldr.w r1, [pc, 0x640]                             |     
    0x0000acba mov r3, r0                                        |     r3 = r0;
    0x0000acbc mov r2, r7                                        |     r2 = r7;
    0x0000acbe mov r0, r5                                        |     r0 = r5;
    0x0000acc0 mov r5, r3                                        |     r5 = r3;
    0x0000acc2 add r1, pc                                        |     r1 = 0x15fc0;
    0x0000acc4 blx 0x1aac                                        |     r0 = opendir ();
    0x0000acc8 mov r6, r0                                        |     r6 = r0;
    0x0000acca mov r0, r5                                        |     r0 = r5;
    0x0000accc bl 0x9344                                         |     fcn_00009344 (r0);
    0x0000acd0 clz r3, r6                                        |     r3 &= r6;
    0x0000acd4 lsrs r3, r3, 5                                    |     r3 >>= 5;
    0x0000acd6 orrs.w r3, r3, r0, lsr 31                         |     r3 |= (r0 >> 31);
                                                                 |     if (r3 != r3) {
    0x0000acda bne.w 0xaaa0                                      |         goto label_1;
                                                                 |     }
    0x0000acde ldr r3, [sp, 0x24]                                |     r3 = var_24h;
    0x0000ace0 mov r1, r6                                        |     r1 = r6;
    0x0000ace2 mov r0, r5                                        |     r0 = r5;
    0x0000ace4 add.w r2, r3, 0x14                                |     r2 = r3 + 0x14;
    0x0000ace8 bl 0xa700                                         |     fcn_0000a700 (r0, r1, r2);
    0x0000acec b 0xaaa0                                          |     goto label_1;
                                                                 | label_25:
    0x0000acee mov fp, r2                                        |     
                                                                 | label_24:
    0x0000acf0 ldr.w r0, [pc, 0x608]                             |     
    0x0000acf4 mov.w r1, 0x80000                                 |     r1 = 0x80000;
    0x0000acf8 add r0, pc                                        |     r0 = 0x15ff8;
    0x0000acfa blx 0x1ad0                                        |     r0 = fstatat64 ();
    0x0000acfe subs r5, r0, 0                                    |     r5 = r0 - 0;
                                                                 |     if (r5 < r0) {
    0x0000ad00 blt.w 0xae1a                                      |         goto label_15;
                                                                 |     }
    0x0000ad04 sub.w r4, fp, 4                                   |     r4 = fp - 4;
    0x0000ad08 mov.w r2, 0x1000                                  |     r2 = 0x1000;
    0x0000ad0c mov r1, r4                                        |     r1 = r4;
    0x0000ad0e bl 0x9440                                         |     r0 = fcn_00009440 (r0, r1, r2);
    0x0000ad12 mov r6, r0                                        |     r6 = r0;
    0x0000ad14 mov r0, r5                                        |     r0 = r5;
    0x0000ad16 blx 0x1dbc                                        |     fcn_00001dbc ();
    0x0000ad1a cmp r6, 0                                         |     
                                                                 |     if (r6 < 0) {
    0x0000ad1c blt.w 0xb288                                      |         goto label_40;
                                                                 |     }
    0x0000ad20 ldr.w r3, [pc, 0x5dc]                             |     
    0x0000ad24 movs r6, 0                                        |     r6 = 0;
    0x0000ad26 mov r7, r6                                        |     r7 = r6;
    0x0000ad28 mov r0, r6                                        |     r0 = r6;
    0x0000ad2a mov r8, r4                                        |     r8 = r4;
    0x0000ad2c movs r2, 1                                        |     r2 = 1;
    0x0000ad2e mov r5, r6                                        |     r5 = r6;
    0x0000ad30 add r3, pc                                        |     r3 = 0x16034;
    0x0000ad32 str r3, [sp, 0x10]                                |     var_10h = r3;
                                                                 |     do {
                                                                 | label_7:
    0x0000ad34 mov r1, r4                                        |         r1 = r4;
    0x0000ad36 ldrb r3, [r4], 1                                  |         r3 = *(r4);
                                                                 |         r4++;
    0x0000ad3a cmp r3, 0x2e                                      |         
                                                                 |         if (r3 > 0x2e) {
    0x0000ad3c bhi.w 0xae62                                      |             goto label_41;
                                                                 |         }
    0x0000ad40 cmp r3, 0x2e                                      |         
    0x0000ad42 bhi 0xad34                                        |         
                                                                 |     } while (r3 > 0x2e);
    0x0000ad44 addw ip, pc, 8                                    |     __asm ("addw ip, pc, 8");
    0x0000ad48 ldr.w r3, [ip, r3, lsl 2]                         |     offset_0 = r3 << 2;
                                                                 |     r3 = *((ip + offset_0));
    0x0000ad4c add ip, r3                                        |     
    0x0000ad4e bx ip                                             |     return void (*ip)() ();
                                                                 | label_15:
    0x0000ae1a movs r0, 0                                        |     r0 = 0;
                                                                 | label_8:
    0x0000ae1c ldr.w r2, [pc, 0x4e4]                             |     r2 = *(0x0000b304);
    0x0000ae20 add.w r1, sp, 0x1120                              |     r1 += var_1120h;
    0x0000ae24 ldr.w r3, [pc, 0x490]                             |     r3 = *(0xb2b8);
    0x0000ae28 adds r1, 0x14                                     |     r1 += 0x14;
    0x0000ae2a add r2, pc                                        |     r2 += pc;
    0x0000ae2c ldr r3, [r2, r3]                                  |     r3 = *((r2 + r3));
    0x0000ae2e ldr r2, [r3]                                      |     r2 = *(0xb2b8);
    0x0000ae30 ldr r3, [r1]                                      |     r3 = *(r1);
    0x0000ae32 eors r2, r3                                       |     r2 ^= r3;
    0x0000ae34 mov.w r3, 0                                       |     r3 = 0;
                                                                 |     if (r2 != r3) {
    0x0000ae38 bne.w 0xb2a4                                      |         goto label_42;
                                                                 |     }
    0x0000ae3c add.w sp, sp, 0x1120                              |     
    0x0000ae40 add sp, 0x1c                                      |     
    0x0000ae42 pop.w {r4, r5, r6, r7, r8, sb, sl, fp, pc}        |     
                                                                 | label_41:
    0x0000ae62 cmp r3, 0x3d                                      |     
                                                                 |     if (r3 != 0x3d) {
    0x0000ae64 bne.w 0xad34                                      |         goto label_7;
                                                                 |     }
    0x0000ae68 cmp r2, 2                                         |     
                                                                 |     if (r2 == 2) {
    0x0000ae6a beq.w 0xb230                                      |         goto label_43;
                                                                 |     }
    0x0000ae6e cmp r2, 1                                         |     
    0x0000ae70 it eq                                             |     
                                                                 |     if (r2 != 1) {
    0x0000ae72 moveq r2, 0                                       |         r2 = 0;
                                                                 |     }
    0x0000ae74 b 0xad34                                          |     goto label_7;
                                                                 | label_32:
    0x0000af54 mov r2, r7                                        |     r2 = r7;
    0x0000af56 mov r1, fp                                        |     r1 = fp;
    0x0000af58 blx 0x1aac                                        |     opendir ();
    0x0000af5c ldr r1, [pc, 0x3b0]                               |     
    0x0000af5e mov r3, r0                                        |     r3 = r0;
    0x0000af60 mov r2, r7                                        |     r2 = r7;
    0x0000af62 mov r0, r5                                        |     r0 = r5;
    0x0000af64 mov r5, r3                                        |     r5 = r3;
    0x0000af66 add r1, pc                                        |     r1 = 0x1627a;
    0x0000af68 blx 0x1aac                                        |     r0 = opendir ();
    0x0000af6c mov r6, r0                                        |     r6 = r0;
    0x0000af6e mov r0, r5                                        |     r0 = r5;
    0x0000af70 bl 0x9344                                         |     fcn_00009344 (r0);
    0x0000af72 invalid                                           |     
    0x0000af76 usat sb, 0x1b, r6, lsl 1                          |     __asm ("usat sb, 0x1b, r6, lsl 1");
    0x0000af7a orrs.w r3, r3, r0, lsr 31                         |     r3 |= (r0 >> 31);
                                                                 |     if (r3 != r3) {
    0x0000af7e bne.w 0xaaa0                                      |         goto label_1;
                                                                 |     }
    0x0000af82 ldr r3, [sp, 0x24]                                |     r3 = var_24h;
    0x0000af84 mov r1, r6                                        |     r1 = r6;
    0x0000af86 mov r0, r5                                        |     r0 = r5;
    0x0000af88 add.w r2, r3, 0x10                                |     r2 = r3 + 0x10;
    0x0000af8c bl 0xa700                                         |     fcn_0000a700 (r0, r1, r2);
    0x0000af90 b 0xaaa0                                          |     goto label_1;
                                                                 | label_23:
    0x0000af92 mov r0, r4                                        |     r0 = r4;
    0x0000af94 ldr r7, [sp, 0x18]                                |     r7 = var_18h;
    0x0000af96 blx 0x19a0                                        |     fcn_000019a0 ();
                                                                 | label_17:
    0x0000af9a ldr r4, [fp, -0xdc]                               |     r4 = var_5ch;
                                                                 |     if (r4 == 0) {
    0x0000af9e cbz r4, 0xafb6                                    |         goto label_44;
                                                                 |     }
                                                                 |     do {
    0x0000afa0 ldr r0, [r4, 8]                                   |         r0 = *((r4 + 8));
    0x0000afa2 blx 0x19a0                                        |         fcn_000019a0 ();
    0x0000afa6 mov r0, r4                                        |         r0 = r4;
    0x0000afa8 bl 0xa3ec                                         |         r0 = fcn_0000a3ec (r0);
    0x0000afac mov r4, r0                                        |         r4 = r0;
    0x0000afae str r0, [fp, -0xdc]                               |         var_5ch = r0;
    0x0000afb2 cmp r0, 0                                         |         
    0x0000afb4 bne 0xafa0                                        |         
                                                                 |     } while (r0 != 0);
                                                                 |     if (r7 == 0) {
                                                                 | label_44:
    0x0000afb6 cbz r7, 0xafca                                    |         goto label_45;
                                                                 |     }
                                                                 |     do {
    0x0000afb8 ldr r0, [r7, 8]                                   |         r0 = *((r7 + 8));
    0x0000afba blx 0x19a0                                        |         fcn_000019a0 ();
    0x0000afbe mov r0, r7                                        |         r0 = r7;
    0x0000afc0 bl 0xa3ec                                         |         r0 = fcn_0000a3ec (r0);
    0x0000afc4 mov r7, r0                                        |         r7 = r0;
    0x0000afc6 cmp r7, 0                                         |         
    0x0000afc8 bne 0xafb8                                        |         
                                                                 |     } while (r7 != 0);
                                                                 | label_45:
    0x0000afca mvn r0, 0xb                                       |     r0 = ~0xb;
    0x0000afce b 0xae1c                                          |     goto label_8;
                                                                 | label_33:
    0x0000afd0 mov r2, r7                                        |     r2 = r7;
    0x0000afd2 mov r1, fp                                        |     r1 = fp;
    0x0000afd4 blx 0x1aac                                        |     opendir ();
    0x0000afd8 ldr r1, [pc, 0x338]                               |     
    0x0000afda mov r3, r0                                        |     r3 = r0;
    0x0000afdc mov r2, r7                                        |     r2 = r7;
    0x0000afde mov r0, r5                                        |     r0 = r5;
    0x0000afe0 mov r5, r3                                        |     r5 = r3;
    0x0000afe2 str r3, [sp, 0x48]                                |     var_48h = r3;
    0x0000afe4 add r1, pc                                        |     r1 = 0x162fc;
    0x0000afe6 blx 0x1aac                                        |     r0 = opendir ();
    0x0000afea mov r7, r0                                        |     r7 = r0;
    0x0000afec mov r0, r5                                        |     r0 = r5;
    0x0000afee bl 0x9344                                         |     fcn_00009344 (r0);
    0x0000aff2 clz r3, r7                                        |     r3 &= r7;
    0x0000aff6 lsrs r3, r3, 5                                    |     r3 >>= 5;
    0x0000aff8 orrs.w r3, r3, r0, lsr 31                         |     r3 |= (r0 >> 31);
                                                                 |     if (r3 != r3) {
    0x0000affc bne.w 0xaaa0                                      |         goto label_1;
                                                                 |     }
    0x0000b000 mov r0, r5                                        |     r0 = r5;
    0x0000b002 mov r6, r7                                        |     r6 = r7;
    0x0000b004 blx 0x1bb0                                        |     r0 = fcn_00001bb0 ();
    0x0000b008 mov r3, r0                                        |     r3 = r0;
    0x0000b00a mov r5, r7                                        |     r5 = r7;
    0x0000b00c adds r3, 1                                        |     r3++;
    0x0000b00e mov r8, r7                                        |     r8 = r7;
    0x0000b010 str r3, [sp, 0x54]                                |     var_54h = r3;
    0x0000b012 mov r3, r7                                        |     r3 = r7;
    0x0000b014 movs r2, 0                                        |     r2 = 0;
    0x0000b016 str r0, [sp, 0x50]                                |     var_50h = r0;
    0x0000b018 str r2, [sp, 0x28]                                |     var_28h = r2;
    0x0000b01a strd r2, r2, [sp, 0x30]                           |     __asm ("strd r2, r2, [var_30h]");
    0x0000b01e strd r2, r2, [sp, 0x40]                           |     __asm ("strd r2, r2, [var_44h]");
    0x0000b022 str r4, [sp, 0x4c]                                |     errnum = r4;
                                                                 |     do {
                                                                 | label_9:
    0x0000b024 mov r2, r6                                        |         r2 = r6;
    0x0000b026 ldrb r4, [r6], 1                                  |         r4 = *(r6);
                                                                 |         r6++;
                                                                 |         if (r4 == 0) {
    0x0000b02a cbz r4, 0xb054                                    |             goto label_46;
                                                                 |         }
    0x0000b02c str r2, [sp, 0x2c]                                |         var_2ch = r2;
    0x0000b02e blx 0x1b80                                        |         r0 = fcn_00001b80 ();
    0x0000b032 ldr r0, [r0]                                      |         r0 = *(r0);
    0x0000b034 ldrh.w r0, [r0, r4, lsl 1]                        |         offset_1 = r4 << 1;
                                                                 |         r0 = *((r0 + offset_1));
    0x0000b038 ands r0, r0, 0x2000                               |         r0 &= 0x2000;
                                                                 |         if (r0 == r0) {
    0x0000b03c beq.w 0xb1d6                                      |             goto label_47;
                                                                 |         }
    0x0000b040 ldrd r3, r2, [sp, 0x28]                           |         __asm ("ldrd r3, r2, [var_28h]");
    0x0000b044 cmp r3, 0                                         |         
                                                                 |         if (r3 != 0) {
    0x0000b046 bne.w 0xb22c                                      |             goto label_48;
                                                                 |         }
    0x0000b04a cmp r2, r8                                        |         
    0x0000b04c mov.w r3, 1                                       |         r3 = 1;
    0x0000b050 str r3, [sp, 0x28]                                |         var_28h = r3;
    0x0000b052 bls 0xb024                                        |         
                                                                 |     } while (r2 < r8);
                                                                 | label_46:
    0x0000b054 sub.w r2, r2, r8                                  |     r2 -= r8;
    0x0000b058 cmp r2, 4                                         |     
                                                                 |     if (r2 == 4) {
    0x0000b05a beq.w 0xb18c                                      |         goto label_49;
                                                                 |     }
    0x0000b05e cmp r2, 5                                         |     
                                                                 |     if (r2 == 5) {
    0x0000b060 beq.w 0xb1be                                      |         goto label_50;
                                                                 |     }
                                                                 | label_11:
    0x0000b064 ldr r1, [sp, 0x28]                                |     r1 = var_28h;
    0x0000b066 cmp r4, 0                                         |     
    0x0000b068 ite ne                                            |     
                                                                 |     if (r4 == 0) {
    0x0000b06a movne r1, 0                                       |         r1 = 0;
                                                                 |     }
                                                                 |     if (r4 != 0) {
    0x0000b06c andeq r1, r1, 1                                   |         r1 &= 1;
                                                                 |     }
                                                                 |     if (r1 != 0) {
    0x0000b070 cbnz r1, 0xb094                                   |         goto label_51;
                                                                 |     }
    0x0000b072 ldr r3, [sp, 0x30]                                |     r3 = var_30h;
    0x0000b074 cmp r3, 1                                         |     
                                                                 |     if (r3 == 1) {
    0x0000b076 beq.w 0xb1da                                      |         goto label_52;
                                                                 |     }
    0x0000b07a ldr r3, [sp, 0x30]                                |     r3 = var_30h;
    0x0000b07c cmp r3, 2                                         |     
                                                                 |     if (r3 == 2) {
    0x0000b07e bne 0xb08e                                        |         
    0x0000b080 ldr r1, [sp, 0x34]                                |         r1 = var_34h;
    0x0000b082 adds r1, 1                                        |         r1++;
    0x0000b084 adds r3, r2, r1                                   |         r3 = r2 + r1;
    0x0000b086 str r3, [sp, 0x34]                                |         var_34h = r3;
    0x0000b088 ldr r3, [sp, 0x44]                                |         r3 = var_44h;
    0x0000b08a adds r3, 1                                        |         r3++;
    0x0000b08c str r3, [sp, 0x44]                                |         var_44h = r3;
                                                                 |     }
                                                                 | label_12:
    0x0000b08e mov r8, r6                                        |     r8 = r6;
    0x0000b090 cmp r4, 0                                         |     
                                                                 |     if (r4 != 0) {
    0x0000b092 bne 0xb024                                        |         goto label_9;
                                                                 |     }
                                                                 | label_51:
    0x0000b094 ldrd r4, r0, [sp, 0x4c]                           |     __asm ("ldrd r4, r0, [var_50h]");
    0x0000b098 ldr r3, [sp, 0x34]                                |     r3 = var_34h;
    0x0000b09a ldr r2, [sp, 0x44]                                |     r2 = var_44h;
    0x0000b09c adds r0, 0x15                                     |     r0 += 0x15;
    0x0000b09e add r0, r3                                        |     r0 += r3;
    0x0000b0a0 ldr r3, [sp, 0x40]                                |     r3 = var_40h;
    0x0000b0a2 lsls r6, r2, 2                                    |     r6 = r2 << 2;
    0x0000b0a4 lsl.w r8, r3, 2                                   |     r8 = r3 << 2;
    0x0000b0a8 add r0, r8                                        |     r0 += r8;
    0x0000b0aa add r0, r6                                        |     r0 += r6;
    0x0000b0ac blx 0x1b0c                                        |     strerror (r0);
    0x0000b0b0 str r0, [sp, 0x30]                                |     var_30h = r0;
    0x0000b0b2 cmp r0, 0                                         |     
                                                                 |     if (r0 == 0) {
    0x0000b0b4 beq.w 0xaaa0                                      |         goto label_1;
                                                                 |     }
    0x0000b0b8 ldr r2, [sp, 0x44]                                |     r2 = var_44h;
    0x0000b0ba ldr r3, [sp, 0x40]                                |     r3 = var_40h;
    0x0000b0bc ldr r1, [sp, 0x48]                                |     r1 = var_48h;
    0x0000b0be str r2, [r0, 0x10]                                |     *((r0 + 0x10)) = r2;
    0x0000b0c0 add.w r2, r0, 0x14                                |     r2 = r0 + 0x14;
    0x0000b0c4 str r3, [r0, 0xc]                                 |     *((r0 + 0xc)) = r3;
    0x0000b0c6 add.w r3, r2, r8                                  |     r3 = r2 + r8;
    0x0000b0ca str r2, [r0, 4]                                   |     *((r0 + 4)) = r2;
    0x0000b0cc adds r0, r3, r6                                   |     r0 = r3 + r6;
    0x0000b0ce ldr.w r8, [sp, 0x54]                              |     r8 = var_54h;
    0x0000b0d2 ldr r6, [sp, 0x30]                                |     r6 = var_30h;
    0x0000b0d4 mov r2, r8                                        |     r2 = r8;
    0x0000b0d6 str r3, [r6, 8]                                   |     *((r6 + 8)) = r3;
    0x0000b0d8 str r0, [r6]                                      |     *(r6) = r0;
    0x0000b0da blx 0x19c8                                        |     mmap64 ();
    0x0000b0de ldr r3, [r6]                                      |     r3 = *(r6);
    0x0000b0e0 mov r2, r8                                        |     r2 = r8;
    0x0000b0e2 mov.w r8, 0                                       |     r8 = 0;
    0x0000b0e6 str.w r8, [sp, 0x2c]                              |     __asm ("str.w r8, [var_2ch]");
    0x0000b0ea add r2, r3                                        |     r2 += r3;
    0x0000b0ec strd r8, r8, [sp, 0x40]                           |     __asm ("strd r8, r8, [var_44h]");
    0x0000b0f0 str r2, [sp, 0x34]                                |     var_34h = r2;
                                                                 |     do {
                                                                 | label_10:
    0x0000b0f2 mov r2, r5                                        |         r2 = r5;
    0x0000b0f4 ldrb r6, [r5], 1                                  |         r6 = *(r5);
                                                                 |         r5++;
                                                                 |         if (r6 == 0) {
    0x0000b0f8 cbz r6, 0xb120                                    |             goto label_53;
                                                                 |         }
    0x0000b0fa str r2, [sp, 0x28]                                |         var_28h = r2;
    0x0000b0fc blx 0x1b80                                        |         r0 = fcn_00001b80 ();
    0x0000b100 ldr r3, [r0]                                      |         r3 = *(r0);
    0x0000b102 ldrh.w r3, [r3, r6, lsl 1]                        |         offset_2 = r6 << 1;
                                                                 |         r3 = *((r3 + offset_2));
    0x0000b106 ands r3, r3, 0x2000                               |         r3 &= 0x2000;
                                                                 |         if (r3 == r3) {
    0x0000b10a beq.w 0xb224                                      |             goto label_54;
                                                                 |         }
    0x0000b10e ldr r2, [sp, 0x28]                                |         r2 = var_28h;
    0x0000b110 cmp.w r8, 0                                       |         
                                                                 |         if (r8 != 0) {
    0x0000b114 bne.w 0xb228                                      |             goto label_55;
                                                                 |         }
    0x0000b118 cmp r2, r7                                        |         
    0x0000b11a mov.w r8, 1                                       |         r8 = 1;
    0x0000b11e bls 0xb0f2                                        |         
                                                                 |     } while (r2 < r7);
                                                                 | label_53:
    0x0000b120 subs r2, r2, r7                                   |     r2 -= r7;
    0x0000b122 cmp r2, 4                                         |     
                                                                 |     if (r2 == 4) {
    0x0000b124 beq 0xb1ea                                        |         goto label_56;
                                                                 |     }
    0x0000b126 cmp r2, 5                                         |     
                                                                 |     if (r2 == 5) {
    0x0000b128 beq 0xb20e                                        |         goto label_57;
                                                                 |     }
                                                                 | label_13:
    0x0000b12a cmp r6, 0                                         |     
    0x0000b12c ite ne                                            |     
                                                                 |     if (r6 == 0) {
    0x0000b12e movne r3, 0                                       |         r3 = 0;
                                                                 |     }
                                                                 |     if (r6 != 0) {
    0x0000b130 andeq r3, r8, 1                                   |         r3 = r8 & 1;
                                                                 |     }
                                                                 |     if (r3 != 0) {
    0x0000b134 cbnz r3, 0xb14c                                   |         goto label_58;
                                                                 |     }
    0x0000b136 ldr r1, [sp, 0x2c]                                |     r1 = var_2ch;
    0x0000b138 cmp r1, 1                                         |     
                                                                 |     if (r1 == 1) {
    0x0000b13a beq.w 0xb244                                      |         goto label_59;
                                                                 |     }
    0x0000b13e ldr r1, [sp, 0x2c]                                |     r1 = var_2ch;
    0x0000b140 cmp r1, 2                                         |     
                                                                 |     if (r1 == 2) {
    0x0000b142 beq.w 0xb272                                      |         goto label_60;
                                                                 |     }
                                                                 | label_14:
    0x0000b146 mov r7, r5                                        |     r7 = r5;
    0x0000b148 cmp r6, 0                                         |     
                                                                 |     if (r6 != 0) {
    0x0000b14a bne 0xb0f2                                        |         goto label_10;
                                                                 |     }
                                                                 | label_58:
    0x0000b14c ldr r3, [sp, 0x24]                                |     r3 = var_24h;
    0x0000b14e ldr r1, [sp, 0x30]                                |     r1 = var_30h;
    0x0000b150 ldr r0, [r3, 0x18]                                |     r0 = *((r3 + 0x18));
    0x0000b152 bl 0xa350                                         |     r0 = fcn_0000a350 (r0, r1);
    0x0000b156 cmp r0, 0                                         |     
                                                                 |     if (r0 == 0) {
    0x0000b158 beq.w 0xb2a8                                      |         goto label_61;
                                                                 |     }
    0x0000b15c ldr r3, [sp, 0x24]                                |     r3 = var_24h;
    0x0000b15e str r0, [r3, 0x18]                                |     *((r3 + 0x18)) = r0;
    0x0000b160 b 0xaaa0                                          |     goto label_1;
                                                                 | label_49:
    0x0000b18c ldrb.w r0, [r8]                                   |     r0 = *(r8);
    0x0000b190 cmp r0, 0x70                                      |     
                                                                 |     if (r0 != 0x70) {
    0x0000b192 bne.w 0xb064                                      |         goto label_11;
                                                                 |     }
    0x0000b196 ldrb.w r0, [r8, 1]                                |     r0 = *((r8 + 1));
    0x0000b19a add.w r1, r8, 1                                   |     r1 = r8 + 1;
    0x0000b19e cmp r0, 0x72                                      |     
                                                                 |     if (r0 != 0x72) {
    0x0000b1a0 bne.w 0xb064                                      |         goto label_11;
                                                                 |     }
    0x0000b1a4 ldrb r0, [r1, 1]!                                 |     r0 = *((r1 += 1));
    0x0000b1a8 cmp r0, 0x65                                      |     
                                                                 |     if (r0 != 0x65) {
    0x0000b1aa bne.w 0xb064                                      |         goto label_11;
                                                                 |     }
    0x0000b1ae ldrb r1, [r1, 1]                                  |     r1 = *((r1 + 1));
    0x0000b1b0 cmp r1, 0x3a                                      |     
    0x0000b1b2 itt eq                                            |     
                                                                 |     if (r1 != 0x3a) {
    0x0000b1b4 moveq r3, 1                                       |         r3 = 1;
                                                                 |     }
                                                                 |     if (r1 == 0x3a) {
    0x0000b1b6 streq r3, [sp, 0x30]                              |         var_30h = r3;
                                                                 |         goto label_62;
                                                                 |     }
                                                                 |     if (r1 != 0x3a) {
                                                                 | label_62:
    0x0000b1b8 bne.w 0xb064                                      |         goto label_11;
                                                                 |     }
    0x0000b1bc b 0xb08e                                          |     goto label_12;
                                                                 | label_50:
    0x0000b1be ldr r1, [sp, 0x38]                                |     r1 = var_38h;
    0x0000b1c0 mov r0, r8                                        |     r0 = r8;
    0x0000b1c2 str r2, [sp, 0x2c]                                |     var_2ch = r2;
    0x0000b1c4 blx 0x19f8                                        |     uname ();
    0x0000b1c8 ldr r2, [sp, 0x2c]                                |     r2 = var_2ch;
    0x0000b1ca cmp r0, 0                                         |     
                                                                 |     if (r0 != 0) {
    0x0000b1cc bne.w 0xb064                                      |         goto label_11;
                                                                 |     }
    0x0000b1d0 movs r3, 2                                        |     r3 = 2;
    0x0000b1d2 str r3, [sp, 0x30]                                |     var_30h = r3;
    0x0000b1d4 b 0xb08e                                          |     goto label_12;
                                                                 | label_47:
    0x0000b1d6 str r0, [sp, 0x28]                                |     var_28h = r0;
    0x0000b1d8 b 0xb024                                          |     goto label_9;
                                                                 | label_52:
    0x0000b1da ldr r1, [sp, 0x34]                                |     r1 = var_34h;
    0x0000b1dc adds r1, 1                                        |     r1++;
    0x0000b1de adds r3, r1, r2                                   |     r3 = r1 + r2;
    0x0000b1e0 str r3, [sp, 0x34]                                |     var_34h = r3;
    0x0000b1e2 ldr r3, [sp, 0x40]                                |     r3 = var_40h;
    0x0000b1e4 adds r3, 1                                        |     r3++;
    0x0000b1e6 str r3, [sp, 0x40]                                |     var_40h = r3;
    0x0000b1e8 b 0xb08e                                          |     goto label_12;
                                                                 | label_56:
    0x0000b1ea ldrb r3, [r7]                                     |     r3 = *(r7);
    0x0000b1ec cmp r3, 0x70                                      |     
                                                                 |     if (r3 != 0x70) {
    0x0000b1ee bne 0xb12a                                        |         goto label_13;
                                                                 |     }
    0x0000b1f0 ldrb r3, [r7, 1]                                  |     r3 = *((r7 + 1));
    0x0000b1f2 adds r1, r7, 1                                    |     r1 = r7 + 1;
    0x0000b1f4 cmp r3, 0x72                                      |     
                                                                 |     if (r3 != 0x72) {
    0x0000b1f6 bne 0xb12a                                        |         goto label_13;
                                                                 |     }
    0x0000b1f8 ldrb r3, [r1, 1]!                                 |     r3 = *((r1 += 1));
    0x0000b1fc cmp r3, 0x65                                      |     
                                                                 |     if (r3 != 0x65) {
    0x0000b1fe bne 0xb12a                                        |         goto label_13;
                                                                 |     }
    0x0000b200 ldrb r3, [r1, 1]                                  |     r3 = *((r1 + 1));
    0x0000b202 cmp r3, 0x3a                                      |     
    0x0000b204 itt eq                                            |     
                                                                 |     if (r3 != 0x3a) {
    0x0000b206 moveq r3, 1                                       |         r3 = 1;
                                                                 |     }
                                                                 |     if (r3 == 0x3a) {
    0x0000b208 streq r3, [sp, 0x2c]                              |         var_2ch = r3;
                                                                 |         goto label_63;
                                                                 |     }
                                                                 |     if (r3 != 0x3a) {
                                                                 | label_63:
    0x0000b20a bne 0xb12a                                        |         goto label_13;
                                                                 |     }
    0x0000b20c b 0xb146                                          |     goto label_14;
                                                                 | label_57:
    0x0000b20e ldr r1, [sp, 0x3c]                                |     r1 = var_3ch;
    0x0000b210 mov r0, r7                                        |     r0 = r7;
    0x0000b212 str r2, [sp, 0x28]                                |     var_28h = r2;
    0x0000b214 blx 0x19f8                                        |     uname ();
    0x0000b218 ldr r2, [sp, 0x28]                                |     r2 = var_28h;
    0x0000b21a cmp r0, 0                                         |     
                                                                 |     if (r0 != 0) {
    0x0000b21c bne 0xb12a                                        |         goto label_13;
                                                                 |     }
    0x0000b21e movs r3, 2                                        |     r3 = 2;
    0x0000b220 str r3, [sp, 0x2c]                                |     var_2ch = r3;
    0x0000b222 b 0xb146                                          |     goto label_14;
                                                                 | label_54:
    0x0000b224 mov r8, r3                                        |     r8 = r3;
    0x0000b226 b 0xb0f2                                          |     goto label_10;
                                                                 | label_55:
    0x0000b228 mov r7, r5                                        |     r7 = r5;
    0x0000b22a b 0xb0f2                                          |     goto label_10;
                                                                 | label_48:
    0x0000b22c mov r8, r6                                        |     r8 = r6;
    0x0000b22e b 0xb024                                          |     goto label_9;
                                                                 | label_43:
    0x0000b230 mov r6, r4                                        |     r6 = r4;
    0x0000b232 movs r2, 3                                        |     r2 = 3;
    0x0000b234 b 0xad34                                          |     goto label_7;
                                                                 | label_59:
    0x0000b244 str r3, [sp, 0x48]                                |     var_48h = r3;
    0x0000b246 mov r1, r7                                        |     r1 = r7;
    0x0000b248 ldr r3, [sp, 0x30]                                |     r3 = var_30h;
    0x0000b24a ldr r6, [sp, 0x34]                                |     r6 = var_34h;
    0x0000b24c ldr r0, [r3, 4]                                   |     r0 = *((r3 + 4));
    0x0000b24e ldr r3, [sp, 0x40]                                |     r3 = var_40h;
    0x0000b250 str.w r6, [r0, r3, lsl 2]                         |     __asm ("str.w r6, [r0, r3, lsl 2]");
    0x0000b254 adds r3, 1                                        |     r3++;
    0x0000b256 str r3, [sp, 0x40]                                |     var_40h = r3;
                                                                 |     do {
    0x0000b258 mov r0, r6                                        |         r0 = r6;
    0x0000b25a str r2, [sp, 0x28]                                |         var_28h = r2;
    0x0000b25c blx 0x19c8                                        |         mmap64 ();
    0x0000b260 ldr r2, [sp, 0x28]                                |         r2 = var_28h;
    0x0000b262 ldr r3, [sp, 0x48]                                |         r3 = var_48h;
    0x0000b264 strb r3, [r6, r2]                                 |         *((r6 + r2)) = r3;
    0x0000b266 adds r2, 1                                        |         r2++;
    0x0000b268 adds r3, r6, r2                                   |         r3 = r6 + r2;
    0x0000b26a str r3, [sp, 0x34]                                |         var_34h = r3;
    0x0000b26c ldrb r6, [r5, -0x1]                               |         r6 = *((r5 - 0x1));
    0x0000b270 b 0xb146                                          |         goto label_14;
                                                                 | label_60:
    0x0000b272 str r3, [sp, 0x48]                                |         var_48h = r3;
    0x0000b274 mov r1, r7                                        |         r1 = r7;
    0x0000b276 ldr r3, [sp, 0x30]                                |         r3 = var_30h;
    0x0000b278 ldr r6, [sp, 0x34]                                |         r6 = var_34h;
    0x0000b27a ldr r0, [r3, 8]                                   |         r0 = *((r3 + 8));
    0x0000b27c ldr r3, [sp, 0x44]                                |         r3 = var_44h;
    0x0000b27e str.w r6, [r0, r3, lsl 2]                         |         __asm ("str.w r6, [r0, r3, lsl 2]");
    0x0000b282 adds r3, 1                                        |         r3++;
    0x0000b284 str r3, [sp, 0x44]                                |         var_44h = r3;
    0x0000b286 b 0xb258                                          |         
                                                                 |     } while (1);
                                                                 | label_40:
    0x0000b288 rsbs r0, r6, 0                                    |     r0 = r6 - ;
    0x0000b28a blx 0x1b18                                        |     system (r0)
    0x0000b28e b 0xae1a                                          |     goto label_15;
                                                                 | label_18:
    0x0000b290 mov r7, r5                                        |     r7 = r5;
    0x0000b292 b.w 0xa99c                                        |     goto label_16;
                                                                 | label_22:
    0x0000b296 ldr r7, [sp, 0x18]                                |     r7 = var_18h;
    0x0000b298 b 0xaf9a                                          |     goto label_17;
                                                                 | label_27:
    0x0000b29a mov r0, r4                                        |     r0 = r4;
    0x0000b29c blx 0x1dbc                                        |     fcn_00001dbc ();
    0x0000b2a0 b.w 0xa9d8                                        |     goto label_5;
                                                                 | label_42:
    0x0000b2a4 blx 0x1a1c                                        |     stat64 ();
                                                                 | label_61:
    0x0000b2a8 ldr r0, [sp, 0x30]                                |     r0 = var_30h;
    0x0000b2aa blx 0x19a0                                        |     fcn_000019a0 ();
    0x0000b2ae b.w 0xaaa0                                        |     goto label_1;
                                                                 | }
    ; assembly                                                   | /* r2dec pseudo code output */
                                                                 | /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/bin/kmod @ 0xc8c4 */
                                                                 | #include <stdint.h>
                                                                 |  
    ; (fcn) fcn.0000c8c4 ()                                      | void fcn_0000c8c4 (uint32_t arg1, uint32_t arg2, uint32_t arg3) {
                                                                 |     int16_t var_0h_3;
                                                                 |     int16_t var_4h_2;
                                                                 |     int32_t var_78h;
                                                                 |     int16_t var_14h;
                                                                 |     size_t size;
                                                                 |     int16_t var_20h;
                                                                 |     int16_t var_4h;
                                                                 |     int16_t var_80h;
                                                                 |     int16_t var_e8h;
                                                                 |     int16_t var_2a8h;
                                                                 |     int16_t var_1060h;
                                                                 |     int32_t var_0h;
                                                                 |     int16_t var_1080h;
                                                                 |     r0 = arg1;
                                                                 |     r1 = arg2;
                                                                 |     r2 = arg3;
    0x0000c8c4 push.w {r4, r5, r6, r7, r8, sb, sl, lr}           |     
    0x0000c8c8 cmp r2, 0                                         |     
    0x0000c8ca it ne                                             |     
                                                                 |     if (r2 != 0) {
    0x0000c8cc cmpne r1, 0                                       |         __asm ("cmpne r1, 0");
                                                                 |     }
    0x0000c8ce mov r4, r1                                        |     r4 = r1;
    0x0000c8d0 ldr r1, [pc, 0x124]                               |     
    0x0000c8d2 mov r7, r2                                        |     r7 = r2;
    0x0000c8d4 sub.w sp, sp, 0x1080                              |     
    0x0000c8d8 ldr r2, [pc, 0x120]                               |     r2 = *(0xc9fc);
    0x0000c8da it eq                                             |     
                                                                 |     if (r2 != 0) {
    0x0000c8dc moveq r3, 1                                       |         r3 = 1;
                                                                 |     }
    0x0000c8de add r1, pc                                        |     r1 = 0x192da;
    0x0000c8e0 it ne                                             |     
                                                                 |     if (r2 == 0) {
    0x0000c8e2 movne r3, 0                                       |         r3 = 0;
                                                                 |     }
    0x0000c8e4 cmp r0, 0                                         |     
    0x0000c8e6 it eq                                             |     
                                                                 |     if (r0 != 0) {
    0x0000c8e8 orreq r3, r3, 1                                   |         r3 |= 1;
                                                                 |     }
    0x0000c8ec mov r6, r0                                        |     r6 = r0;
    0x0000c8ee ldr r2, [r1, r2]                                  |     
    0x0000c8f0 add.w r0, sp, 0x1060                              |     r0 += var_1060h;
    0x0000c8f4 adds r0, 0x1c                                     |     r0 += 0x1c;
    0x0000c8f6 ldr r2, [r2]                                      |     r2 = *(0x192da);
    0x0000c8f8 str r2, [r0]                                      |     *(r0) = r2;
    0x0000c8fa mov.w r2, 0                                       |     r2 = 0;
    0x0000c8fe cmp r3, 0                                         |     
                                                                 |     if (r3 != 0) {
    0x0000c900 bne 0xc9c6                                        |         goto label_2;
                                                                 |     }
    0x0000c902 mov r0, r4                                        |     r0 = r4;
    0x0000c904 bl 0x960c                                         |     r0 = fcn_0000960c (r0);
    0x0000c908 mov r5, r0                                        |     r5 = r0;
    0x0000c90a cmp r0, 0                                         |     
                                                                 |     if (r0 == 0) {
    0x0000c90c beq 0xc9e0                                        |         goto label_3;
                                                                 |     }
    0x0000c90e add.w r8, sp, 0x20                                |     r8 += var_20h;
    0x0000c912 sub.w r1, r8, 0x10                                |     r1 -= size;
    0x0000c916 blx 0x1a28                                        |     r0 = realloc (r0, r1);
    0x0000c91a cmp r0, 0                                         |     
                                                                 |     if (r0 < 0) {
    0x0000c91c blt 0xc988                                        |         goto label_4;
                                                                 |     }
    0x0000c91e add.w sb, sp, 0x80                                |     sb += var_80h;
    0x0000c922 mov r0, r4                                        |     r0 = r4;
    0x0000c924 sub.w sl, sb, 4                                   |     sl -= var_4h;
    0x0000c928 sub.w r2, r8, 0x14                                |     r2 -= var_14h;
    0x0000c92c mov r1, sl                                        |     r1 = sl;
    0x0000c92e bl 0x93e0                                         |     r0 = fcn_000093e0 (r0, r1);
    0x0000c932 cmp r0, 0                                         |     
                                                                 |     if (r0 == 0) {
    0x0000c934 beq 0xc9e6                                        |         goto label_5;
                                                                 |     }
    0x0000c936 mov r1, sl                                        |     r1 = sl;
    0x0000c938 mov r0, r6                                        |     r0 = r6;
    0x0000c93a bl 0x9c64                                         |     r0 = fcn_00009c64 (r0, r1);
    0x0000c93e mov r4, r0                                        |     r4 = r0;
    0x0000c940 str r0, [sb, -0x78]                               |     var_78h = r0;
                                                                 |     if (r0 == 0) {
    0x0000c944 cbz r0, 0xc9a0                                    |         goto label_6;
                                                                 |     }
    0x0000c946 ldr r0, [r0, 0xc]                                 |     r0 = *((r0 + 0xc));
                                                                 |     if (r0 == 0) {
    0x0000c948 cbz r0, 0xc99c                                    |         goto label_7;
                                                                 |     }
    0x0000c94a mov r1, r5                                        |     r1 = r5;
    0x0000c94c blx 0x1924                                        |     r0 = fcn_00001924 ();
    0x0000c950 cmp r0, 0                                         |     
                                                                 |     if (r0 != 0) {
    0x0000c952 bne 0xc9d4                                        |         goto label_8;
                                                                 |     }
    0x0000c954 mov r0, r5                                        |     r0 = r5;
    0x0000c956 blx 0x19a0                                        |     fcn_000019a0 ();
                                                                 | label_0:
    0x0000c95a movs r6, 0                                        |     r6 = 0;
    0x0000c95c mov r0, r4                                        |     r0 = r4;
    0x0000c95e bl 0xc7e4                                         |     fcn_0000c7e4 (r0);
    0x0000c962 str r0, [r7]                                      |     *(r7) = r0;
                                                                 |     do {
                                                                 | label_1:
    0x0000c964 ldr r2, [pc, 0x98]                                |         
    0x0000c966 add.w r1, sp, 0x1060                              |         r1 += var_1060h;
    0x0000c96a ldr r3, [pc, 0x90]                                |         r3 = *(0xc9fe);
    0x0000c96c adds r1, 0x1c                                     |         r1 += 0x1c;
    0x0000c96e add r2, pc                                        |         r2 = 0x19372;
    0x0000c970 ldr r3, [r2, r3]                                  |         r3 = *(0x19372);
    0x0000c972 ldr r2, [r3]                                      |         r2 = *(0x19372);
    0x0000c974 ldr r3, [r1]                                      |         r3 = *(r1);
    0x0000c976 eors r2, r3                                       |         r2 ^= r3;
    0x0000c978 mov.w r3, 0                                       |         r3 = 0;
                                                                 |         if (r2 != r3) {
    0x0000c97c bne 0xc9f2                                        |             goto label_9;
                                                                 |         }
    0x0000c97e mov r0, r6                                        |         r0 = r6;
    0x0000c980 add.w sp, sp, 0x1080                              |         
    0x0000c984 pop.w {r4, r5, r6, r7, r8, sb, sl, pc}            |         
                                                                 | label_4:
    0x0000c988 blx 0x1be4                                        |         r0 = isoc99_sscanf ();
    0x0000c98c ldr r0, [r0]                                      |         r0 = *(r0);
    0x0000c98e rsbs r6, r0, 0                                    |         r6 = r0 - ;
    0x0000c990 blx 0x1b18                                        |         system (r0)
    0x0000c994 mov r0, r5                                        |         r0 = r5;
    0x0000c996 blx 0x19a0                                        |         fcn_000019a0 ();
    0x0000c99a b 0xc964                                          |         
                                                                 |     } while (1);
                                                                 | label_7:
    0x0000c99c str r5, [r4, 0xc]                                 |     *((r4 + 0xc)) = r5;
    0x0000c99e b 0xc95a                                          |     goto label_0;
                                                                 | label_6:
    0x0000c9a0 sub.w r3, r8, 0x18                                |     r3 -= var_78h;
    0x0000c9a4 mov r0, r6                                        |     r0 = r6;
    0x0000c9a6 str r3, [sp, 4]                                   |     var_4h_2 = r3;
    0x0000c9a8 mov r1, sl                                        |     r1 = sl;
    0x0000c9aa str r4, [sp]                                      |     *(sp) = r4;
    0x0000c9ac mov r3, r4                                        |     r3 = r4;
    0x0000c9ae ldr r2, [sb, -0x74]                               |     r2 = var_14h;
    0x0000c9b2 bl 0xc7f0                                         |     r0 = fcn_0000c7f0 (r0, r1, r2, r3, r4, r5);
    0x0000c9b6 subs r6, r0, 0                                    |     r6 = r0 - 0;
                                                                 |     if (r6 >= r0) {
    0x0000c9b8 blt 0xc9cc                                        |         
    0x0000c9ba ldr r3, [sb, -0x78]                               |         r3 = var_78h;
    0x0000c9be mov r6, r4                                        |         r6 = r4;
    0x0000c9c0 str r5, [r3, 0xc]                                 |         *((r3 + 0xc)) = r5;
    0x0000c9c2 str r3, [r7]                                      |         *(r7) = r3;
    0x0000c9c4 b 0xc964                                          |         goto label_1;
                                                                 | label_2:
    0x0000c9c6 mvn r6, 1                                         |         r6 = ~1;
    0x0000c9ca b 0xc964                                          |         goto label_1;
                                                                 |     }
    0x0000c9cc mov r0, r5                                        |     r0 = r5;
    0x0000c9ce blx 0x19a0                                        |     fcn_000019a0 ();
    0x0000c9d2 b 0xc964                                          |     goto label_1;
                                                                 | label_8:
    0x0000c9d4 mov r0, r5                                        |     r0 = r5;
    0x0000c9d6 mvn r6, 0x10                                      |     r6 = ~0x10;
    0x0000c9d8 lsls r0, r2, 0x18                                 |     r0 = r2 << 0x18;
    0x0000c9da blx 0x19a0                                        |     fcn_000019a0 ();
    0x0000c9de b 0xc964                                          |     goto label_1;
                                                                 | label_3:
    0x0000c9e0 mvn r6, 0xb                                       |     r6 = ~0xb;
    0x0000c9e4 b 0xc964                                          |     goto label_1;
                                                                 | label_5:
    0x0000c9e6 mov r0, r5                                        |     r0 = r5;
    0x0000c9e8 mvn r6, 1                                         |     r6 = ~1;
    0x0000c9ec blx 0x19a0                                        |     fcn_000019a0 ();
    0x0000c9f0 b 0xc964                                          |     goto label_1;
                                                                 | label_9:
    0x0000c9f2 blx 0x1a1c                                        |     stat64 ();
    0x0000c9f6 nop                                               |     
    0x0000c9f8 str r5, [sp, 0xe8]                                |     var_e8h = r5;
    0x0000c9fa movs r1, r0                                       |     r1 = r0;
    0x0000c9fc lsls r4, r7, 6                                    |     r4 = r7 << 6;
    0x0000c9fe movs r0, r0                                       |     
    0x0000ca00 str r4, [sp, 0x2a8]                               |     var_2a8h = r4;
    0x0000ca02 movs r1, r0                                       |     r1 = r0;
                                                                 | }
    ; assembly                                                       | /* r2dec pseudo code output */
                                                                     | /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/bin/kmod @ 0xcb70 */
                                                                     | #include <stdint.h>
                                                                     |  
                                                                     | #define BIT_MASK(t,v) ((t)(-((v)!= 0)))&(((t)-1)>>((sizeof(t)*CHAR_BIT)-(v)))
                                                                     |  
    ; (fcn) fcn.0000cb70 ()                                          | void fcn_0000cb70 (int16_t arg1, int16_t arg2) {
                                                                     |     int16_t var_0h;
                                                                     |     int16_t var_4h;
                                                                     |     int16_t var_8h;
                                                                     |     int16_t var_ch;
                                                                     |     int16_t var_ch_2;
                                                                     |     int32_t var_8h_2;
                                                                     |     FILE * stream;
                                                                     |     int16_t var_20h;
                                                                     |     int16_t var_190h;
                                                                     |     int16_t var_270h;
                                                                     |     int16_t var_1000h;
                                                                     |     int32_t var_0h_2;
                                                                     |     int16_t var_1020h;
                                                                     |     r0 = arg1;
                                                                     |     r1 = arg2;
    0x0000cb70 blmi 0x1cdf540                                        |     __asm ("blmi 0x1cdf540");
    0x0000cb74 push.w {r4, r5, r6, r7, r8, sb, sl, fp, lr}           |     
    0x0000cb78 sub.w sp, sp, 0x1020                                  |     
    0x0000cb7c add r2, pc                                            |     r2 += pc;
    0x0000cb7e sub sp, 4                                             |     
    0x0000cb80 mov r6, r0                                            |     r6 = r0;
    0x0000cb82 add.w r0, sp, 0x1000                                  |     r0 += var_1000h;
    0x0000cb86 ldr r3, [r2, r3]                                      |     r3 = *((r2 + r3));
    0x0000cb88 adds r0, 0x1c                                         |     r0 += 0x1c;
    0x0000cb8a ldr r3, [r3]                                          |     r3 = *(r3);
    0x0000cb8c str r3, [r0]                                          |     *(r0) = r3;
    0x0000cb8e mov.w r3, 0                                           |     r3 = 0;
    0x0000cb92 ldrb.w r3, [r6, 0x30]                                 |     r3 = *((r6 + 0x30));
    0x0000cb96 lsls r2, r3, 0x1f                                     |     r2 = r3 << 0x1f;
    0x0000cb98 it mi                                                 |     
                                                                     |     if (r2 >= r3) {
    0x0000cb9a ldrmi r4, [r6, 0x28]                                  |         r4 = *((r6 + 0x28));
                                                                     |     }
                                                                     |     if (r2 < r3) {
    0x0000cb9c bmi.w 0xccaa                                          |         goto label_2;
                                                                     |     }
    0x0000cba0 ldr r5, [r6, 0x10]                                    |     r5 = *((r6 + 0x10));
    0x0000cba2 ldr.w sb, [r6]                                        |     sb = *(r6);
    0x0000cba6 cmp r5, 0                                             |     
                                                                     |     if (r5 != 0) {
    0x0000cba8 bne.w 0xcd28                                          |         goto label_6;
                                                                     |     }
    0x0000cbac mov r4, r1                                            |     r4 = r1;
    0x0000cbae orr r3, r3, 1                                         |     r3 |= 1;
    0x0000cbb2 movs r1, 0x3a                                         |     r1 = 0x3a;
    0x0000cbb4 mov r0, r4                                            |     r0 = r4;
    0x0000cbb6 strb.w r3, [r6, 0x30]                                 |     *((r6 + 0x30)) = r3;
    0x0000cbba blx 0x1bbc                                            |     r0 = fcn_00001bbc ();
    0x0000cbbe mov r8, r0                                            |     r8 = r0;
    0x0000cbc0 cmp r0, 0                                             |     
                                                                     |     if (r0 == 0) {
    0x0000cbc2 beq.w 0xcce6                                          |         goto label_4;
                                                                     |     }
    0x0000cbc6 strb r5, [r0]                                         |     *(r0) = r5;
    0x0000cbc8 ldr r0, [r6]                                          |     r0 = *(r6);
    0x0000cbca bl 0x9af8                                             |     r0 = fcn_00009af8 (r0);
    0x0000cbce mov r7, r0                                            |     r7 = r0;
    0x0000cbd0 blx 0x1bb0                                            |     r0 = fcn_00001bb0 ();
    0x0000cbd4 adds r3, r0, 2                                        |     r3 = r0 + 2;
    0x0000cbd6 mov sl, r0                                            |     sl = r0;
    0x0000cbd8 cmp.w r3, 0x1000                                      |     
    0x0000cbdc str r3, [sp]                                          |     *(sp) = r3;
                                                                     |     if (r3 >= 0x1000) {
    0x0000cbde bhs.w 0xcce6                                          |         goto label_4;
                                                                     |     }
    0x0000cbe2 mov r1, r7                                            |     r1 = r7;
    0x0000cbe4 add r7, sp, 0x20                                      |     r7 += var_20h;
    0x0000cbe6 subs r3, r7, 4                                        |     r3 -= stream;
    0x0000cbe8 mov r2, sl                                            |     r2 = sl;
    0x0000cbea mov r0, r3                                            |     r0 = r3;
    0x0000cbec str r3, [sp, 4]                                       |     var_4h = r3;
    0x0000cbee mov.w r3, 0x1000                                      |     r3 = 0x1000;
    0x0000cbf2 add.w fp, sl, 1                                       |     
    0x0000cbf6 blx 0x1a4c                                            |     fwrite (r0, r1, r2, r3);
    0x0000cbfa ldr r3, [r6, 0xc]                                     |     r3 = *((r6 + 0xc));
    0x0000cbfc movs r2, 0x2f                                         |     r2 = 0x2f;
    0x0000cbfe add sl, r7                                            |     sl += r7;
    0x0000cc00 strb r2, [sl, -0x4]                                   |     *((sl - 0x4)) = r2;
    0x0000cc04 add.w r2, r7, fp                                      |     r2 = r7 + fp;
    0x0000cc08 strb r5, [r2, -0x4]                                   |     *((r2 - 0x4)) = r5;
    0x0000cc0c cmp r3, 0                                             |     
                                                                     |     if (r3 == 0) {
    0x0000cc0e beq 0xccd0                                            |         goto label_7;
                                                                     |     }
                                                                     | label_3:
    0x0000cc10 ldr r1, [pc, 0x130]                                   |     
    0x0000cc12 sub.w sl, r7, 0xc                                     |     sl -= var_ch_2;
    0x0000cc16 add.w r0, r8, 1                                       |     r0 = r8 + 1;
    0x0000cc1a mov r2, sl                                            |     r2 = sl;
    0x0000cc1c add r1, pc                                            |     r1 = 0x19964;
    0x0000cc1e blx 0x1aac                                            |     r0 = opendir ();
    0x0000cc22 cmp r0, 0                                             |     
                                                                     |     if (r0 == 0) {
    0x0000cc24 beq 0xcd1e                                            |         goto label_8;
                                                                     |     }
    0x0000cc26 ldr r3, [sp, 4]                                       |     r3 = var_4h;
    0x0000cc28 mov.w r8, 0                                           |     r8 = 0;
    0x0000cc2c str r6, [sp, 0xc]                                     |     var_ch = r6;
    0x0000cc2e mov r4, r8                                            |     r4 = r8;
    0x0000cc30 mov r6, r0                                            |     r6 = r0;
    0x0000cc32 add r3, fp                                            |     r3 += fp;
    0x0000cc34 ldr.w fp, [pc, 0x110]                                 |     
    0x0000cc38 str r3, [sp, 8]                                       |     var_8h = r3;
    0x0000cc3a add fp, pc                                            |     fp = 0x19986;
    0x0000cc3c b 0xcc7a                                              |     goto label_9;
                                                                     | label_0:
    0x0000cc3e mov r1, r6                                            |     r1 = r6;
    0x0000cc40 adds r2, r0, 1                                        |     r2 = r0 + 1;
    0x0000cc42 ldr r0, [sp, 8]                                       |     r0 = var_8h;
    0x0000cc44 blx 0x19c8                                            |     mmap64 ();
    0x0000cc48 ldr r6, [sp, 4]                                       |     r6 = var_4h;
                                                                     |     do {
    0x0000cc4a mov r1, r6                                            |         r1 = r6;
    0x0000cc4c sub.w r2, r7, 8                                       |         r2 -= var_8h_2;
    0x0000cc50 mov r0, sb                                            |         r0 = sb;
    0x0000cc52 bl 0xc8c4                                             |         r0 = fcn_0000c8c4 (r0, r1, r2);
    0x0000cc56 subs r4, r0, 0                                        |         r4 = r0 - 0;
                                                                     |         if (r4 < r0) {
    0x0000cc58 blt 0xccea                                            |             goto label_10;
                                                                     |         }
    0x0000cc5a ldr r1, [r7, -0x8]                                    |         r1 = *((r7 - 0x8));
    0x0000cc5e mov r0, r5                                            |         r0 = r5;
    0x0000cc60 bl 0xa3c8                                             |         fcn_0000a3c8 (r0, r1);
    0x0000cc64 mov r2, sl                                            |         r2 = sl;
    0x0000cc66 mov r5, r0                                            |         r5 = r0;
    0x0000cc68 mov r1, fp                                            |         r1 = fp;
    0x0000cc6a movs r0, 0                                            |         r0 = 0;
    0x0000cc6c blx 0x1aac                                            |         opendir ();
    0x0000cc70 add.w r8, r8, 1                                       |         r8++;
    0x0000cc74 mov r6, r0                                            |         r6 = r0;
    0x0000cc76 cmp r0, 0                                             |         
                                                                     |         if (r0 == 0) {
    0x0000cc78 beq 0xccf4                                            |             goto label_11;
                                                                     |         }
                                                                     | label_9:
    0x0000cc7a movs r3, 0                                            |         r3 = 0;
    0x0000cc7c str r3, [r7, -0x8]                                    |         *((r7 - 0x8)) = r3;
    0x0000cc80 ldrb r3, [r6]                                         |         r3 = *(r6);
    0x0000cc82 cmp r3, 0x2f                                          |         
    0x0000cc84 beq 0xcc4a                                            |         
                                                                     |     } while (r3 == 0x2f);
    0x0000cc86 mov r0, r6                                            |     r0 = r6;
    0x0000cc88 blx 0x1bb0                                            |     fcn_00001bb0 ();
    0x0000cc8c ldr r3, [sp]                                          |     r3 = *(sp);
    0x0000cc8e add r3, r0                                            |     r3 += r0;
    0x0000cc90 cmp.w r3, 0x1000                                      |     
                                                                     |     if (r3 <= 0x1000) {
    0x0000cc94 blo 0xcc3e                                            |         goto label_0;
                                                                     |     }
    0x0000cc96 ldr r6, [sp, 0xc]                                     |     r6 = var_ch;
                                                                     | label_1:
    0x0000cc98 mov r0, r5                                            |     r0 = r5;
    0x0000cc9a bl 0xcb50                                             |     fcn_0000cb50 (r0);
    0x0000cc9e ldrb.w r3, [r6, 0x30]                                 |     r3 = *((r6 + 0x30));
    0x0000cca2 bfc r3, 0, 1                                          |     value_0 = BIT_MASK (1, );
                                                                     |     value_0 = ~value_0;
                                                                     |     r3 &= value_0;
    0x0000cca6 strb.w r3, [r6, 0x30]                                 |     *((r6 + 0x30)) = r3;
                                                                     |     do {
                                                                     | label_2:
    0x0000ccaa ldr r2, [pc, 0xa0]                                    |         
    0x0000ccac add.w r1, sp, 0x1000                                  |         r1 += var_1000h;
    0x0000ccb0 ldr r3, [pc, 0x8c]                                    |         r3 = *(0xcd40);
    0x0000ccb2 adds r1, 0x1c                                         |         r1 += 0x1c;
    0x0000ccb4 add r2, pc                                            |         r2 = 0x19a06;
    0x0000ccb6 ldr r3, [r2, r3]                                      |         r3 = *(0x19a06);
    0x0000ccb8 ldr r2, [r3]                                          |         r2 = *(0x19a06);
    0x0000ccba ldr r3, [r1]                                          |         r3 = *(r1);
    0x0000ccbc eors r2, r3                                           |         r2 ^= r3;
    0x0000ccbe mov.w r3, 0                                           |         r3 = 0;
                                                                     |         if (r2 != r3) {
    0x0000ccc2 bne 0xcd24                                            |             goto label_12;
                                                                     |         }
    0x0000ccc4 mov r0, r4                                            |         r0 = r4;
    0x0000ccc6 add.w sp, sp, 0x1020                                  |         
    0x0000ccca add sp, 4                                             |         
    0x0000cccc pop.w {r4, r5, r6, r7, r8, sb, sl, fp, pc}            |         
                                                                     | label_7:
    0x0000ccd0 ldrb r3, [r4]                                         |         r3 = *(r4);
    0x0000ccd2 cmp r3, 0x2f                                          |         
                                                                     |         if (r3 == 0x2f) {
    0x0000ccd4 beq 0xcd0e                                            |             goto label_13;
                                                                     |         }
    0x0000ccd6 mov r0, r4                                            |         r0 = r4;
    0x0000ccd8 blx 0x1bb0                                            |         fcn_00001bb0 ();
    0x0000ccdc ldr r3, [sp]                                          |         r3 = *(sp);
    0x0000ccde add r3, r0                                            |         r3 += r0;
    0x0000cce0 cmp.w r3, 0x1000                                      |         
    0x0000cce2 ldrsh r0, [r0, r6]                                    |         r0 = *((r0 + r6));
                                                                     |         if (r3 <= 0x1000) {
    0x0000cce4 blo 0xcd00                                            |             goto label_14;
                                                                     |         }
                                                                     | label_4:
    0x0000cce6 movs r4, 0                                            |         r4 = 0;
    0x0000cce8 b 0xccaa                                              |         
                                                                     |     } while (1);
                                                                     | label_10:
    0x0000ccea rsbs r0, r4, 0                                        |     r0 = r4 - ;
    0x0000ccec ldr r6, [sp, 0xc]                                     |     r6 = var_ch;
    0x0000ccee blx 0x1b18                                            |     system (r0)
    0x0000ccf2 b 0xcc98                                              |     goto label_1;
                                                                     | label_11:
    0x0000ccf4 ldr r6, [sp, 0xc]                                     |     r6 = var_ch;
                                                                     | label_5:
    0x0000ccf6 mov r4, r8                                            |     r4 = r8;
    0x0000ccf8 str r5, [r6, 0x10]                                    |     *((r6 + 0x10)) = r5;
    0x0000ccfa str.w r8, [r6, 0x28]                                  |     __asm ("str.w r8, [r6, 0x28]");
    0x0000ccfe b 0xccaa                                              |     goto label_2;
                                                                     | label_14:
    0x0000cd00 mov r1, r4                                            |     r1 = r4;
    0x0000cd02 ldr r4, [sp, 4]                                       |     r4 = var_4h;
    0x0000cd04 adds r2, r0, 1                                        |     r2 = r0 + 1;
    0x0000cd06 add.w r0, r4, fp                                      |     r0 = r4 + fp;
    0x0000cd0a blx 0x19c8                                            |     mmap64 ();
                                                                     | label_13:
    0x0000cd0e mov r0, r4                                            |     r0 = r4;
    0x0000cd10 blx 0x1a10                                            |     stack_chk_fail ();
    0x0000cd14 str r0, [r6, 0xc]                                     |     *((r6 + 0xc)) = r0;
    0x0000cd16 cmp r0, 0                                             |     
                                                                     |     if (r0 != 0) {
    0x0000cd18 bne.w 0xcc10                                          |         goto label_3;
                                                                     |     }
    0x0000cd1c b 0xcce6                                              |     goto label_4;
                                                                     | label_8:
    0x0000cd1e mov r5, r0                                            |     r5 = r0;
    0x0000cd20 mov r8, r0                                            |     r8 = r0;
    0x0000cd22 b 0xccf6                                              |     goto label_5;
                                                                     | label_12:
    0x0000cd24 blx 0x1a1c                                            |     stat64 ();
                                                                     | label_6:
    0x0000cd28 ldr r3, [pc, 0x24]                                    |     
    0x0000cd2a movs r2, 0x95                                         |     r2 = 0x95;
    0x0000cd2c ldr r1, [pc, 0x24]                                    |     
    0x0000cd2e ldr r0, [pc, 0x28]                                    |     
    0x0000cd30 add r3, pc                                            |     r3 = 0x19a84;
    0x0000cd32 add r1, pc                                            |     r1 = 0x19a8a;
    0x0000cd34 add r0, pc                                            |     r0 = 0x19a92;
    0x0000cd36 blx 0x1de0                                            |     fcn_00001de0 ();
    0x0000cd3a nop                                                   |     
    0x0000cd3c str r2, [sp, 0x270]                                   |     var_270h = r2;
    0x0000cd3e movs r1, r0                                           |     r1 = r0;
    0x0000cd40 lsls r4, r7, 6                                        |     r4 = r7 << 6;
    0x0000cd42 movs r0, r0                                           |     
    0x0000cd44 ldr r0, [r6, 0x48]                                    |     r0 = *((r6 + 0x48));
    0x0000cd46 movs r0, r0                                           |     
    0x0000cd48 ldr r2, [r2, 0x48]                                    |     r2 = *((r2 + 0x48));
    0x0000cd4a movs r0, r0                                           |     
    0x0000cd4c str r1, [sp, 0x190]                                   |     var_190h = r1;
    0x0000cd4e movs r1, r0                                           |     r1 = r0;
    0x0000cd50 ldrb r0, [r1, 0x1b]                                   |     r0 = *((r1 + 0x1b));
    0x0000cd52 movs r0, r0                                           |     
    0x0000cd54 ldrb r2, [r4, 0x14]                                   |     r2 = *((r4 + 0x14));
    0x0000cd56 movs r0, r0                                           |     
    0x0000cd58 ldrb r0, [r0, 0x15]                                   |     r0 = *((r0 + 0x15));
    0x0000cd5a movs r0, r0                                           |     
                                                                     | }
    ; assembly                                       | /* r2dec pseudo code output */
                                                     | /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/bin/kmod @ 0xd050 */
                                                     | #include <stdint.h>
                                                     |  
    ; (fcn) fcn.0000d050 ()                          | void fcn_0000d050 (int16_t arg1, int16_t arg2, uint32_t arg3) {
                                                     |     r0 = arg1;
                                                     |     r1 = arg2;
                                                     |     r2 = arg3;
    0x0000d050 invalid                               |     
    0x0000d054 mov r7, r1                            |     r7 = r1;
    0x0000d056 mov r6, r2                            |     r6 = r2;
    0x0000d058 cmp r2, 0                             |     
                                                     |     if (r2 == 0) {
    0x0000d05a beq 0xd0f2                            |         goto label_7;
                                                     |     }
                                                     | label_1:
    0x0000d05c cmp r4, 0                             |     
                                                     |     if (r4 == 0) {
    0x0000d05e beq 0xd12c                            |         goto label_8;
                                                     |     }
    0x0000d060 mov r0, r4                            |     r0 = r4;
    0x0000d062 bl 0xcfbc                             |     r0 = fcn_0000cfbc (r0);
    0x0000d066 mov r1, r0                            |     r1 = r0;
    0x0000d068 cmp r0, 0                             |     
                                                     |     if (r0 == 0) {
    0x0000d06a beq 0xd12c                            |         goto label_8;
                                                     |     }
    0x0000d06c ldr r0, [r4, 0x24]                    |     r0 = *((r4 + 0x24));
    0x0000d06e cmp r0, 0                             |     
                                                     |     if (r0 == 0) {
    0x0000d070 beq 0xd0f8                            |         goto label_9;
                                                     |     }
                                                     | label_2:
    0x0000d072 bl 0xe990                             |     r0 = fcn_0000e990 (r0);
                                                     |     if (r0 != 0) {
    0x0000d076 cbz r0, 0xd0a8                        |         
    0x0000d078 lsls r5, r7, 1                        |         r5 = r7 << 1;
    0x0000d07a lsls r1, r7, 0x1e                     |         r1 = r7 << 0x1e;
    0x0000d07c ldr r0, [r4, 0x24]                    |         r0 = *((r4 + 0x24));
    0x0000d07e and r5, r5, 2                         |         r5 &= 2;
    0x0000d082 it mi                                 |         
                                                     |         if (r1 >= r7) {
    0x0000d084 orrmi r5, r5, 1                       |             r5 |= 1;
                                                     |         }
    0x0000d088 bl 0xe994                             |         fcn_0000e994 (r0);
    0x0000d08a stc2 p6, c4, [r4], {0x2b}             |         __asm ("stc2 p6, c4, [r4], {0x2b}");
    0x0000d08c mov r3, r5                            |         r3 = r5;
    0x0000d08e mov r1, r0                            |         r1 = r0;
    0x0000d090 mov r2, r6                            |         r2 = r6;
    0x0000d092 movw r0, 0x17b                        |         r0 = 0x17b;
    0x0000d096 blx 0x1ba4                            |         fcn_00001ba4 ();
    0x0000d098 stc p6, c4, [r6, 0x14]                |         __asm ("stc p6, c4, [r6, 0x14]");
                                                     |         if (r0 == 0) {
    0x0000d09c cbz r0, 0xd0d2                        |             goto label_6;
                                                     |         }
    0x0000d09e blx 0x1be4                            |         r0 = isoc99_sscanf ();
    0x0000d0a2 ldr r3, [r0]                          |         r3 = *(r0);
    0x0000d0a4 cmp r3, 0x26                          |         
                                                     |         if (r3 != 0x26) {
    0x0000d0a6 bne 0xd0c6                            |             goto label_10;
                                                     |         }
                                                     |     }
    0x0000d0a8 lsls r5, r7, 0x1e                     |     r5 = r7 << 0x1e;
    0x0000d0aa ldr r0, [r4, 0x24]                    |     r0 = *((r4 + 0x24));
                                                     |     if (r5 != r7) {
    0x0000d0ac bne 0xd0d6                            |         goto label_11;
                                                     |     }
    0x0000d0ae bl 0xe984                             |     r0 = fcn_0000e984 (r0);
    0x0000d0b2 mov r5, r0                            |     r5 = r0;
                                                     | label_0:
    0x0000d0b4 ldr r0, [r4, 0x24]                    |     r0 = *((r4 + 0x24));
    0x0000d0b6 bl 0xe988                             |     fcn_0000e988 (r0);
    0x0000d0ba mov r2, r6                            |     r2 = r6;
    0x0000d0bc mov r1, r0                            |     r1 = r0;
    0x0000d0be mov r0, r5                            |     r0 = r5;
    0x0000d0c0 blx 0x1d28                            |     r0 = fopen64 ();
    0x0000d0c4 mov r5, r0                            |     r5 = r0;
                                                     | label_10:
    0x0000d0c6 cmp r5, 0                             |     
    0x0000d0c8 bge 0xd0d2                            |     
                                                     |     while (r0 == 0) {
                                                     | label_3:
    0x0000d0ca blx 0x1be4                            |         r0 = isoc99_sscanf ();
    0x0000d0ce ldr r5, [r0]                          |         r5 = *(r0);
    0x0000d0d0 rsbs r5, r5, 0                        |         r5 -= ;
                                                     | label_6:
    0x0000d0d2 mov r0, r5                            |         r0 = r5;
    0x0000d0d4 pop {r3, r4, r5, r6, r7, pc}          |         
                                                     | label_11:
    0x0000d0d6 bl 0xe864                             |         r0 = fcn_0000e864 (r0);
    0x0000d0da mov r5, r0                            |         r5 = r0;
    0x0000d0dc cmp r0, 0                             |         
    0x0000d0de beq 0xd0ca                            |         
                                                     |     }
    0x0000d0e0 lsls r2, r7, 0x1e                     |     r2 = r7 << 0x1e;
                                                     |     if (r2 < r7) {
    0x0000d0e2 bmi 0xd118                            |         goto label_12;
                                                     |     }
                                                     | label_5:
    0x0000d0e4 lsls r3, r7, 0x1f                     |     r3 = r7 << 0x1f;
                                                     |     if (r3 < r7) {
    0x0000d0e6 bmi 0xd106                            |         goto label_13;
                                                     |     }
                                                     | label_4:
    0x0000d0e8 mov r0, r5                            |     r0 = r5;
    0x0000d0ea bl 0xefa8                             |     r0 = fcn_0000efa8 (r0);
    0x0000d0ee mov r5, r0                            |     r5 = r0;
    0x0000d0f0 b 0xd0b4                              |     goto label_0;
                                                     | label_7:
    0x0000d0f2 ldr r6, [pc, 0x40]                    |     
    0x0000d0f4 add r6, pc                            |     r6 = 0x1a22e;
    0x0000d0f6 b 0xd05c                              |     goto label_1;
                                                     | label_9:
    0x0000d0f8 ldr r0, [r4]                          |     r0 = *(r4);
    0x0000d0fa bl 0xe87c                             |     fcn_0000e87c (r0, r1);
    0x0000d0fe str r0, [r4, 0x24]                    |     *((r4 + 0x24)) = r0;
    0x0000d100 cmp r0, 0                             |     
                                                     |     if (r0 != 0) {
    0x0000d102 bne 0xd072                            |         goto label_2;
                                                     |     }
    0x0000d104 b 0xd0ca                              |     goto label_3;
                                                     | label_13:
    0x0000d106 mov r0, r5                            |     r0 = r5;
    0x0000d108 bl 0xf670                             |     fcn_0000f670 (r0);
    0x0000d10a invalid                               |     
                                                     |     if (r0 >= 0) {
    0x0000d10e bge 0xd0e8                            |         goto label_4;
                                                     |     }
    0x0000d110 rsbs r0, r0, 0                        |     r0 -= ;
    0x0000d112 blx 0x1b18                            |     system (r0)
    0x0000d114 stc p7, c14, [r2, -0x39c]             |     __asm ("stc p7, c14, [r2, -0x39c]");
                                                     | label_12:
    0x0000d118 ldr r1, [pc, 0x1c]                    |     
    0x0000d11a add r1, pc                            |     r1 = 0x1a256;
    0x0000d11c bl 0xf474                             |     r0 = fcn_0000f474 (r0, r1);
    0x0000d120 cmp r0, 0                             |     
                                                     |     if (r0 >= 0) {
    0x0000d122 bge 0xd0e4                            |         goto label_5;
                                                     |     }
    0x0000d124 rsbs r0, r0, 0                        |     r0 -= ;
    0x0000d126 blx 0x1b18                            |     system (r0)
    0x0000d12a b 0xd0e4                              |     goto label_5;
                                                     | label_8:
    0x0000d12c mvn r5, 1                             |     r5 = ~1;
    0x0000d130 b 0xd0d2                              |     goto label_6;
                                                     | }
    ; assembly                                               | /* r2dec pseudo code output */
                                                             | /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/bin/kmod @ 0xd2e4 */
                                                             | #include <stdint.h>
                                                             |  
                                                             | #define BIT_MASK(t,v) ((t)(-((v)!= 0)))&(((t)-1)>>((sizeof(t)*CHAR_BIT)-(v)))
                                                             |  
    ; (fcn) fcn.0000d2e4 ()                                  | void fcn_0000d2e4 (uint32_t arg1, uint32_t arg2, uint32_t arg3) {
                                                             |     int16_t var_4h_2;
                                                             |     int16_t var_8h;
                                                             |     int16_t var_ch;
                                                             |     int16_t var_0h;
                                                             |     int16_t var_4h;
                                                             |     r0 = arg1;
                                                             |     r1 = arg2;
                                                             |     r2 = arg3;
    0x0000d2e4 cmp r2, 0                                     |     
    0x0000d2e6 it ne                                         |     
                                                             |     if (r2 != 0) {
    0x0000d2e8 cmpne r1, 0                                   |         __asm ("cmpne r1, 0");
                                                             |     }
    0x0000d2ea push.w {r4, r5, r6, r7, r8, sb, lr}           |     
    0x0000d2ee mov r8, r1                                    |     r8 = r1;
    0x0000d2f0 ldr r1, [pc, 0xdc]                            |     
    0x0000d2f2 mov r7, r2                                    |     r7 = r2;
    0x0000d2f4 it eq                                         |     
                                                             |     if (r2 != 0) {
    0x0000d2f6 moveq r3, 1                                   |         r3 = 1;
                                                             |     }
    0x0000d2f8 ldr r2, [pc, 0xd8]                            |     r2 = *(0xd3d4);
    0x0000d2fa it ne                                         |     
                                                             |     if (r2 == 0) {
    0x0000d2fc movne r3, 0                                   |         r3 = 0;
                                                             |     }
    0x0000d2fe add r1, pc                                    |     r1 = 0x1a6d2;
    0x0000d300 cmp r0, 0                                     |     
    0x0000d302 it eq                                         |     
                                                             |     if (r0 != 0) {
    0x0000d304 orreq r3, r3, 1                               |         r3 |= 1;
                                                             |     }
    0x0000d308 sub sp, 0xc                                   |     
    0x0000d30a ldr r2, [r1, r2]                              |     
    0x0000d30c ldr r2, [r2]                                  |     r2 = *(0x1a6d2);
    0x0000d30e str r2, [sp, 4]                               |     var_4h = r2;
    0x0000d310 mov.w r2, 0                                   |     r2 = 0;
    0x0000d314 cmp r3, 0                                     |     
                                                             |     if (r3 != 0) {
    0x0000d316 bne 0xd39c                                    |         goto label_1;
                                                             |     }
    0x0000d318 ldr.w r3, [r8]                                |     r3 = *(r8);
    0x0000d31c cmp r3, 0                                     |     
                                                             |     if (r3 != 0) {
    0x0000d31e bne 0xd3b6                                    |         goto label_2;
                                                             |     }
    0x0000d320 ldr r3, [r7]                                  |     r3 = *(r7);
    0x0000d322 cmp r3, 0                                     |     
                                                             |     if (r3 != 0) {
    0x0000d324 bne 0xd3a2                                    |         goto label_3;
                                                             |     }
    0x0000d326 mov r5, r0                                    |     r5 = r0;
    0x0000d328 ldr r0, [r0]                                  |     r0 = *(r0);
    0x0000d32a bl 0xa34c                                     |     fcn_0000a34c (r0);
    0x0000d32e ldr r4, [r0, 0x18]                            |     r4 = *((r0 + 0x18));
    0x0000d330 mov sb, r0                                    |     sb = r0;
                                                             |     if (r4 == 0) {
                                                             |         do {
    0x0000d332 cbz r4, 0xd350                                |             goto label_4;
                                                             |         }
    0x0000d334 mov r0, r4                                    |         r0 = r4;
    0x0000d336 bl 0xa504                                     |         fcn_0000a504 (r0);
    0x0000d33a ldr r1, [r5, 8]                               |         r1 = *((r5 + 8));
    0x0000d33c movs r2, 0                                    |         r2 = 0;
    0x0000d33e blx 0x1ac4                                    |         r0 = open64 ();
    0x0000d342 mov r6, r0                                    |         r6 = r0;
                                                             |         if (r0 == 0) {
    0x0000d344 cbz r0, 0xd354                                |             goto label_5;
                                                             |         }
    0x0000d346 ldr r4, [r4]                                  |         r4 = *(r4);
    0x0000d348 ldr.w r3, [sb, 0x18]                          |         r3 = *((sb + 0x18));
    0x0000d34c cmp r4, r3                                    |         
    0x0000d34e bne 0xd332                                    |         
                                                             |     } while (r4 != r3);
                                                             | label_4:
    0x0000d350 movs r6, 0                                    |     r6 = 0;
    0x0000d352 b 0xd380                                      |     goto label_6;
                                                             | label_5:
    0x0000d354 mov sb, sp                                    |     sb = sp;
    0x0000d356 mov r0, r4                                    |     r0 = r4;
    0x0000d358 mov r1, sb                                    |     r1 = sb;
    0x0000d35a bl 0xa7dc                                     |     fcn_0000a7dc (r0, r1);
    0x0000d35e ldr r2, [sp]                                  |     r2 = *(sp);
    0x0000d360 mov r1, r0                                    |     r1 = r0;
    0x0000d362 ldr r0, [r5]                                  |     r0 = *(r5);
    0x0000d364 bl 0xcec4                                     |     fcn_0000cec4 (r0, r1, r2);
    0x0000d368 mov r1, sb                                    |     r1 = sb;
    0x0000d36a str.w r0, [r8]                                |     __asm ("str.w r0, [r8]");
    0x0000d36e mov r0, r4                                    |     r0 = r4;
    0x0000d370 bl 0xa7e8                                     |     fcn_0000a7e8 (r0, r1);
    0x0000d374 ldr r2, [sp]                                  |     r2 = *(sp);
    0x0000d376 mov r1, r0                                    |     r1 = r0;
    0x0000d378 ldr r0, [r5]                                  |     r0 = *(r5);
    0x0000d37a bl 0xcec4                                     |     fcn_0000cec4 (r0, r1, r2);
    0x0000d37e str r0, [r7]                                  |     *(r7) = r0;
                                                             |     do {
                                                             | label_6:
    0x0000d380 ldr r2, [pc, 0x54]                            |         
    0x0000d382 ldr r3, [pc, 0x50]                            |         r3 = *(0xd3d6);
    0x0000d384 add r2, pc                                    |         r2 = 0x1a760;
    0x0000d386 ldr r3, [r2, r3]                              |         r3 = *(0x1a760);
    0x0000d388 ldr r2, [r3]                                  |         r2 = *(0x1a760);
    0x0000d38a ldr r3, [sp, 4]                               |         r3 = var_4h;
    0x0000d38c eors r2, r3                                   |         r2 ^= r3;
    0x0000d38e mov.w r3, 0                                   |         r3 = 0;
                                                             |         if (r2 != r3) {
    0x0000d392 bne 0xd3ca                                    |             goto label_7;
                                                             |         }
    0x0000d394 mov r0, r6                                    |         r0 = r6;
    0x0000d396 add sp, 0xc                                   |         
    0x0000d398 pop.w {r4, r5, r6, r7, r8, sb, pc}            |         
                                                             | label_1:
    0x0000d39c mvn r6, 1                                     |         r6 = ~1;
    0x0000d3a0 b 0xd380                                      |         
                                                             |     } while (1);
                                                             | label_3:
    0x0000d3a2 ldr r3, [pc, 0x38]                            |     
    0x0000d3a4 movw r2, 0x60a                                |     r2 = 0x60a;
    0x0000d3a8 ldr r1, [pc, 0x34]                            |     
    0x0000d3aa ldr r0, [pc, 0x38]                            |     
    0x0000d3ac add r3, pc                                    |     r3 = 0x1a78e;
    0x0000d3ae add r1, pc                                    |     r1 = 0x1a792;
    0x0000d3b0 add r0, pc                                    |     r0 = 0x1a79a;
    0x0000d3b2 blx 0x1de0                                    |     fcn_00001de0 ();
                                                             | label_2:
    0x0000d3b6 ldr r3, [pc, 0x30]                            |     
    0x0000d3b8 movw r2, 0x609                                |     r2 = 0x609;
    0x0000d3bc ldr r1, [pc, 0x2c]                            |     
    0x0000d3be ldr r0, [pc, 0x30]                            |     
    0x0000d3c0 add r3, pc                                    |     r3 = 0x1a7ae;
    0x0000d3c2 add r1, pc                                    |     r1 = 0x1a7b2;
    0x0000d3c4 add r0, pc                                    |     r0 = 0x1a7ba;
    0x0000d3c6 blx 0x1de0                                    |     fcn_00001de0 ();
                                                             | label_7:
    0x0000d3ca blx 0x1a1c                                    |     stat64 ();
    0x0000d3ce nop                                           |     
    0x0000d3d0 ldrh r2, [r3, 0x18]                           |     r2 = *((r3 + 0x18));
    0x0000d3d2 movs r1, r0                                   |     r1 = r0;
    0x0000d3d4 lsls r4, r7, 6                                |     r4 = r7 << 6;
    0x0000d3d6 movs r0, r0                                   |     
    0x0000d3d8 ldrh r4, [r2, 0x14]                           |     r4 = *((r2 + 0x14));
    0x0000d3da movs r1, r0                                   |     r1 = r0;
    0x0000d3dc ldrb r4, [r2]                                 |     r4 = *(r2);
    0x0000d3de movs r0, r0                                   |     
    0x0000d3e0 strb r6, [r4, 0x1a]                           |     *((r4 + 0x1a)) = r6;
    0x0000d3e2 movs r0, r0                                   |     
    0x0000d3e4 strb r4, [r6, 0x1b]                           |     *((r6 + 0x1b)) = r4;
    0x0000d3e6 movs r0, r0                                   |     
    0x0000d3e8 ldrb r0, [r0]                                 |     r0 = *(r0);
    0x0000d3ea movs r0, r0                                   |     
    0x0000d3ec strb r2, [r2, 0x1a]                           |     *((r2 + 0x1a)) = r2;
    0x0000d3ee movs r0, r0                                   |     
    0x0000d3f0 strb r0, [r2, 0x1b]                           |     *((r2 + 0x1b)) = r0;
    0x0000d3f2 movs r0, r0                                   |     
    0x0000d3f4 push {r4, r5, r6, r7, lr}                     |     
    0x0000d3f6 mov r6, r1                                    |     r6 = r1;
    0x0000d3f8 ldr r4, [pc, 0xe4]                            |     
    0x0000d3fa sub sp, 0x14                                  |     
    0x0000d3fc movs r3, 0                                    |     r3 = 0;
    0x0000d3fe add r2, sp, 8                                 |     r2 += var_8h;
    0x0000d400 ldr r1, [pc, 0xe0]                            |     r1 = *(0xd4e4);
    0x0000d402 mov r7, r0                                    |     r7 = r0;
    0x0000d404 add r4, pc                                    |     r4 = 0x1a8e8;
    0x0000d406 ldr r1, [r4, r1]                              |     
    0x0000d408 ldr r1, [r1]                                  |     r1 = *(0x1a8e8);
    0x0000d40a str r1, [sp, 0xc]                             |     var_ch = r1;
    0x0000d40c mov.w r1, 0                                   |     r1 = 0;
    0x0000d410 add r1, sp, 4                                 |     r1 += var_4h_2;
    0x0000d412 strd r3, r3, [sp, 4]                          |     __asm ("strd r3, r3, [var_8h]");
    0x0000d416 bl 0xd2e4                                     |     r0 = fcn_0000d2e4 (r0, r1, r2);
    0x0000d41a subs r5, r0, 0                                |     r5 = r0 - 0;
                                                             |     if (r5 < r0) {
    0x0000d41c blt 0xd4c6                                    |         goto label_8;
                                                             |     }
    0x0000d41e ldr r3, [sp, 4]                               |     r3 = var_4h_2;
    0x0000d420 mov r4, r3                                    |     r4 = r3;
                                                             |     do {
                                                             |         if (r4 == 0) {
    0x0000d422 cbz r4, 0xd448                                |             goto label_9;
                                                             |         }
    0x0000d424 ldr r0, [r4, 8]                               |         r0 = *((r4 + 8));
    0x0000d426 ldrb.w r2, [r0, 0x38]                         |         r2 = *((r0 + 0x38));
    0x0000d42a ands r2, r2, 1                                |         r2 &= 1;
    0x0000d42e it ne                                         |         
                                                             |         if (r2 == r2) {
    0x0000d430 movne r5, 0                                   |             r5 = 0;
                                                             |         }
                                                             |         if (r2 == r2) {
    0x0000d432 bne 0xd442                                    |             
    0x0000d434 mov r3, r6                                    |             r3 = r6;
    0x0000d436 mov r1, r2                                    |             r1 = r2;
    0x0000d438 bl 0xd4ec                                     |             r0 = fcn_0000d4ec (r0, r1, r2, r3);
    0x0000d43c subs r5, r0, 0                                |             r5 = r0 - 0;
                                                             |             if (r5 < r0) {
    0x0000d43e blt 0xd4a0                                    |                 goto label_0;
                                                             |             }
    0x0000d440 ldr r3, [sp, 4]                               |             r3 = var_4h_2;
                                                             |         }
    0x0000d442 ldr r4, [r4]                                  |         r4 = *(r4);
    0x0000d444 cmp r4, r3                                    |         
    0x0000d446 bne 0xd422                                    |         
                                                             |     } while (r4 != r3);
                                                             | label_9:
    0x0000d448 ldr r4, [r6]                                  |     r4 = *(r6);
    0x0000d44a mov r0, r7                                    |     r0 = r7;
    0x0000d44c bl 0xc7e4                                     |     r0 = fcn_0000c7e4 (r0);
    0x0000d450 mov r1, r0                                    |     r1 = r0;
    0x0000d452 mov r0, r4                                    |     r0 = r4;
    0x0000d454 bl 0xa350                                     |     fcn_0000a350 (r0, r1);
    0x0000d456 vsub.i64 d18, d12, d0                         |     __asm ("vsub.i64 d18, d12, d0");
                                                             |     if (r4 == r3) {
    0x0000d45a beq 0xd4ce                                    |         goto label_10;
                                                             |     }
    0x0000d45c ldr r3, [sp, 8]                               |     r3 = var_8h;
    0x0000d45e ldr r2, [sp, 4]                               |     r2 = var_4h_2;
    0x0000d460 str r0, [r6]                                  |     *(r6) = r0;
    0x0000d462 subs r1, r3, 0                                |     r1 = r3 - 0;
    0x0000d464 mov r4, r3                                    |     r4 = r3;
    0x0000d466 it ne                                         |     
                                                             |     if (r1 == r3) {
    0x0000d468 movne r1, 1                                   |         r1 = 1;
                                                             |     }
                                                             |     if (r2 != 0) {
    0x0000d46a cbz r2, 0xd46e                                |         
    0x0000d46c movs r1, 1                                    |         r1 = 1;
                                                             |     }
    0x0000d46e ldrb.w r2, [r7, 0x38]                         |     r2 = *((r7 + 0x38));
    0x0000d472 bfi r2, r1, 1, 1                              |     value_0 = BIT_MASK (1, 1);
                                                             |     value_1 = r1 & value_0;
                                                             |     value_0 = ~value_0;
                                                             |     r2 &= value_0;
                                                             |     r2 |= value_1;
    0x0000d476 strb.w r2, [r7, 0x38]                         |     *((r7 + 0x38)) = r2;
                                                             |     if (r4 == 0) {
                                                             |         do {
    0x0000d47a cbz r4, 0xd4a0                                |             goto label_0;
                                                             |         }
    0x0000d47c ldr r0, [r4, 8]                               |         r0 = *((r4 + 8));
    0x0000d47e ldrb.w r2, [r0, 0x38]                         |         r2 = *((r0 + 0x38));
    0x0000d482 ands r2, r2, 1                                |         r2 &= 1;
    0x0000d486 it ne                                         |         
                                                             |         if (r2 == r2) {
    0x0000d488 movne r5, 0                                   |             r5 = 0;
                                                             |         }
                                                             |         if (r2 == r2) {
    0x0000d48a bne 0xd49a                                    |             
    0x0000d48c mov r3, r6                                    |             r3 = r6;
    0x0000d48e mov r1, r2                                    |             r1 = r2;
    0x0000d490 bl 0xd4ec                                     |             r0 = fcn_0000d4ec (r0, r1, r2, r3);
    0x0000d494 subs r5, r0, 0                                |             r5 = r0 - 0;
                                                             |             if (r5 < r0) {
    0x0000d496 blt 0xd4a0                                    |                 goto label_0;
                                                             |             }
    0x0000d498 ldr r3, [sp, 8]                               |             r3 = var_8h;
                                                             |         }
    0x0000d49a ldr r4, [r4]                                  |         r4 = *(r4);
    0x0000d49c cmp r4, r3                                    |         
    0x0000d49e bne 0xd47a                                    |         
                                                             |     } while (r4 != r3);
                                                             |     do {
                                                             | label_0:
    0x0000d4a0 ldr r0, [sp, 4]                               |         r0 = var_4h_2;
    0x0000d4a2 bl 0xcb50                                     |         fcn_0000cb50 (r0);
    0x0000d4a6 ldr r0, [sp, 8]                               |         r0 = var_8h;
    0x0000d4a8 bl 0xcb50                                     |         fcn_0000cb50 (r0);
    0x0000d4ac ldr r2, [pc, 0x38]                            |         
    0x0000d4ae ldr r3, [pc, 0x34]                            |         r3 = *(0xd4e6);
    0x0000d4b0 add r2, pc                                    |         r2 = 0x1a99c;
    0x0000d4b2 ldr r3, [r2, r3]                              |         r3 = *(0x1a99c);
    0x0000d4b4 ldr r2, [r3]                                  |         r2 = *(0x1a99c);
    0x0000d4b6 ldr r3, [sp, 0xc]                             |         r3 = var_ch;
    0x0000d4b8 eors r2, r3                                   |         r2 ^= r3;
    0x0000d4ba mov.w r3, 0                                   |         r3 = 0;
                                                             |         if (r2 != r3) {
    0x0000d4be bne 0xd4da                                    |             goto label_11;
                                                             |         }
    0x0000d4c0 mov r0, r5                                    |         r0 = r5;
    0x0000d4c2 add sp, 0x14                                  |         
    0x0000d4c4 pop {r4, r5, r6, r7, pc}                      |         
                                                             | label_8:
    0x0000d4c6 rsbs r0, r5, 0                                |         r0 = r5 - ;
    0x0000d4c8 blx 0x1b18                                    |         system (r0)
    0x0000d4cc b 0xd4a0                                      |         
                                                             |     } while (1);
                                                             | label_10:
    0x0000d4ce mov r0, r7                                    |     r0 = r7;
    0x0000d4d0 mvn r5, 0xb                                   |     r5 = ~0xb;
    0x0000d4d4 bl 0xcd5c                                     |     fcn_0000cd5c (r0);
    0x0000d4d8 b 0xd4a0                                      |     goto label_0;
                                                             | label_11:
    0x0000d4da blx 0x1a1c                                    |     stat64 ();
    0x0000d4de nop                                           |     
    0x0000d4e0 ldrh r4, [r2, 0x10]                           |     r4 = *((r2 + 0x10));
    0x0000d4e2 movs r1, r0                                   |     r1 = r0;
    0x0000d4e4 lsls r4, r7, 6                                |     r4 = r7 << 6;
    0x0000d4e6 movs r0, r0                                   |     
    0x0000d4e8 ldrh r0, [r5, 0xa]                            |     r0 = *((r5 + 0xa));
    0x0000d4ea movs r1, r0                                   |     r1 = r0;
                                                             | }
    ; assembly                                                       | /* r2dec pseudo code output */
                                                                     | /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/bin/kmod @ 0xd5fc */
                                                                     | #include <stdint.h>
                                                                     |  
    ; (fcn) fcn.0000d5fc ()                                          | void fcn_0000d5fc (uint32_t arg1, uint32_t arg2) {
                                                                     |     uint32_t var_4h;
                                                                     |     int16_t var_ch;
                                                                     |     int16_t var_8h;
                                                                     |     int16_t var_14h;
                                                                     |     int16_t var_18h;
                                                                     |     int16_t var_1000h;
                                                                     |     int16_t var_14h_2;
                                                                     |     r0 = arg1;
                                                                     |     r1 = arg2;
    0x0000d5fc stmdbhs r0, {r0, r2, r3, r6, sb, fp, lr}              |     __asm ("stmdbhs r0, {r0, r2, r3, r6, sb, fp, lr}");
    0x0000d600 it ne                                                 |     
                                                                     |     if (? != ?) {
    0x0000d602 cmpne r0, 0                                           |         __asm ("cmpne r0, 0");
                                                                     |     }
    0x0000d604 ldr r3, [pc, 0x130]                                   |     
    0x0000d606 push.w {r4, r5, r6, r7, r8, sb, sl, fp, lr}           |     
    0x0000d60a sub.w sp, sp, 0x1000                                  |     
    0x0000d60e add r2, pc                                            |     r2 += pc;
    0x0000d610 sub sp, 0x1c                                          |     
    0x0000d612 add.w r4, sp, 0x1000                                  |     r4 += var_1000h;
    0x0000d614 strb r0, [r0, r2]                                     |     *((r0 + r2)) = r0;
    0x0000d616 it eq                                                 |     
                                                                     |     if (? != ?) {
    0x0000d618 moveq r8, 1                                           |         r8 = 1;
                                                                     |     }
    0x0000d61c ldr r3, [r2, r3]                                      |     r3 = *((r2 + r3));
    0x0000d61e add.w r4, r4, 0x14                                    |     r4 += var_14h_2;
    0x0000d622 it ne                                                 |     
                                                                     |     if (? == ?) {
    0x0000d624 movne r8, 0                                           |         r8 = 0;
                                                                     |     }
    0x0000d628 ldr r3, [r3]                                          |     r3 = *(0xd738);
    0x0000d62a str r3, [r4]                                          |     *(r4) = r3;
    0x0000d62c mov.w r3, 0                                           |     r3 = 0;
    0x0000d630 str r1, [sp, 4]                                       |     var_4h = r1;
                                                                     |     if (? == ?) {
    0x0000d632 beq 0xd71a                                            |         goto label_5;
                                                                     |     }
    0x0000d634 ldr r1, [pc, 0x104]                                   |     
    0x0000d636 mov sb, r0                                            |     sb = r0;
    0x0000d638 ldr r0, [pc, 0x104]                                   |     
    0x0000d63a add r1, pc                                            |     r1 = 0x1ad7a;
    0x0000d63c add r0, pc                                            |     r0 = 0x1ad80;
    0x0000d63e blx 0x1d4c                                            |     r0 = fstat64 ();
    0x0000d642 mov r6, r0                                            |     r6 = r0;
    0x0000d644 cmp r0, 0                                             |     
                                                                     |     if (r0 == 0) {
    0x0000d646 beq 0xd724                                            |         goto label_6;
                                                                     |     }
    0x0000d648 ldr.w fp, [pc, 0xf8]                                  |     
    0x0000d64c add r5, sp, 0x18                                      |     r5 += var_18h;
    0x0000d64e add r4, sp, 0x14                                      |     r4 += var_14h;
    0x0000d650 sub.w sl, r5, 8                                       |     sl -= var_8h;
    0x0000d654 add fp, pc                                            |     fp = 0x1ad9c;
                                                                     |     do {
                                                                     | label_0:
    0x0000d656 mov r2, r6                                            |         r2 = r6;
    0x0000d658 mov.w r1, 0x1000                                      |         r1 = 0x1000;
    0x0000d65c mov r0, r4                                            |         r0 = r4;
    0x0000d65e blx 0x19ac                                            |         r0 = fcn_000019ac ();
    0x0000d662 mov r3, r0                                            |         r3 = r0;
                                                                     |         if (r0 == 0) {
    0x0000d664 cbz r0, 0xd6d4                                        |             goto label_7;
                                                                     |         }
                                                                     | label_2:
    0x0000d666 mov r0, r4                                            |         r0 = r4;
    0x0000d668 blx 0x1bb0                                            |         fcn_00001bb0 ();
    0x0000d66c mov r2, sl                                            |         r2 = sl;
    0x0000d66e mov r1, fp                                            |         r1 = fp;
    0x0000d670 mov r7, r0                                            |         r7 = r0;
    0x0000d672 mov r0, r4                                            |         r0 = r4;
    0x0000d674 blx 0x1aac                                            |         opendir ();
    0x0000d678 sub.w r2, r5, 0xc                                     |         r2 -= var_ch;
    0x0000d67c mov r1, r0                                            |         r1 = r0;
    0x0000d67e mov r0, sb                                            |         r0 = sb;
    0x0000d680 bl 0xcabc                                             |         r0 = fcn_0000cabc (r0, r1, r2);
    0x0000d684 cmp r0, 0                                             |         
                                                                     |         if (r0 < 0) {
    0x0000d686 blt 0xd708                                            |             goto label_8;
                                                                     |         }
    0x0000d688 ldr r1, [r5, -0xc]                                    |         r1 = var_ch;
    0x0000d68c mov r0, r8                                            |         r0 = r8;
    0x0000d68e bl 0xa350                                             |         r0 = fcn_0000a350 (r0, r1);
    0x0000d692 cmp r0, 0                                             |         
                                                                     |         if (r0 == 0) {
    0x0000d694 beq 0xd710                                            |             goto label_9;
                                                                     |         }
    0x0000d696 mov r8, r0                                            |         r8 = r0;
                                                                     | label_3:
    0x0000d698 add r7, r5                                            |         r7 += r5;
    0x0000d69a ldrb r3, [r7, -0x5]                                   |         r3 = *((r7 - 0x5));
    0x0000d69e cmp r3, 0xa                                           |         
    0x0000d6a0 beq 0xd656                                            |         
                                                                     |     } while (r3 == 0xa);
                                                                     | label_1:
    0x0000d6a2 mov r2, r6                                            |     r2 = r6;
    0x0000d6a4 mov.w r1, 0x1000                                      |     r1 = 0x1000;
    0x0000d6a8 mov r0, r4                                            |     r0 = r4;
    0x0000d6aa blx 0x19ac                                            |     r0 = fcn_000019ac ();
    0x0000d6ae cmp r0, 0                                             |     
                                                                     |     if (r0 == 0) {
    0x0000d6b0 beq 0xd656                                            |         goto label_0;
                                                                     |     }
    0x0000d6b2 mov r0, r4                                            |     r0 = r4;
    0x0000d6b4 blx 0x1bb0                                            |     fcn_00001bb0 ();
    0x0000d6b8 add r0, r5                                            |     r0 += r5;
    0x0000d6ba ldrb r3, [r0, -0x5]                                   |     r3 = *((r0 - 0x5));
    0x0000d6be cmp r3, 0xa                                           |     
                                                                     |     if (r3 != 0xa) {
    0x0000d6c0 bne 0xd6a2                                            |         goto label_1;
                                                                     |     }
    0x0000d6c2 mov r2, r6                                            |     r2 = r6;
    0x0000d6c4 mov.w r1, 0x1000                                      |     r1 = 0x1000;
    0x0000d6c8 mov r0, r4                                            |     r0 = r4;
    0x0000d6ca blx 0x19ac                                            |     r0 = fcn_000019ac ();
    0x0000d6ce mov r3, r0                                            |     r3 = r0;
    0x0000d6d0 cmp r0, 0                                             |     
                                                                     |     if (r0 != 0) {
    0x0000d6d2 bne 0xd666                                            |         goto label_2;
                                                                     |     }
                                                                     | label_7:
    0x0000d6d4 mov r0, r6                                            |     r0 = r6;
    0x0000d6d6 mov r4, r3                                            |     r4 = r3;
    0x0000d6d8 blx 0x1c84                                            |     fcn_00001c84 ();
    0x0000d6dc ldr r3, [sp, 4]                                       |     r3 = var_4h;
    0x0000d6de str.w r8, [r3]                                        |     __asm ("str.w r8, [r3]");
                                                                     |     do {
                                                                     | label_4:
    0x0000d6e2 ldr r2, [pc, 0x64]                                    |         
    0x0000d6e4 add.w r1, sp, 0x1000                                  |         r1 += var_1000h;
    0x0000d6e8 ldr r3, [pc, 0x4c]                                    |         r3 = *(0xd738);
    0x0000d6ea adds r1, 0x14                                         |         r1 += 0x14;
    0x0000d6ec add r2, pc                                            |         r2 = 0x1ae3a;
    0x0000d6ee ldr r3, [r2, r3]                                      |         r3 = *(0x1ae3a);
    0x0000d6f0 ldr r2, [r3]                                          |         r2 = *(0x1ae3a);
    0x0000d6f2 ldr r3, [r1]                                          |         r3 = *(r1);
    0x0000d6f4 eors r2, r3                                           |         r2 ^= r3;
    0x0000d6f6 mov.w r3, 0                                           |         r3 = 0;
                                                                     |         if (r2 != r3) {
    0x0000d6fa bne 0xd720                                            |             goto label_10;
                                                                     |         }
    0x0000d6fc mov r0, r4                                            |         r0 = r4;
    0x0000d6fe add.w sp, sp, 0x1000                                  |         
    0x0000d702 add sp, 0x1c                                          |         
    0x0000d704 pop.w {r4, r5, r6, r7, r8, sb, sl, fp, pc}            |         
                                                                     | label_8:
    0x0000d708 rsbs r0, r0, 0                                        |         r0 -= ;
    0x0000d70a blx 0x1b18                                            |         system (r0)
    0x0000d70e b 0xd698                                              |         goto label_3;
                                                                     | label_9:
    0x0000d710 ldr r0, [r5, -0xc]                                    |         r0 = var_ch;
    0x0000d714 bl 0xcd5c                                             |         fcn_0000cd5c (r0);
    0x0000d718 b 0xd698                                              |         goto label_3;
                                                                     | label_5:
    0x0000d71a mvn r4, 1                                             |         r4 = ~1;
    0x0000d71e b 0xd6e2                                              |         
                                                                     |     } while (1);
                                                                     | label_10:
    0x0000d720 blx 0x1a1c                                            |     stat64 ();
                                                                     | label_6:
    0x0000d724 blx 0x1be4                                            |     r0 = isoc99_sscanf ();
    0x0000d728 ldr r0, [r0]                                          |     r0 = *(r0);
    0x0000d72a rsbs r4, r0, 0                                        |     r4 = r0 - ;
    0x0000d72c blx 0x1b18                                            |     system (r0)
    0x0000d730 b 0xd6e2                                              |     goto label_4;
                                                                     | }
    ; assembly                                           | /* r2dec pseudo code output */
                                                         | /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/bin/kmod @ 0xd74c */
                                                         | #include <stdint.h>
                                                         |  
    ; (fcn) fcn.0000d74c ()                              | uint32_t fcn_0000d74c (int16_t arg1) {
                                                         |     int16_t var_0h;
                                                         |     int16_t var_4h;
                                                         |     size_t size;
                                                         |     int16_t var_18h;
                                                         |     int16_t var_48h;
                                                         |     int16_t var_78h;
                                                         |     int16_t var_94h;
                                                         |     int16_t var_98h;
                                                         |     int16_t var_228h;
                                                         |     int16_t var_1080h;
                                                         |     r0 = arg1;
                                                         | label_3:
    0x0000c668 push.w {r4, r5, r6, r7, r8, lr}           |     
    0x0000c66c sub.w sp, sp, 0x1080                      |     
    0x0000c670 ldr r4, [pc, 0x138]                       |     
    0x0000c672 sub sp, 0x18                              |     
    0x0000c674 add.w r5, sp, 0x1080                      |     r5 += var_1080h;
    0x0000c678 mov.w r3, 0x1000                          |     r3 = 0x1000;
    0x0000c67c str r0, [sp, 4]                           |     var_4h = r0;
    0x0000c67e add r7, sp, 0x94                          |     r7 += var_94h;
    0x0000c680 add r4, pc                                |     r4 = 0x18e30;
    0x0000c682 ldr r0, [pc, 0x12c]                       |     r0 = *(0xc7b2);
    0x0000c684 str r4, [sp]                              |     *(sp) = r4;
    0x0000c686 adds r5, 0x14                             |     r5 += 0x14;
    0x0000c688 ldr r4, [pc, 0x128]                       |     
    0x0000c68a mov r1, r3                                |     r1 = r3;
    0x0000c68c movs r2, 1                                |     r2 = 1;
    0x0000c68e add r4, pc                                |     r4 = 0x18e46;
    0x0000c690 ldr r0, [r4, r0]                          |     
    0x0000c692 ldr r0, [r0]                              |     r0 = *(0x18e46);
    0x0000c694 str r0, [r5]                              |     *(r5) = r0;
    0x0000c696 mov.w r0, 0                               |     r0 = 0;
    0x0000c69a mov r0, r7                                |     r0 = r7;
    0x0000c69c blx 0x1dd4                                |     fcn_00001dd4 ();
    0x0000c6a0 mov.w r1, 0x80000                         |     r1 = 0x80000;
    0x0000c6a4 mov r6, r0                                |     r6 = r0;
    0x0000c6a6 mov r0, r7                                |     r0 = r7;
    0x0000c6a8 blx 0x1ad0                                |     r0 = fstatat64 ();
    0x0000c6ac subs r4, r0, 0                            |     r4 = r0 - 0;
                                                         |     if (r4 < r0) {
    0x0000c6ae blt 0xc722                                |         goto label_4;
                                                         |     }
    0x0000c6b0 add r6, sp, 0x78                          |     r6 += var_78h;
    0x0000c6b2 movs r2, 0x20                             |     r2 = 0x20;
    0x0000c6b4 subs r7, r6, 4                            |     r7 = r6 - 4;
    0x0000c6b6 mov r1, r7                                |     r1 = r7;
    0x0000c6b8 bl 0x9440                                 |     r0 = fcn_00009440 (r0, r1, r2);
    0x0000c6bc mov r5, r0                                |     r5 = r0;
    0x0000c6be mov r0, r4                                |     r0 = r4;
    0x0000c6c0 blx 0x1dbc                                |     fcn_00001dbc ();
    0x0000c6c4 cmp r5, 0                                 |     
                                                         |     if (r5 < 0) {
    0x0000c6c6 blt 0xc7a0                                |         goto label_5;
                                                         |     }
    0x0000c6c8 ldr r2, [r6, -0x4]                        |     r2 = *((r6 - 0x4));
    0x0000c6cc movw r3, 0x696c                           |     
    0x0000c6d0 movt r3, 0x6576                           |     r3 = 0x6576696c;
    0x0000c6d4 cmp r2, r3                                |     
                                                         |     if (r2 == r3) {
    0x0000c6d6 beq 0xc760                                |         goto label_6;
                                                         |     }
    0x0000c6d8 ldr r2, [r6, -0x4]                        |     r2 = *((r6 - 0x4));
    0x0000c6dc movw r3, 0x6f63                           |     
    0x0000c6e0 movt r3, 0x696d                           |     r3 = 0x696d6f63;
    0x0000c6e4 cmp r2, r3                                |     
                                                         |     if (r2 == r3) {
    0x0000c6e6 beq 0xc77a                                |         goto label_7;
                                                         |     }
                                                         | label_1:
    0x0000c6e8 ldr r2, [r6, -0x4]                        |     r2 = *((r6 - 0x4));
    0x0000c6ec movw r3, 0x6f67                           |     
    0x0000c6f0 movt r3, 0x6e69                           |     r3 = 0x6e696f67;
    0x0000c6f4 cmp r2, r3                                |     
                                                         |     if (r2 == r3) {
    0x0000c6f6 beq 0xc78c                                |         goto label_8;
                                                         |     }
                                                         | label_2:
    0x0000c6f8 mvn r5, 0x15                              |     r5 = ~0x15;
                                                         |     do {
                                                         | label_0:
    0x0000c6fc ldr r2, [pc, 0xb8]                        |         
    0x0000c6fe add.w r1, sp, 0x1080                      |         r1 += var_1080h;
    0x0000c702 ldr r3, [pc, 0xac]                        |         r3 = *(0xc7b2);
    0x0000c704 adds r1, 0x14                             |         r1 += 0x14;
    0x0000c706 add r2, pc                                |         r2 = 0x18ec2;
    0x0000c708 ldr r3, [r2, r3]                          |         r3 = *(0x18ec2);
    0x0000c70a ldr r2, [r3]                              |         r2 = *(0x18ec2);
    0x0000c70c ldr r3, [r1]                              |         r3 = *(r1);
    0x0000c70e eors r2, r3                               |         r2 ^= r3;
    0x0000c710 mov.w r3, 0                               |         r3 = 0;
                                                         |         if (r2 != r3) {
    0x0000c714 bne 0xc7a8                                |             goto label_9;
                                                         |         }
    0x0000c716 mov r0, r5                                |         r0 = r5;
    0x0000c718 add.w sp, sp, 0x1080                      |         
    0x0000c71c add sp, 0x18                              |         
    0x0000c71e pop.w {r4, r5, r6, r7, r8, pc}            |         
                                                         | label_4:
    0x0000c722 blx 0x1be4                                |         r0 = isoc99_sscanf ();
    0x0000c726 ldr r4, [r0]                              |         r4 = *(r0);
    0x0000c728 mov r0, r4                                |         r0 = r4;
    0x0000c72a rsbs r5, r4, 0                            |         r5 = r4 - ;
    0x0000c72c blx 0x1b18                                |         system (r0)
    0x0000c730 cmp r6, 0xa                               |         
                                                         |         if (r6 > 0xa) {
    0x0000c732 ble 0xc758                                |             
    0x0000c734 add.w r8, sp, 0x98                        |             r8 += var_98h;
    0x0000c738 movs r2, 0                                |             r2 = 0;
    0x0000c73a add.w r3, r8, r6                          |             r3 = r8 + r6;
    0x0000c73e mov r0, r7                                |             r0 = r7;
    0x0000c740 add r1, sp, 8                             |             r1 += size;
    0x0000c742 strb r2, [r3, -0xe]                       |             *((r3 - 0xe)) = r2;
    0x0000c746 blx 0x1a28                                |             r0 = realloc (r0, r1);
                                                         |             if (r0 != 0) {
    0x0000c74a cbnz r0, 0xc758                           |                 goto label_10;
                                                         |             }
    0x0000c74c ldr r3, [sp, 0x18]                        |             r3 = var_18h;
    0x0000c74e and r3, r3, 0xf000                        |             r3 &= 0xf000;
    0x0000c752 cmp.w r3, 0x4000                          |             
                                                         |             if (r3 == 0x4000) {
    0x0000c756 beq 0xc788                                |                 goto label_11;
                                                         |             }
                                                         |         }
                                                         | label_10:
    0x0000c758 mov r0, r4                                |         r0 = r4;
    0x0000c75a blx 0x1b18                                |         system (r0)
    0x0000c75e b 0xc6fc                                  |         
                                                         |     } while (1);
                                                         | label_6:
    0x0000c760 ldrh r3, [r7, 4]                          |     r3 = *((r7 + 4));
    0x0000c762 cmp r3, 0xa                               |     
    0x0000c764 it eq                                     |     
                                                         |     if (r3 == 0xa) {
    0x0000c766 moveq r5, 1                               |         r5 = 1;
                                                         |         goto label_12;
                                                         |     }
                                                         |     if (r3 == 0xa) {
                                                         | label_12:
    0x0000c768 beq 0xc6fc                                |         goto label_0;
                                                         |     }
    0x0000c76a ldr r2, [r6, -0x4]                        |     r2 = *((r6 - 0x4));
    0x0000c76e movw r3, 0x6f63                           |     
    0x0000c772 movt r3, 0x696d                           |     r3 = 0x696d6f63;
    0x0000c776 cmp r2, r3                                |     
                                                         |     if (r2 != r3) {
    0x0000c778 bne 0xc6e8                                |         goto label_1;
                                                         |     }
                                                         | label_7:
    0x0000c77a ldr r2, [r7, 4]                           |     r2 = *((r7 + 4));
    0x0000c77c movw r3, 0x676e                           |     
    0x0000c780 movt r3, 0xa                              |     r3 = 0xa676e;
    0x0000c784 cmp r2, r3                                |     
                                                         |     if (r2 != r3) {
    0x0000c786 bne 0xc6e8                                |         goto label_1;
                                                         |     }
                                                         | label_11:
    0x0000c788 movs r5, 2                                |     r5 = 2;
    0x0000c78a b 0xc6fc                                  |     goto label_0;
                                                         | label_8:
    0x0000c78c ldrh r2, [r6]                             |     r2 = *(r6);
    0x0000c78e movw r3, 0xa67                            |     r3 = 0xa67;
    0x0000c792 cmp r2, r3                                |     
                                                         |     if (r2 != r3) {
    0x0000c794 bne 0xc6f8                                |         goto label_2;
                                                         |     }
    0x0000c796 ldrb r3, [r6, 2]                          |     r3 = *((r6 + 2));
    0x0000c798 movs r5, 3                                |     r5 = 3;
    0x0000c79a cmp r3, 0                                 |     
                                                         |     if (r3 == 0) {
    0x0000c79c beq 0xc6fc                                |         goto label_0;
                                                         |     }
    0x0000c79e b 0xc6f8                                  |     goto label_2;
                                                         | label_5:
    0x0000c7a0 rsbs r0, r5, 0                            |     r0 = r5 - ;
    0x0000c7a2 blx 0x1b18                                |     system (r0)
    0x0000c7a6 b 0xc6fc                                  |     goto label_0;
                                                         | label_9:
    0x0000c7a8 blx 0x1a1c                                |     stat64 ();
    0x0000c7ac strh r0, [r4, 0x1c]                       |     *((r4 + 0x1c)) = r0;
    0x0000c7ae movs r0, r0                               |     
    0x0000c7b0 lsls r4, r7, 6                            |     r4 = r7 << 6;
    0x0000c7b2 movs r0, r0                               |     
    0x0000c7b4 str r7, [sp, 0x228]                       |     var_228h = r7;
    0x0000c7b6 movs r1, r0                               |     r1 = r0;
    0x0000c7b8 str r7, [sp, 0x48]                        |     var_48h = r7;
    0x0000c7ba movs r1, r0                               |     r1 = r0;
                                                         |     if (r0 == 0) {
    0x0000d74c cbz r0, 0xd776                            |         goto label_13;
                                                         |     }
    0x0000d74e push {r4, lr}                             |     
    0x0000d750 mov r4, r0                                |     r4 = r0;
    0x0000d752 ldr r0, [r0, 0x34]                        |     r0 = *((r0 + 0x34));
    0x0000d754 cbz r0, 0xd768                            |     
                                                         |     while (1) {
    0x0000d756 cmp r0, 2                                 |         
                                                         |         if (r0 == 2) {
    0x0000d758 bne 0xd75e                                |             
    0x0000d75a movs r0, 0                                |             r0 = 0;
    0x0000d75c pop {r4, pc}                              |             
                                                         |         }
    0x0000d75e ldr r0, [r4, 8]                           |         r0 = *((r4 + 8));
    0x0000d760 pop.w {r4, lr}                            |         
    0x0000d764 b.w 0xc668                                |         goto label_3;
    0x0000d768 ldr r1, [r4, 8]                           |         r1 = *((r4 + 8));
    0x0000d76a ldr r0, [r4]                              |         r0 = *(r4);
    0x0000d76c bl 0x9dc4                                 |         fcn_00009dc4 (r0, r1);
    0x0000d770 adds r0, 1                                |         r0++;
    0x0000d772 str r0, [r4, 0x34]                        |         *((r4 + 0x34)) = r0;
    0x0000d774 b 0xd756                                  |         
                                                         |     }
                                                         | label_13:
    0x0000d776 mvn r0, 1                                 |     r0 = ~1;
    0x0000d77a bx lr                                     |     return r0;
                                                         | }
    ; assembly                                                       | /* r2dec pseudo code output */
                                                                     | /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/bin/kmod @ 0xdc44 */
                                                                     | #include <stdint.h>
                                                                     |  
    ; (fcn) fcn.0000dc44 ()                                          | void fcn_0000dc44 (uint32_t arg1) {
                                                                     |     int16_t var_5h;
                                                                     |     int32_t var_0h_2;
                                                                     |     int32_t var_0h_3;
                                                                     |     int32_t var_10h;
                                                                     |     int16_t var_ch;
                                                                     |     int16_t var_8h;
                                                                     |     int16_t var_4h;
                                                                     |     int16_t var_18h;
                                                                     |     int16_t var_1000h;
                                                                     |     int32_t var_0h;
                                                                     |     r0 = arg1;
    0x0000dc44 ldr r2, [pc, 0x188]                                   |     
    0x0000dc46 ldr r3, [pc, 0x18c]                                   |     r3 = *(0xddd6);
    0x0000dc48 push.w {r4, r5, r6, r7, r8, sb, sl, fp, lr}           |     
    0x0000dc4c sub.w sp, sp, 0x1000                                  |     
    0x0000dc50 add r2, pc                                            |     r2 = 0x1ba24;
    0x0000dc52 sub sp, 0x1c                                          |     
    0x0000dc54 add.w r1, sp, 0x1000                                  |     r1 += var_1000h;
    0x0000dc58 add r5, sp, 0x18                                      |     r5 += var_18h;
    0x0000dc5a ldr r3, [r2, r3]                                      |     
    0x0000dc5c mvn r4, 1                                             |     r4 = ~1;
    0x0000dc60 adds r1, 0x14                                         |     r1 += 0x14;
    0x0000dc62 ldr r3, [r3]                                          |     r3 = *(0x1ba24);
    0x0000dc64 str r3, [r1]                                          |     *(r1) = r3;
    0x0000dc66 mov.w r3, 0                                           |     r3 = 0;
    0x0000dc68 lsls r0, r0, 0xc                                      |     r0 <<= 0xc;
    0x0000dc6a str r4, [r5, -0x10]                                   |     var_10h = r4;
    0x0000dc6e cmp r0, 0                                             |     
                                                                     |     if (r0 == 0) {
    0x0000dc70 beq 0xdd40                                            |         goto label_3;
                                                                     |     }
    0x0000dc72 ldr r2, [pc, 0x164]                                   |     
    0x0000dc74 mov.w r3, 0x1000                                      |     r3 = 0x1000;
    0x0000dc78 ldr r1, [r0, 8]                                       |     r1 = *((r0 + 8));
    0x0000dc7a subs r4, r5, 4                                        |     r4 -= var_4h;
    0x0000dc7c mov r7, r0                                            |     r7 = r0;
    0x0000dc7e mov r0, r4                                            |     r0 = r4;
    0x0000dc80 add r2, pc                                            |     r2 = 0x1ba5e;
    0x0000dc82 strd r2, r1, [sp]                                     |     __asm ("strd r2, r1, [sp]");
    0x0000dc86 mov r1, r3                                            |     r1 = r3;
    0x0000dc88 movs r2, 1                                            |     r2 = 1;
    0x0000dc8a blx 0x1dd4                                            |     fcn_00001dd4 ();
    0x0000dc8e mov.w r1, 0x80000                                     |     r1 = 0x80000;
    0x0000dc92 mov r0, r4                                            |     r0 = r4;
    0x0000dc94 blx 0x1ad0                                            |     fstatat64 ();
    0x0000dc98 subs.w r8, r0, 0                                      |     r8 -= var_4h;
                                                                     |     if (r8 < var_4h) {
    0x0000dc9c blt 0xdd82                                            |         goto label_5;
                                                                     |     }
    0x0000dc9e ldr r1, [pc, 0x13c]                                   |     
    0x0000dca0 mov.w r2, 0x80000                                     |     r2 = 0x80000;
    0x0000dca4 add r1, pc                                            |     r1 = 0x1ba86;
    0x0000dca6 blx 0x1bd8                                            |     sprintf_chk ();
    0x0000dcaa subs r6, r0, 0                                        |     r6 -= var_4h;
                                                                     |     if (r6 >= var_4h) {
    0x0000dcac bge 0xdd66                                            |         goto label_6;
                                                                     |     }
    0x0000dcae ldr r1, [pc, 0x130]                                   |     
    0x0000dcb0 ldr r0, [pc, 0x130]                                   |     
    0x0000dcb2 add r1, pc                                            |     r1 = 0x1ba98;
    0x0000dcb4 add r0, pc                                            |     r0 = 0x1ba9c;
    0x0000dcb6 blx 0x1d4c                                            |     r0 = fstat64 ();
    0x0000dcba mov r6, r0                                            |     r6 = r0;
    0x0000dcbc cmp r0, 0                                             |     
                                                                     |     if (r0 == 0) {
    0x0000dcbe beq 0xddbc                                            |         goto label_7;
                                                                     |     }
    0x0000dcc0 ldr.w sb, [pc, 0x124]                                 |     
    0x0000dcc4 sub.w sl, r5, 0xc                                     |     sl -= var_ch;
    0x0000dcc8 add sb, pc                                            |     sb = 0x1bab4;
                                                                     |     do {
                                                                     | label_0:
    0x0000dcca mov r2, r6                                            |         r2 = r6;
    0x0000dccc mov.w r1, 0x1000                                      |         r1 = 0x1000;
    0x0000dcd0 mov r0, r4                                            |         r0 = r4;
    0x0000dcd2 blx 0x19ac                                            |         r0 = fcn_000019ac ();
                                                                     |         if (r0 == 0) {
    0x0000dcd6 cbz r0, 0xdd30                                        |             goto label_4;
                                                                     |         }
                                                                     | label_2:
    0x0000dcd8 mov r0, r4                                            |         r0 = r4;
    0x0000dcda blx 0x1bb0                                            |         fcn_00001bb0 ();
    0x0000dcde mov r2, sl                                            |         r2 = sl;
    0x0000dce0 mov fp, r0                                            |         
    0x0000dce2 mov r1, sb                                            |         r1 = sb;
    0x0000dce4 mov r0, r4                                            |         r0 = r4;
    0x0000dce6 blx 0x1aac                                            |         r0 = opendir ();
                                                                     |         if (r0 != 0) {
    0x0000dcea cbz r0, 0xdcf6                                        |             
    0x0000dcec ldr r1, [r7, 8]                                       |             r1 = *((r7 + 8));
    0x0000dcee blx 0x1924                                            |             r0 = fcn_00001924 ();
    0x0000dcf2 cmp r0, 0                                             |             
                                                                     |             if (r0 == 0) {
    0x0000dcf4 beq 0xdd8c                                            |                 goto label_8;
                                                                     |             }
                                                                     |         }
    0x0000dcf6 add fp, r5                                            |         
    0x0000dcf8 ldrb r3, [fp, -0x5]                                   |         r3 = *((fp - 0x5));
    0x0000dcfc cmp r3, 0xa                                           |         
    0x0000dcfe beq 0xdcca                                            |         
                                                                     |     } while (r3 == 0xa);
                                                                     | label_1:
    0x0000dd00 mov r2, r6                                            |     r2 = r6;
    0x0000dd02 mov.w r1, 0x1000                                      |     r1 = 0x1000;
    0x0000dd06 mov r0, r4                                            |     r0 = r4;
    0x0000dd08 blx 0x19ac                                            |     fcn_000019ac ();
    0x0000dd0a cdp p8, 5, c2, c0, c0, 0                              |     __asm ("cdp p8, 5, c2, c0, c0, 0");
                                                                     |     if (r3 == 0xa) {
    0x0000dd0e beq 0xdcca                                            |         goto label_0;
                                                                     |     }
    0x0000dd10 mov r0, r4                                            |     r0 = r4;
    0x0000dd12 blx 0x1bb0                                            |     fcn_00001bb0 ();
    0x0000dd16 add r0, r5                                            |     r0 += r5;
    0x0000dd18 ldrb r3, [r0, -0x5]                                   |     r3 = *((r0 - 0x5));
    0x0000dd1c cmp r3, 0xa                                           |     
                                                                     |     if (r3 != 0xa) {
    0x0000dd1e bne 0xdd00                                            |         goto label_1;
                                                                     |     }
    0x0000dd20 mov r2, r6                                            |     r2 = r6;
    0x0000dd22 mov.w r1, 0x1000                                      |     r1 = 0x1000;
    0x0000dd26 mov r0, r4                                            |     r0 = r4;
    0x0000dd28 blx 0x19ac                                            |     r0 = fcn_000019ac ();
    0x0000dd2c cmp r0, 0                                             |     
                                                                     |     if (r0 != 0) {
    0x0000dd2e bne 0xdcd8                                            |         goto label_2;
                                                                     |     }
                                                                     | label_4:
    0x0000dd30 mov r0, r6                                            |     r0 = r6;
    0x0000dd32 blx 0x1c84                                            |     fcn_00001c84 ();
    0x0000dd36 mov r0, r8                                            |     r0 = r8;
    0x0000dd38 blx 0x1dbc                                            |     fcn_00001dbc ();
    0x0000dd3c ldr r4, [r5, -0x10]                                   |     r4 = var_10h;
                                                                     |     do {
                                                                     | label_3:
    0x0000dd40 ldr r2, [pc, 0xa8]                                    |         
    0x0000dd42 add.w r1, sp, 0x1000                                  |         r1 += var_1000h;
    0x0000dd46 ldr r3, [pc, 0x8c]                                    |         r3 = *(0xddd6);
    0x0000dd48 adds r1, 0x14                                         |         r1 += 0x14;
    0x0000dd4a add r2, pc                                            |         r2 = 0x1bb3a;
    0x0000dd4c ldr r3, [r2, r3]                                      |         r3 = *(0x1bb3a);
    0x0000dd4e ldr r2, [r3]                                          |         r2 = *(0x1bb3a);
    0x0000dd50 ldr r3, [r1]                                          |         r3 = *(r1);
    0x0000dd52 eors r2, r3                                           |         r2 ^= r3;
    0x0000dd54 mov.w r3, 0                                           |         r3 = 0;
    0x0000dd56 lsls r0, r0, 0xc                                      |         r0 <<= 0xc;
                                                                     |         if (r0 != r0) {
    0x0000dd58 bne 0xddb8                                            |             goto label_9;
                                                                     |         }
    0x0000dd5a mov r0, r4                                            |         r0 = r4;
    0x0000dd5c add.w sp, sp, 0x1000                                  |         
    0x0000dd60 add sp, 0x1c                                          |         
    0x0000dd62 pop.w {r4, r5, r6, r7, r8, sb, sl, fp, pc}            |         
                                                                     | label_6:
    0x0000dd66 movs r2, 0xa                                          |         r2 = 0xa;
    0x0000dd68 sub.w r1, r5, 0x10                                    |         r1 -= var_10h;
    0x0000dd6a lsls r0, r2, 4                                        |         r0 = r2 << 4;
    0x0000dd6c bl 0x94c4                                             |         fcn_000094c4 (r0, r1, r2);
    0x0000dd70 mov r0, r6                                            |         r0 = r6;
    0x0000dd72 blx 0x1dbc                                            |         fcn_00001dbc ();
    0x0000dd76 mov r0, r8                                            |         r0 = r8;
    0x0000dd78 blx 0x1dbc                                            |         fcn_00001dbc ();
    0x0000dd7c ldr r4, [r5, -0x10]                                   |         r4 = var_10h;
    0x0000dd80 b 0xdd40                                              |         
                                                                     |     } while (1);
                                                                     | label_5:
    0x0000dd82 blx 0x1be4                                            |     r0 = isoc99_sscanf ();
    0x0000dd86 ldr r4, [r0]                                          |     r4 = *(r0);
    0x0000dd88 rsbs r4, r4, 0                                        |     r4 -= ;
    0x0000dd8a b 0xdd40                                              |     goto label_3;
                                                                     | label_8:
    0x0000dd8c mov r2, sl                                            |     r2 = sl;
    0x0000dd8e mov r1, sb                                            |     r1 = sb;
    0x0000dd90 blx 0x1aac                                            |     r0 = opendir ();
    0x0000dd94 mov r4, r0                                            |     r4 = r0;
    0x0000dd96 cmp r0, 0                                             |     
                                                                     |     if (r0 == 0) {
    0x0000dd98 beq 0xdd30                                            |         goto label_4;
                                                                     |     }
    0x0000dd9a movs r2, 0xa                                          |     r2 = 0xa;
    0x0000dd9c sub.w r1, r5, 8                                       |     r1 -= var_8h;
    0x0000dda0 blx 0x193c                                            |     fcn_0000193c ();
    0x0000dda4 ldr r3, [r5, -0x8]                                    |     r3 = *((r5 - 0x8));
    0x0000dda8 cmp r3, r4                                            |     
                                                                     |     if (r3 == r4) {
    0x0000ddaa beq 0xdd30                                            |         goto label_4;
                                                                     |     }
    0x0000ddac ldrb r3, [r3]                                         |     r3 = *(r3);
    0x0000ddae cmp r3, 0                                             |     
                                                                     |     if (r3 != 0) {
    0x0000ddb0 bne 0xdd30                                            |         goto label_4;
                                                                     |     }
    0x0000ddb2 str r0, [r5, -0x10]                                   |     var_10h = r0;
    0x0000ddb6 b 0xdd30                                              |     goto label_4;
                                                                     | label_9:
    0x0000ddb8 blx 0x1a1c                                            |     stat64 ();
                                                                     | label_7:
    0x0000ddbc blx 0x1be4                                            |     r0 = isoc99_sscanf ();
    0x0000ddc0 ldr r0, [r0]                                          |     r0 = *(r0);
    0x0000ddc2 rsbs r4, r0, 0                                        |     r4 = r0 - ;
    0x0000ddc4 blx 0x1b18                                            |     system (r0)
    0x0000ddc8 mov r0, r8                                            |     r0 = r8;
    0x0000ddca blx 0x1dbc                                            |     fcn_00001dbc ();
    0x0000ddce b 0xdd40                                              |     goto label_3;
                                                                     | }
    ; assembly                               | /* r2dec pseudo code output */
                                             | /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/bin/kmod @ 0xddf0 */
                                             | #include <stdint.h>
                                             |  
    ; (fcn) fcn.0000ddf0 ()                  | void fcn_0000ddf0 (uint32_t arg1) {
                                             |     int16_t var_0h_2;
                                             |     int16_t var_4h_2;
                                             |     int16_t var_8h;
                                             |     char * string;
                                             |     int16_t var_10h_2;
                                             |     int16_t var_1000h;
                                             |     int32_t var_0h;
                                             |     r0 = arg1;
    0x0000ddf0 ldr r2, [pc, 0xa8]            |     
    0x0000ddf2 ldr r3, [pc, 0xac]            |     r3 = *(0xdea2);
    0x0000ddf4 push {r4, r5, r6, lr}         |     
    0x0000ddf6 sub.w sp, sp, 0x1000          |     
    0x0000ddfa add r2, pc                    |     r2 = 0x1bc9a;
    0x0000ddfc sub sp, 0x10                  |     
    0x0000ddfe add.w r1, sp, 0x1000          |     r1 += var_1000h;
    0x0000de02 ldr r3, [r2, r3]              |     
    0x0000de04 adds r1, 0xc                  |     r1 += 0xc;
    0x0000de06 ldr r3, [r3]                  |     r3 = *(0x1bc9a);
    0x0000de08 str r3, [r1]                  |     *(r1) = r3;
    0x0000de0a mov.w r3, 0                   |     r3 = 0;
    0x0000de0e cmp r0, 0                     |     
                                             |     if (r0 == 0) {
    0x0000de10 beq 0xde92                    |         goto label_1;
                                             |     }
    0x0000de12 ldr r2, [r0, 8]               |     r2 = *((r0 + 8));
    0x0000de14 add r6, sp, 0x10              |     r6 += var_10h_2;
    0x0000de16 ldr r0, [pc, 0x8c]            |     
    0x0000de18 mov.w r3, 0x1000              |     r3 = 0x1000;
    0x0000de1c subs r4, r6, 4                |     r4 -= string;
    0x0000de1e mov r1, r3                    |     r1 = r3;
    0x0000de20 str r2, [sp, 4]               |     var_4h_2 = r2;
    0x0000de22 movs r2, 1                    |     r2 = 1;
    0x0000de24 add r0, pc                    |     r0 = 0x1bcce;
    0x0000de26 str r0, [sp]                  |     *(sp) = r0;
    0x0000de28 mov r0, r4                    |     r0 = r4;
    0x0000de2a blx 0x1dd4                    |     fcn_00001dd4 ();
    0x0000de2e mov.w r1, 0x80000             |     r1 = 0x80000;
    0x0000de32 mov r0, r4                    |     r0 = r4;
    0x0000de34 blx 0x1ad0                    |     fstatat64 ();
    0x0000de38 subs r5, r0, 0                |     r5 -= string;
                                             |     if (r5 < string) {
    0x0000de3a blt 0xde7c                    |         goto label_2;
                                             |     }
    0x0000de3c movs r2, 0xa                  |     r2 = 0xa;
    0x0000de3e sub.w r1, r6, 8               |     r1 -= var_8h;
    0x0000de42 bl 0x94c4                     |     r0 = fcn_000094c4 (r0, r1, r2);
    0x0000de46 mov r4, r0                    |     r4 = r0;
    0x0000de48 mov r0, r5                    |     r0 = r5;
    0x0000de4a blx 0x1dbc                    |     fcn_00001dbc ();
    0x0000de4c invalid                       |     
    0x0000de50 it ge                         |     
                                             |     if (r2 < 0xa) {
    0x0000de52 ldrge r4, [r6, -0x8]          |         r4 = *((r6 - 0x8));
                                             |     }
                                             |     if (r2 < 0xa) {
    0x0000de56 blt 0xde8a                    |         goto label_3;
                                             |     }
                                             |     do {
                                             | label_0:
    0x0000de58 ldr r2, [pc, 0x4c]            |         
    0x0000de5a add.w r1, sp, 0x1000          |         r1 += var_1000h;
    0x0000de5e ldr r3, [pc, 0x40]            |         r3 = *(0xdea2);
    0x0000de60 adds r1, 0xc                  |         r1 += 0xc;
    0x0000de62 add r2, pc                    |         r2 = 0x1bd0e;
    0x0000de64 ldr r3, [r2, r3]              |         r3 = *(0x1bd0e);
    0x0000de66 ldr r2, [r3]                  |         r2 = *(0x1bd0e);
    0x0000de68 ldr r3, [r1]                  |         r3 = *(r1);
    0x0000de6a eors r2, r3                   |         r2 ^= r3;
    0x0000de6c mov.w r3, 0                   |         r3 = 0;
                                             |         if (r2 != r3) {
    0x0000de70 bne 0xde98                    |             goto label_4;
                                             |         }
    0x0000de72 mov r0, r4                    |         r0 = r4;
    0x0000de74 add.w sp, sp, 0x1000          |         
    0x0000de78 add sp, 0x10                  |         
    0x0000de7a pop {r4, r5, r6, pc}          |         
                                             | label_2:
    0x0000de7c blx 0x1be4                    |         r0 = isoc99_sscanf ();
    0x0000de80 ldr r0, [r0]                  |         r0 = *(r0);
    0x0000de82 rsbs r4, r0, 0                |         r4 = r0 - ;
    0x0000de84 blx 0x1b18                    |         system (r0)
    0x0000de88 b 0xde58                      |         
                                             |     } while (1);
                                             | label_3:
    0x0000de8a rsbs r0, r4, 0                |     r0 = r4 - ;
    0x0000de8c blx 0x1b18                    |     system (r0)
    0x0000de90 b 0xde58                      |     goto label_0;
                                             | label_1:
    0x0000de92 mvn r4, 1                     |     r4 = ~1;
    0x0000de96 b 0xde58                      |     goto label_0;
                                             | label_4:
    0x0000de98 blx 0x1a1c                    |     stat64 ();
    0x0000de9c strh r6, [r3]                 |     *(r3) = r6;
    0x0000de9e movs r1, r0                   |     r1 = r0;
    0x0000dea0 lsls r4, r7, 6                |     r4 = r7 << 6;
    0x0000dea2 movs r0, r0                   |     
    0x0000dea4 ldr r4, [r7, 0x48]            |     r4 = *((r7 + 0x48));
    0x0000dea6 movs r0, r0                   |     
    0x0000dea8 ldrb r6, [r6, 0x1e]           |     r6 = *((r6 + 0x1e));
    0x0000deaa movs r1, r0                   |     r1 = r0;
                                             | }
    ; assembly                                           | /* r2dec pseudo code output */
                                                         | /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/bin/kmod @ 0xdeac */
                                                         | #include <stdint.h>
                                                         |  
    ; (fcn) fcn.0000deac ()                              | void fcn_0000deac (uint32_t arg1) {
                                                         |     int16_t var_0h;
                                                         |     int16_t var_4h;
                                                         |     int16_t var_10h;
                                                         |     int16_t var_1000h_2;
                                                         |     r0 = arg1;
    0x0000deac blmi 0x10607b4                            |     __asm ("blmi 0x10607b4");
    0x0000deb0 push.w {r4, r5, r6, r7, r8, lr}           |     
    0x0000deb4 sub.w sp, sp, 0x1000                      |     
    0x0000deb8 add r2, pc                                |     r2 += pc;
    0x0000deba sub sp, 0x10                              |     
    0x0000debc add.w r1, sp, 0x1000                      |     r1 += var_1000h_2;
    0x0000dec0 mov r5, r0                                |     r5 = r0;
    0x0000dec2 ldr r3, [r2, r3]                          |     r3 = *((r2 + r3));
    0x0000dec4 adds r1, 0xc                              |     r1 += 0xc;
    0x0000dec6 ldr r3, [r3]                              |     r3 = *(r3);
    0x0000dec8 str r3, [r1]                              |     *(r1) = r3;
    0x0000deca mov.w r3, 0                               |     r3 = 0;
    0x0000dece cmp r0, 0                                 |     
                                                         |     if (var_0h == ) {
    0x0000ded0 beq 0xdf94                                |         goto label_3;
                                                         |     }
    0x0000ded2 ldr r4, [r0]                              |     r4 = *(r0);
    0x0000ded4 cmp r4, 0                                 |     
                                                         |     if (r4 == 0) {
    0x0000ded6 beq 0xdf4e                                |         goto label_1;
                                                         |     }
    0x0000ded8 ldr r3, [r0, 8]                           |     r3 = *((r0 + 8));
    0x0000deda add r7, sp, 0x10                          |     r7 += var_10h;
    0x0000dedc ldr r2, [pc, 0xd8]                        |     
    0x0000dede subs r4, r7, 4                            |     r4 = r7 - 4;
    0x0000dee0 mov r0, r4                                |     r0 = r4;
    0x0000dee2 str r3, [sp, 4]                           |     var_4h = r3;
    0x0000dee4 mov.w r3, 0x1000                          |     r3 = 0x1000;
    0x0000dee8 add r2, pc                                |     r2 = 0x1bea4;
    0x0000deea mov r1, r3                                |     r1 = r3;
    0x0000deec str r2, [sp]                              |     *(sp) = r2;
    0x0000deee movs r2, 1                                |     r2 = 1;
    0x0000def0 blx 0x1dd4                                |     fcn_00001dd4 ();
    0x0000def4 mov r0, r4                                |     r0 = r4;
    0x0000def6 blx 0x1ab8                                |     r0 = fnmatch ();
    0x0000defa mov r6, r0                                |     r6 = r0;
    0x0000defc cmp r0, 0                                 |     
                                                         |     if (r0 == 0) {
    0x0000defe beq 0xdf98                                |         goto label_4;
                                                         |     }
    0x0000df00 blx 0x1cf4                                |     r0 = fcn_00001cf4 ();
    0x0000df04 mov r1, r0                                |     r1 = r0;
    0x0000df06 cmp r0, 0                                 |     
                                                         |     if (r0 == 0) {
    0x0000df08 beq 0xdfa6                                |         goto label_5;
                                                         |     }
    0x0000df0a movs r4, 0                                |     r4 = 0;
    0x0000df0c sub.w r8, r7, 8                           |     r8 = r7 - 8;
                                                         |     do {
    0x0000df10 ldrb r3, [r1, 0x13]                       |         r3 = *((r1 + 0x13));
    0x0000df12 cmp r3, 0x2e                              |         
                                                         |         if (r3 == 0x2e) {
    0x0000df14 bne 0xdf20                                |             
    0x0000df16 ldrb r3, [r1, 0x14]                       |             r3 = *((r1 + 0x14));
                                                         |             if (r3 == 0) {
    0x0000df18 cbz r3, 0xdf3c                            |                 goto label_6;
                                                         |             }
    0x0000df1a ldrh r3, [r1, 0x14]                       |             r3 = *((r1 + 0x14));
    0x0000df1c cmp r3, 0x2e                              |             
                                                         |             if (r3 == 0x2e) {
    0x0000df1e beq 0xdf3c                                |                 goto label_6;
                                                         |             }
                                                         |         }
    0x0000df20 ldr r0, [r5]                              |         r0 = *(r5);
    0x0000df22 mov r2, r8                                |         r2 = r8;
    0x0000df24 adds r1, 0x13                             |         r1 += 0x13;
    0x0000df26 bl 0xcabc                                 |         fcn_0000cabc (r0, r1, r2);
    0x0000df28 stc2l p8, c2, [sb]                        |         __asm ("stc2l p8, c2, [sb]");
                                                         |         if (r1 < 0x13) {
    0x0000df2c blt 0xdf74                                |             goto label_7;
                                                         |         }
    0x0000df2e ldr r1, [r7, -0x8]                        |         r1 = *((r7 - 0x8));
    0x0000df32 mov r0, r4                                |         r0 = r4;
    0x0000df34 bl 0xa350                                 |         r0 = fcn_0000a350 (r0, r1);
                                                         |         if (r0 == 0) {
    0x0000df38 cbz r0, 0xdf8a                            |             goto label_8;
                                                         |         }
    0x0000df3a mov r4, r0                                |         r4 = r0;
                                                         | label_6:
    0x0000df3c mov r0, r6                                |         r0 = r6;
    0x0000df3e blx 0x1cf4                                |         r0 = fcn_00001cf4 ();
    0x0000df42 mov r1, r0                                |         r1 = r0;
    0x0000df44 cmp r0, 0                                 |         
    0x0000df46 bne 0xdf10                                |         
                                                         |     } while (r0 != 0);
                                                         | label_2:
    0x0000df48 mov r0, r6                                |     r0 = r6;
    0x0000df4a blx 0x1dc8                                |     fcn_00001dc8 ();
                                                         |     do {
                                                         | label_1:
    0x0000df4e ldr r2, [pc, 0x6c]                        |         
    0x0000df50 add.w r1, sp, 0x1000                      |         r1 += var_1000h_2;
    0x0000df54 ldr r3, [pc, 0x5c]                        |         r3 = *(0xdfb4);
    0x0000df56 adds r1, 0xc                              |         r1 += 0xc;
    0x0000df58 add r2, pc                                |         r2 = 0x1bf1a;
    0x0000df5a ldr r3, [r2, r3]                          |         r3 = *(0x1bf1a);
    0x0000df5c ldr r2, [r3]                              |         r2 = *(0x1bf1a);
    0x0000df5e ldr r3, [r1]                              |         r3 = *(r1);
    0x0000df60 eors r2, r3                               |         r2 ^= r3;
    0x0000df62 mov.w r3, 0                               |         r3 = 0;
                                                         |         if (r2 != r3) {
    0x0000df66 bne 0xdfaa                                |             goto label_9;
                                                         |         }
    0x0000df68 mov r0, r4                                |         r0 = r4;
    0x0000df6a add.w sp, sp, 0x1000                      |         
    0x0000df6e add sp, 0x10                              |         
    0x0000df70 pop.w {r4, r5, r6, r7, r8, pc}            |         
                                                         | label_7:
    0x0000df74 rsbs r0, r0, 0                            |         r0 -= ;
    0x0000df76 blx 0x1b18                                |         system (r0)
                                                         | label_0:
    0x0000df7a mov r0, r6                                |         r0 = r6;
    0x0000df7c blx 0x1dc8                                |         fcn_00001dc8 ();
    0x0000df80 mov r0, r4                                |         r0 = r4;
    0x0000df82 movs r4, 0                                |         r4 = 0;
    0x0000df84 bl 0xcb50                                 |         fcn_0000cb50 (r0);
    0x0000df88 b 0xdf4e                                  |         
                                                         |     } while (1);
                                                         | label_8:
    0x0000df8a ldr r0, [r7, -0x8]                        |     r0 = *((r7 - 0x8));
    0x0000df8e bl 0xcd5c                                 |     fcn_0000cd5c (r0);
    0x0000df92 b 0xdf7a                                  |     goto label_0;
                                                         | label_3:
    0x0000df94 mov r4, r0                                |     r4 = r0;
    0x0000df96 b 0xdf4e                                  |     goto label_1;
                                                         | label_4:
    0x0000df98 blx 0x1be4                                |     r0 = isoc99_sscanf ();
    0x0000df9c ldr r0, [r0]                              |     r0 = *(r0);
    0x0000df9e mov r4, r6                                |     r4 = r6;
    0x0000dfa0 blx 0x1b18                                |     system (r0)
    0x0000dfa4 b 0xdf4e                                  |     goto label_1;
                                                         | label_5:
    0x0000dfa6 mov r4, r0                                |     r4 = r0;
    0x0000dfa8 b 0xdf48                                  |     goto label_2;
                                                         | label_9:
    0x0000dfaa blx 0x1a1c                                |     stat64 ();
    0x0000dfae nop                                       |     
    0x0000dfb0 ldrb r0, [r4, 0x1d]                       |     r0 = *((r4 + 0x1d));
    0x0000dfb2 movs r1, r0                               |     r1 = r0;
    0x0000dfb4 lsls r4, r7, 6                            |     r4 = r7 << 6;
    0x0000dfb6 movs r0, r0                               |     
    0x0000dfb8 ldr r0, [r2, 0x40]                        |     r0 = *((r2 + 0x40));
    0x0000dfba movs r0, r0                               |     
    0x0000dfbc ldrb r0, [r0, 0x1b]                       |     r0 = *((r0 + 0x1b));
    0x0000dfbe movs r1, r0                               |     r1 = r0;
                                                         | }
    ; assembly                                                   | /* r2dec pseudo code output */
                                                                 | /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/bin/kmod @ 0x10d9c */
                                                                 | #include <stdint.h>
                                                                 |  
    ; (fcn) fcn.00010d9c ()                                      | void fcn_00010d9c (int16_t arg1) {
                                                                 |     int16_t var_14h;
                                                                 |     int16_t var_0h;
                                                                 |     int16_t var_4h;
                                                                 |     int16_t var_8h;
                                                                 |     int16_t var_ch;
                                                                 |     int16_t var_10h;
                                                                 |     int16_t var_14h_2;
                                                                 |     int16_t var_1ch;
                                                                 |     int16_t var_20h;
                                                                 |     int16_t var_24h;
                                                                 |     r0 = arg1;
    0x00010d9c blmi 0x12a36c8                                    |     __asm ("blmi 0x12a36c8");
    0x00010da0 push.w {r4, r5, r6, r7, r8, sb, sl, fp, lr}       |     
    0x00010da4 sub sp, 0x2c                                      |     
    0x00010da6 add r2, pc                                        |     r2 += pc;
    0x00010da8 ldrd r4, r5, [r0, 0x18]                           |     __asm ("ldrd r4, r5, [r0, 0x18]");
    0x00010dac movs r7, 0                                        |     r7 = 0;
    0x00010dae mov r6, r0                                        |     r6 = r0;
    0x00010db0 ldr r3, [r2, r3]                                  |     r3 = *((r2 + r3));
    0x00010db2 ldr r2, [r0, 8]                                   |     r2 = *((r0 + 8));
    0x00010db4 ldr r3, [r3]                                      |     r3 = *(r3);
    0x00010db6 str r3, [sp, 0x24]                                |     var_24h = r3;
    0x00010db8 mov.w r3, 0                                       |     r3 = 0;
    0x00010dbc str r7, [r0, 0x20]                                |     *((r0 + 0x20)) = r7;
    0x00010dbe cmp r4, r2                                        |     
    0x00010dc0 asr.w r3, r2, 0x1f                                |     r3 = r2 >> 0x1f;
    0x00010dc4 sbcs.w r3, r5, r3                                 |     __asm ("sbcs.w r3, r5, r3");
                                                                 |     if (r4 >= r2) {
    0x00010dc8 bge 0x10eb6                                       |         goto label_3;
                                                                 |     }
    0x00010dca add r3, sp, 0x20                                  |     r3 += var_20h;
    0x00010dcc str r3, [sp, 8]                                   |     var_8h = r3;
    0x00010dce add r3, sp, 0x1c                                  |     r3 += var_1ch;
    0x00010dd0 str r3, [sp, 0xc]                                 |     var_ch = r3;
    0x00010dd2 b 0x10e00                                         |     
                                                                 |     while (r7 != 0) {
    0x00010dd4 ldr r3, [sp, 0x10]                                |         r3 = var_10h;
    0x00010dd6 cmp r1, fp                                        |         
    0x00010dd8 it eq                                             |         
                                                                 |         if (r1 == fp) {
    0x00010dda cmpeq r2, r3                                      |             __asm ("cmpeq r2, r3");
                                                                 |         }
                                                                 |         if (r1 != fp) {
    0x00010ddc bne 0x10e98                                       |             goto label_4;
                                                                 |         }
    0x00010dde mov r1, sl                                        |         r1 = sl;
    0x00010de0 mov r0, r7                                        |         r0 = r7;
    0x00010de2 blx 0x1da4                                        |         r0 = fcn_00001da4 ();
    0x00010de6 cmp r0, 0                                         |         
                                                                 |         if (r0 != 0) {
    0x00010de8 bne 0x10e98                                       |             goto label_4;
                                                                 |         }
                                                                 | label_0:
    0x00010dea ldr r1, [r6, 8]                                   |         r1 = *((r6 + 8));
    0x00010dec ldr r3, [r6, 0x20]                                |         r3 = *((r6 + 0x20));
    0x00010dee cmp r4, r1                                        |         
    0x00010df0 asr.w r2, r1, 0x1f                                |         r2 = r1 >> 0x1f;
    0x00010df4 add.w r3, r3, 1                                   |         r3++;
    0x00010df8 str r3, [r6, 0x20]                                |         *((r6 + 0x20)) = r3;
    0x00010dfa sbcs.w r2, r5, r2                                 |         __asm ("sbcs.w r2, r5, r2");
                                                                 |         if (r4 >= r1) {
    0x00010dfe bge 0x10e9e                                       |             goto label_5;
                                                                 |         }
    0x00010e00 ldr r1, [sp, 8]                                   |         r1 = var_8h;
    0x00010e02 mov r3, r5                                        |         r3 = r5;
    0x00010e04 mov r2, r4                                        |         r2 = r4;
    0x00010e06 mov r0, r6                                        |         r0 = r6;
    0x00010e08 mov r8, r4                                        |         r8 = r4;
    0x00010e0a mov sb, r5                                        |         sb = r5;
    0x00010e0c str r1, [sp, 4]                                   |         var_4h = r1;
    0x00010e0e ldr r1, [sp, 0xc]                                 |         r1 = var_ch;
    0x00010e10 str r1, [sp]                                      |         *(sp) = r1;
    0x00010e12 bl 0x10b38                                        |         r0 = fcn_00010b38 (r0, r1, r2, r3, r4, r5);
    0x00010e16 cmp r0, 1                                         |         
    0x00010e18 mov r4, r0                                        |         r4 = r0;
    0x00010e1a sbcs r3, r1, 0                                    |         __asm ("sbcs r3, r1, 0");
    0x00010e1e mov r5, r1                                        |         r5 = r1;
                                                                 |         if (r0 < 1) {
    0x00010e20 blt 0x10e4c                                       |             goto label_6;
                                                                 |         }
    0x00010e22 ldr.w sl, [sp, 0x1c]                              |         sl = var_1ch;
    0x00010e26 movs r1, 0x2e                                     |         r1 = 0x2e;
    0x00010e28 mov r0, sl                                        |         r0 = sl;
    0x00010e2a blx 0x1bbc                                        |         r0 = fcn_00001bbc ();
                                                                 |         if (r0 == 0) {
    0x00010e2e cbz r0, 0x10e50                                   |             goto label_2;
                                                                 |         }
    0x00010e30 sub.w r2, r0, sl                                  |         r2 = r0 - sl;
    0x00010e34 asrs r1, r2, 0x1f                                 |         r1 = r2 >> 0x1f;
    0x00010e36 cmp r7, 0                                         |         
    0x00010e38 bne 0x10dd4                                       |         
                                                                 |     }
    0x00010e3a mov r0, sl                                        |     r0 = sl;
    0x00010e3c str r1, [sp, 0x14]                                |     var_14h_2 = r1;
    0x00010e3e str r2, [sp, 0x10]                                |     var_10h = r2;
    0x00010e40 blx 0x1a10                                        |     stack_chk_fail ();
    0x00010e44 ldr r1, [sp, 0x14]                                |     r1 = var_14h_2;
    0x00010e46 mov r7, r0                                        |     r7 = r0;
    0x00010e48 mov fp, r1                                        |     
    0x00010e4a b 0x10dea                                         |     goto label_0;
                                                                 | label_6:
    0x00010e4c orrs r5, r0                                       |     r5 |= r0;
                                                                 |     if (r5 != r0) {
    0x00010e4e bne 0x10eaa                                       |         goto label_7;
                                                                 |     }
                                                                 | label_2:
    0x00010e50 ldr r3, [r6, 8]                                   |     r3 = *((r6 + 8));
    0x00010e52 ldrd sl, r5, [r6, 0x18]                           |     __asm ("ldrd sl, r5, [r6, 0x18]");
    0x00010e56 mov r8, r3                                        |     r8 = r3;
    0x00010e58 asr.w sb, r3, 0x1f                                |     sb = r3 >> 0x1f;
                                                                 |     do {
                                                                 | label_1:
    0x00010e5c mov r0, r7                                        |         r0 = r7;
    0x00010e5e strd sl, r5, [r6, 0x10]                           |         __asm ("strd sl, r5, [r6, 0x10]");
    0x00010e62 str.w r8, [r6, 0x18]                              |         __asm ("str.w r8, [r6, 0x18]");
    0x00010e66 str.w sb, [r6, 0x1c]                              |         __asm ("str.w sb, [r6, 0x1c]");
    0x00010e6a blx 0x19a0                                        |         fcn_000019a0 ();
    0x00010e6e ldr r3, [r6, 8]                                   |         r3 = *((r6 + 8));
    0x00010e70 ldr r2, [pc, 0x58]                                |         
    0x00010e72 cmp sl, r3                                        |         
    0x00010e74 asr.w r3, r3, 0x1f                                |         r3 >>= 0x1f;
    0x00010e78 add r2, pc                                        |         r2 = 0x21d48;
    0x00010e7a sbcs r5, r3                                       |         __asm ("sbcs r5, r3");
    0x00010e7c ldr r3, [pc, 0x48]                                |         r3 = *(0x10ec8);
    0x00010e7e ite lt                                            |         
                                                                 |         if (sl >= r3) {
    0x00010e80 movlt r0, 1                                       |             r0 = 1;
                                                                 |         }
                                                                 |         if (sl < r3) {
    0x00010e82 movge r0, 0                                       |             r0 = 0;
                                                                 |         }
    0x00010e84 ldr r3, [r2, r3]                                  |         r3 = *(0x21d48);
    0x00010e86 ldr r2, [r3]                                      |         r2 = *(0x21d48);
    0x00010e88 ldr r3, [sp, 0x24]                                |         r3 = var_24h;
    0x00010e8a eors r2, r3                                       |         r2 ^= r3;
    0x00010e8c mov.w r3, 0                                       |         r3 = 0;
                                                                 |         if (r2 != r3) {
    0x00010e90 bne 0x10ebe                                       |             goto label_8;
                                                                 |         }
    0x00010e92 add sp, 0x2c                                      |         
    0x00010e94 pop.w {r4, r5, r6, r7, r8, sb, sl, fp, pc}        |         
                                                                 | label_4:
    0x00010e98 ldrd sl, r5, [r6, 0x18]                           |         __asm ("ldrd sl, r5, [r6, 0x18]");
    0x00010e9c b 0x10e5c                                         |         
                                                                 |     } while (1);
                                                                 | label_5:
    0x00010e9e mov sb, r5                                        |     sb = r5;
    0x00010ea0 ldr.w sl, [r6, 0x18]                              |     sl = *((r6 + 0x18));
    0x00010ea4 ldr r5, [r6, 0x1c]                                |     r5 = *((r6 + 0x1c));
    0x00010ea6 mov r8, r4                                        |     r8 = r4;
    0x00010ea8 b 0x10e5c                                         |     goto label_1;
                                                                 | label_7:
    0x00010eaa blx 0x1be4                                        |     r0 = isoc99_sscanf ();
    0x00010eae ldr r0, [r0]                                      |     r0 = *(r0);
    0x00010eb0 blx 0x1b18                                        |     system (r0)
    0x00010eb4 b 0x10e50                                         |     goto label_2;
                                                                 | label_3:
    0x00010eb6 mov sl, r4                                        |     sl = r4;
    0x00010eb8 mov r8, r4                                        |     r8 = r4;
    0x00010eba mov sb, r5                                        |     sb = r5;
    0x00010ebc b 0x10e5c                                         |     goto label_1;
                                                                 | label_8:
    0x00010ebe blx 0x1a1c                                        |     stat64 ();
    0x00010ec2 nop                                               |     
    0x00010ec4 str r2, [r6, r1]                                  |     *((r6 + r1)) = r2;
    0x00010ec6 movs r1, r0                                       |     r1 = r0;
    0x00010ec8 lsls r4, r7, 6                                    |     r4 = r7 << 6;
    0x00010eca movs r0, r0                                       |     
    0x00010ecc ldr r7, [pc, 0x280]                               |     r7 = *(0x11150);
    0x00010ece movs r1, r0                                       |     r1 = r0;
                                                                 | }
    ; assembly                                   | /* r2dec pseudo code output */
                                                 | /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/bin/kmod @ 0x10ed0 */
                                                 | #include <stdint.h>
                                                 |  
    ; (fcn) fcn.00010ed0 ()                      | void fcn_00010ed0 (int16_t arg1, int16_t arg2) {
                                                 |     int16_t var_10h;
                                                 |     int16_t var_38h;
                                                 |     int16_t var_1020h;
                                                 |     int16_t var_0h;
                                                 |     int16_t var_4h;
                                                 |     int16_t var_ch;
                                                 |     int16_t var_10h_2;
                                                 |     int16_t var_14h;
                                                 |     r0 = arg1;
                                                 |     r1 = arg2;
    0x00010ed0 blmi 0xb63788                     |     __asm ("blmi 0xb63788");
    0x00010ed4 push {r4, r5, r6, r7, lr}         |     
    0x00010ed6 sub sp, 0x1c                      |     
    0x00010ed8 add r2, pc                        |     r2 += pc;
    0x00010eda ldr r4, [r0, 8]                   |     r4 = *((r0 + 8));
    0x00010edc mov r5, r1                        |     r5 = r1;
    0x00010ede ldr r3, [r2, r3]                  |     r3 = *((r2 + r3));
    0x00010ee0 asrs r1, r4, 0x1f                 |     r1 = r4 >> 0x1f;
    0x00010ee2 ldr r3, [r3]                      |     r3 = *(r3);
    0x00010ee4 str r3, [sp, 0x14]                |     var_14h = r3;
    0x00010ee6 mov.w r3, 0                       |     r3 = 0;
    0x00010eea ldrd r2, r3, [r0, 0x10]           |     __asm ("ldrd r2, r3, [r0, 0x10]");
    0x00010eee cmp r3, r1                        |     
    0x00010ef0 it eq                             |     
                                                 |     if (r3 == r1) {
    0x00010ef2 cmpeq r2, r4                      |         __asm ("cmpeq r2, r4");
                                                 |     }
    0x00010ef4 it eq                             |     
                                                 |     if (r3 != r1) {
    0x00010ef6 moveq r0, 0                       |         r0 = 0;
                                                 |     }
                                                 |     if (r3 == r1) {
    0x00010ef8 beq 0x10f36                       |         goto label_1;
                                                 |     }
    0x00010efa add r1, sp, 0x10                  |     r1 += var_10h_2;
    0x00010efc movs r7, 0                        |     r7 = 0;
    0x00010efe str r1, [sp, 4]                   |     var_4h = r1;
    0x00010f00 add r1, sp, 0xc                   |     r1 += var_ch;
    0x00010f02 str r1, [sp]                      |     *(sp) = r1;
    0x00010f04 str r7, [sp, 0xc]                 |     var_ch = r7;
    0x00010f06 bl 0x10b38                        |     r0 = fcn_00010b38 (r0, r1, r2, r3, r4, r5);
    0x00010f0a cmp r0, 1                         |     
    0x00010f0c mov r4, r0                        |     r4 = r0;
    0x00010f0e sbcs r3, r1, 0                    |     __asm ("sbcs r3, r1, 0");
    0x00010f12 mov r6, r1                        |     r6 = r1;
                                                 |     if (r0 < 1) {
    0x00010f14 blt 0x10f4e                       |         goto label_2;
                                                 |     }
    0x00010f16 ldr r6, [sp, 0xc]                 |     r6 = var_ch;
    0x00010f18 movs r1, 0x2e                     |     r1 = 0x2e;
    0x00010f1a mov r0, r6                        |     r0 = r6;
    0x00010f1c blx 0x1bbc                        |     r0 = fcn_00001bbc ();
                                                 |     if (r0 == 0) {
    0x00010f20 cbz r0, 0x10f74                   |         goto label_3;
                                                 |     }
    0x00010f22 subs r4, r0, r6                   |     r4 = r0 - r6;
    0x00010f24 cmp.w r4, 0x1000                  |     
                                                 |     if (r4 <= 0x1000) {
    0x00010f28 blo 0x10f64                       |         goto label_4;
                                                 |     }
    0x00010f2a blx 0x1be4                        |     isoc99_sscanf ();
    0x00010f2e movs r7, 0x24                     |     r7 = 0x24;
    0x00010f30 mov r5, r0                        |     r5 = r0;
                                                 |     do {
                                                 | label_0:
    0x00010f32 movs r0, 0                        |         r0 = 0;
    0x00010f34 str r7, [r5]                      |         *(r5) = r7;
                                                 | label_1:
    0x00010f36 ldr r2, [pc, 0x54]                |         
    0x00010f38 ldr r3, [pc, 0x4c]                |         r3 = *(0x10f88);
    0x00010f3a add r2, pc                        |         r2 = 0x21ecc;
    0x00010f3c ldr r3, [r2, r3]                  |         r3 = *(0x21ecc);
    0x00010f3e ldr r2, [r3]                      |         r2 = *(0x21ecc);
    0x00010f40 ldr r3, [sp, 0x14]                |         r3 = var_14h;
    0x00010f42 eors r2, r3                       |         r2 ^= r3;
    0x00010f44 mov.w r3, 0                       |         r3 = 0;
                                                 |         if (r2 != r3) {
    0x00010f48 bne 0x10f7e                       |             goto label_5;
                                                 |         }
    0x00010f4a add sp, 0x1c                      |         
    0x00010f4c pop {r4, r5, r6, r7, pc}          |         
                                                 | label_2:
    0x00010f4e blx 0x1be4                        |         isoc99_sscanf ();
    0x00010f52 orrs.w r1, r4, r6                 |         r1 = r4 | r6;
    0x00010f56 ldr r7, [r0]                      |         r7 = *(r0);
    0x00010f58 mov r5, r0                        |         r5 = r0;
    0x00010f5a beq 0x10f32                       |         
                                                 |     } while (r1 == r4);
    0x00010f5c mov r0, r7                        |     r0 = r7;
    0x00010f5e blx 0x1b18                        |     system (r0)
    0x00010f62 b 0x10f32                         |     goto label_0;
                                                 | label_4:
    0x00010f64 mov r2, r4                        |     r2 = r4;
    0x00010f66 mov r1, r6                        |     r1 = r6;
    0x00010f68 mov r0, r5                        |     r0 = r5;
    0x00010f6a blx 0x1c38                        |     printf_chk ();
    0x00010f6e movs r0, 1                        |     r0 = 1;
    0x00010f70 strb r7, [r5, r4]                 |     *((r5 + r4)) = r7;
    0x00010f72 b 0x10f36                         |     goto label_1;
                                                 | label_3:
    0x00010f74 blx 0x1be4                        |     r0 = isoc99_sscanf ();
    0x00010f78 ldr r7, [r0]                      |     r7 = *(r0);
    0x00010f7a mov r5, r0                        |     r5 = r0;
    0x00010f7c b 0x10f32                         |     goto label_0;
                                                 | label_5:
    0x00010f7e blx 0x1a1c                        |     stat64 ();
    0x00010f82 nop                               |     
    0x00010f84 ldr r7, [pc, 0x100]               |     r7 = *(0x11088);
    0x00010f86 movs r1, r0                       |     r1 = r0;
    0x00010f88 lsls r4, r7, 6                    |     r4 = r7 << 6;
    0x00010f8a movs r0, r0                       |     
    0x00010f8c ldr r6, [pc, 0x378]               |     r6 = *(0x11308);
    0x00010f8e movs r1, r0                       |     r1 = r0;
                                                 | }

[*] Function system used 42 times kmod