[*] Binary protection state of ext4.ko

  
  	No RELRO       No Canary found   NX disabled  REL          No RPATH     No RUNPATH   Symbols


[*] Function printf tear down of ext4.ko

    ; assembly                                                                   | /* r2dec pseudo code output */
                                                                                 | /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-80367616.squashfs_v4_le_extract/usr/lib/modules/5.10.52-axis9/kernel/fs/ext4/ext4.ko @ 0x801cd74 */
                                                                                 | #include <stdint.h>
                                                                                 |  
                                                                                 | #define BIT_MASK(t,v) ((t)(-((v)!= 0)))&(((t)-1)>>((sizeof(t)*CHAR_BIT)-(v)))
                                                                                 |  
    ; (fcn) sym.ext4_bmap ()                                                     | void ext4_bmap (int32_t arg1) {
                                                                                 |     int32_t var_0h;
                                                                                 |     r0 = arg1;
    0x0801cd74 push {r4, r5, r6, r7, r8, lr}                                     |     
    0x0801cd78 mov r4, r0                                                        |     r4 = r0;
    0x0801cd7c mov r7, r2                                                        |     r7 = r2;
    0x0801cd80 ldr r5, [r0]                                                      |     r5 = *(r0);
    0x0801cd84 sub sp, sp, 8                                                     |     
    0x0801cd88 mov r6, r3                                                        |     r6 = r3;
    0x0801cd8c ldr r1, [r5, -0x6c]                                               |     r1 = *((r5 - 0x6c));
    0x0801cd90 tst r1, 0x10000000                                                |     
                                                                                 |     if ((r1 & 0x10000000) != 0) {
    0x0801cd94 beq 0x801cdb8                                                     |         
    0x0801cd98 movw r3, 0x1be                                                    |         r3 = 0x1be;
    0x0801cd9c ldrh r3, [r5, r3]                                                 |         r3 = *((r5 + r3));
    0x0801cda0 cmp r3, 0                                                         |         
                                                                                 |         if (r3 == 0) {
    0x0801cda4 beq 0x801cdb8                                                     |             goto label_3;
                                                                                 |         }
                                                                                 | label_2:
    0x0801cda8 mov r0, 0                                                         |         r0 = 0;
    0x0801cdac mov r1, r0                                                        |         r1 = r0;
    0x0801cdb0 add sp, sp, 8                                                     |         
    0x0801cdb4 pop {r4, r5, r6, r7, r8, pc}                                      |         
                                                                                 |     }
                                                                                 | label_3:
    0x0801cdb8 ldr r3, [r5, 0x1c]                                                |     r3 = *((r5 + 0x1c));
    0x0801cdbc ldr r2, [r4, 4]                                                   |     r2 = *((r4 + 4));
    0x0801cdc0 ldr r3, [r3, 0x1f8]                                               |     r3 = *((r3 + 0x1f8));
    0x0801cdc4 tst r2, 0x800000                                                  |     
    0x0801cdc8 bne 0x801ce04                                                     |     
                                                                                 |     while ((r2 & loc.imp.fs_overflowgid) == 0) {
                                                                                 | label_0:
    0x0801cdcc ldr r3, [r3, 0x118]                                               |         r3 = *((r3 + 0x118));
    0x0801cdd0 cmp r3, 0                                                         |         
                                                                                 |         if (r3 != 0) {
    0x0801cdd4 beq 0x801cde4                                                     |             
    0x0801cdd8 ldr r3, [r5, -0x70]                                               |             r3 = *((r5 - 0x70));
    0x0801cddc tst r3, 1                                                         |             
                                                                                 |             if ((r3 & 1) != 0) {
    0x0801cde0 bne 0x801ce38                                                     |                 goto label_4;
                                                                                 |             }
                                                                                 |         }
                                                                                 | label_1:
    0x0801cde4 ldr r1, [pc, 0x98]                                                |         r1 = *(0x801ce80);
    0x0801cde8 mov r2, r7                                                        |         r2 = r7;
    0x0801cdec mov r3, r6                                                        |         r3 = r6;
    0x0801cdf0 mov r0, r4                                                        |         r0 = r4;
    0x0801cdf4 str r1, [sp]                                                      |         *(sp) = r1;
    0x0801cdf8 stmdaeq r8, {r0, r1, r2, r3, r5, r7, sb, sl, fp, ip, pc}          |         __asm ("stmdaeq r8, {r0, r1, r2, r3, r5, r7, sb, sl, fp, ip, pc}");
    0x0801cdfc add sp, sp, 8                                                     |         
    0x0801ce00 pop {r4, r5, r6, r7, r8, pc}                                      |         
    0x0801ce04 ldr r2, [r3, 0x4c]                                                |         r2 = *((r3 + 0x4c));
    0x0801ce08 tst r2, 0x8000000                                                 |         
    0x0801ce0c beq 0x801cdcc                                                     |         
                                                                                 |     }
    0x0801ce10 mvn r2, 0                                                         |     r2 = ~0;
    0x0801ce14 mvn r3, 0x80000000                                                |     r3 = ~0x80000000;
    0x0801ce18 mov r0, r4                                                        |     r0 = r4;
    0x0801ce1c strd r2, r3, [sp]                                                 |     __asm ("strd r2, r3, [sp]");
    0x0801ce20 mov r3, 0                                                         |     r3 = 0;
    0x0801ce24 mov r2, 0                                                         |     r2 = 0;
    0x0801ce28 stmdaeq r8, {r0, r1, r5, r6, r8, sl, fp, ip, pc}                  |     __asm ("stmdaeq r8, {r0, r1, r5, r6, r8, sl, fp, ip, pc}");
    0x0801ce2c ldr r3, [r5, 0x1c]                                                |     r3 = *((r5 + 0x1c));
    0x0801ce30 ldr r3, [r3, 0x1f8]                                               |     r3 = *((r3 + 0x1f8));
    0x0801ce34 b 0x801cdcc                                                       |     goto label_0;
                                                                                 | label_4:
    0x0801ce38 mrs r2, apsr                                                      |     r2 = apsr;
    0x0801ce3c cpsid i                                                           |     __asm ("cpsid i");
    0x0801ce40 ldr r3, [r5, -0x70]                                               |     r3 = *((r5 - 0x70));
    0x0801ce44 bic r3, r3, 1                                                     |     r3 = BIT_MASK (r3, 1);
    0x0801ce48 str r3, [r5, -0x70]                                               |     *((r5 - 0x70)) = r3;
    0x0801ce4c msr cpsr_c, r2                                                    |     cpsr_c = r2;
    0x0801ce50 ldr r3, [r5, 0x1c]                                                |     r3 = *((r5 + 0x1c));
    0x0801ce54 ldr r3, [r3, 0x1f8]                                               |     r3 = *((r3 + 0x1f8));
    0x0801ce58 ldr r8, [r3, 0x118]                                               |     r8 = *((r3 + 0x118));
    0x0801ce5c mov r0, r8                                                        |     r0 = r8;
    0x0801ce60 stmdaeq r8, {r0, r1, r4, r5, r7, sb, sl, fp, ip, pc}              |     __asm ("stmdaeq r8, {r0, r1, r4, r5, r7, sb, sl, fp, ip, pc}");
    0x0801ce64 mov r0, r8                                                        |     r0 = r8;
    0x0801ce68 stmdaeq r8, {r0, r1, r2, r4, r5, r7, sb, sl, fp, ip, pc}          |     __asm ("stmdaeq r8, {r0, r1, r2, r4, r5, r7, sb, sl, fp, ip, pc}");
    0x0801ce6c mov r5, r0                                                        |     r5 = r0;
    0x0801ce70 mov r0, r8                                                        |     r0 = r8;
    0x0801ce74 stmdaeq r8, {r0, r1, r3, r4, r5, r7, sb, sl, fp, ip, pc}          |     __asm ("stmdaeq r8, {r0, r1, r3, r4, r5, r7, sb, sl, fp, ip, pc}");
    0x0801ce78 cmp r5, 0                                                         |     
                                                                                 |     if (r5 == 0) {
    0x0801ce7c beq 0x801cde4                                                     |         goto label_1;
                                                                                 |     }
    0x0801ce80 b 0x801cda8                                                       |     goto label_2;
                                                                                 | }
    ; assembly                                                               | /* r2dec pseudo code output */
                                                                             | /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-80367616.squashfs_v4_le_extract/usr/lib/modules/5.10.52-axis9/kernel/fs/ext4/ext4.ko @ 0x800f3bc */
                                                                             | #include <stdint.h>
                                                                             |  
                                                                             | #define BIT_MASK(t,v) ((t)(-((v)!= 0)))&(((t)-1)>>((sizeof(t)*CHAR_BIT)-(v)))
                                                                             |  
    ; (fcn) sym.ext4_es_insert_extent ()                                     | void ext4_es_insert_extent (int32_t arg_78h, int32_t arg_7ch, int32_t arg_80h, int32_t arg1, int32_t arg2) {
                                                                             |     int32_t var_0h;
                                                                             |     int32_t var_4h;
                                                                             |     int32_t var_ch;
                                                                             |     int32_t var_10h;
                                                                             |     int32_t var_1ch;
                                                                             |     int32_t var_20h;
                                                                             |     int32_t var_28h;
                                                                             |     int32_t var_2ch;
                                                                             |     int32_t var_30h;
                                                                             |     int32_t var_3ch;
                                                                             |     int32_t var_40h;
                                                                             |     int32_t var_54h;
                                                                             |     r0 = arg1;
                                                                             |     r1 = arg2;
    0x0800f3bc push {r4, r5, r6, r7, r8, sb, sl, fp, lr}                     |     
    0x0800f3c0 mov r4, r0                                                    |     r4 = r0;
    0x0800f3c4 ldr r0, [r0, 0x1c]                                            |     r0 = *(arg_78hx1c);
    0x0800f3c8 sub sp, sp, 0x54                                              |     
    0x0800f3cc ldr sb, [r0, 0x1f8]                                           |     sb = *(arg_78hx1f8);
    0x0800f3d0 ldr sl, [sp, 0x78]                                            |     sl = *(arg_78h);
    0x0800f3d4 ldr r8, [sp, 0x7c]                                            |     r8 = *(arg_7ch);
    0x0800f3d8 ldrh r5, [sb, 0x78]                                           |     r5 = *((sb + 0x78));
    0x0800f3dc ubfx r5, r5, 5, 1                                             |     r5 = (r5 >> 5) & ((1 << 1) - 1);
    0x0800f3e0 cmp r2, 0                                                     |     
                                                                             |     if (r2 != 0) {
    0x0800f3e4 orreq r5, r5, 1                                               |         r5 |= 1;
                                                                             |     }
    0x0800f3e8 cmp r5, 0                                                     |     
                                                                             |     if (r5 == 0) {
    0x0800f3ec movne r5, 0                                                   |         r5 = 0;
                                                                             |     }
                                                                             |     if (r5 != 0) {
    0x0800f3f0 beq 0x800f400                                                 |         
                                                                             | label_0:
    0x0800f3f4 mov r0, r5                                                    |         r0 = r5;
    0x0800f3f8 add sp, sp, 0x54                                              |         
    0x0800f3fc pop {r4, r5, r6, r7, r8, sb, sl, fp, pc}                      |         
                                                                             |     }
    0x0800f400 add r3, r1, r2                                                |     r3 = r1 + r2;
    0x0800f404 mov r7, r1                                                    |     r7 = r1;
    0x0800f408 sub fp, r3, 1                                                 |     
    0x0800f40c mov r6, r2                                                    |     r6 = r2;
    0x0800f410 cmp r1, fp                                                    |     
    0x0800f414 str r3, [sp, 0xc]                                             |     var_ch = r3;
                                                                             |     if (r1 > fp) {
    0x0800f418 bhi 0x800f664                                                 |         goto label_10;
                                                                             |     }
    0x0800f41c ldr r3, [sp, 0x80]                                            |     r3 = *(arg_80h);
    0x0800f420 and r3, r3, 5                                                 |     r3 &= 5;
    0x0800f424 cmp r3, 5                                                     |     
                                                                             |     if (r3 == 5) {
    0x0800f428 beq 0x800f528                                                 |         goto label_11;
                                                                             |     }
                                                                             | label_2:
    0x0800f42c ldr r3, [sp, 0x80]                                            |     r3 = *(arg_80h);
    0x0800f430 bic r8, r8, 0xf8000000                                        |     r8 = BIT_MASK (r8, 0xf8000000);
    0x0800f434 str r6, [sp, 0x20]                                            |     var_20h = r6;
    0x0800f438 str sl, [sp, 0x28]                                            |     var_28h = sl;
    0x0800f43c orr r8, r8, r3, lsl 27                                        |     r8 |= (r3 << 27);
    0x0800f440 mov r3, sp                                                    |     r3 = sp;
    0x0800f444 bic r3, r3, 0x1fc0                                            |     r3 = BIT_MASK (r3, 0x1fc0);
    0x0800f448 str r7, [sp, 0x1c]                                            |     var_1ch = r7;
    0x0800f44c bic r3, r3, 0x3f                                              |     r3 = BIT_MASK (r3, 0x3f);
    0x0800f450 str r8, [sp, 0x2c]                                            |     var_2ch = r8;
    0x0800f454 ldr r2, [r3, 4]                                               |     r2 = *((r3 + 4));
    0x0800f458 add r2, r2, 1                                                 |     r2++;
    0x0800f45c str r2, [r3, 4]                                               |     *((r3 + 4)) = r2;
    0x0800f460 mov r3, 0                                                     |     r3 = 0;
    0x0800f464 mov r2, fp                                                    |     r2 = fp;
    0x0800f468 mov r1, r7                                                    |     r1 = r7;
    0x0800f46c mov r0, r4                                                    |     r0 = r4;
    0x0800f470 bl 0x800eb14                                                  |     r0 = es_remove_extent ();
    0x0800f474 subs r5, r0, 0                                                |     r5 = r0 - 0;
                                                                             |     if (r5 != r0) {
    0x0800f478 bne 0x800f4e4                                                 |         goto label_3;
                                                                             |     }
    0x0800f47c sub r6, r4, 0xc0                                              |     r6 = r4 - 0xc0;
    0x0800f480 b 0x800f4a0                                                   |     
                                                                             |     while (r0 == 0xc) {
    0x0800f484 ldr r3, [r4, 0x1c]                                            |         r3 = *((r4 + 0x1c));
    0x0800f488 mov r2, r6                                                    |         r2 = r6;
    0x0800f48c mov r1, 0x80                                                  |         r1 = 0x80;
    0x0800f490 ldr r0, [r3, 0x1f8]                                           |         r0 = *((r3 + 0x1f8));
    0x0800f494 bl 0x800e448                                                  |         r0 = es_shrink ();
    0x0800f498 cmp r0, 0                                                     |         
                                                                             |         if (r0 == 0) {
    0x0800f49c beq 0x800f518                                                 |             goto label_12;
                                                                             |         }
    0x0800f4a0 add r1, sp, 0x10                                              |         r1 += var_10h;
    0x0800f4a4 mov r0, r4                                                    |         r0 = r4;
    0x0800f4a8 bl 0x800e738                                                  |         r0 = es_insert_extent ();
    0x0800f4ac mov r5, r0                                                    |         r5 = r0;
    0x0800f4b0 cmn r0, 0xc                                                   |         
    0x0800f4b4 beq 0x800f484                                                 |         
                                                                             |     }
                                                                             | label_1:
    0x0800f4b8 ldr r3, [sb, 0x2c]                                            |     r3 = *((sb + 0x2c));
    0x0800f4bc cmp r3, 1                                                     |     
                                                                             |     if (r3 >= 1) {
    0x0800f4c0 bls 0x800f4e4                                                 |         
    0x0800f4c4 ldr r3, [r4, 0x1c]                                            |         r3 = *((r4 + 0x1c));
    0x0800f4c8 ldr r6, [r3, 0x1f8]                                           |         r6 = *((r3 + 0x1f8));
    0x0800f4cc ldr r3, [r6, 0x4c]                                            |         r3 = *((r6 + 0x4c));
    0x0800f4d0 tst r3, 0x8000000                                             |         
                                                                             |         if ((r3 & loc.imp.fs_overflowgid) == 0) {
    0x0800f4d4 beq 0x800f4e4                                                 |             goto label_3;
                                                                             |         }
    0x0800f4d8 ldr r3, [sp, 0x80]                                            |         r3 = *(arg_80h);
    0x0800f4dc tst r3, 3                                                     |         
                                                                             |         if ((r3 & 3) != 0) {
    0x0800f4e0 bne 0x800f560                                                 |             goto label_13;
                                                                             |         }
                                                                             |     }
                                                                             | label_3:
    0x0800f4e4 mov r3, sp                                                    |     r3 = sp;
    0x0800f4e8 bic r3, r3, 0x1fc0                                            |     r3 = BIT_MASK (r3, 0x1fc0);
    0x0800f4ec bic r3, r3, 0x3f                                              |     r3 = BIT_MASK (r3, 0x3f);
    0x0800f4f0 ldr r2, [r3, 4]                                               |     r2 = *((r3 + 4));
    0x0800f4f4 sub r2, r2, 1                                                 |     r2--;
    0x0800f4f8 str r2, [r3, 4]                                               |     *((r3 + 4)) = r2;
    0x0800f4fc cmp r2, 0                                                     |     
                                                                             |     if (r2 != 0) {
    0x0800f500 bne 0x800f3f4                                                 |         goto label_0;
                                                                             |     }
    0x0800f504 ldr r3, [r3]                                                  |     r3 = *(r3);
    0x0800f508 tst r3, 2                                                     |     
                                                                             |     if ((r3 & 2) == 0) {
    0x0800f50c beq 0x800f3f4                                                 |         goto label_0;
                                                                             |     }
    0x0800f510 stmdaeq r8, {r0, r1, r6, sl, fp, ip, pc}                      |     __asm ("stmdaeq r8, {r0, r1, r6, sl, fp, ip, pc}");
    0x0800f514 b 0x800f3f4                                                   |     goto label_0;
                                                                             | label_12:
    0x0800f518 ldr r3, [sp, 0x2c]                                            |     r3 = var_2ch;
    0x0800f51c tst r3, 0x20000000                                            |     
                                                                             |     if ((r3 & 0x20000000) != 0) {
    0x0800f520 moveq r5, 0                                                   |         r5 = 0;
                                                                             |     }
    0x0800f524 b 0x800f4b8                                                   |     goto label_1;
                                                                             | label_11:
    0x0800f528 str r2, [sp, 4]                                               |     var_4h = r2;
    0x0800f52c stmdaeq r5, {r2, r3, r5, r7, r8, sb, sl, fp, sp, pc}          |     __asm ("stmdaeq r5, {r2, r3, r5, r7, r8, sb, sl, fp, sp, pc}");
    0x0800f530 stmdaeq r5, {r2, r3, r5, r7, r8, sb, sl, fp, sp, pc}          |     __asm ("stmdaeq r5, {r2, r3, r5, r7, r8, sb, sl, fp, sp, pc}");
    0x0800f534 str r1, [sp]                                                  |     *(sp) = r1;
    0x0800f538 movw r2, 0x345                                                |     r2 = 0x345;
    0x0800f53c ldr r1, [pc, 0x240]                                           |     r1 = *(0x800f780);
    0x0800f540 stmdaeq r4, {r2, r3, r7, r8, sl, fp, pc}                      |     __asm ("stmdaeq r4, {r2, r3, r7, r8, sl, fp, pc}");
    0x0800f544 mov r3, r5                                                    |     r3 = r5;
    0x0800f548 stmdaeq r5, {r2, r3, r4, r5, r8, sb, sl, fp, sp, pc}          |     __asm ("stmdaeq r5, {r2, r3, r4, r5, r8, sb, sl, fp, sp, pc}");
    0x0800f54c stmdaeq r5, {r2, r3, r4, r5, r8, sb, sl, fp, sp, pc}          |     __asm ("stmdaeq r5, {r2, r3, r4, r5, r8, sb, sl, fp, sp, pc}");
    0x0800f550 mov r2, 9                                                     |     r2 = 9;
    0x0800f554 mov r1, 0x348                                                 |     r1 = 0x348;
    0x0800f558 stmdaeq r8, {r0, r1, r2, r4, r5, r6, sl, fp, ip, pc}          |     __asm ("stmdaeq r8, {r0, r1, r2, r4, r5, r6, sl, fp, ip, pc}");
    0x0800f55c b 0x800f42c                                                   |     goto label_2;
                                                                             | label_13:
    0x0800f560 ldr r0, [r6, 0x30]                                            |     r0 = *((r6 + 0x30));
    0x0800f564 ldr r2, [r6, 0x2c]                                            |     r2 = *((r6 + 0x2c));
    0x0800f568 lsr ip, fp, r0                                                |     
    0x0800f56c rsb r3, r2, 0                                                 |     r3 = r2 - ;
    0x0800f570 sub r1, r2, 1                                                 |     r1 = r2 - 1;
    0x0800f574 cmp ip, r7, lsr r0                                            |     
    0x0800f578 and r1, r1, r7                                                |     r1 &= r7;
    0x0800f57c and r8, r7, r3                                                |     r8 = r7 & r3;
                                                                             |     if (ip == r7) {
    0x0800f580 beq 0x800f668                                                 |         goto label_14;
                                                                             |     }
    0x0800f584 cmp r1, 0                                                     |     
                                                                             |     if (r1 != 0) {
    0x0800f588 beq 0x800f5dc                                                 |         
    0x0800f58c sub r7, r7, 1                                                 |         r7--;
    0x0800f590 add r3, sp, 0x30                                              |         r3 += var_30h;
    0x0800f594 mov r2, r8                                                    |         r2 = r8;
    0x0800f598 str r3, [sp]                                                  |         *(sp) = r3;
    0x0800f59c mov r0, r4                                                    |         r0 = r4;
    0x0800f5a0 mov r3, r7                                                    |         r3 = r7;
    0x0800f5a4 stmdaeq r0, {r3, r8, sb, fp, ip, lr, pc}                      |         __asm ("stmdaeq r0, {r3, r8, sb, fp, ip, lr, pc}");
    0x0800f5a8 stmdaeq r0, {r3, r8, sb, fp, ip, lr, pc}                      |         __asm ("stmdaeq r0, {r3, r8, sb, fp, ip, lr, pc}");
    0x0800f5ac bl 0x800ddf8                                                  |         es_find_extent_range ();
    0x0800f5b0 ldr r2, [sp, 0x40]                                            |         r2 = var_40h;
    0x0800f5b4 cmp r2, 0                                                     |         
                                                                             |         if (r2 == 0) {
    0x0800f5b8 beq 0x800f5dc                                                 |             goto label_7;
                                                                             |         }
    0x0800f5bc ldr r3, [sp, 0x3c]                                            |         r3 = var_3ch;
    0x0800f5c0 cmp r3, r8                                                    |         
                                                                             |         if (r3 > r8) {
    0x0800f5c4 bhi 0x800f754                                                 |             goto label_15;
                                                                             |         }
    0x0800f5c8 add r2, r2, r3                                                |         r2 += r3;
    0x0800f5cc cmp r2, r8                                                    |         
                                                                             |         if (r2 > r8) {
    0x0800f5d0 bhi 0x800f75c                                                 |             goto label_16;
                                                                             |         }
    0x0800f5d4 cmp r3, r8                                                    |         
                                                                             |         if (r3 == r8) {
    0x0800f5d8 beq 0x800f754                                                 |             goto label_15;
                                                                             |         }
                                                                             |     }
                                                                             | label_7:
    0x0800f5dc mov r1, r8                                                    |     r1 = r8;
    0x0800f5e0 mov r0, r4                                                    |     r0 = r4;
    0x0800f5e4 bl 0x800db28                                                  |     remove_pending ();
                                                                             | label_8:
    0x0800f5e8 ldr r3, [r6, 0x2c]                                            |     r3 = *((r6 + 0x2c));
    0x0800f5ec ldr r7, [sp, 0xc]                                             |     r7 = var_ch;
    0x0800f5f0 rsb r2, r3, 0                                                 |     r2 = r3 - ;
    0x0800f5f4 and r2, r2, fp                                                |     r2 &= fp;
    0x0800f5f8 add r2, r2, r3                                                |     r2 += r3;
    0x0800f5fc sub r6, r2, 1                                                 |     r6 = r2 - 1;
    0x0800f600 cmp r7, r2                                                    |     
                                                                             |     if (r7 == r2) {
    0x0800f604 beq 0x800f654                                                 |         goto label_4;
                                                                             |     }
    0x0800f608 add r3, sp, 0x30                                              |     r3 += var_30h;
    0x0800f60c mov r2, r7                                                    |     r2 = r7;
    0x0800f610 str r3, [sp]                                                  |     *(sp) = r3;
    0x0800f614 mov r0, r4                                                    |     r0 = r4;
    0x0800f618 mov r3, r6                                                    |     r3 = r6;
    0x0800f61c stmdaeq r0, {r3, r8, sb, fp, ip, lr, pc}                      |     __asm ("stmdaeq r0, {r3, r8, sb, fp, ip, lr, pc}");
    0x0800f620 stmdaeq r0, {r3, r8, sb, fp, ip, lr, pc}                      |     __asm ("stmdaeq r0, {r3, r8, sb, fp, ip, lr, pc}");
    0x0800f624 bl 0x800ddf8                                                  |     es_find_extent_range ();
    0x0800f628 ldr r3, [sp, 0x40]                                            |     r3 = var_40h;
    0x0800f62c cmp r3, 0                                                     |     
                                                                             |     if (r3 == 0) {
    0x0800f630 beq 0x800f654                                                 |         goto label_4;
                                                                             |     }
    0x0800f634 ldr r2, [sp, 0x3c]                                            |     r2 = var_3ch;
    0x0800f638 cmp r7, r2                                                    |     
                                                                             |     if (r7 <= r2) {
    0x0800f63c blo 0x800f6ec                                                 |         goto label_17;
                                                                             |     }
    0x0800f640 add r3, r3, r2                                                |     r3 += r2;
    0x0800f644 cmp r7, r3                                                    |     
                                                                             |     if (r7 <= r3) {
    0x0800f648 blo 0x800f6dc                                                 |         goto label_5;
                                                                             |     }
    0x0800f64c cmp r7, r2                                                    |     
                                                                             |     if (r7 == r2) {
    0x0800f650 beq 0x800f6ec                                                 |         goto label_17;
                                                                             |     }
                                                                             |     do {
                                                                             | label_4:
    0x0800f654 mov r1, r6                                                    |         r1 = r6;
    0x0800f658 mov r0, r4                                                    |         r0 = r4;
    0x0800f65c bl 0x800db28                                                  |         remove_pending ();
    0x0800f660 b 0x800f4e4                                                   |         goto label_3;
                                                                             | label_10:
    0x0800f664 udf 0x12                                                      |         __asm ("udf 0x12");
                                                                             | label_14:
    0x0800f668 cmp r1, 0                                                     |         
                                                                             |         if (r1 != 0) {
    0x0800f66c bne 0x800f6f8                                                 |             goto label_18;
                                                                             |         }
                                                                             | label_6:
    0x0800f670 ldr r7, [sp, 0xc]                                             |         r7 = var_ch;
    0x0800f674 and r3, r3, fp                                                |         r3 &= fp;
    0x0800f678 add r2, r3, r2                                                |         r2 = r3 + r2;
    0x0800f67c sub r6, r2, 1                                                 |         r6 = r2 - 1;
    0x0800f680 cmp r7, r2                                                    |         
    0x0800f684 beq 0x800f654                                                 |         
                                                                             |     } while (r7 == r2);
    0x0800f688 add r3, sp, 0x30                                              |     r3 += var_30h;
    0x0800f68c mov r2, r7                                                    |     r2 = r7;
    0x0800f690 str r3, [sp]                                                  |     *(sp) = r3;
    0x0800f694 mov r0, r4                                                    |     r0 = r4;
    0x0800f698 mov r3, r6                                                    |     r3 = r6;
    0x0800f69c stmdaeq r0, {r3, r8, sb, fp, ip, lr, pc}                      |     __asm ("stmdaeq r0, {r3, r8, sb, fp, ip, lr, pc}");
    0x0800f6a0 stmdaeq r0, {r3, r8, sb, fp, ip, lr, pc}                      |     __asm ("stmdaeq r0, {r3, r8, sb, fp, ip, lr, pc}");
    0x0800f6a4 bl 0x800ddf8                                                  |     es_find_extent_range ();
    0x0800f6a8 ldr r2, [sp, 0x40]                                            |     r2 = var_40h;
    0x0800f6ac cmp r2, 0                                                     |     
                                                                             |     if (r2 == 0) {
    0x0800f6b0 beq 0x800f654                                                 |         goto label_4;
                                                                             |     }
    0x0800f6b4 ldr r3, [sp, 0x3c]                                            |     r3 = var_3ch;
    0x0800f6b8 cmp r7, r3                                                    |     
                                                                             |     if (r7 <= r3) {
    0x0800f6bc blo 0x800f6d4                                                 |         goto label_19;
                                                                             |     }
    0x0800f6c0 add r2, r2, r3                                                |     r2 += r3;
    0x0800f6c4 cmp r7, r2                                                    |     
                                                                             |     if (r7 <= r2) {
    0x0800f6c8 blo 0x800f6dc                                                 |         goto label_5;
                                                                             |     }
    0x0800f6cc cmp r7, r3                                                    |     
                                                                             |     if (r7 != r3) {
    0x0800f6d0 bne 0x800f654                                                 |         goto label_4;
                                                                             |     }
                                                                             | label_19:
    0x0800f6d4 cmp r6, r3                                                    |     
                                                                             |     if (r6 <= r3) {
    0x0800f6d8 blo 0x800f654                                                 |         goto label_4;
                                                                             |     }
                                                                             | label_5:
    0x0800f6dc mov r1, r6                                                    |     r1 = r6;
    0x0800f6e0 mov r0, r4                                                    |     r0 = r4;
    0x0800f6e4 bl 0x800dc74                                                  |     insert_pending ();
    0x0800f6e8 b 0x800f4e4                                                   |     goto label_3;
                                                                             | label_17:
    0x0800f6ec cmp r6, r2                                                    |     
                                                                             |     if (r6 <= r2) {
    0x0800f6f0 blo 0x800f654                                                 |         goto label_4;
                                                                             |     }
    0x0800f6f4 b 0x800f6dc                                                   |     goto label_5;
                                                                             | label_18:
    0x0800f6f8 sub r7, r7, 1                                                 |     r7--;
    0x0800f6fc add r3, sp, 0x30                                              |     r3 += var_30h;
    0x0800f700 mov r2, r8                                                    |     r2 = r8;
    0x0800f704 str r3, [sp]                                                  |     *(sp) = r3;
    0x0800f708 mov r0, r4                                                    |     r0 = r4;
    0x0800f70c mov r3, r7                                                    |     r3 = r7;
    0x0800f710 stmdaeq r0, {r3, r8, sb, fp, ip, lr, pc}                      |     __asm ("stmdaeq r0, {r3, r8, sb, fp, ip, lr, pc}");
    0x0800f714 stmdaeq r0, {r3, r8, sb, fp, ip, lr, pc}                      |     __asm ("stmdaeq r0, {r3, r8, sb, fp, ip, lr, pc}");
    0x0800f718 bl 0x800ddf8                                                  |     es_find_extent_range ();
    0x0800f71c ldr r1, [sp, 0x40]                                            |     r1 = var_40h;
    0x0800f720 cmp r1, 0                                                     |     
                                                                             |     if (r1 != 0) {
    0x0800f724 beq 0x800f748                                                 |         
    0x0800f728 ldr r2, [sp, 0x3c]                                            |         r2 = var_3ch;
    0x0800f72c cmp r2, r8                                                    |         
                                                                             |         if (r2 > r8) {
    0x0800f730 bhi 0x800f76c                                                 |             goto label_20;
                                                                             |         }
    0x0800f734 add r1, r1, r2                                                |         r1 += r2;
    0x0800f738 cmp r1, r8                                                    |         
                                                                             |         if (r1 > r8) {
    0x0800f73c bhi 0x800f774                                                 |             goto label_21;
                                                                             |         }
    0x0800f740 cmp r2, r8                                                    |         
                                                                             |         if (r2 == r8) {
    0x0800f744 beq 0x800f76c                                                 |             goto label_20;
                                                                             |         }
                                                                             |     }
                                                                             | label_9:
    0x0800f748 ldr r2, [r6, 0x2c]                                            |     r2 = *((r6 + 0x2c));
    0x0800f74c rsb r3, r2, 0                                                 |     r3 = r2 - ;
    0x0800f750 b 0x800f670                                                   |     goto label_6;
                                                                             | label_15:
    0x0800f754 cmp r7, r3                                                    |     
                                                                             |     if (r7 <= r3) {
    0x0800f758 blo 0x800f5dc                                                 |         goto label_7;
                                                                             |     }
                                                                             | label_16:
    0x0800f75c mov r1, r8                                                    |     r1 = r8;
    0x0800f760 mov r0, r4                                                    |     r0 = r4;
    0x0800f764 bl 0x800dc74                                                  |     insert_pending ();
    0x0800f768 b 0x800f5e8                                                   |     goto label_8;
                                                                             | label_20:
    0x0800f76c cmp r7, r2                                                    |     
                                                                             |     if (r7 <= r2) {
    0x0800f770 blo 0x800f748                                                 |         goto label_9;
                                                                             |     }
                                                                             | label_21:
    0x0800f774 mov r1, r8                                                    |     r1 = r8;
    0x0800f778 mov r0, r4                                                    |     r0 = r4;
    0x0800f77c bl 0x800dc74                                                  |     insert_pending ();
    0x0800f780 b 0x800f4e4                                                   |     goto label_3;
                                                                             | }
    ; assembly                                                                       | /* r2dec pseudo code output */
                                                                                     | /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-80367616.squashfs_v4_le_extract/usr/lib/modules/5.10.52-axis9/kernel/fs/ext4/ext4.ko @ 0x804aea4 */
                                                                                     | #include <stdint.h>
                                                                                     |  
                                                                                     | #define BIT_MASK(t,v) ((t)(-((v)!= 0)))&(((t)-1)>>((sizeof(t)*CHAR_BIT)-(v)))
                                                                                     |  
    ; (fcn) sym.ext4_fill_super ()                                                   | void ext4_fill_super (int32_t arg_0h, int32_t arg_18h, int32_t arg_1ch, int32_t arg_20h, int32_t arg_28h, int32_t arg_38h, int32_t arg_48h, int32_t arg_4ch, int32_t arg_50h, int32_t arg_52h, int32_t arg_54h, int32_t arg_58h, int32_t arg_68h, int32_t arg_feh, int32_t arg_100h, int32_t arg_15ch, int32_t arg_175h, int32_t arg_176h, int32_t arg_180h, int32_t arg_270h, int32_t arg_3fch, int32_t arg1, int32_t arg2) {
                                                                                     |     int32_t var_0h;
                                                                                     |     int32_t var_4h;
                                                                                     |     int32_t var_18h;
                                                                                     |     int32_t var_1ch;
                                                                                     |     int32_t var_20h;
                                                                                     |     int32_t var_28h;
                                                                                     |     int32_t var_30h;
                                                                                     |     int32_t var_34h;
                                                                                     |     int32_t var_38h;
                                                                                     |     int32_t var_3ch;
                                                                                     |     int32_t var_5ch;
                                                                                     |     int32_t var_60h;
                                                                                     |     int32_t var_68h;
                                                                                     |     int32_t var_6ch;
                                                                                     |     int32_t var_78h;
                                                                                     |     int32_t var_80h;
                                                                                     |     int32_t var_8ch;
                                                                                     |     r0 = arg1;
                                                                                     |     r1 = arg2;
    0x0804aea4 push {r4, r5, r6, r7, r8, sb, sl, fp, lr}                             |     
    0x0804aea8 stmdaeq r8, {r0, r1, r2, r3, r5, r7, sl, fp, ip, pc}                  |     __asm ("stmdaeq r8, {r0, r1, r2, r3, r5, r7, sl, fp, ip, pc}");
    0x0804aeac stmdaeq r8, {r0, r1, r2, r3, r5, r7, sl, fp, ip, pc}                  |     __asm ("stmdaeq r8, {r0, r1, r2, r3, r5, r7, sl, fp, ip, pc}");
    0x0804aeb0 sub sp, sp, 0x8c                                                      |     
    0x0804aeb4 mov r4, r1                                                            |     r4 = r1;
    0x0804aeb8 mov r6, r0                                                            |     r6 = r0;
    0x0804aebc mov r1, 0xcc0                                                         |     r1 = 0xcc0;
    0x0804aec0 mov r0, r4                                                            |     r0 = r4;
    0x0804aec4 str r2, [sp, 0x20]                                                    |     var_20h = r2;
    0x0804aec8 stmdaeq r8, {r0, r1, r3, r4, r5, r6, r7, r8, sp, pc}                  |     __asm ("stmdaeq r8, {r0, r1, r3, r4, r5, r6, r7, r8, sp, pc}");
    0x0804aecc mov r1, 0xdc0                                                         |     r1 = 0xdc0;
    0x0804aed0 mov sb, r0                                                            |     sb = r0;
    0x0804aed4 ldr r0, [r7, 0x28]                                                    |     r0 = *((r7 + 0x28));
    0x0804aed8 stmdaeq r8, {r0, r1, r7, sl, fp, ip, pc}                              |     __asm ("stmdaeq r8, {r0, r1, r7, sl, fp, ip, pc}");
    0x0804aedc cmp r4, 0                                                             |     
    0x0804aee0 str r0, [sp, 0x18]                                                    |     var_18h = r0;
                                                                                     |     if (r4 == 0) {
    0x0804aee4 beq 0x804b84c                                                         |         goto label_38;
                                                                                     |     }
    0x0804aee8 ldrb r3, [r4]                                                         |     r3 = *(r4);
    0x0804aeec cmp r3, 0x73                                                          |     
                                                                                     |     if (r3 == 0x73) {
    0x0804aef0 beq 0x804b70c                                                         |         goto label_39;
                                                                                     |     }
                                                                                     | label_0:
    0x0804aef4 mov sl, 0                                                             |     sl = 0;
    0x0804aef8 movw r3, 0x4003                                                       |     r3 = 0x4003;
    0x0804aefc str r4, [sp, 0x1c]                                                    |     var_1ch = r4;
    0x0804af00 mov r8, 1                                                             |     r8 = 1;
    0x0804af04 str sl, [sp, 0x5c]                                                    |     var_5ch = sl;
    0x0804af08 str r3, [sp, 0x60]                                                    |     var_60h = r3;
                                                                                     | label_1:
    0x0804af0c cmp sb, 0                                                             |     
                                                                                     |     if (sb == 0) {
    0x0804af10 beq 0x804c598                                                         |         goto label_40;
                                                                                     |     }
                                                                                     | label_7:
    0x0804af14 ldr r3, [sp, 0x18]                                                    |     r3 = var_18h;
    0x0804af18 cmp r3, 0                                                             |     
                                                                                     |     if (r3 == 0) {
    0x0804af1c beq 0x804b788                                                         |         goto label_41;
                                                                                     |     }
                                                                                     | label_2:
    0x0804af20 ldr r1, [sp, 0x18]                                                    |     r1 = var_18h;
    0x0804af24 mov r2, 0                                                             |     r2 = 0;
    0x0804af28 ldr r3, [r6, 0x78]                                                    |     r3 = *((r6 + 0x78));
    0x0804af2c add r0, r6, 0x218                                                     |     r0 = r6 + 0x218;
    0x0804af30 str r1, [r6, 0x1f8]                                                   |     *((r6 + 0x1f8)) = r1;
    0x0804af34 str r2, [r1, 0x318]                                                   |     *((r1 + 0x318)) = r2;
    0x0804af38 mov r2, 0x10                                                          |     r2 = 0x10;
    0x0804af3c str r6, [r1, 0x110]                                                   |     *((r1 + 0x110)) = r6;
    0x0804af40 str r2, [r1, 0xd8]                                                    |     *((r1 + 0xd8)) = r2;
    0x0804af44 mov r2, 0x20                                                          |     r2 = 0x20;
    0x0804af48 str r8, [r1, 0x60]                                                    |     *((r1 + 0x60)) = r8;
    0x0804af4c str r2, [r1, 0x8c]                                                    |     *((r1 + 0x8c)) = r2;
    0x0804af50 mov r2, 0x21                                                          |     r2 = 0x21;
    0x0804af54 str sl, [r1, 0x64]                                                    |     *((r1 + 0x64)) = sl;
    0x0804af58 ldr r3, [r3, 0x3c]                                                    |     r3 = *((r3 + 0x3c));
    0x0804af5c cmp r3, 0                                                             |     
                                                                                     |     if (r3 == 0) {
    0x0804af60 ldrne r3, [r3, 0x14]                                                  |         r3 = *((r3 + 0x14));
                                                                                     |     }
                                                                                     |     if (r3 == 0) {
    0x0804af64 ldrne r3, [r3, 0x24]                                                  |         r3 = *((r3 + 0x24));
                                                                                     |     }
                                                                                     |     if (r3 == 0) {
    0x0804af68 strne r3, [r1, 0x1dc]                                                 |         *((r1 + 0x1dc)) = r3;
                                                                                     |     }
    0x0804af6c mov r1, 0x2f                                                          |     r1 = 0x2f;
    0x0804af70 stmdaeq r8, {r0, r1, r2, r3, sb, sp, pc}                              |     __asm ("stmdaeq r8, {r0, r1, r2, r3, sb, sp, pc}");
    0x0804af74 mov r1, 0x400                                                         |     r1 = 0x400;
    0x0804af78 mov r0, r6                                                            |     r0 = r6;
    0x0804af7c stmdaeq r8, {r0, r1, r4, sb, sp, pc}                                  |     __asm ("stmdaeq r8, {r0, r1, r4, sb, sp, pc}");
    0x0804af80 subs r1, r0, 0                                                        |     r1 = r0 - 0;
                                                                                     |     if (r1 == r0) {
    0x0804af84 beq 0x804b868                                                         |         goto label_42;
                                                                                     |     }
    0x0804af88 cmp r1, 0x400                                                         |     
                                                                                     |     if (r1 == 0x400) {
    0x0804af8c beq 0x804b7c8                                                         |         goto label_43;
                                                                                     |     }
    0x0804af90 lsr sl, r8, 0x16                                                      |     sl = r8 >> 0x16;
    0x0804af94 lsl r0, r8, 0xa                                                       |     r0 = r8 << 0xa;
    0x0804af98 orrs r3, sl, 0                                                        |     r3 = sl;
    0x0804af9c str sl, [sp, 0x6c]                                                    |     var_6ch = sl;
                                                                                     |     if (r3 != sl) {
    0x0804afa0 bne 0x804bb88                                                         |         goto label_44;
                                                                                     |     }
    0x0804afa4 stmdaeq r8, {r0, r1, r3, r6, sl, fp, ip, pc}                          |     __asm ("stmdaeq r8, {r0, r1, r3, r6, sl, fp, ip, pc}");
    0x0804afa8 mov r3, sl                                                            |     r3 = sl;
    0x0804afac mov r2, r0                                                            |     r2 = r0;
    0x0804afb0 mov fp, r1                                                            |     
    0x0804afb4 str r0, [sp, 0x68]                                                    |     var_68h = r0;
                                                                                     | label_5:
    0x0804afb8 mov r1, 0                                                             |     r1 = 0;
    0x0804afbc mov r0, r6                                                            |     r0 = r6;
    0x0804afc0 str r1, [sp, 4]                                                       |     var_4h = r1;
    0x0804afc4 str r1, [sp]                                                          |     *(sp) = r1;
    0x0804afc8 bl 0x804670c                                                          |     r0 = ext4_sb_bread_gfp ();
    0x0804afcc mov sl, r0                                                            |     sl = r0;
    0x0804afd0 cmn r0, 0x1000                                                        |     
                                                                                     |     if (r0 > 0x1000) {
    0x0804afd4 bhi 0x804b898                                                         |         goto label_45;
                                                                                     |     }
    0x0804afd8 ldr r3, [r0, 0x1c]                                                    |     r3 = *((r0 + 0x1c));
    0x0804afdc movw r2, 0xef53                                                       |     r2 = 0xef53;
    0x0804afe0 ldr r1, [sp, 0x18]                                                    |     r1 = var_18h;
    0x0804afe4 add fp, r3, fp                                                        |     
    0x0804afe8 str fp, [r1, 0x44]                                                    |     *((r1 + 0x44)) = fp;
    0x0804afec ldrh r3, [fp, 0x38]                                                   |     r3 = *(arg_38h);
    0x0804aff0 str r3, [r6, 0x3c]                                                    |     *((r6 + 0x3c)) = r3;
    0x0804aff4 cmp r3, r2                                                            |     
                                                                                     |     if (r3 != r2) {
    0x0804aff8 bne 0x804b7a0                                                         |         goto label_25;
                                                                                     |     }
    0x0804affc add r3, fp, 0x180                                                     |     r3 += arg_180h;
    0x0804b000 add r0, r1, 0x1e0                                                     |     r0 = r1 + 0x1e0;
    0x0804b004 ldr r1, [r6, 0x1f8]                                                   |     r1 = *((r6 + 0x1f8));
    0x0804b008 ldrd r2, r3, [r3, -8]                                                 |     __asm ("ldrd r2, r3, [r3, -8]");
    0x0804b00c strd r2, r3, [r0]                                                     |     __asm ("strd r2, r3, [r0]");
    0x0804b010 ldr r3, [r1, 0x44]                                                    |     r3 = *((r1 + 0x44));
    0x0804b014 ldr r3, [r3, 0x64]                                                    |     r3 = *((r3 + 0x64));
    0x0804b018 and r2, r3, 0x410                                                     |     r2 = r3 & 0x410;
    0x0804b01c cmp r2, 0x410                                                         |     
                                                                                     |     if (r2 == 0x410) {
    0x0804b020 beq 0x804ba54                                                         |         goto label_46;
                                                                                     |     }
                                                                                     | label_13:
    0x0804b024 tst r3, 0x400                                                         |     
                                                                                     |     if ((r3 & 0x400) != 0) {
    0x0804b028 beq 0x804b038                                                         |         
    0x0804b02c ldrb r3, [fp, 0x175]                                                  |         r3 = *(arg_175h);
    0x0804b030 cmp r3, 1                                                             |         
                                                                                     |         if (r3 != 1) {
    0x0804b034 bne 0x804b9c8                                                         |             goto label_47;
                                                                                     |         }
                                                                                     |     }
    0x0804b038 mov r2, 0                                                             |     r2 = 0;
    0x0804b03c stmdaeq r5, {r2, r3, r6, r8, sb, sl, fp, sp, lr, pc}                  |     __asm ("stmdaeq r5, {r2, r3, r6, r8, sb, sl, fp, sp, lr, pc}");
    0x0804b040 stmdaeq r5, {r2, r3, r6, r8, sb, sl, fp, sp, lr, pc}                  |     __asm ("stmdaeq r5, {r2, r3, r6, r8, sb, sl, fp, sp, lr, pc}");
    0x0804b044 mov r1, r2                                                            |     r1 = r2;
    0x0804b048 stmdaeq r8, {r0, r1, r2, r4, sb, sp, pc}                              |     __asm ("stmdaeq r8, {r0, r1, r2, r4, sb, sp, pc}");
    0x0804b04c ldr r3, [sp, 0x18]                                                    |     r3 = var_18h;
    0x0804b050 cmn r0, 0x1000                                                        |     
    0x0804b054 str r0, [r3, 0x220]                                                   |     *((r3 + 0x220)) = r0;
                                                                                     |     if (r0 > 0x1000) {
    0x0804b058 bhi 0x804bb40                                                         |         goto label_48;
                                                                                     |     }
    0x0804b05c ldr r4, [r6, 0x1f8]                                                   |     r4 = *((r6 + 0x1f8));
    0x0804b060 mov r3, r4                                                            |     r3 = r4;
    0x0804b064 ldr r2, [r4, 0x44]                                                    |     r2 = *((r4 + 0x44));
    0x0804b068 ldr r1, [r2, 0x64]                                                    |     r1 = *((r2 + 0x64));
    0x0804b06c tst r1, 0x400                                                         |     
                                                                                     |     if ((r1 & 0x400) != 0) {
    0x0804b070 bne 0x804b7e0                                                         |         goto label_49;
                                                                                     |     }
                                                                                     | label_26:
    0x0804b074 ldr r2, [r2, 0x60]                                                    |     r2 = *((r2 + 0x60));
    0x0804b078 tst r2, 0x2000                                                        |     
                                                                                     |     if ((r2 & 0x2000) == 0) {
    0x0804b07c beq 0x804bae4                                                         |         goto label_50;
                                                                                     |     }
                                                                                     | label_10:
    0x0804b080 ldr r1, [sp, 0x18]                                                    |     r1 = var_18h;
    0x0804b084 ldr r2, [fp, 0x270]                                                   |     r2 = *(arg_270h);
    0x0804b088 str r2, [r1, 0x224]                                                   |     *((r1 + 0x224)) = r2;
                                                                                     | label_11:
    0x0804b08c ldr r5, [fp, 0x100]                                                   |     r5 = *(arg_100h);
    0x0804b090 ldr r2, [r3, 0x4c]                                                    |     r2 = *((r3 + 0x4c));
    0x0804b094 tst r5, 1                                                             |     
    0x0804b098 orr r2, r2, 0x80000000                                                |     r2 |= 0x80000000;
    0x0804b09c str r2, [r3, 0x4c]                                                    |     *((r3 + 0x4c)) = r2;
                                                                                     |     if ((r5 & 1) == 0) {
    0x0804b0a0 ldrne r2, [r6, 0x1f8]                                                 |         r2 = *((r6 + 0x1f8));
                                                                                     |     }
                                                                                     |     if ((r5 & 1) == 0) {
    0x0804b0a4 ldrne r3, [r2, 0x4c]                                                  |         r3 = *((r2 + 0x4c));
                                                                                     |     }
                                                                                     |     if ((r5 & 1) == 0) {
    0x0804b0a8 orrne r3, r3, 8                                                       |         r3 |= 8;
                                                                                     |     }
                                                                                     |     if ((r5 & 1) == 0) {
    0x0804b0ac strne r3, [r2, 0x4c]                                                  |         *((r2 + 0x4c)) = r3;
                                                                                     |     }
    0x0804b0b0 tst r5, 2                                                             |     
                                                                                     |     if ((r5 & 2) == 0) {
    0x0804b0b4 ldrne r2, [r6, 0x1f8]                                                 |         r2 = *((r6 + 0x1f8));
                                                                                     |     }
                                                                                     |     if ((r5 & 2) == 0) {
    0x0804b0b8 ldrne r3, [r2, 0x4c]                                                  |         r3 = *((r2 + 0x4c));
                                                                                     |     }
                                                                                     |     if ((r5 & 2) == 0) {
    0x0804b0bc orrne r3, r3, 4                                                       |         r3 |= 4;
                                                                                     |     }
                                                                                     |     if ((r5 & 2) == 0) {
    0x0804b0c0 strne r3, [r2, 0x4c]                                                  |         *((r2 + 0x4c)) = r3;
                                                                                     |     }
    0x0804b0c4 tst r5, 0x10                                                          |     
                                                                                     |     if ((r5 & 0x10) == 0) {
    0x0804b0c8 ldrne r2, [r6, 0x1f8]                                                 |         r2 = *((r6 + 0x1f8));
                                                                                     |     }
                                                                                     |     if ((r5 & 0x10) == 0) {
    0x0804b0cc ldrne r3, [r2, 0x4c]                                                  |         r3 = *((r2 + 0x4c));
                                                                                     |     }
                                                                                     |     if ((r5 & 0x10) == 0) {
    0x0804b0d0 orrne r3, r3, 0x2000                                                  |         r3 |= 0x2000;
                                                                                     |     }
                                                                                     |     if ((r5 & 0x10) == 0) {
    0x0804b0d4 strne r3, [r2, 0x4c]                                                  |         *((r2 + 0x4c)) = r3;
                                                                                     |     }
    0x0804b0d8 ldr r2, [r6, 0x1f8]                                                   |     r2 = *((r6 + 0x1f8));
    0x0804b0dc ldr r3, [r2, 0x4c]                                                    |     r3 = *((r2 + 0x4c));
    0x0804b0e0 orr r3, r3, 0x4000                                                    |     r3 |= 0x4000;
    0x0804b0e4 str r3, [r2, 0x4c]                                                    |     *((r2 + 0x4c)) = r3;
    0x0804b0e8 ldr r4, [r6, 0x1f8]                                                   |     r4 = *((r6 + 0x1f8));
    0x0804b0ec mov r3, r4                                                            |     r3 = r4;
    0x0804b0f0 ldr r2, [r4, 0x44]                                                    |     r2 = *((r4 + 0x44));
    0x0804b0f4 ldr r1, [r2, 0x5c]                                                    |     r1 = *((r2 + 0x5c));
    0x0804b0f8 tst r1, 0x400                                                         |     
                                                                                     |     if ((r1 & 0x400) != 0) {
    0x0804b0fc beq 0x804b118                                                         |         
    0x0804b100 ldr r3, [r4, 0x50]                                                    |         r3 = *((r4 + 0x50));
    0x0804b104 orr r3, r3, 0x10                                                      |         r3 |= 0x10;
    0x0804b108 str r3, [r4, 0x50]                                                    |         *((r4 + 0x50)) = r3;
    0x0804b10c ldr r4, [r6, 0x1f8]                                                   |         r4 = *((r6 + 0x1f8));
    0x0804b110 mov r3, r4                                                            |         r3 = r4;
    0x0804b114 ldr r2, [r4, 0x44]                                                    |         r2 = *((r4 + 0x44));
                                                                                     |     }
    0x0804b118 ldr r2, [r2, 0x64]                                                    |     r2 = *((r2 + 0x64));
    0x0804b11c tst r2, 0x400                                                         |     
                                                                                     |     if ((r2 & 0x400) != 0) {
    0x0804b120 beq 0x804b140                                                         |         
    0x0804b124 ldr r3, [r4, 0x220]                                                   |         r3 = *((r4 + 0x220));
    0x0804b128 cmp r3, 0                                                             |         
                                                                                     |         if (r3 == 0) {
    0x0804b12c beq 0x804bb6c                                                         |             goto label_51;
                                                                                     |         }
                                                                                     | label_30:
    0x0804b130 ldr r3, [r4, 0x4c]                                                    |         r3 = *((r4 + 0x4c));
    0x0804b134 orr r3, r3, 0x800000                                                  |         r3 |= 0x800000;
    0x0804b138 str r3, [r4, 0x4c]                                                    |         *((r4 + 0x4c)) = r3;
    0x0804b13c ldr r3, [r6, 0x1f8]                                                   |         r3 = *((r6 + 0x1f8));
                                                                                     |     }
                                                                                     | label_18:
    0x0804b140 and r1, r5, 0x60                                                      |     r1 = r5 & 0x60;
    0x0804b144 ldr r2, [r3, 0x4c]                                                    |     r2 = *((r3 + 0x4c));
    0x0804b148 cmp r1, 0x20                                                          |     
                                                                                     |     if (r1 == 0x20) {
    0x0804b14c beq 0x804b8b8                                                         |         goto label_52;
                                                                                     |     }
    0x0804b150 cmp r1, 0x40                                                          |     
                                                                                     |     if (r1 == 0x40) {
    0x0804b154 beq 0x804baf4                                                         |         goto label_53;
                                                                                     |     }
    0x0804b158 cmp r1, 0x60                                                          |     
                                                                                     |     if (r1 != 0x60) {
    0x0804b15c orreq r2, r2, 0xc00                                                   |         r2 |= 0xc00;
                                                                                     |     }
                                                                                     |     if (r1 != 0x60) {
    0x0804b160 streq r2, [r3, 0x4c]                                                  |         *((r3 + 0x4c)) = r2;
                                                                                     |     }
                                                                                     |     if (r1 != 0x60) {
    0x0804b164 ldreq r3, [r6, 0x1f8]                                                 |         r3 = *((r6 + 0x1f8));
                                                                                     |     }
                                                                                     | label_9:
    0x0804b168 ldr r2, [sp, 0x18]                                                    |     r2 = var_18h;
    0x0804b16c ldr r2, [r2, 0x44]                                                    |     r2 = *((r2 + 0x44));
    0x0804b170 ldrh r1, [r2, 0x3c]                                                   |     r1 = *((r2 + 0x3c));
    0x0804b174 ldr r2, [r3, 0x4c]                                                    |     r2 = *((r3 + 0x4c));
    0x0804b178 cmp r1, 3                                                             |     
                                                                                     |     if (r1 != 3) {
    0x0804b17c orreq r2, r2, 0x40                                                    |         r2 |= 0x40;
                                                                                     |     }
                                                                                     |     if (r1 != 3) {
    0x0804b180 beq 0x804b190                                                         |         
    0x0804b184 cmp r1, 1                                                             |         
                                                                                     |         if (r1 != 1) {
    0x0804b188 orreq r2, r2, 0x10                                                    |             r2 |= 0x10;
                                                                                     |         }
                                                                                     |         if (r1 != 1) {
    0x0804b18c orrne r2, r2, 0x20                                                    |             r2 |= 0x20;
                                                                                     |             goto label_54;
                                                                                     |         }
                                                                                     |     }
                                                                                     | label_54:
    0x0804b190 str r2, [r3, 0x4c]                                                    |     *((r3 + 0x4c)) = r2;
    0x0804b194 tst r5, 0x400                                                         |     
    0x0804b198 stmdaeq r8, {r0, r1, r4, r5, sb, sl, fp, ip, pc}                      |     __asm ("stmdaeq r8, {r0, r1, r4, r5, sb, sl, fp, ip, pc}");
    0x0804b19c stmdaeq r8, {r0, r1, r4, r5, sb, sl, fp, ip, pc}                      |     __asm ("stmdaeq r8, {r0, r1, r4, r5, sb, sl, fp, ip, pc}");
    0x0804b1a0 ldr r2, [r6, 0x1f8]                                                   |     r2 = *((r6 + 0x1f8));
    0x0804b1a4 ldr r3, [r2, 0x4c]                                                    |     r3 = *((r2 + 0x4c));
    0x0804b1a8 orr r3, r3, 0x20000000                                                |     r3 |= 0x20000000;
    0x0804b1ac str r3, [r2, 0x4c]                                                    |     *((r2 + 0x4c)) = r3;
                                                                                     |     if ((r5 & 0x400) == 0) {
    0x0804b1b0 ldrne r2, [r6, 0x1f8]                                                 |         r2 = *((r6 + 0x1f8));
                                                                                     |     }
                                                                                     |     if ((r5 & 0x400) == 0) {
    0x0804b1b4 ldrne r3, [r2, 0x4c]                                                  |         r3 = *((r2 + 0x4c));
                                                                                     |     }
                                                                                     |     if ((r5 & 0x400) == 0) {
    0x0804b1b8 orrne r3, r3, 0x40000000                                              |         r3 |= 0x40000000;
                                                                                     |     }
                                                                                     |     if ((r5 & 0x400) == 0) {
    0x0804b1bc strne r3, [r2, 0x4c]                                                  |         *((r2 + 0x4c)) = r3;
                                                                                     |     }
    0x0804b1c0 ldrh r1, [fp, 0x50]                                                   |     r1 = *(arg_50h);
    0x0804b1c4 stmdaeq r8, {r0, r1, r3, r5, sb, sl, fp, ip, pc}                      |     __asm ("stmdaeq r8, {r0, r1, r3, r5, sb, sl, fp, ip, pc}");
    0x0804b1c8 ldr r4, [sp, 0x18]                                                    |     r4 = var_18h;
    0x0804b1cc str r0, [r4, 0x70]                                                    |     *((r4 + 0x70)) = r0;
    0x0804b1d0 stmdaeq r8, {r0, r1, r4, r5, sb, sl, fp, ip, pc}                      |     __asm ("stmdaeq r8, {r0, r1, r4, r5, sb, sl, fp, ip, pc}");
    0x0804b1d4 stmdaeq r8, {r0, r1, r4, r5, sb, sl, fp, ip, pc}                      |     __asm ("stmdaeq r8, {r0, r1, r4, r5, sb, sl, fp, ip, pc}");
    0x0804b1d8 ldrh r1, [fp, 0x52]                                                   |     r1 = *(arg_52h);
    0x0804b1dc stmdaeq r8, {r0, r1, r2, r3, r5, sb, sl, fp, ip, pc}                  |     __asm ("stmdaeq r8, {r0, r1, r2, r3, r5, sb, sl, fp, ip, pc}");
    0x0804b1e0 tst r5, 0x100                                                         |     
    0x0804b1e4 mov r2, r4                                                            |     r2 = r4;
    0x0804b1e8 str r0, [r4, 0x74]                                                    |     *((r4 + 0x74)) = r0;
    0x0804b1ec mov r3, 0                                                             |     r3 = 0;
    0x0804b1f0 str r3, [r4, 0x13c]                                                   |     *((r4 + 0x13c)) = r3;
                                                                                     |     if ((r5 & 0x100) != 0) {
    0x0804b1f4 ldreq r2, [r6, 0x1f8]                                                 |         r2 = *((r6 + 0x1f8));
                                                                                     |     }
    0x0804b1f8 mov r3, 0x1f4                                                         |     r3 = 0x1f4;
    0x0804b1fc str r3, [r4, 0x134]                                                   |     *((r4 + 0x134)) = r3;
    0x0804b200 movw r3, 0x3a98                                                       |     
    0x0804b204 str r3, [r4, 0x138]                                                   |     *((r4 + 0x138)) = r3;
    0x0804b208 stmdaeq r6, {r3, r5, r8, sb, sl, fp}                                  |     __asm ("stmdaeq r6, {r3, r5, r8, sb, sl, fp}");
    0x0804b20c stmdaeq r6, {r3, r5, r8, sb, sl, fp}                                  |     __asm ("stmdaeq r6, {r3, r5, r8, sb, sl, fp}");
                                                                                     |     if ((r5 & 0x100) != 0) {
    0x0804b210 ldreq r3, [r2, 0x4c]                                                  |         r3 = *((r2 + 0x4c));
                                                                                     |     }
                                                                                     |     if ((r5 & 0x100) != 0) {
    0x0804b214 orreq r3, r3, 0x20000                                                 |         r3 |= 0x20000;
                                                                                     |     }
                                                                                     |     if ((r5 & 0x100) != 0) {
    0x0804b218 streq r3, [r2, 0x4c]                                                  |         *((r2 + 0x4c)) = r3;
                                                                                     |     }
    0x0804b21c ldr r3, [r6, 0x78]                                                    |     r3 = *((r6 + 0x78));
    0x0804b220 ldr r3, [r3, 0x20]                                                    |     r3 = *(0x3ab8);
    0x0804b224 cmp r3, r4                                                            |     
                                                                                     |     if (r3 != r4) {
    0x0804b228 beq 0x804b240                                                         |         
    0x0804b22c tst r5, 0x800                                                         |         
                                                                                     |         if ((r5 & 0x800) != 0) {
    0x0804b230 ldreq r2, [r6, 0x1f8]                                                 |             r2 = *((r6 + 0x1f8));
                                                                                     |         }
                                                                                     |         if ((r5 & 0x800) != 0) {
    0x0804b234 ldreq r3, [r2, 0x4c]                                                  |             r3 = *((r2 + 0x4c));
                                                                                     |         }
                                                                                     |         if ((r5 & 0x800) != 0) {
    0x0804b238 orreq r3, r3, 0x8000000                                               |             r3 |= 0x8000000;
                                                                                     |         }
                                                                                     |         if ((r5 & 0x800) == 0) {
    0x0804b23c streq r3, [r2, 0x4c]                                                  |             *((r2 + 0x4c)) = r3;
                                                                                     |             goto label_55;
                                                                                     |         }
                                                                                     |     }
                                                                                     | label_55:
    0x0804b240 ldr r2, [sp, 0x18]                                                    |     r2 = var_18h;
    0x0804b244 mov r3, 0xa                                                           |     r3 = 0xa;
    0x0804b248 str r3, [r2, 0x214]                                                   |     *((r2 + 0x214)) = r3;
    0x0804b24c ldr r3, [fp, 0x18]                                                    |     r3 = *(arg_18h);
    0x0804b250 str r3, [sp, 0x28]                                                    |     var_28h = r3;
    0x0804b254 cmp r3, 6                                                             |     
                                                                                     |     if (r3 > 6) {
    0x0804b258 bhi 0x804bb04                                                         |         goto label_56;
                                                                                     |     }
    0x0804b25c ldr r3, [fp, 0x1c]                                                    |     r3 = *(arg_1ch);
    0x0804b260 cmp r3, 0x14                                                          |     
                                                                                     |     if (r3 > 0x14) {
    0x0804b264 bhi 0x804bb24                                                         |         goto label_57;
                                                                                     |     }
    0x0804b268 ldr r2, [sp, 0x28]                                                    |     r2 = var_28h;
    0x0804b26c mov r3, 0x400                                                         |     r3 = 0x400;
    0x0804b270 cmp r2, 2                                                             |     
    0x0804b274 lsl r3, r3, r2                                                        |     r3 <<= r2;
    0x0804b278 str r3, [sp, 0x30]                                                    |     var_30h = r3;
                                                                                     |     if (r2 != 2) {
    0x0804b27c ldreq r2, [r6, 0x1f8]                                                 |         r2 = *((r6 + 0x1f8));
                                                                                     |     }
                                                                                     |     if (r2 != 2) {
    0x0804b280 ldreq r3, [r2, 0x4c]                                                  |         r3 = *((r2 + 0x4c));
                                                                                     |     }
                                                                                     |     if (r2 != 2) {
    0x0804b284 orreq r3, r3, 0x400000                                                |         r3 |= 0x400000;
                                                                                     |     }
                                                                                     |     if (r2 != 2) {
    0x0804b288 streq r3, [r2, 0x4c]                                                  |         *((r2 + 0x4c)) = r3;
                                                                                     |     }
    0x0804b28c ldr r3, [fp, 0x4c]                                                    |     r3 = *(arg_4ch);
    0x0804b290 cmp r3, 0                                                             |     
                                                                                     |     if (r3 != 0) {
    0x0804b294 bne 0x804b8c8                                                         |         goto label_58;
                                                                                     |     }
    0x0804b298 ldr r2, [sp, 0x18]                                                    |     r2 = var_18h;
    0x0804b29c mov r3, 0x80                                                          |     r3 = 0x80;
    0x0804b2a0 str r3, [r2, 0x84]                                                    |     *((r2 + 0x84)) = r3;
    0x0804b2a4 mov r3, 0xb                                                           |     r3 = 0xb;
    0x0804b2a8 str r3, [r2, 0x88]                                                    |     *((r2 + 0x88)) = r3;
                                                                                     | label_19:
    0x0804b2ac ldr r3, [sp, 0x18]                                                    |     r3 = var_18h;
    0x0804b2b0 ldr r0, [r3, 0x44]                                                    |     r0 = *((r3 + 0x44));
    0x0804b2b4 ldrb r3, [r0, 0x200]                                                  |     r3 = *((r0 + 0x200));
    0x0804b2b8 cmp r3, 0                                                             |     
                                                                                     |     if (r3 != 0) {
    0x0804b2bc bne 0x804b9e4                                                         |         goto label_59;
                                                                                     |     }
    0x0804b2c0 add r5, sp, 0x5c                                                      |     r5 += var_5ch;
    0x0804b2c4 add r3, sp, 0x60                                                      |     r3 += var_60h;
    0x0804b2c8 str r3, [sp, 0x34]                                                    |     var_34h = r3;
                                                                                     | label_12:
    0x0804b2cc ldr ip, [sp, 0x18]                                                    |     ip = var_18h;
    0x0804b2d0 mov r2, r5                                                            |     r2 = r5;
    0x0804b2d4 ldr r3, [sp, 0x34]                                                    |     r3 = var_34h;
    0x0804b2d8 ldr r0, [sp, 0x1c]                                                    |     r0 = var_1ch;
    0x0804b2dc ldr r1, [ip, 0x4c]                                                    |     r1 = *((ip + 0x4c));
    0x0804b2e0 str r1, [ip, 0x58]                                                    |     *((ip + 0x58)) = r1;
    0x0804b2e4 mov ip, 0                                                             |     
    0x0804b2e8 mov r1, r6                                                            |     r1 = r6;
    0x0804b2ec str ip, [sp]                                                          |     *(sp) = ip;
    0x0804b2f0 bl 0x8047eac                                                          |     r0 = parse_options ();
    0x0804b2f4 cmp r0, 0                                                             |     
                                                                                     |     if (r0 == 0) {
    0x0804b2f8 beq 0x804b668                                                         |         goto label_4;
                                                                                     |     }
    0x0804b2fc ldr r2, [r6, 0x1f8]                                                   |     r2 = *((r6 + 0x1f8));
    0x0804b300 ldr r3, [r2, 0x4c]                                                    |     r3 = *((r2 + 0x4c));
    0x0804b304 and r1, r3, 0xc00                                                     |     r1 = r3 & 0xc00;
    0x0804b308 cmp r1, 0x400                                                         |     
                                                                                     |     if (r1 == 0x400) {
    0x0804b30c beq 0x804bcc4                                                         |         goto label_60;
                                                                                     |     }
    0x0804b310 ldr r3, [r6, 0x38]                                                    |     r3 = *((r6 + 0x38));
    0x0804b314 orr r3, r3, 1                                                         |     r3 |= 1;
    0x0804b318 str r3, [r6, 0x38]                                                    |     *((r6 + 0x38)) = r3;
    0x0804b31c ldr r3, [r2, 0x4c]                                                    |     r3 = *((r2 + 0x4c));
                                                                                     | label_22:
    0x0804b320 ubfx r1, r3, 0xf, 1                                                   |     r1 = (r3 >> 0xf) & ((1 << 1) - 1);
    0x0804b324 ldr r3, [r6, 0x34]                                                    |     r3 = *((r6 + 0x34));
    0x0804b328 bic r3, r3, 0x10000                                                   |     r3 = BIT_MASK (r3, 0x10000);
    0x0804b32c orr r3, r3, r1, lsl 16                                                |     r3 |= (r1 << 16);
    0x0804b330 str r3, [r6, 0x34]                                                    |     *((r6 + 0x34)) = r3;
    0x0804b334 ldr r3, [fp, 0x4c]                                                    |     r3 = *(arg_4ch);
    0x0804b338 cmp r3, 0                                                             |     
                                                                                     |     if (r3 == 0) {
    0x0804b33c bne 0x804b380                                                         |         
    0x0804b340 ldr r3, [r2, 0x44]                                                    |         r3 = *((r2 + 0x44));
    0x0804b344 ldr r2, [r3, 0x5c]                                                    |         r2 = *((r3 + 0x5c));
    0x0804b348 cmp r2, 0                                                             |         
                                                                                     |         if (r2 == 0) {
    0x0804b34c bne 0x804b368                                                         |             
    0x0804b350 ldr r2, [r3, 0x64]                                                    |             r2 = *((r3 + 0x64));
    0x0804b354 cmp r2, 0                                                             |             
                                                                                     |             if (r2 != 0) {
    0x0804b358 bne 0x804b368                                                         |                 goto label_61;
                                                                                     |             }
    0x0804b35c ldr r3, [r3, 0x60]                                                    |             r3 = *((r3 + 0x60));
    0x0804b360 cmp r3, 0                                                             |             
                                                                                     |             if (r3 == 0) {
    0x0804b364 beq 0x804b380                                                         |                 goto label_62;
                                                                                     |             }
                                                                                     |         }
                                                                                     | label_61:
    0x0804b368 stmdaeq r5, {r3, r5, r6, r8, ip, sp, lr, pc}                          |         __asm ("stmdaeq r5, {r3, r5, r6, r8, ip, sp, lr, pc}");
    0x0804b36c stmdaeq r5, {r3, r5, r6, r8, ip, sp, lr, pc}                          |         __asm ("stmdaeq r5, {r3, r5, r6, r8, ip, sp, lr, pc}");
    0x0804b370 stmdaeq r5, {r3, r4, r6, sb, sl, fp, ip, lr, pc}                      |         __asm ("stmdaeq r5, {r3, r4, r6, sb, sl, fp, ip, lr, pc}");
    0x0804b374 stmdaeq r5, {r3, r4, r6, sb, sl, fp, ip, lr, pc}                      |         __asm ("stmdaeq r5, {r3, r4, r6, sb, sl, fp, ip, lr, pc}");
    0x0804b378 mov r0, r6                                                            |         r0 = r6;
    0x0804b37c stmdaeq r4, {r4, r7, r8, sb, fp, sp, lr}                              |         __asm ("stmdaeq r4, {r4, r7, r8, sb, fp, sp, lr}");
                                                                                     |     }
                                                                                     | label_62:
    0x0804b380 ldr r3, [fp, 0x48]                                                    |     r3 = *(arg_48h);
    0x0804b384 cmp r3, 1                                                             |     
                                                                                     |     if (r3 == 1) {
    0x0804b388 beq 0x804bd2c                                                         |         goto label_63;
                                                                                     |     }
                                                                                     | label_23:
    0x0804b38c ldr r3, [r6, 0x78]                                                    |     r3 = *((r6 + 0x78));
    0x0804b390 ldr r3, [r3, 0x20]                                                    |     r3 = *((r3 + 0x20));
    0x0804b394 cmp r3, r4                                                            |     
                                                                                     |     if (r3 == r4) {
    0x0804b398 beq 0x804bc70                                                         |         goto label_64;
                                                                                     |     }
                                                                                     | label_21:
    0x0804b39c ldr r1, [r6, 0x34]                                                    |     r1 = *((r6 + 0x34));
    0x0804b3a0 mov r0, r6                                                            |     r0 = r6;
    0x0804b3a4 and r1, r1, 1                                                         |     r1 &= 1;
    0x0804b3a8 bl 0x804898c                                                          |     r0 = ext4_feature_set_ok ();
    0x0804b3ac cmp r0, 0                                                             |     
                                                                                     |     if (r0 == 0) {
    0x0804b3b0 beq 0x804b668                                                         |         goto label_4;
                                                                                     |     }
    0x0804b3b4 ldr r3, [sp, 0x18]                                                    |     r3 = var_18h;
    0x0804b3b8 ldr r2, [sp, 0x30]                                                    |     r2 = var_30h;
    0x0804b3bc ldr r3, [r3, 0x44]                                                    |     r3 = *((r3 + 0x44));
    0x0804b3c0 ldrh r3, [r3, 0xce]                                                   |     r3 = *((r3 + 0xce));
    0x0804b3c4 cmp r3, r2, asr 2                                                     |     
                                                                                     |     if (r3 > r2) {
    0x0804b3c8 bgt 0x804c3f8                                                         |         goto label_65;
                                                                                     |     }
    0x0804b3cc ldr r4, [r6, 0x1f8]                                                   |     r4 = *((r6 + 0x1f8));
    0x0804b3d0 ldr r2, [r4, 0x44]                                                    |     r2 = *((r4 + 0x44));
    0x0804b3d4 ldr r3, [r2, 0x60]                                                    |     r3 = *((r2 + 0x60));
    0x0804b3d8 tst r3, 0x10000                                                       |     
                                                                                     |     if ((r3 & 0x10000) != 0) {
    0x0804b3dc beq 0x804b3ec                                                         |         
    0x0804b3e0 ldrb r3, [fp, 0x176]                                                  |         r3 = *(arg_176h);
    0x0804b3e4 cmp r3, 0                                                             |         
                                                                                     |         if (r3 != 0) {
    0x0804b3e8 bne 0x804c50c                                                         |             goto label_66;
                                                                                     |         }
                                                                                     |     }
    0x0804b3ec ldr r3, [r6, 0x10]                                                    |     r3 = *((r6 + 0x10));
    0x0804b3f0 ldr r1, [sp, 0x30]                                                    |     r1 = var_30h;
    0x0804b3f4 cmp r3, r1                                                            |     
                                                                                     |     if (r3 == r1) {
    0x0804b3f8 beq 0x804b49c                                                         |         goto label_67;
                                                                                     |     }
    0x0804b3fc cmp sl, 0                                                             |     
                                                                                     |     if (sl != 0) {
    0x0804b400 beq 0x804b40c                                                         |         
    0x0804b404 mov r0, sl                                                            |         r0 = sl;
    0x0804b408 stmdaeq r8, {r0, r1, r2, r3, r4, r6, r7, sl, fp, ip, pc}              |         __asm ("stmdaeq r8, {r0, r1, r2, r3, r4, r6, r7, sl, fp, ip, pc}");
                                                                                     |     }
    0x0804b40c ldr r1, [sp, 0x30]                                                    |     r1 = var_30h;
    0x0804b410 mov r0, r6                                                            |     r0 = r6;
    0x0804b414 stmdaeq r8, {r0, r1, r3, r4, sb, sp, pc}                              |     __asm ("stmdaeq r8, {r0, r1, r3, r4, sb, sp, pc}");
    0x0804b418 cmp r0, 0                                                             |     
                                                                                     |     if (r0 == 0) {
    0x0804b41c beq 0x804c48c                                                         |         goto label_68;
                                                                                     |     }
    0x0804b420 lsr r4, r8, 0x16                                                      |     r4 = r8 >> 0x16;
    0x0804b424 lsl r0, r8, 0xa                                                       |     r0 = r8 << 0xa;
    0x0804b428 ldr r1, [sp, 0x30]                                                    |     r1 = var_30h;
    0x0804b42c orrs r3, r4, 0                                                        |     r3 = r4;
    0x0804b430 str r0, [sp, 0x68]                                                    |     var_68h = r0;
    0x0804b434 str r4, [sp, 0x6c]                                                    |     var_6ch = r4;
                                                                                     |     if (r3 != r4) {
    0x0804b438 bne 0x804c65c                                                         |         goto label_69;
                                                                                     |     }
    0x0804b43c sub r3, r1, 1                                                         |     r3 = r1 - 1;
    0x0804b440 and r5, r3, r0                                                        |     r5 = r3 & r0;
    0x0804b444 stmdaeq r8, {r0, r1, r2, r5, r6, sl, fp, ip, pc}                      |     __asm ("stmdaeq r8, {r0, r1, r2, r5, r6, sl, fp, ip, pc}");
    0x0804b448 mov r3, r4                                                            |     r3 = r4;
    0x0804b44c mov r2, r0                                                            |     r2 = r0;
    0x0804b450 str r0, [sp, 0x68]                                                    |     var_68h = r0;
                                                                                     | label_35:
    0x0804b454 mov r4, 0                                                             |     r4 = 0;
    0x0804b458 mov r0, r6                                                            |     r0 = r6;
    0x0804b45c str r4, [sp, 4]                                                       |     var_4h = r4;
    0x0804b460 str r4, [sp]                                                          |     *(sp) = r4;
    0x0804b464 bl 0x804670c                                                          |     r0 = ext4_sb_bread_gfp ();
    0x0804b468 mov sl, r0                                                            |     sl = r0;
    0x0804b46c cmn r0, 0x1000                                                        |     
                                                                                     |     if (r0 > 0x1000) {
    0x0804b470 bhi 0x804c578                                                         |         void (*0x804c578)() ();
                                                                                     |     }
                                                                                     | label_67:
    0x0804b49c ldr r3, [r2, 0x64]                                                    |     r3 = *((r2 + 0x64));
    0x0804b4a0 ldrb r8, [r6, 0xc]                                                    |     r8 = *((r6 + 0xc));
    0x0804b4a4 ands r5, r3, 8                                                        |     r5 = r3 & 8;
                                                                                     |     if (r5 != r3) {
    0x0804b4a8 streq r5, [sp, 0x3c]                                                  |         var_3ch = r5;
                                                                                     |     }
                                                                                     |     if (r5 != r3) {
    0x0804b4ac subeq r3, r8, 9                                                       |         r3 = r8 - 9;
                                                                                     |     }
    0x0804b4b0 str r5, [sp, 0x1c]                                                    |     var_1ch = r5;
                                                                                     |     if (r5 != r3) {
    0x0804b4b4 mvneq r2, 0                                                           |         r2 = ~0;
                                                                                     |     }
                                                                                     |     if (r5 == r3) {
    0x0804b4b8 mvnne r0, 0                                                           |         r0 = ~0;
                                                                                     |     }
    0x0804b4bc movwne r1, 0xffff                                                     |     __asm ("movwne r1, 0xffff");
    0x0804b4c0 strdne r0, r1, [sp, 0x38]                                             |     __asm ("strdne r0, r1, [var_38h]");
    0x0804b4c4 mvn r1, 5                                                             |     r1 = ~5;
    0x0804b4c8 mov r0, 3                                                             |     r0 = 3;
                                                                                     |     if (r5 != r3) {
    0x0804b4cc lsreq r3, r2, r3                                                      |         r3 = r2 >> r3;
                                                                                     |     }
    0x0804b4d0 sub r2, r8, 2                                                         |     r2 = r8 - 2;
                                                                                     |     if (r5 != r3) {
    0x0804b4d4 streq r3, [sp, 0x38]                                                  |         var_38h = r3;
                                                                                     |     }
    0x0804b4d8 smlabb r0, r0, r8, r1                                                 |     __asm ("smlabb r0, r0, r8, r1");
    0x0804b4dc mov r3, 1                                                             |     r3 = 1;
    0x0804b4e0 str r0, [sp, 0x34]                                                    |     var_34h = r0;
    0x0804b4e4 lsl r0, r2, r3                                                        |     r0 = r2 << r3;
    0x0804b4e8 ldr r5, [sp, 0x38]                                                    |     r5 = var_38h;
    0x0804b4ec lsl r2, r3, r2                                                        |     r2 = r3 << r2;
    0x0804b4f0 sub r1, r8, 0x22                                                      |     r1 = r8 - 0x22;
    0x0804b4f4 lsl ip, r3, r0                                                        |     
    0x0804b4f8 add lr, ip, r2, lsl r3                                                |     lr = ip + (r2 << r3);
    0x0804b4fc add lr, lr, 3                                                         |     lr += 3;
    0x0804b500 lsl r1, r3, r1                                                        |     r1 = r3 << r1;
    0x0804b504 subs r5, r5, lr                                                       |     r5 -= lr;
    0x0804b508 str r5, [sp, 0x38]                                                    |     var_38h = r5;
    0x0804b50c ldr r5, [sp, 0x3c]                                                    |     r5 = var_3ch;
    0x0804b510 sbc lr, r5, lr, asr 31                                                |     __asm ("sbc lr, r5, lr, asr 31");
    0x0804b514 str lr, [sp, 0x3c]                                                    |     var_3ch = lr;
    0x0804b518 rsb lr, r8, 0x22                                                      |     lr = 0x22 - r8;
    0x0804b51c adds r2, r2, 0xc                                                      |     r2 += 0xc;
    0x0804b520 orr r1, r1, r3, lsr lr                                                |     r1 |= (r3 >> lr);
    0x0804b524 ldr lr, [sp, 0x34]                                                    |     lr = var_34h;
    0x0804b528 adc r1, r1, 0                                                         |     __asm ("adc r1, r1, 0");
    0x0804b52c adds r2, ip, r2                                                       |     r2 = ip + r2;
    0x0804b530 sub ip, r0, 0x20                                                      |     
    0x0804b534 rsb r0, r0, 0x20                                                      |     r0 = 0x20 - r0;
    0x0804b538 lsl ip, r3, ip                                                        |     
    0x0804b53c orr ip, ip, r3, lsr r0                                                |     
    0x0804b540 rsb r0, lr, 0x20                                                      |     r0 = 0x20 - lr;
    0x0804b544 adc ip, ip, r1                                                        |     __asm ("adc ip, ip, r1");
    0x0804b548 sub r1, lr, 0x20                                                      |     r1 = lr - 0x20;
    0x0804b54c lsl r1, r3, r1                                                        |     r1 = r3 << r1;
    0x0804b550 orr r1, r1, r3, lsr r0                                                |     r1 |= (r3 >> r0);
    0x0804b554 movw r0, 0xfff                                                        |     r0 = 0xfff;
    0x0804b558 lsl r3, r3, lr                                                        |     r3 <<= lr;
    0x0804b55c sub lr, r8, 0x20                                                      |     lr = r8 - 0x20;
    0x0804b560 adds r3, r3, r2                                                       |     r3 += r2;
    0x0804b564 adc ip, ip, r1                                                        |     __asm ("adc ip, ip, r1");
    0x0804b568 mov r1, 0xf000                                                        |     
    0x0804b56c movt r1, 0xffff                                                       |     r1 = 0x-1000;
    0x0804b570 lsl r2, ip, r8                                                        |     r2 = ip << r8;
    0x0804b574 rsb ip, r8, 0x20                                                      |     
    0x0804b578 orr r2, r2, r3, lsl lr                                                |     r2 |= (r3 << lr);
    0x0804b57c orr r2, r2, r3, lsr ip                                                |     r2 |= (r3 >> ip);
    0x0804b580 lsl r3, r3, r8                                                        |     r3 <<= r8;
    0x0804b584 cmp r1, r3                                                            |     
    0x0804b588 sbcs r5, r0, r2                                                       |     __asm ("sbcs r5, r0, r2");
                                                                                     |     if (r1 >= r3) {
    0x0804b58c movlt r3, r1                                                          |         r3 = r1;
                                                                                     |     }
    0x0804b590 ldr r1, [sp, 0x3c]                                                    |     r1 = var_3ch;
                                                                                     |     if (r1 >= r3) {
    0x0804b594 movlt r2, r0                                                          |         r2 = r0;
                                                                                     |     }
    0x0804b598 ldr r0, [sp, 0x38]                                                    |     r0 = var_38h;
    0x0804b59c lsl r1, r1, r8                                                        |     r1 <<= r8;
    0x0804b5a0 orr r1, r1, r0, lsl lr                                                |     r1 |= (r0 << lr);
    0x0804b5a4 orr r1, r1, r0, lsr ip                                                |     r1 |= (r0 >> ip);
    0x0804b5a8 lsl r0, r0, r8                                                        |     r0 <<= r8;
    0x0804b5ac cmp r0, r3                                                            |     
    0x0804b5b0 sbcs r5, r1, r2                                                       |     __asm ("sbcs r5, r1, r2");
                                                                                     |     if (r0 >= r3) {
    0x0804b5b4 movlt r2, r1                                                          |         r2 = r1;
                                                                                     |     }
    0x0804b5b8 ldr r1, [sp, 0x1c]                                                    |     r1 = var_1ch;
                                                                                     |     if (r0 >= r3) {
    0x0804b5bc movlt r3, r0                                                          |         r3 = r0;
                                                                                     |     }
    0x0804b5c0 cmp r1, 0                                                             |     
    0x0804b5c4 ldr r1, [sp, 0x18]                                                    |     r1 = var_18h;
    0x0804b5c8 str r3, [r1, 0x38]                                                    |     *((r1 + 0x38)) = r3;
                                                                                     |     if (r1 != 0) {
    0x0804b5cc subeq r3, r8, 9                                                       |         r3 = r8 - 9;
                                                                                     |     }
    0x0804b5d0 str r2, [r1, 0x3c]                                                    |     *((r1 + 0x3c)) = r2;
                                                                                     |     if (r1 != 0) {
    0x0804b5d4 mvneq r2, 0                                                           |         r2 = ~0;
                                                                                     |     }
                                                                                     |     if (r1 != 0) {
    0x0804b5d8 lsreq r2, r2, r3                                                      |         r2 >>= r3;
                                                                                     |     }
    0x0804b5dc mvn r3, 0                                                             |     r3 = ~0;
    0x0804b5e0 lsl r0, r3, lr                                                        |     r0 = r3 << lr;
                                                                                     |     if (r1 == 0) {
    0x0804b5e4 movne r2, 0xf000                                                      |         r2 = 0xf000;
                                                                                     |     }
                                                                                     |     if (r1 != 0) {
    0x0804b5e8 lsleq r1, r2, lr                                                      |         r1 = r2 << lr;
                                                                                     |     }
    0x0804b5ec movtne r2, 0xffff                                                     |     __asm ("movtne r2, 0xffff");
                                                                                     |     if (r1 != 0) {
    0x0804b5f0 orreq r1, r1, r2, lsr ip                                              |         r1 |= (r2 >> ip);
                                                                                     |     }
    0x0804b5f4 movwne r1, 0xfff                                                      |     __asm ("movwne r1, 0xfff");
    0x0804b5f8 orr r0, r0, r3, lsr ip                                                |     r0 |= (r3 >> ip);
                                                                                     |     if (r1 != 0) {
    0x0804b5fc lsleq r2, r2, r8                                                      |         r2 <<= r8;
                                                                                     |     }
    0x0804b600 lsl r3, r3, r8                                                        |     r3 <<= r8;
    0x0804b604 cmp r2, r3                                                            |     
    0x0804b608 sbcs ip, r1, r0                                                       |     __asm ("sbcs ip, r1, r0");
                                                                                     |     if (r2 >= r3) {
    0x0804b60c movlt r3, r2                                                          |         r3 = r2;
                                                                                     |     }
                                                                                     |     if (r2 >= r3) {
    0x0804b610 movlt r0, r1                                                          |         r0 = r1;
                                                                                     |     }
    0x0804b614 str r3, [r6, 0x18]                                                    |     *((r6 + 0x18)) = r3;
    0x0804b618 str r0, [r6, 0x1c]                                                    |     *((r6 + 0x1c)) = r0;
    0x0804b61c ldr r2, [sp, 0x18]                                                    |     r2 = var_18h;
    0x0804b620 ldrh r3, [fp, 0xfe]                                                   |     r3 = *(arg_feh);
    0x0804b624 str r3, [r2]                                                          |     *(r2) = r3;
    0x0804b628 ldr r2, [r4, 0x44]                                                    |     r2 = *((r4 + 0x44));
    0x0804b62c ldr r2, [r2, 0x60]                                                    |     r2 = *((r2 + 0x60));
    0x0804b630 tst r2, 0x80                                                          |     
                                                                                     |     if ((r2 & 0x80) == 0) {
    0x0804b634 beq 0x804bdd4                                                         |         goto label_70;
                                                                                     |     }
    0x0804b638 sub r2, r3, 0x40                                                      |     r2 = r3 - 0x40;
    0x0804b63c cmp r2, 0x3c0                                                         |     
                                                                                     |     if (r2 <= 0x3c0) {
    0x0804b640 bhi 0x804b650                                                         |         
    0x0804b644 sub r2, r3, 1                                                         |         r2 = r3 - 1;
    0x0804b648 tst r2, r3                                                            |         
                                                                                     |         if ((r2 & r3) == 0) {
    0x0804b64c beq 0x804bde0                                                         |             goto label_71;
                                                                                     |         }
                                                                                     |     }
    0x0804b650 stmdaeq r5, {r2, r4, r8, sb, ip, sp, lr, pc}                          |     __asm ("stmdaeq r5, {r2, r4, r8, sb, ip, sp, lr, pc}");
    0x0804b654 stmdaeq r5, {r2, r4, r8, sb, ip, sp, lr, pc}                          |     __asm ("stmdaeq r5, {r2, r4, r8, sb, ip, sp, lr, pc}");
    0x0804b658 stmdaeq r5, {r2, r3, r5, r6, r7, r8, fp, ip, lr, pc}                  |     __asm ("stmdaeq r5, {r2, r3, r5, r6, r7, r8, fp, ip, lr, pc}");
    0x0804b65c stmdaeq r5, {r2, r3, r5, r6, r7, r8, fp, ip, lr, pc}                  |     __asm ("stmdaeq r5, {r2, r3, r5, r6, r7, r8, fp, ip, lr, pc}");
    0x0804b660 mov r0, r6                                                            |     r0 = r6;
    0x0804b664 stmdaeq r4, {r4, r7, r8, sb, fp, sp, lr}                              |     __asm ("stmdaeq r4, {r4, r7, r8, sb, fp, sp, lr}");
                                                                                     | label_4:
    0x0804b668 mov r4, 0                                                             |     r4 = 0;
    0x0804b66c mvn r7, 0x15                                                          |     r7 = ~0x15;
                                                                                     | label_6:
    0x0804b670 ldr r3, [sp, 0x18]                                                    |     r3 = var_18h;
    0x0804b674 ldr r8, [r3, 0x220]                                                   |     r8 = *((r3 + 0x220));
    0x0804b678 cmp r8, 0                                                             |     
                                                                                     |     if (r8 != 0) {
    0x0804b67c beq 0x804b68c                                                         |         
                                                                                     | label_32:
    0x0804b680 add r1, r8, 0x40                                                      |         r1 = r8 + 0x40;
    0x0804b684 mov r0, r8                                                            |         r0 = r8;
    0x0804b688 stmdaeq r8, {r0, r1, r3, r4, r5, r7, r8, sp, pc}                      |         __asm ("stmdaeq r8, {r0, r1, r3, r4, r5, r7, r8, sp, pc}");
                                                                                     |     }
                                                                                     | label_17:
    0x0804b68c ldr r5, [sp, 0x18]                                                    |     r5 = var_18h;
    0x0804b690 ldr r0, [r5, 0x2e8]                                                   |     r0 = *((r5 + 0x2e8));
    0x0804b694 stmdaeq r8, {r0, r1, r5, r7, sl, fp, ip, pc}                          |     __asm ("stmdaeq r8, {r0, r1, r5, r7, sl, fp, ip, pc}");
    0x0804b698 mov r3, 0                                                             |     r3 = 0;
    0x0804b69c cmp sl, 0                                                             |     
    0x0804b6a0 str r3, [r5, 0x2e8]                                                   |     *((r5 + 0x2e8)) = r3;
                                                                                     |     if (sl != 0) {
    0x0804b6a4 beq 0x804b6b0                                                         |         
    0x0804b6a8 mov r0, sl                                                            |         r0 = sl;
    0x0804b6ac stmdaeq r8, {r0, r1, r2, r3, r4, r6, r7, sl, fp, ip, pc}              |         __asm ("stmdaeq r8, {r0, r1, r2, r3, r4, r6, r7, sl, fp, ip, pc}");
                                                                                     |     }
    0x0804b6b0 ldr r3, [sp, 0x18]                                                    |     r3 = var_18h;
    0x0804b6b4 ldr r0, [r3, 0x140]                                                   |     r0 = *((r3 + 0x140));
    0x0804b6b8 cmp r0, 0                                                             |     
                                                                                     |     if (r0 != 0) {
    0x0804b6bc beq 0x804b6d4                                                         |         
                                                                                     | label_33:
    0x0804b6c0 mov r1, 0x83                                                          |         r1 = 0x83;
    0x0804b6c4 stmdaeq r8, {r0, r1, r2, r3, r5, r7, r8, sp, pc}                      |         __asm ("stmdaeq r8, {r0, r1, r2, r3, r5, r7, r8, sp, pc}");
    0x0804b6c8 ldr r2, [sp, 0x18]                                                    |         r2 = var_18h;
    0x0804b6cc mov r3, 0                                                             |         r3 = 0;
    0x0804b6d0 str r3, [r2, 0x140]                                                   |         *((r2 + 0x140)) = r3;
                                                                                     |     }
    0x0804b6d4 ldr r5, [sp, 0x18]                                                    |     r5 = var_18h;
    0x0804b6d8 cmp r4, 0                                                             |     
                                                                                     |     if (r4 != 0) {
    0x0804b6dc moveq r4, r7                                                          |         r4 = r7;
                                                                                     |     }
    0x0804b6e0 mov r3, 0                                                             |     r3 = 0;
    0x0804b6e4 str r3, [r6, 0x1f8]                                                   |     *((r6 + 0x1f8)) = r3;
    0x0804b6e8 ldr r0, [r5, 0xd8]                                                    |     r0 = *((r5 + 0xd8));
                                                                                     | label_8:
    0x0804b6ec stmdaeq r8, {r0, r1, r5, r7, sl, fp, ip, pc}                          |     __asm ("stmdaeq r8, {r0, r1, r5, r7, sl, fp, ip, pc}");
    0x0804b6f0 mov r0, r5                                                            |     r0 = r5;
    0x0804b6f4 stmdaeq r8, {r0, r1, r5, r7, sl, fp, ip, pc}                          |     __asm ("stmdaeq r8, {r0, r1, r5, r7, sl, fp, ip, pc}");
    0x0804b6f8 mov r0, sb                                                            |     r0 = sb;
    0x0804b6fc stmdaeq r8, {r0, r1, r5, r7, sl, fp, ip, pc}                          |     __asm ("stmdaeq r8, {r0, r1, r5, r7, sl, fp, ip, pc}");
                                                                                     | label_3:
    0x0804b700 mov r0, r4                                                            |     r0 = r4;
    0x0804b704 add sp, sp, 0x8c                                                      |     
    0x0804b708 pop {r4, r5, r6, r7, r8, sb, sl, fp, pc}                              |     
                                                                                     | label_39:
    0x0804b70c ldrb r3, [r4, 1]                                                      |     r3 = *((r4 + 1));
    0x0804b710 cmp r3, 0x62                                                          |     
                                                                                     |     if (r3 != 0x62) {
    0x0804b714 bne 0x804aef4                                                         |         goto label_0;
                                                                                     |     }
    0x0804b718 ldrb r2, [r4, 2]                                                      |     r2 = *((r4 + 2));
    0x0804b71c subs r2, r2, 0x3d                                                     |     r2 -= 0x3d;
                                                                                     |     if (r2 != r2) {
    0x0804b720 bne 0x804aef4                                                         |         goto label_0;
                                                                                     |     }
    0x0804b724 add r0, r4, 3                                                         |     r0 = r4 + 3;
    0x0804b728 add r1, sp, 0x78                                                      |     r1 += var_78h;
    0x0804b72c mov sl, r2                                                            |     sl = r2;
    0x0804b730 str r0, [sp, 0x78]                                                    |     var_78h = r0;
    0x0804b734 stmdaeq r8, {r0, r1, r2, r3, r4, sb, sp, pc}                          |     __asm ("stmdaeq r8, {r0, r1, r2, r3, r4, sb, sp, pc}");
    0x0804b738 ldr r3, [sp, 0x78]                                                    |     r3 = var_78h;
    0x0804b73c str r3, [sp, 0x1c]                                                    |     var_1ch = r3;
    0x0804b740 mov r8, r0                                                            |     r8 = r0;
    0x0804b744 ldrb r3, [r3]                                                         |     r3 = *(r3);
    0x0804b748 cmp r3, 0                                                             |     
    0x0804b74c cmpne r3, 0x2c                                                        |     __asm ("cmpne r3, 0x2c");
                                                                                     |     if (r3 != 0) {
    0x0804b750 bne 0x804dfdc                                                         |         goto label_72;
                                                                                     |     }
    0x0804b754 cmp r3, 0x2c                                                          |     
    0x0804b758 mov r0, 0                                                             |     r0 = 0;
    0x0804b75c movw r1, 0x4003                                                       |     r1 = 0x4003;
    0x0804b760 strd r0, r1, [sp, 0x5c]                                               |     __asm ("strd r0, r1, [var_5ch]");
                                                                                     |     if (r3 != 0x2c) {
    0x0804b764 ldreq r3, [sp, 0x1c]                                                  |         r3 = var_1ch;
                                                                                     |     }
                                                                                     |     if (r3 != 0x2c) {
    0x0804b768 addeq r3, r3, 1                                                       |         r3++;
                                                                                     |     }
                                                                                     |     if (r3 != 0x2c) {
    0x0804b76c streq r3, [sp, 0x1c]                                                  |         var_1ch = r3;
                                                                                     |     }
    0x0804b770 ldr r3, [sp, 0x1c]                                                    |     r3 = var_1ch;
    0x0804b774 cmp r3, 0                                                             |     
                                                                                     |     if (r3 != 0) {
    0x0804b778 bne 0x804af0c                                                         |         goto label_1;
                                                                                     |     }
    0x0804b77c ldr r3, [sp, 0x18]                                                    |     r3 = var_18h;
    0x0804b780 cmp r3, 0                                                             |     
                                                                                     |     if (r3 != 0) {
    0x0804b784 bne 0x804af20                                                         |         goto label_2;
                                                                                     |     }
                                                                                     | label_41:
    0x0804b788 mov r0, r3                                                            |     r0 = r3;
    0x0804b78c stmdaeq r8, {r0, r1, r5, r7, sl, fp, ip, pc}                          |     __asm ("stmdaeq r8, {r0, r1, r5, r7, sl, fp, ip, pc}");
    0x0804b790 mov r0, sb                                                            |     r0 = sb;
    0x0804b794 stmdaeq r8, {r0, r1, r5, r7, sl, fp, ip, pc}                          |     __asm ("stmdaeq r8, {r0, r1, r5, r7, sl, fp, ip, pc}");
                                                                                     | label_34:
    0x0804b798 mvn r4, 0xb                                                           |     r4 = ~0xb;
    0x0804b79c b 0x804b700                                                           |     goto label_3;
                                                                                     | label_25:
    0x0804b7a0 ldr r3, [sp, 0x20]                                                    |     r3 = var_20h;
    0x0804b7a4 cmp r3, 0                                                             |     
                                                                                     |     if (r3 != 0) {
    0x0804b7a8 bne 0x804b668                                                         |         goto label_4;
                                                                                     |     }
    0x0804b7ac mov r0, r6                                                            |     r0 = r6;
    0x0804b7b0 stmdaeq r5, {r7, r8, sl, fp, ip, sp, lr, pc}                          |     __asm ("stmdaeq r5, {r7, r8, sl, fp, ip, sp, lr, pc}");
    0x0804b7b4 stmdaeq r5, {r7, r8, sl, fp, ip, sp, lr, pc}                          |     __asm ("stmdaeq r5, {r7, r8, sl, fp, ip, sp, lr, pc}");
    0x0804b7b8 stmdaeq r5, {r2, r3, r5, r6, r7, r8, fp, ip, lr, pc}                  |     __asm ("stmdaeq r5, {r2, r3, r5, r6, r7, r8, fp, ip, lr, pc}");
    0x0804b7bc stmdaeq r5, {r2, r3, r5, r6, r7, r8, fp, ip, lr, pc}                  |     __asm ("stmdaeq r5, {r2, r3, r5, r6, r7, r8, fp, ip, lr, pc}");
    0x0804b7c0 stmdaeq r4, {r4, r7, r8, sb, fp, sp, lr}                              |     __asm ("stmdaeq r4, {r4, r7, r8, sb, fp, sp, lr}");
    0x0804b7c4 b 0x804b668                                                           |     goto label_4;
                                                                                     | label_43:
    0x0804b7c8 mov r3, 0                                                             |     r3 = 0;
    0x0804b7cc mov r2, r8                                                            |     r2 = r8;
    0x0804b7d0 mov fp, r3                                                            |     
    0x0804b7d4 str sl, [sp, 0x6c]                                                    |     var_6ch = sl;
    0x0804b7d8 str r8, [sp, 0x68]                                                    |     var_68h = r8;
    0x0804b7dc b 0x804afb8                                                           |     goto label_5;
                                                                                     | label_49:
    0x0804b7e0 ldr r3, [r4, 0x220]                                                   |     r3 = *((r4 + 0x220));
    0x0804b7e4 cmp r3, 0                                                             |     
                                                                                     |     if (r3 == 0) {
    0x0804b7e8 beq 0x804ba7c                                                         |         goto label_73;
                                                                                     |     }
                                                                                     | label_27:
    0x0804b7ec ldr r2, [r3]                                                          |     r2 = *(r3);
    0x0804b7f0 ldr r5, [fp, 0x3fc]                                                   |     r5 = *(arg_3fch);
    0x0804b7f4 cmp r2, 4                                                             |     
                                                                                     |     if (r2 != 4) {
    0x0804b7f8 bne 0x804bb20                                                         |         goto label_74;
                                                                                     |     }
    0x0804b7fc mov r1, fp                                                            |     r1 = fp;
    0x0804b800 add r0, sp, 0x78                                                      |     r0 += var_78h;
    0x0804b804 mov r2, 0x3fc                                                         |     r2 = 0x3fc;
    0x0804b808 str r3, [sp, 0x78]                                                    |     var_78h = r3;
    0x0804b80c mvn r3, 0                                                             |     r3 = ~0;
    0x0804b810 str r3, [sp, 0x80]                                                    |     var_80h = r3;
    0x0804b814 stmdaeq r8, {r0, r1, r2, r3, r4, r5, r6, sl, fp, ip, pc}              |     __asm ("stmdaeq r8, {r0, r1, r2, r3, r4, r5, r6, sl, fp, ip, pc}");
    0x0804b818 subs r4, r0, 0                                                        |     r4 -= var_78h;
                                                                                     |     if (r4 != var_78h) {
    0x0804b81c bne 0x804bb20                                                         |         goto label_74;
                                                                                     |     }
    0x0804b820 ldr r3, [sp, 0x80]                                                    |     r3 = var_80h;
    0x0804b824 cmp r5, r3                                                            |     
                                                                                     |     if (r5 == r3) {
    0x0804b828 beq 0x804b93c                                                         |         goto label_75;
                                                                                     |     }
    0x0804b82c mov r0, r6                                                            |     r0 = r6;
    0x0804b830 stmdaeq r5, {r4, r5, r6, r8, sb, sl, fp, sp, lr, pc}                  |     __asm ("stmdaeq r5, {r4, r5, r6, r8, sb, sl, fp, sp, lr, pc}");
    0x0804b834 stmdaeq r5, {r4, r5, r6, r8, sb, sl, fp, sp, lr, pc}                  |     __asm ("stmdaeq r5, {r4, r5, r6, r8, sb, sl, fp, sp, lr, pc}");
    0x0804b838 stmdaeq r5, {r2, r3, r5, r6, r7, r8, fp, ip, lr, pc}                  |     __asm ("stmdaeq r5, {r2, r3, r5, r6, r7, r8, fp, ip, lr, pc}");
    0x0804b83c stmdaeq r5, {r2, r3, r5, r6, r7, r8, fp, ip, lr, pc}                  |     __asm ("stmdaeq r5, {r2, r3, r5, r6, r7, r8, fp, ip, lr, pc}");
    0x0804b840 mvn r7, 0x49                                                          |     r7 = ~0x49;
    0x0804b844 stmdaeq r4, {r4, r7, r8, sb, fp, sp, lr}                              |     __asm ("stmdaeq r4, {r4, r7, r8, sb, fp, sp, lr}");
    0x0804b848 b 0x804b670                                                           |     goto label_6;
                                                                                     | label_38:
    0x0804b84c movw r3, 0x4003                                                       |     r3 = 0x4003;
    0x0804b850 mov sl, r4                                                            |     sl = r4;
    0x0804b854 str r4, [sp, 0x5c]                                                    |     var_5ch = r4;
    0x0804b858 mov r8, 1                                                             |     r8 = 1;
    0x0804b85c str r4, [sp, 0x1c]                                                    |     var_1ch = r4;
    0x0804b860 str r3, [sp, 0x60]                                                    |     var_60h = r3;
    0x0804b864 b 0x804af14                                                           |     goto label_7;
                                                                                     | label_42:
    0x0804b868 mvn r4, 0x15                                                          |     r4 = ~0x15;
    0x0804b86c mov r0, r6                                                            |     r0 = r6;
    0x0804b870 stmdaeq r5, {r3, r4, r7, sb, sl, fp, sp, lr, pc}                      |     __asm ("stmdaeq r5, {r3, r4, r7, sb, sl, fp, sp, lr, pc}");
    0x0804b874 stmdaeq r5, {r3, r4, r7, sb, sl, fp, sp, lr, pc}                      |     __asm ("stmdaeq r5, {r3, r4, r7, sb, sl, fp, sp, lr, pc}");
    0x0804b878 stmdaeq r5, {r2, r3, r5, r6, r7, r8, fp, ip, lr, pc}                  |     __asm ("stmdaeq r5, {r2, r3, r5, r6, r7, r8, fp, ip, lr, pc}");
    0x0804b87c stmdaeq r5, {r2, r3, r5, r6, r7, r8, fp, ip, lr, pc}                  |     __asm ("stmdaeq r5, {r2, r3, r5, r6, r7, r8, fp, ip, lr, pc}");
    0x0804b880 stmdaeq r4, {r4, r7, r8, sb, fp, sp, lr}                              |     __asm ("stmdaeq r4, {r4, r7, r8, sb, fp, sp, lr}");
                                                                                     |     do {
    0x0804b884 ldr r5, [sp, 0x18]                                                    |         r5 = var_18h;
    0x0804b888 mov r3, 0                                                             |         r3 = 0;
    0x0804b88c str r3, [r6, 0x1f8]                                                   |         *((r6 + 0x1f8)) = r3;
    0x0804b890 ldr r0, [r5, 0xd8]                                                    |         r0 = *((r5 + 0xd8));
    0x0804b894 b 0x804b6ec                                                           |         goto label_8;
                                                                                     | label_45:
    0x0804b898 mov r4, r0                                                            |         r4 = r0;
    0x0804b89c stmdaeq r5, {r4, r5, r7, sb, sl, fp, sp, lr, pc}                      |         __asm ("stmdaeq r5, {r4, r5, r7, sb, sl, fp, sp, lr, pc}");
    0x0804b8a0 stmdaeq r5, {r4, r5, r7, sb, sl, fp, sp, lr, pc}                      |         __asm ("stmdaeq r5, {r4, r5, r7, sb, sl, fp, sp, lr, pc}");
    0x0804b8a4 mov r0, r6                                                            |         r0 = r6;
    0x0804b8a8 stmdaeq r5, {r2, r3, r5, r6, r7, r8, fp, ip, lr, pc}                  |         __asm ("stmdaeq r5, {r2, r3, r5, r6, r7, r8, fp, ip, lr, pc}");
    0x0804b8ac stmdaeq r5, {r2, r3, r5, r6, r7, r8, fp, ip, lr, pc}                  |         __asm ("stmdaeq r5, {r2, r3, r5, r6, r7, r8, fp, ip, lr, pc}");
    0x0804b8b0 stmdaeq r4, {r4, r7, r8, sb, fp, sp, lr}                              |         __asm ("stmdaeq r4, {r4, r7, r8, sb, fp, sp, lr}");
    0x0804b8b4 b 0x804b884                                                           |         
                                                                                     |     } while (1);
                                                                                     | label_52:
    0x0804b8b8 orr r2, r2, 0x400                                                     |     r2 |= 0x400;
    0x0804b8bc str r2, [r3, 0x4c]                                                    |     *((r3 + 0x4c)) = r2;
    0x0804b8c0 ldr r3, [r6, 0x1f8]                                                   |     r3 = *((r6 + 0x1f8));
    0x0804b8c4 b 0x804b168                                                           |     goto label_9;
                                                                                     | label_58:
    0x0804b8c8 ldr r1, [sp, 0x18]                                                    |     r1 = var_18h;
    0x0804b8cc ldrh r3, [fp, 0x58]                                                   |     r3 = *(arg_58h);
    0x0804b8d0 str r3, [r1, 0x84]                                                    |     *((r1 + 0x84)) = r3;
    0x0804b8d4 ldr r2, [fp, 0x54]                                                    |     r2 = *(arg_54h);
    0x0804b8d8 str r2, [r1, 0x88]                                                    |     *((r1 + 0x88)) = r2;
    0x0804b8dc cmp r2, 0xa                                                           |     
                                                                                     |     if (r2 <= 0xa) {
    0x0804b8e0 ble 0x804ba34                                                         |         goto label_76;
                                                                                     |     }
    0x0804b8e4 cmp r3, 0x7f                                                          |     
                                                                                     |     if (r3 > 0x7f) {
    0x0804b8e8 ble 0x804b904                                                         |         
    0x0804b8ec ldr r1, [sp, 0x30]                                                    |         r1 = var_30h;
    0x0804b8f0 sub r2, r3, 1                                                         |         r2 = r3 - 1;
    0x0804b8f4 and r2, r2, r3                                                        |         r2 &= r3;
    0x0804b8f8 cmp r3, r1                                                            |         
    0x0804b8fc cmple r2, 0                                                           |         __asm ("cmple r2, 0");
                                                                                     |         if (r3 == r1) {
    0x0804b900 beq 0x804bba0                                                         |             goto label_77;
                                                                                     |         }
                                                                                     |     }
    0x0804b904 mov r0, r6                                                            |     r0 = r6;
    0x0804b908 stmdaeq r5, {r4, ip, sp, lr, pc}                                      |     __asm ("stmdaeq r5, {r4, ip, sp, lr, pc}");
    0x0804b90c stmdaeq r5, {r4, ip, sp, lr, pc}                                      |     __asm ("stmdaeq r5, {r4, ip, sp, lr, pc}");
    0x0804b910 stmdaeq r5, {r2, r3, r5, r6, r7, r8, fp, ip, lr, pc}                  |     __asm ("stmdaeq r5, {r2, r3, r5, r6, r7, r8, fp, ip, lr, pc}");
    0x0804b914 stmdaeq r5, {r2, r3, r5, r6, r7, r8, fp, ip, lr, pc}                  |     __asm ("stmdaeq r5, {r2, r3, r5, r6, r7, r8, fp, ip, lr, pc}");
    0x0804b918 stmdaeq r4, {r4, r7, r8, sb, fp, sp, lr}                              |     __asm ("stmdaeq r4, {r4, r7, r8, sb, fp, sp, lr}");
    0x0804b91c mov r0, r6                                                            |     r0 = r6;
    0x0804b920 ldr r3, [sp, 0x30]                                                    |     r3 = var_30h;
    0x0804b924 stmdaeq r5, {r2, r3, r5, ip, sp, lr, pc}                              |     __asm ("stmdaeq r5, {r2, r3, r5, ip, sp, lr, pc}");
    0x0804b928 stmdaeq r5, {r2, r3, r5, ip, sp, lr, pc}                              |     __asm ("stmdaeq r5, {r2, r3, r5, ip, sp, lr, pc}");
    0x0804b92c stmdaeq r5, {r2, r3, r5, r6, r7, r8, fp, ip, lr, pc}                  |     __asm ("stmdaeq r5, {r2, r3, r5, r6, r7, r8, fp, ip, lr, pc}");
    0x0804b930 stmdaeq r5, {r2, r3, r5, r6, r7, r8, fp, ip, lr, pc}                  |     __asm ("stmdaeq r5, {r2, r3, r5, r6, r7, r8, fp, ip, lr, pc}");
    0x0804b934 stmdaeq r4, {r4, r7, r8, sb, fp, sp, lr}                              |     __asm ("stmdaeq r4, {r4, r7, r8, sb, fp, sp, lr}");
    0x0804b938 b 0x804b668                                                           |     goto label_4;
                                                                                     | label_75:
    0x0804b93c ldr r4, [r6, 0x1f8]                                                   |     r4 = *((r6 + 0x1f8));
    0x0804b940 mov r3, r4                                                            |     r3 = r4;
    0x0804b944 ldr r1, [r4, 0x44]                                                    |     r1 = *((r4 + 0x44));
    0x0804b948 ldr r2, [r1, 0x60]                                                    |     r2 = *((r1 + 0x60));
    0x0804b94c tst r2, 0x2000                                                        |     
                                                                                     |     if ((r2 & 0x2000) != 0) {
    0x0804b950 bne 0x804b080                                                         |         goto label_10;
                                                                                     |     }
    0x0804b954 ldr r3, [r1, 0x64]                                                    |     r3 = *((r1 + 0x64));
    0x0804b958 tst r3, 0x400                                                         |     
                                                                                     |     if ((r3 & 0x400) == 0) {
    0x0804b95c beq 0x804bae4                                                         |         goto label_50;
                                                                                     |     }
    0x0804b960 ldr r3, [r4, 0x220]                                                   |     r3 = *((r4 + 0x220));
    0x0804b964 cmp r3, 0                                                             |     
                                                                                     |     if (r3 == 0) {
    0x0804b968 beq 0x804dfa0                                                         |         goto label_78;
                                                                                     |     }
                                                                                     | label_14:
    0x0804b96c ldr r2, [r4, 0x44]                                                    |     r2 = *((r4 + 0x44));
                                                                                     | label_15:
    0x0804b970 ldr r3, [r4, 0x220]                                                   |     r3 = *((r4 + 0x220));
    0x0804b974 cmp r3, 0                                                             |     
                                                                                     |     if (r3 == 0) {
    0x0804b978 beq 0x804bae0                                                         |         goto label_79;
                                                                                     |     }
                                                                                     | label_16:
    0x0804b97c ldr r3, [sp, 0x18]                                                    |     r3 = var_18h;
    0x0804b980 add r1, fp, 0x68                                                      |     r1 += arg_68h;
    0x0804b984 ldr r3, [r3, 0x220]                                                   |     r3 = *((r3 + 0x220));
    0x0804b988 ldr r2, [r3]                                                          |     r2 = *(r3);
    0x0804b98c cmp r2, 4                                                             |     
                                                                                     |     if (r2 != 4) {
    0x0804b990 bne 0x804bb20                                                         |         goto label_74;
                                                                                     |     }
    0x0804b994 add r0, sp, 0x78                                                      |     r0 += var_78h;
    0x0804b998 mov r2, 0x10                                                          |     r2 = 0x10;
    0x0804b99c str r3, [sp, 0x78]                                                    |     var_78h = r3;
    0x0804b9a0 mvn r3, 0                                                             |     r3 = ~0;
    0x0804b9a4 str r3, [sp, 0x80]                                                    |     var_80h = r3;
    0x0804b9a8 stmdaeq r8, {r0, r1, r2, r3, r4, r5, r6, sl, fp, ip, pc}              |     __asm ("stmdaeq r8, {r0, r1, r2, r3, r4, r5, r6, sl, fp, ip, pc}");
    0x0804b9ac cmp r0, 0                                                             |     
                                                                                     |     if (r0 != 0) {
    0x0804b9b0 bne 0x804bb20                                                         |         goto label_74;
                                                                                     |     }
    0x0804b9b4 ldr r1, [sp, 0x18]                                                    |     r1 = var_18h;
    0x0804b9b8 ldr r2, [sp, 0x80]                                                    |     r2 = var_80h;
    0x0804b9bc ldr r3, [r6, 0x1f8]                                                   |     r3 = *((r6 + 0x1f8));
    0x0804b9c0 str r2, [r1, 0x224]                                                   |     *((r1 + 0x224)) = r2;
    0x0804b9c4 b 0x804b08c                                                           |     goto label_11;
                                                                                     | label_47:
    0x0804b9c8 mov r0, r6                                                            |     r0 = r6;
    0x0804b9cc stmdaeq r5, {r4, r8, sb, sl, fp, sp, lr, pc}                          |     __asm ("stmdaeq r5, {r4, r8, sb, sl, fp, sp, lr, pc}");
    0x0804b9d0 stmdaeq r5, {r4, r8, sb, sl, fp, sp, lr, pc}                          |     __asm ("stmdaeq r5, {r4, r8, sb, sl, fp, sp, lr, pc}");
    0x0804b9d4 stmdaeq r5, {r2, r3, r5, r6, r7, r8, fp, ip, lr, pc}                  |     __asm ("stmdaeq r5, {r2, r3, r5, r6, r7, r8, fp, ip, lr, pc}");
    0x0804b9d8 stmdaeq r5, {r2, r3, r5, r6, r7, r8, fp, ip, lr, pc}                  |     __asm ("stmdaeq r5, {r2, r3, r5, r6, r7, r8, fp, ip, lr, pc}");
    0x0804b9dc stmdaeq r4, {r4, r7, r8, sb, fp, sp, lr}                              |     __asm ("stmdaeq r4, {r4, r7, r8, sb, fp, sp, lr}");
    0x0804b9e0 b 0x804b668                                                           |     goto label_4;
                                                                                     | label_59:
    0x0804b9e4 add r0, r0, 0x200                                                     |     r0 += 0x200;
    0x0804b9e8 mov r2, 0xcc0                                                         |     r2 = 0xcc0;
    0x0804b9ec mov r1, 0x40                                                          |     r1 = 0x40;
    0x0804b9f0 stmdaeq r8, {r0, r1, r5, sb, sp, pc}                                  |     __asm ("stmdaeq r8, {r0, r1, r5, sb, sp, pc}");
    0x0804b9f4 subs r3, r0, 0                                                        |     r3 = r0 - 0;
    0x0804b9f8 str r3, [sp, 0x38]                                                    |     var_38h = r3;
                                                                                     |     if (r3 == r0) {
    0x0804b9fc beq 0x804b668                                                         |         goto label_4;
                                                                                     |     }
    0x0804ba00 add r5, sp, 0x5c                                                      |     r5 += var_5ch;
    0x0804ba04 add r3, sp, 0x60                                                      |     r3 += var_60h;
    0x0804ba08 mov ip, 0                                                             |     
    0x0804ba0c mov r2, r5                                                            |     r2 = r5;
    0x0804ba10 mov r1, r6                                                            |     r1 = r6;
    0x0804ba14 str ip, [sp]                                                          |     *(sp) = ip;
    0x0804ba18 str r3, [sp, 0x34]                                                    |     var_34h = r3;
    0x0804ba1c bl 0x8047eac                                                          |     r0 = parse_options ();
    0x0804ba20 cmp r0, 0                                                             |     
                                                                                     |     if (r0 == 0) {
    0x0804ba24 beq 0x804bdb4                                                         |         goto label_80;
                                                                                     |     }
                                                                                     | label_24:
    0x0804ba28 ldr r0, [sp, 0x38]                                                    |     r0 = var_38h;
    0x0804ba2c stmdaeq r8, {r0, r1, r5, r7, sl, fp, ip, pc}                          |     __asm ("stmdaeq r8, {r0, r1, r5, r7, sl, fp, ip, pc}");
    0x0804ba30 b 0x804b2cc                                                           |     goto label_12;
                                                                                     | label_76:
    0x0804ba34 mov r3, r2                                                            |     r3 = r2;
    0x0804ba38 mov r0, r6                                                            |     r0 = r6;
    0x0804ba3c stmdaeq r5, {r3, r4, r5, r6, r7, r8, sb, sl, fp, sp, lr, pc}          |     __asm ("stmdaeq r5, {r3, r4, r5, r6, r7, r8, sb, sl, fp, sp, lr, pc}");
    0x0804ba40 stmdaeq r5, {r3, r4, r5, r6, r7, r8, sb, sl, fp, sp, lr, pc}          |     __asm ("stmdaeq r5, {r3, r4, r5, r6, r7, r8, sb, sl, fp, sp, lr, pc}");
    0x0804ba44 stmdaeq r5, {r2, r3, r5, r6, r7, r8, fp, ip, lr, pc}                  |     __asm ("stmdaeq r5, {r2, r3, r5, r6, r7, r8, fp, ip, lr, pc}");
    0x0804ba48 stmdaeq r5, {r2, r3, r5, r6, r7, r8, fp, ip, lr, pc}                  |     __asm ("stmdaeq r5, {r2, r3, r5, r6, r7, r8, fp, ip, lr, pc}");
    0x0804ba4c stmdaeq r4, {r4, r7, r8, sb, fp, sp, lr}                              |     __asm ("stmdaeq r4, {r4, r7, r8, sb, fp, sp, lr}");
    0x0804ba50 b 0x804b668                                                           |     goto label_4;
                                                                                     | label_46:
    0x0804ba54 ldr r1, [pc, 0xd70]                                                   |     r1 = .bss;
    0x0804ba58 mov r0, r6                                                            |     r0 = r6;
    0x0804ba5c stmdaeq r5, {r2, r3, r6, r7, sb, sl, fp, sp, lr, pc}                  |     __asm ("stmdaeq r5, {r2, r3, r6, r7, sb, sl, fp, sp, lr, pc}");
    0x0804ba60 stmdaeq r5, {r2, r3, r6, r7, sb, sl, fp, sp, lr, pc}                  |     __asm ("stmdaeq r5, {r2, r3, r6, r7, sb, sl, fp, sp, lr, pc}");
    0x0804ba64 movw r2, 0x1001                                                       |     r2 = 0x1001;
    0x0804ba68 stmdaeq r4, {r2, r3, r7, r8, sl, fp, pc}                              |     __asm ("stmdaeq r4, {r2, r3, r7, r8, sl, fp, pc}");
    0x0804ba6c ldr r3, [r6, 0x1f8]                                                   |     r3 = *((r6 + 0x1f8));
    0x0804ba70 ldr r3, [r3, 0x44]                                                    |     r3 = *((r3 + 0x44));
    0x0804ba74 ldr r3, [r3, 0x64]                                                    |     r3 = *((r3 + 0x64));
    0x0804ba78 b 0x804b024                                                           |     goto label_13;
                                                                                     | label_73:
    0x0804ba7c stmdaeq r6, {r1, r2, r4, r5, r6, sl, ip}                              |     __asm ("stmdaeq r6, {r1, r2, r4, r5, r6, sl, ip}");
    0x0804ba80 stmdaeq r6, {r1, r2, r4, r5, r6, sl, ip}                              |     __asm ("stmdaeq r6, {r1, r2, r4, r5, r6, sl, ip}");
    0x0804ba84 ldrb r2, [r5]                                                         |     r2 = *(r5);
    0x0804ba88 cmp r2, 0                                                             |     
                                                                                     |     if (r2 == 0) {
    0x0804ba8c beq 0x804c318                                                         |         goto label_81;
                                                                                     |     }
                                                                                     | label_28:
    0x0804ba90 ldr r3, [r4, 0x44]                                                    |     r3 = *((r4 + 0x44));
    0x0804ba94 ldr r3, [r3, 0x60]                                                    |     r3 = *((r3 + 0x60));
    0x0804ba98 tst r3, 0x2000                                                        |     
    0x0804ba9c mov r3, r4                                                            |     r3 = r4;
                                                                                     |     if ((r3 & 0x2000) != 0) {
    0x0804baa0 bne 0x804b080                                                         |         goto label_10;
                                                                                     |     }
                                                                                     | label_36:
    0x0804baa4 ldrb r3, [r5]                                                         |     r3 = *(r5);
    0x0804baa8 cmp r3, 0                                                             |     
                                                                                     |     if (r3 != 0) {
    0x0804baac bne 0x804b96c                                                         |         goto label_14;
                                                                                     |     }
    0x0804bab0 mov r2, 9                                                             |     r2 = 9;
    0x0804bab4 movw r1, 0xc34                                                        |     r1 = 0xc34;
    0x0804bab8 stmdaeq r5, {r2, r4, r8, fp, ip, lr, pc}                              |     __asm ("stmdaeq r5, {r2, r4, r8, fp, ip, lr, pc}");
    0x0804babc stmdaeq r5, {r2, r4, r8, fp, ip, lr, pc}                              |     __asm ("stmdaeq r5, {r2, r4, r8, fp, ip, lr, pc}");
    0x0804bac0 mov ip, 1                                                             |     
    0x0804bac4 strb ip, [r5]                                                         |     *(r5) = ip;
    0x0804bac8 stmdaeq r8, {r0, r1, r2, r4, r5, r6, sl, fp, ip, pc}                  |     __asm ("stmdaeq r8, {r0, r1, r2, r4, r5, r6, sl, fp, ip, pc}");
    0x0804bacc ldr r4, [r6, 0x1f8]                                                   |     r4 = *((r6 + 0x1f8));
    0x0804bad0 ldr r2, [r4, 0x44]                                                    |     r2 = *((r4 + 0x44));
    0x0804bad4 ldr r3, [r2, 0x64]                                                    |     r3 = *((r2 + 0x64));
    0x0804bad8 tst r3, 0x400                                                         |     
                                                                                     |     if ((r3 & 0x400) != 0) {
    0x0804badc bne 0x804b970                                                         |         goto label_15;
                                                                                     |     }
                                                                                     | label_79:
    0x0804bae0 ldr r2, [r2, 0x60]                                                    |     r2 = *((r2 + 0x60));
                                                                                     | label_50:
    0x0804bae4 tst r2, 0x400                                                         |     
                                                                                     |     if ((r2 & 0x400) == 0) {
    0x0804bae8 moveq r3, r4                                                          |         r3 = r4;
                                                                                     |         goto label_82;
                                                                                     |     }
                                                                                     |     if ((r2 & 0x400) == 0) {
                                                                                     | label_82:
    0x0804baec beq 0x804b08c                                                         |         goto label_11;
                                                                                     |     }
    0x0804baf0 b 0x804b97c                                                           |     goto label_16;
                                                                                     | label_53:
    0x0804baf4 orr r2, r2, 0x800                                                     |     r2 |= 0x800;
    0x0804baf8 str r2, [r3, 0x4c]                                                    |     *((r3 + 0x4c)) = r2;
    0x0804bafc ldr r3, [r6, 0x1f8]                                                   |     r3 = *((r6 + 0x1f8));
    0x0804bb00 b 0x804b168                                                           |     goto label_9;
                                                                                     | label_56:
    0x0804bb04 mov r0, r6                                                            |     r0 = r6;
    0x0804bb08 stmdaeq r5, {r2, r3, r4, r5, r7, r8, sb, sl, fp, sp, lr, pc}          |     __asm ("stmdaeq r5, {r2, r3, r4, r5, r7, r8, sb, sl, fp, sp, lr, pc}");
    0x0804bb0c stmdaeq r5, {r2, r3, r4, r5, r7, r8, sb, sl, fp, sp, lr, pc}          |     __asm ("stmdaeq r5, {r2, r3, r4, r5, r7, r8, sb, sl, fp, sp, lr, pc}");
    0x0804bb10 stmdaeq r5, {r2, r3, r5, r6, r7, r8, fp, ip, lr, pc}                  |     __asm ("stmdaeq r5, {r2, r3, r5, r6, r7, r8, fp, ip, lr, pc}");
    0x0804bb14 stmdaeq r5, {r2, r3, r5, r6, r7, r8, fp, ip, lr, pc}                  |     __asm ("stmdaeq r5, {r2, r3, r5, r6, r7, r8, fp, ip, lr, pc}");
    0x0804bb18 stmdaeq r4, {r4, r7, r8, sb, fp, sp, lr}                              |     __asm ("stmdaeq r4, {r4, r7, r8, sb, fp, sp, lr}");
    0x0804bb1c b 0x804b668                                                           |     goto label_4;
                                                                                     | label_74:
    0x0804bb20 udf 0x12                                                              |     __asm ("udf 0x12");
                                                                                     | label_57:
    0x0804bb24 mov r0, r6                                                            |     r0 = r6;
    0x0804bb28 stmdaeq r5, {r3, r4, r6, r7, r8, sb, sl, fp, sp, lr, pc}              |     __asm ("stmdaeq r5, {r3, r4, r6, r7, r8, sb, sl, fp, sp, lr, pc}");
    0x0804bb2c stmdaeq r5, {r3, r4, r6, r7, r8, sb, sl, fp, sp, lr, pc}              |     __asm ("stmdaeq r5, {r3, r4, r6, r7, r8, sb, sl, fp, sp, lr, pc}");
    0x0804bb30 stmdaeq r5, {r2, r3, r5, r6, r7, r8, fp, ip, lr, pc}                  |     __asm ("stmdaeq r5, {r2, r3, r5, r6, r7, r8, fp, ip, lr, pc}");
    0x0804bb34 stmdaeq r5, {r2, r3, r5, r6, r7, r8, fp, ip, lr, pc}                  |     __asm ("stmdaeq r5, {r2, r3, r5, r6, r7, r8, fp, ip, lr, pc}");
    0x0804bb38 stmdaeq r4, {r4, r7, r8, sb, fp, sp, lr}                              |     __asm ("stmdaeq r4, {r4, r7, r8, sb, fp, sp, lr}");
    0x0804bb3c b 0x804b668                                                           |     goto label_4;
                                                                                     | label_48:
    0x0804bb40 mov r0, r6                                                            |     r0 = r6;
    0x0804bb44 stmdaeq r5, {r2, r4, r6, r8, sb, sl, fp, sp, lr, pc}                  |     __asm ("stmdaeq r5, {r2, r4, r6, r8, sb, sl, fp, sp, lr, pc}");
    0x0804bb48 stmdaeq r5, {r2, r4, r6, r8, sb, sl, fp, sp, lr, pc}                  |     __asm ("stmdaeq r5, {r2, r4, r6, r8, sb, sl, fp, sp, lr, pc}");
    0x0804bb4c stmdaeq r5, {r2, r3, r5, r6, r7, r8, fp, ip, lr, pc}                  |     __asm ("stmdaeq r5, {r2, r3, r5, r6, r7, r8, fp, ip, lr, pc}");
    0x0804bb50 stmdaeq r5, {r2, r3, r5, r6, r7, r8, fp, ip, lr, pc}                  |     __asm ("stmdaeq r5, {r2, r3, r5, r6, r7, r8, fp, ip, lr, pc}");
    0x0804bb54 mov r4, 0                                                             |     r4 = 0;
    0x0804bb58 stmdaeq r4, {r4, r7, r8, sb, fp, sp, lr}                              |     __asm ("stmdaeq r4, {r4, r7, r8, sb, fp, sp, lr}");
    0x0804bb5c ldr r3, [sp, 0x18]                                                    |     r3 = var_18h;
    0x0804bb60 ldr r7, [r3, 0x220]                                                   |     r7 = *((r3 + 0x220));
    0x0804bb64 str r4, [r3, 0x220]                                                   |     *((r3 + 0x220)) = r4;
    0x0804bb68 b 0x804b68c                                                           |     goto label_17;
                                                                                     | label_51:
    0x0804bb6c stmdaeq r6, {r1, r2, r4, r5, r6, sl, ip}                              |     __asm ("stmdaeq r6, {r1, r2, r4, r5, r6, sl, ip}");
    0x0804bb70 stmdaeq r6, {r1, r2, r4, r5, r6, sl, ip}                              |     __asm ("stmdaeq r6, {r1, r2, r4, r5, r6, sl, ip}");
    0x0804bb74 ldrb r3, [ip]                                                         |     r3 = *(ip);
    0x0804bb78 cmp r3, 0                                                             |     
                                                                                     |     if (r3 == 0) {
    0x0804bb7c beq 0x804c3b4                                                         |         goto label_83;
                                                                                     |     }
                                                                                     | label_31:
    0x0804bb80 mov r3, r4                                                            |     r3 = r4;
    0x0804bb84 b 0x804b140                                                           |     goto label_18;
                                                                                     | label_44:
    0x0804bb88 mov r4, r1                                                            |     r4 = r1;
    0x0804bb8c mov r1, sl                                                            |     r1 = sl;
    0x0804bb90 stmdaeq r8, {r0, r1, r2, r3, r6, sl, fp, ip, pc}                      |     __asm ("stmdaeq r8, {r0, r1, r2, r3, r6, sl, fp, ip, pc}");
    0x0804bb94 mov fp, r1                                                            |     
    0x0804bb98 strd r2, r3, [sp, 0x68]                                               |     __asm ("strd r2, r3, [var_6ch]");
    0x0804bb9c b 0x804afb8                                                           |     goto label_5;
                                                                                     | label_77:
    0x0804bba0 cmp r3, 0x8f                                                          |     
                                                                                     |     if (r3 < 0x8f) {
    0x0804bba4 bls 0x804bc38                                                         |         goto label_84;
                                                                                     |     }
    0x0804bba8 add ip, r6, 0x210                                                     |     
    0x0804bbac add r2, r6, 0x200                                                     |     r2 = r6 + 0x200;
    0x0804bbb0 mvn r0, 0x80000000                                                    |     r0 = ~0x80000000;
    0x0804bbb4 mov r1, 3                                                             |     r1 = 3;
    0x0804bbb8 mov lr, 1                                                             |     lr = 1;
    0x0804bbbc strd r0, r1, [ip, -8]                                                 |     __asm ("strd r0, r1, [ip, -8]");
    0x0804bbc0 mov r0, 0x80000000                                                    |     r0 = 0x80000000;
    0x0804bbc4 str lr, [r6, 0x1fc]                                                   |     
    0x0804bbc8 mvn r1, 0                                                             |     r1 = ~0;
    0x0804bbcc strd r0, r1, [r2]                                                     |     __asm ("strd r0, r1, [r2]");
                                                                                     | label_20:
    0x0804bbd0 ldr r0, [sp, 0x18]                                                    |     r0 = var_18h;
    0x0804bbd4 mov r1, 0x20                                                          |     r1 = 0x20;
    0x0804bbd8 ldr r2, [r6, 0x1f8]                                                   |     r2 = *((r6 + 0x1f8));
    0x0804bbdc str r1, [r0, 0x144]                                                   |     *((r0 + 0x144)) = r1;
    0x0804bbe0 ldr r2, [r2, 0x44]                                                    |     r2 = *((r2 + 0x44));
    0x0804bbe4 ldr r2, [r2, 0x64]                                                    |     r2 = *((r2 + 0x64));
    0x0804bbe8 tst r2, 0x40                                                          |     
                                                                                     |     if ((r2 & 0x40) == 0) {
    0x0804bbec beq 0x804b2ac                                                         |         goto label_19;
                                                                                     |     }
    0x0804bbf0 sub r2, r3, 0x80                                                      |     r2 = r3 - 0x80;
    0x0804bbf4 movw r3, 0x15e                                                        |     r3 = 0x15e;
    0x0804bbf8 ldrh r3, [fp, r3]                                                     |     r3 = *((fp + r3));
    0x0804bbfc cmp r2, r3                                                            |     
                                                                                     |     if (r2 <= r3) {
    0x0804bc00 blo 0x804c35c                                                         |         goto label_85;
                                                                                     |     }
    0x0804bc04 cmp r3, 0x20                                                          |     
                                                                                     |     if (r3 < 0x20) {
    0x0804bc08 movhs r1, r3                                                          |         r1 = r3;
                                                                                     |     }
    0x0804bc0c ldr r3, [sp, 0x18]                                                    |     r3 = var_18h;
                                                                                     |     if (r3 >= 0x20) {
    0x0804bc10 movlo r1, 0x20                                                        |         r1 = 0x20;
                                                                                     |     }
    0x0804bc14 str r1, [r3, 0x144]                                                   |     *((r3 + 0x144)) = r1;
    0x0804bc18 add r3, fp, 0x15c                                                     |     r3 += arg_15ch;
    0x0804bc1c ldrh r3, [r3]                                                         |     r3 = *(r3);
    0x0804bc20 cmp r2, r3                                                            |     
                                                                                     |     if (r2 <= r3) {
    0x0804bc24 blo 0x804c398                                                         |         goto label_86;
                                                                                     |     }
    0x0804bc28 cmp r3, r1                                                            |     
                                                                                     |     if (r3 <= r1) {
    0x0804bc2c ldrhi r2, [sp, 0x18]                                                  |         r2 = var_18h;
                                                                                     |     }
                                                                                     |     if (r3 <= r1) {
    0x0804bc30 strhi r3, [r2, 0x144]                                                 |         *((r2 + 0x144)) = r3;
                                                                                     |     }
    0x0804bc34 b 0x804b2ac                                                           |     goto label_19;
                                                                                     | label_84:
    0x0804bc38 add ip, r6, 0x210                                                     |     
    0x0804bc3c add r2, r6, 0x200                                                     |     r2 = r6 + 0x200;
    0x0804bc40 mvn r0, 0x80000000                                                    |     r0 = ~0x80000000;
    0x0804bc44 mov r1, 0                                                             |     r1 = 0;
    0x0804bc48 mov lr, 0xca00                                                        |     
    0x0804bc4c movt lr, 0x3b9a                                                       |     lr = 0x3b9aca00;
    0x0804bc50 strd r0, r1, [ip, -8]                                                 |     __asm ("strd r0, r1, [ip, -8]");
    0x0804bc54 cmp r3, 0x80                                                          |     
    0x0804bc58 str lr, [r6, 0x1fc]                                                   |     
    0x0804bc5c mov r0, 0x80000000                                                    |     r0 = 0x80000000;
    0x0804bc60 mvn r1, 0                                                             |     r1 = ~0;
    0x0804bc64 strd r0, r1, [r2]                                                     |     __asm ("strd r0, r1, [r2]");
                                                                                     |     if (r3 != 0x80) {
    0x0804bc68 bne 0x804bbd0                                                         |         goto label_20;
                                                                                     |     }
    0x0804bc6c b 0x804b2ac                                                           |     goto label_19;
                                                                                     | label_64:
    0x0804bc70 ldr r3, [r6, 0x1f8]                                                   |     r3 = *((r6 + 0x1f8));
    0x0804bc74 ldr r3, [r3, 0x44]                                                    |     r3 = *((r3 + 0x44));
    0x0804bc78 ldr r2, [r3, 0x60]                                                    |     r2 = *((r3 + 0x60));
    0x0804bc7c bics r2, r2, 0x16                                                     |     __asm ("bics r2, r2, 0x16");
                                                                                     |     if (r3 != 0x80) {
    0x0804bc80 bne 0x804bd74                                                         |         goto label_87;
                                                                                     |     }
    0x0804bc84 ldr r2, [r3, 0x5c]                                                    |     r2 = *((r3 + 0x5c));
    0x0804bc88 tst r2, 4                                                             |     
                                                                                     |     if ((r2 & 4) == 0) {
    0x0804bc8c beq 0x804bd74                                                         |         goto label_87;
                                                                                     |     }
    0x0804bc90 ldr r2, [r6, 0x34]                                                    |     r2 = *((r6 + 0x34));
    0x0804bc94 tst r2, 1                                                             |     
                                                                                     |     if ((r2 & 1) == 0) {
    0x0804bc98 bne 0x804bca8                                                         |         
    0x0804bc9c ldr r3, [r3, 0x64]                                                    |         r3 = *((r3 + 0x64));
    0x0804bca0 cmp r3, 7                                                             |         
                                                                                     |         if (r3 > 7) {
    0x0804bca4 bhi 0x804bd74                                                         |             goto label_87;
                                                                                     |         }
                                                                                     |     }
    0x0804bca8 mov r0, r6                                                            |     r0 = r6;
    0x0804bcac stmdaeq r5, {sb, ip, sp, lr, pc}                                      |     __asm ("stmdaeq r5, {sb, ip, sp, lr, pc}");
    0x0804bcb0 stmdaeq r5, {sb, ip, sp, lr, pc}                                      |     __asm ("stmdaeq r5, {sb, ip, sp, lr, pc}");
    0x0804bcb4 stmdaeq r5, {r2, r5, r7, r8, sl, fp, ip, lr, pc}                      |     __asm ("stmdaeq r5, {r2, r5, r7, r8, sl, fp, ip, lr, pc}");
    0x0804bcb8 stmdaeq r5, {r2, r5, r7, r8, sl, fp, ip, lr, pc}                      |     __asm ("stmdaeq r5, {r2, r5, r7, r8, sl, fp, ip, lr, pc}");
    0x0804bcbc stmdaeq r4, {r4, r7, r8, sb, fp, sp, lr}                              |     __asm ("stmdaeq r4, {r4, r7, r8, sb, fp, sp, lr}");
    0x0804bcc0 b 0x804b39c                                                           |     goto label_21;
                                                                                     | label_60:
    0x0804bcc4 stmdaeq r6, {r1, r2, r4, r5, r6, sl, ip}                              |     __asm ("stmdaeq r6, {r1, r2, r4, r5, r6, sl, ip}");
    0x0804bcc8 stmdaeq r6, {r1, r2, r4, r5, r6, sl, ip}                              |     __asm ("stmdaeq r6, {r1, r2, r4, r5, r6, sl, ip}");
    0x0804bccc ldrb r0, [r1, 3]                                                      |     r0 = *((r1 + 3));
    0x0804bcd0 cmp r0, 0                                                             |     
                                                                                     |     if (r0 == 0) {
    0x0804bcd4 beq 0x804dfac                                                         |         goto label_88;
                                                                                     |     }
                                                                                     | label_37:
    0x0804bcd8 bic r3, r3, 0x400000                                                  |     r3 = BIT_MASK (r3, 0x400000);
    0x0804bcdc str r3, [r2, 0x4c]                                                    |     *((r2 + 0x4c)) = r3;
    0x0804bce0 ldr r2, [r6, 0x1f8]                                                   |     r2 = *((r6 + 0x1f8));
    0x0804bce4 ldr r3, [r2, 0x50]                                                    |     r3 = *((r2 + 0x50));
    0x0804bce8 bic r3, r3, 0x10                                                      |     r3 = BIT_MASK (r3, 0x10);
    0x0804bcec str r3, [r2, 0x50]                                                    |     *((r2 + 0x50)) = r3;
    0x0804bcf0 ldr r2, [r6, 0x1f8]                                                   |     r2 = *((r6 + 0x1f8));
    0x0804bcf4 ldr r3, [r2, 0x50]                                                    |     r3 = *((r2 + 0x50));
    0x0804bcf8 tst r3, 1                                                             |     
                                                                                     |     if ((r3 & 1) != 0) {
    0x0804bcfc bne 0x804c414                                                         |         goto label_89;
                                                                                     |     }
    0x0804bd00 ldr r3, [r2, 0x44]                                                    |     r3 = *((r2 + 0x44));
    0x0804bd04 ldr r3, [r3, 0x60]                                                    |     r3 = *((r3 + 0x60));
    0x0804bd08 tst r3, 0x10000                                                       |     
                                                                                     |     if ((r3 & 0x10000) != 0) {
    0x0804bd0c bne 0x804c378                                                         |         goto label_90;
                                                                                     |     }
                                                                                     | label_29:
    0x0804bd10 ldr r3, [r2, 0x4c]                                                    |     r3 = *((r2 + 0x4c));
    0x0804bd14 tst r3, 0x8000000                                                     |     
    0x0804bd18 bicne r3, r3, 0x8000000                                               |     __asm ("bicne r3, r3, 0x8000000");
                                                                                     |     if ((r3 & loc.imp.fs_overflowgid) == 0) {
    0x0804bd1c strne r3, [r2, 0x4c]                                                  |         *((r2 + 0x4c)) = r3;
                                                                                     |     }
                                                                                     |     if ((r3 & loc.imp.fs_overflowgid) == 0) {
    0x0804bd20 ldrne r2, [r6, 0x1f8]                                                 |         r2 = *((r6 + 0x1f8));
                                                                                     |     }
                                                                                     |     if ((r3 & loc.imp.fs_overflowgid) == 0) {
    0x0804bd24 ldrne r3, [r2, 0x4c]                                                  |         r3 = *((r2 + 0x4c));
                                                                                     |     }
    0x0804bd28 b 0x804b320                                                           |     goto label_22;
                                                                                     | label_63:
    0x0804bd2c ldr r2, [r6, 0x1f8]                                                   |     r2 = *((r6 + 0x1f8));
    0x0804bd30 ldr r3, [r2, 0x50]                                                    |     r3 = *((r2 + 0x50));
    0x0804bd34 orr r3, r3, 4                                                         |     r3 |= 4;
    0x0804bd38 str r3, [r2, 0x50]                                                    |     *((r2 + 0x50)) = r3;
    0x0804bd3c ldr r3, [r6, 0x1f8]                                                   |     r3 = *((r6 + 0x1f8));
    0x0804bd40 ldr r3, [r3, 0x44]                                                    |     r3 = *((r3 + 0x44));
    0x0804bd44 ldr r3, [r3, 0x60]                                                    |     r3 = *((r3 + 0x60));
    0x0804bd48 tst r3, 0x80                                                          |     
                                                                                     |     if ((r3 & 0x80) != 0) {
    0x0804bd4c bne 0x804c430                                                         |         goto label_91;
                                                                                     |     }
    0x0804bd50 tst r3, 0x400                                                         |     
                                                                                     |     if ((r3 & 0x400) == 0) {
    0x0804bd54 beq 0x804b38c                                                         |         goto label_23;
                                                                                     |     }
    0x0804bd58 mov r0, r6                                                            |     r0 = r6;
    0x0804bd5c stmdaeq r5, {r2, r4, r6, r7, r8, ip, sp, lr, pc}                      |     __asm ("stmdaeq r5, {r2, r4, r6, r7, r8, ip, sp, lr, pc}");
    0x0804bd60 stmdaeq r5, {r2, r4, r6, r7, r8, ip, sp, lr, pc}                      |     __asm ("stmdaeq r5, {r2, r4, r6, r7, r8, ip, sp, lr, pc}");
    0x0804bd64 stmdaeq r5, {r2, r3, r5, r6, r7, r8, fp, ip, lr, pc}                  |     __asm ("stmdaeq r5, {r2, r3, r5, r6, r7, r8, fp, ip, lr, pc}");
    0x0804bd68 stmdaeq r5, {r2, r3, r5, r6, r7, r8, fp, ip, lr, pc}                  |     __asm ("stmdaeq r5, {r2, r3, r5, r6, r7, r8, fp, ip, lr, pc}");
    0x0804bd6c stmdaeq r4, {r4, r7, r8, sb, fp, sp, lr}                              |     __asm ("stmdaeq r4, {r4, r7, r8, sb, fp, sp, lr}");
    0x0804bd70 b 0x804b668                                                           |     goto label_4;
                                                                                     | label_87:
    0x0804bd74 ldr r3, [sp, 0x20]                                                    |     r3 = var_20h;
    0x0804bd78 cmp r3, 0                                                             |     
                                                                                     |     if (r3 == 0) {
    0x0804bd7c beq 0x804bd98                                                         |         goto label_92;
                                                                                     |     }
    0x0804bd80 ldr r1, [r6, 0x34]                                                    |     r1 = *((r6 + 0x34));
    0x0804bd84 mov r0, r6                                                            |     r0 = r6;
    0x0804bd88 and r1, r1, 1                                                         |     r1 &= 1;
    0x0804bd8c bl 0x804898c                                                          |     r0 = ext4_feature_set_ok ();
    0x0804bd90 cmp r0, 0                                                             |     
                                                                                     |     if (r0 != 0) {
    0x0804bd94 bne 0x804b668                                                         |         goto label_4;
                                                                                     |     }
                                                                                     | label_92:
    0x0804bd98 mov r0, r6                                                            |     r0 = r6;
    0x0804bd9c stmdaeq r5, {r2, r4, r5, sb, ip, sp, lr, pc}                          |     __asm ("stmdaeq r5, {r2, r4, r5, sb, ip, sp, lr, pc}");
    0x0804bda0 stmdaeq r5, {r2, r4, r5, sb, ip, sp, lr, pc}                          |     __asm ("stmdaeq r5, {r2, r4, r5, sb, ip, sp, lr, pc}");
    0x0804bda4 stmdaeq r5, {r2, r3, r5, r6, r7, r8, fp, ip, lr, pc}                  |     __asm ("stmdaeq r5, {r2, r3, r5, r6, r7, r8, fp, ip, lr, pc}");
    0x0804bda8 stmdaeq r5, {r2, r3, r5, r6, r7, r8, fp, ip, lr, pc}                  |     __asm ("stmdaeq r5, {r2, r3, r5, r6, r7, r8, fp, ip, lr, pc}");
    0x0804bdac stmdaeq r4, {r4, r7, r8, sb, fp, sp, lr}                              |     __asm ("stmdaeq r4, {r4, r7, r8, sb, fp, sp, lr}");
    0x0804bdb0 b 0x804b668                                                           |     goto label_4;
                                                                                     | label_80:
    0x0804bdb4 ldr r3, [sp, 0x38]                                                    |     r3 = var_38h;
    0x0804bdb8 mov r0, r6                                                            |     r0 = r6;
    0x0804bdbc stmdaeq r5, {r2, r4, r5, r6, ip, sp, lr, pc}                          |     __asm ("stmdaeq r5, {r2, r4, r5, r6, ip, sp, lr, pc}");
    0x0804bdc0 stmdaeq r5, {r2, r4, r5, r6, ip, sp, lr, pc}                          |     __asm ("stmdaeq r5, {r2, r4, r5, r6, ip, sp, lr, pc}");
    0x0804bdc4 stmdaeq r5, {r3, r4, r6, sb, sl, fp, ip, lr, pc}                      |     __asm ("stmdaeq r5, {r3, r4, r6, sb, sl, fp, ip, lr, pc}");
    0x0804bdc8 stmdaeq r5, {r3, r4, r6, sb, sl, fp, ip, lr, pc}                      |     __asm ("stmdaeq r5, {r3, r4, r6, sb, sl, fp, ip, lr, pc}");
    0x0804bdcc stmdaeq r4, {r4, r7, r8, sb, fp, sp, lr}                              |     __asm ("stmdaeq r4, {r4, r7, r8, sb, fp, sp, lr}");
    0x0804bdd0 b 0x804ba28                                                           |     goto label_24;
                                                                                     | label_70:
    0x0804bdd4 ldr r2, [sp, 0x18]                                                    |     r2 = var_18h;
    0x0804bdd8 mov r3, 0x20                                                          |     r3 = 0x20;
    0x0804bddc str r3, [r2]                                                          |     *(r2) = r3;
                                                                                     | label_71:
    0x0804bde0 ldr r5, [sp, 0x18]                                                    |     r5 = var_18h;
    0x0804bde4 ldr r3, [fp, 0x20]                                                    |     r3 = *(arg_20h);
    0x0804bde8 ldr r0, [sp, 0x30]                                                    |     r0 = var_30h;
    0x0804bdec str r3, [r5, 8]                                                       |     *((r5 + 8)) = r3;
    0x0804bdf0 ldr r8, [fp, 0x28]                                                    |     r8 = *(arg_28h);
    0x0804bdf4 str r8, [r5, 0x10]                                                    |     *((r5 + 0x10)) = r8;
    0x0804bdf8 ldr r1, [r4, 0x84]                                                    |     r1 = *((r4 + 0x84));
    0x0804bdfc stmdaeq r8, {r0, r1, r2, r3, r4, r5, r6, r7, sl, fp, ip, pc}          |     __asm ("stmdaeq r8, {r0, r1, r2, r3, r4, r5, r6, r7, sl, fp, ip, pc}");
    0x0804be00 cmp r0, 0                                                             |     
    0x0804be04 str r0, [r5, 4]                                                       |     *((r5 + 4)) = r0;
                                                                                     |     if (r0 == 0) {
    0x0804be08 beq 0x804b7a0                                                         |         goto label_25;
                                                                                     |     }
    0x0804be0c cmp r8, r0                                                            |     
                                                                                     |     if (r8 <= r0) {
    0x0804be10 blo 0x804c46c                                                         |         goto label_93;
                                                                                     |     }
    0x0804be14 ldr r3, [sp, 0x30]                                                    |     r3 = var_30h;
    0x0804be18 lsl r3, r3, 3                                                         |     r3 <<= 3;
    0x0804be1c str r3, [sp, 0x34]                                                    |     var_34h = r3;
    0x0804be20 cmp r8, r3                                                            |     
                                                                                     |     if (r8 > r3) {
    0x0804be24 bhi 0x804c46c                                                         |         goto label_93;
                                                                                     |     }
                                                                                     | label_81:
    0x0804c318 mov r2, 9                                                             |     r2 = 9;
    0x0804c31c movw r1, 0xc34                                                        |     r1 = 0xc34;
    0x0804c320 stmdaeq r5, {r2, r4, r8, fp, ip, lr, pc}                              |     __asm ("stmdaeq r5, {r2, r4, r8, fp, ip, lr, pc}");
    0x0804c324 stmdaeq r5, {r2, r4, r8, fp, ip, lr, pc}                              |     __asm ("stmdaeq r5, {r2, r4, r8, fp, ip, lr, pc}");
    0x0804c328 mov ip, 1                                                             |     
    0x0804c32c strb ip, [r5]                                                         |     *(r5) = ip;
    0x0804c330 stmdaeq r8, {r0, r1, r2, r4, r5, r6, sl, fp, ip, pc}                  |     __asm ("stmdaeq r8, {r0, r1, r2, r4, r5, r6, sl, fp, ip, pc}");
    0x0804c334 ldr r4, [r6, 0x1f8]                                                   |     r4 = *((r6 + 0x1f8));
    0x0804c338 mov r3, r4                                                            |     r3 = r4;
    0x0804c33c ldr r2, [r4, 0x44]                                                    |     r2 = *((r4 + 0x44));
    0x0804c340 ldr r1, [r2, 0x64]                                                    |     r1 = *((r2 + 0x64));
    0x0804c344 tst r1, 0x400                                                         |     
                                                                                     |     if ((r1 & 0x400) == 0) {
    0x0804c348 beq 0x804b074                                                         |         goto label_26;
                                                                                     |     }
    0x0804c34c ldr r3, [r4, 0x220]                                                   |     r3 = *((r4 + 0x220));
    0x0804c350 cmp r3, 0                                                             |     
                                                                                     |     if (r3 != 0) {
    0x0804c354 bne 0x804b7ec                                                         |         goto label_27;
                                                                                     |     }
    0x0804c358 b 0x804ba90                                                           |     goto label_28;
                                                                                     | label_85:
    0x0804c35c mov r0, r6                                                            |     r0 = r6;
    0x0804c360 stmdaeq r5, {r2, r3, r4, r5, ip, sp, lr, pc}                          |     __asm ("stmdaeq r5, {r2, r3, r4, r5, ip, sp, lr, pc}");
    0x0804c364 stmdaeq r5, {r2, r3, r4, r5, ip, sp, lr, pc}                          |     __asm ("stmdaeq r5, {r2, r3, r4, r5, ip, sp, lr, pc}");
    0x0804c368 stmdaeq r5, {r2, r3, r5, r6, r7, r8, fp, ip, lr, pc}                  |     __asm ("stmdaeq r5, {r2, r3, r5, r6, r7, r8, fp, ip, lr, pc}");
    0x0804c36c stmdaeq r5, {r2, r3, r5, r6, r7, r8, fp, ip, lr, pc}                  |     __asm ("stmdaeq r5, {r2, r3, r5, r6, r7, r8, fp, ip, lr, pc}");
    0x0804c370 stmdaeq r4, {r4, r7, r8, sb, fp, sp, lr}                              |     __asm ("stmdaeq r4, {r4, r7, r8, sb, fp, sp, lr}");
    0x0804c374 b 0x804b668                                                           |     goto label_4;
                                                                                     | label_90:
    0x0804c378 mov r0, r6                                                            |     r0 = r6;
    0x0804c37c stmdaeq r5, {r5, r8, ip, sp, lr, pc}                                  |     __asm ("stmdaeq r5, {r5, r8, ip, sp, lr, pc}");
    0x0804c380 stmdaeq r5, {r5, r8, ip, sp, lr, pc}                                  |     __asm ("stmdaeq r5, {r5, r8, ip, sp, lr, pc}");
    0x0804c384 stmdaeq r5, {r3, r4, r6, sb, sl, fp, ip, lr, pc}                      |     __asm ("stmdaeq r5, {r3, r4, r6, sb, sl, fp, ip, lr, pc}");
    0x0804c388 stmdaeq r5, {r3, r4, r6, sb, sl, fp, ip, lr, pc}                      |     __asm ("stmdaeq r5, {r3, r4, r6, sb, sl, fp, ip, lr, pc}");
    0x0804c38c stmdaeq r4, {r4, r7, r8, sb, fp, sp, lr}                              |     __asm ("stmdaeq r4, {r4, r7, r8, sb, fp, sp, lr}");
    0x0804c390 ldr r2, [r6, 0x1f8]                                                   |     r2 = *((r6 + 0x1f8));
    0x0804c394 b 0x804bd10                                                           |     goto label_29;
                                                                                     | label_86:
    0x0804c398 mov r0, r6                                                            |     r0 = r6;
    0x0804c39c stmdaeq r5, {r3, r4, r6, ip, sp, lr, pc}                              |     __asm ("stmdaeq r5, {r3, r4, r6, ip, sp, lr, pc}");
    0x0804c3a0 stmdaeq r5, {r3, r4, r6, ip, sp, lr, pc}                              |     __asm ("stmdaeq r5, {r3, r4, r6, ip, sp, lr, pc}");
    0x0804c3a4 stmdaeq r5, {r2, r3, r5, r6, r7, r8, fp, ip, lr, pc}                  |     __asm ("stmdaeq r5, {r2, r3, r5, r6, r7, r8, fp, ip, lr, pc}");
    0x0804c3a8 stmdaeq r5, {r2, r3, r5, r6, r7, r8, fp, ip, lr, pc}                  |     __asm ("stmdaeq r5, {r2, r3, r5, r6, r7, r8, fp, ip, lr, pc}");
    0x0804c3ac stmdaeq r4, {r4, r7, r8, sb, fp, sp, lr}                              |     __asm ("stmdaeq r4, {r4, r7, r8, sb, fp, sp, lr}");
    0x0804c3b0 b 0x804b668                                                           |     goto label_4;
                                                                                     | label_83:
    0x0804c3b4 mov r2, 9                                                             |     r2 = 9;
    0x0804c3b8 movw r1, 0xc34                                                        |     r1 = 0xc34;
    0x0804c3bc stmdaeq r5, {r2, r4, r8, fp, ip, lr, pc}                              |     __asm ("stmdaeq r5, {r2, r4, r8, fp, ip, lr, pc}");
    0x0804c3c0 stmdaeq r5, {r2, r4, r8, fp, ip, lr, pc}                              |     __asm ("stmdaeq r5, {r2, r4, r8, fp, ip, lr, pc}");
    0x0804c3c4 mov lr, 1                                                             |     lr = 1;
    0x0804c3c8 strb lr, [ip]                                                         |     
    0x0804c3cc stmdaeq r8, {r0, r1, r2, r4, r5, r6, sl, fp, ip, pc}                  |     __asm ("stmdaeq r8, {r0, r1, r2, r4, r5, r6, sl, fp, ip, pc}");
    0x0804c3d0 ldr r4, [r6, 0x1f8]                                                   |     r4 = *((r6 + 0x1f8));
    0x0804c3d4 mov r3, r4                                                            |     r3 = r4;
    0x0804c3d8 ldr r2, [r4, 0x44]                                                    |     r2 = *((r4 + 0x44));
    0x0804c3dc ldr r2, [r2, 0x64]                                                    |     r2 = *((r2 + 0x64));
    0x0804c3e0 tst r2, 0x400                                                         |     
                                                                                     |     if ((r2 & 0x400) == 0) {
    0x0804c3e4 beq 0x804b140                                                         |         goto label_18;
                                                                                     |     }
    0x0804c3e8 ldr r3, [r4, 0x220]                                                   |     r3 = *((r4 + 0x220));
    0x0804c3ec cmp r3, 0                                                             |     
                                                                                     |     if (r3 != 0) {
    0x0804c3f0 bne 0x804b130                                                         |         goto label_30;
                                                                                     |     }
    0x0804c3f4 b 0x804bb80                                                           |     goto label_31;
                                                                                     | label_65:
    0x0804c3f8 mov r0, r6                                                            |     r0 = r6;
    0x0804c3fc stmdaeq r5, {r2, r3, r5, r6, sb, ip, sp, lr, pc}                      |     __asm ("stmdaeq r5, {r2, r3, r5, r6, sb, ip, sp, lr, pc}");
    0x0804c400 stmdaeq r5, {r2, r3, r5, r6, sb, ip, sp, lr, pc}                      |     __asm ("stmdaeq r5, {r2, r3, r5, r6, sb, ip, sp, lr, pc}");
    0x0804c404 stmdaeq r5, {r2, r3, r5, r6, r7, r8, fp, ip, lr, pc}                  |     __asm ("stmdaeq r5, {r2, r3, r5, r6, r7, r8, fp, ip, lr, pc}");
    0x0804c408 stmdaeq r5, {r2, r3, r5, r6, r7, r8, fp, ip, lr, pc}                  |     __asm ("stmdaeq r5, {r2, r3, r5, r6, r7, r8, fp, ip, lr, pc}");
    0x0804c40c stmdaeq r4, {r4, r7, r8, sb, fp, sp, lr}                              |     __asm ("stmdaeq r4, {r4, r7, r8, sb, fp, sp, lr}");
    0x0804c410 b 0x804b668                                                           |     goto label_4;
                                                                                     | label_89:
    0x0804c414 mov r0, r6                                                            |     r0 = r6;
    0x0804c418 stmdaeq r5, {r2, r3, r4, r5, sl, fp, sp, lr, pc}                      |     __asm ("stmdaeq r5, {r2, r3, r4, r5, sl, fp, sp, lr, pc}");
    0x0804c41c stmdaeq r5, {r2, r3, r4, r5, sl, fp, sp, lr, pc}                      |     __asm ("stmdaeq r5, {r2, r3, r4, r5, sl, fp, sp, lr, pc}");
    0x0804c420 stmdaeq r5, {r2, r3, r5, r6, r7, r8, fp, ip, lr, pc}                  |     __asm ("stmdaeq r5, {r2, r3, r5, r6, r7, r8, fp, ip, lr, pc}");
    0x0804c424 stmdaeq r5, {r2, r3, r5, r6, r7, r8, fp, ip, lr, pc}                  |     __asm ("stmdaeq r5, {r2, r3, r5, r6, r7, r8, fp, ip, lr, pc}");
    0x0804c428 stmdaeq r4, {r4, r7, r8, sb, fp, sp, lr}                              |     __asm ("stmdaeq r4, {r4, r7, r8, sb, fp, sp, lr}");
    0x0804c42c b 0x804b668                                                           |     goto label_4;
                                                                                     | label_91:
    0x0804c430 mov r0, r6                                                            |     r0 = r6;
    0x0804c434 stmdaeq r5, {r3, r5, r7, r8, ip, sp, lr, pc}                          |     __asm ("stmdaeq r5, {r3, r5, r7, r8, ip, sp, lr, pc}");
    0x0804c438 stmdaeq r5, {r3, r5, r7, r8, ip, sp, lr, pc}                          |     __asm ("stmdaeq r5, {r3, r5, r7, r8, ip, sp, lr, pc}");
    0x0804c43c stmdaeq r5, {r2, r3, r5, r6, r7, r8, fp, ip, lr, pc}                  |     __asm ("stmdaeq r5, {r2, r3, r5, r6, r7, r8, fp, ip, lr, pc}");
    0x0804c440 stmdaeq r5, {r2, r3, r5, r6, r7, r8, fp, ip, lr, pc}                  |     __asm ("stmdaeq r5, {r2, r3, r5, r6, r7, r8, fp, ip, lr, pc}");
    0x0804c444 stmdaeq r4, {r4, r7, r8, sb, fp, sp, lr}                              |     __asm ("stmdaeq r4, {r4, r7, r8, sb, fp, sp, lr}");
    0x0804c448 b 0x804b668                                                           |     goto label_4;
                                                                                     | label_93:
    0x0804c46c mov r3, r8                                                            |     r3 = r8;
    0x0804c470 mov r0, r6                                                            |     r0 = r6;
    0x0804c474 stmdaeq r5, {r2, r4, r5, r8, sb, ip, sp, lr, pc}                      |     __asm ("stmdaeq r5, {r2, r4, r5, r8, sb, ip, sp, lr, pc}");
    0x0804c478 stmdaeq r5, {r2, r4, r5, r8, sb, ip, sp, lr, pc}                      |     __asm ("stmdaeq r5, {r2, r4, r5, r8, sb, ip, sp, lr, pc}");
    0x0804c47c stmdaeq r5, {r2, r3, r5, r6, r7, r8, fp, ip, lr, pc}                  |     __asm ("stmdaeq r5, {r2, r3, r5, r6, r7, r8, fp, ip, lr, pc}");
    0x0804c480 stmdaeq r5, {r2, r3, r5, r6, r7, r8, fp, ip, lr, pc}                  |     __asm ("stmdaeq r5, {r2, r3, r5, r6, r7, r8, fp, ip, lr, pc}");
    0x0804c484 stmdaeq r4, {r4, r7, r8, sb, fp, sp, lr}                              |     __asm ("stmdaeq r4, {r4, r7, r8, sb, fp, sp, lr}");
    0x0804c488 b 0x804b668                                                           |     goto label_4;
                                                                                     | label_68:
    0x0804c48c mvn r7, 0x15                                                          |     r7 = ~0x15;
    0x0804c490 ldr r3, [sp, 0x30]                                                    |     r3 = var_30h;
    0x0804c494 mov r0, r6                                                            |     r0 = r6;
    0x0804c498 stmdaeq r5, {r6, r7, sb, ip, sp, lr, pc}                              |     __asm ("stmdaeq r5, {r6, r7, sb, ip, sp, lr, pc}");
    0x0804c49c stmdaeq r5, {r6, r7, sb, ip, sp, lr, pc}                              |     __asm ("stmdaeq r5, {r6, r7, sb, ip, sp, lr, pc}");
    0x0804c4a0 stmdaeq r5, {r2, r3, r5, r6, r7, r8, fp, ip, lr, pc}                  |     __asm ("stmdaeq r5, {r2, r3, r5, r6, r7, r8, fp, ip, lr, pc}");
    0x0804c4a4 stmdaeq r5, {r2, r3, r5, r6, r7, r8, fp, ip, lr, pc}                  |     __asm ("stmdaeq r5, {r2, r3, r5, r6, r7, r8, fp, ip, lr, pc}");
    0x0804c4a8 stmdaeq r4, {r4, r7, r8, sb, fp, sp, lr}                              |     __asm ("stmdaeq r4, {r4, r7, r8, sb, fp, sp, lr}");
    0x0804c4ac ldr r3, [sp, 0x18]                                                    |     r3 = var_18h;
    0x0804c4b0 ldr r8, [r3, 0x220]                                                   |     r8 = *((r3 + 0x220));
    0x0804c4b4 cmp r8, 0                                                             |     
                                                                                     |     if (r8 == 0) {
    0x0804c4b8 movne r4, 0                                                           |         r4 = 0;
                                                                                     |     }
                                                                                     |     if (r8 != 0) {
    0x0804c4bc movne sl, r4                                                          |         sl = r4;
                                                                                     |         goto label_94;
                                                                                     |     }
                                                                                     |     if (r8 != 0) {
                                                                                     | label_94:
    0x0804c4c0 bne 0x804b680                                                         |         goto label_32;
                                                                                     |     }
    0x0804c4c4 ldr r4, [sp, 0x18]                                                    |     r4 = var_18h;
    0x0804c4c8 ldr r0, [r4, 0x2e8]                                                   |     r0 = *((r4 + 0x2e8));
    0x0804c4cc stmdaeq r8, {r0, r1, r5, r7, sl, fp, ip, pc}                          |     __asm ("stmdaeq r8, {r0, r1, r5, r7, sl, fp, ip, pc}");
    0x0804c4d0 ldr r0, [r4, 0x140]                                                   |     r0 = *((r4 + 0x140));
    0x0804c4d4 str r8, [r4, 0x2e8]                                                   |     *((r4 + 0x2e8)) = r8;
    0x0804c4d8 cmp r0, 0                                                             |     
                                                                                     |     if (r0 != 0) {
    0x0804c4dc movne r4, r8                                                          |         r4 = r8;
                                                                                     |         goto label_95;
                                                                                     |     }
                                                                                     |     if (r0 != 0) {
                                                                                     | label_95:
    0x0804c4e0 bne 0x804b6c0                                                         |         goto label_33;
                                                                                     |     }
                                                                                     | label_66:
    0x0804c50c mov r0, r6                                                            |     r0 = r6;
    0x0804c510 stmdaeq r5, {r5, r7, sb, ip, sp, lr, pc}                              |     __asm ("stmdaeq r5, {r5, r7, sb, ip, sp, lr, pc}");
    0x0804c514 stmdaeq r5, {r5, r7, sb, ip, sp, lr, pc}                              |     __asm ("stmdaeq r5, {r5, r7, sb, ip, sp, lr, pc}");
    0x0804c518 stmdaeq r5, {r2, r3, r5, r6, r7, r8, fp, ip, lr, pc}                  |     __asm ("stmdaeq r5, {r2, r3, r5, r6, r7, r8, fp, ip, lr, pc}");
    0x0804c51c stmdaeq r5, {r2, r3, r5, r6, r7, r8, fp, ip, lr, pc}                  |     __asm ("stmdaeq r5, {r2, r3, r5, r6, r7, r8, fp, ip, lr, pc}");
    0x0804c520 stmdaeq r4, {r4, r7, r8, sb, fp, sp, lr}                              |     __asm ("stmdaeq r4, {r4, r7, r8, sb, fp, sp, lr}");
    0x0804c524 b 0x804b668                                                           |     goto label_4;
                                                                                     | label_40:
    0x0804c598 ldr r0, [sp, 0x18]                                                    |     r0 = var_18h;
    0x0804c59c stmdaeq r8, {r0, r1, r5, r7, sl, fp, ip, pc}                          |     __asm ("stmdaeq r8, {r0, r1, r5, r7, sl, fp, ip, pc}");
    0x0804c5a0 mov r0, sb                                                            |     r0 = sb;
    0x0804c5a4 stmdaeq r8, {r0, r1, r5, r7, sl, fp, ip, pc}                          |     __asm ("stmdaeq r8, {r0, r1, r5, r7, sl, fp, ip, pc}");
    0x0804c5a8 b 0x804b798                                                           |     goto label_34;
                                                                                     | label_69:
    0x0804c65c add r0, sp, 0x68                                                      |     r0 += var_68h;
    0x0804c660 bl 0x8044a68                                                          |     r0 = div64_32 ();
    0x0804c664 mov r5, r0                                                            |     r5 = r0;
    0x0804c668 ldrd r2, r3, [sp, 0x68]                                               |     __asm ("ldrd r2, r3, [var_6ch]");
    0x0804c66c b 0x804b454                                                           |     goto label_35;
                                                                                     | label_78:
    0x0804dfa0 stmdaeq r6, {r1, r2, r4, r5, r6, sl, ip}                              |     __asm ("stmdaeq r6, {r1, r2, r4, r5, r6, sl, ip}");
    0x0804dfa4 stmdaeq r6, {r1, r2, r4, r5, r6, sl, ip}                              |     __asm ("stmdaeq r6, {r1, r2, r4, r5, r6, sl, ip}");
    0x0804dfa8 b 0x804baa4                                                           |     goto label_36;
                                                                                     | label_88:
    0x0804dfac stmdaeq r5, {r5, r7, ip, sp, lr, pc}                                  |     __asm ("stmdaeq r5, {r5, r7, ip, sp, lr, pc}");
    0x0804dfb0 stmdaeq r5, {r5, r7, ip, sp, lr, pc}                                  |     __asm ("stmdaeq r5, {r5, r7, ip, sp, lr, pc}");
    0x0804dfb4 mov r3, 1                                                             |     r3 = 1;
    0x0804dfb8 strb r3, [r1, 3]                                                      |     *((r1 + 3)) = r3;
    0x0804dfbc stmdaeq r8, {r0, r1, r2, r4, r5, r7, sl, fp, ip, pc}                  |     __asm ("stmdaeq r8, {r0, r1, r2, r4, r5, r7, sl, fp, ip, pc}");
    0x0804dfc0 ldr r2, [r6, 0x1f8]                                                   |     r2 = *((r6 + 0x1f8));
    0x0804dfc4 ldr r3, [r2, 0x4c]                                                    |     r3 = *((r2 + 0x4c));
    0x0804dfc8 b 0x804bcd8                                                           |     goto label_37;
                                                                                     | label_72:
    0x0804dfdc mov r1, r4                                                            |     r1 = r4;
    0x0804dfe0 stmdaeq r5, {r2, r3, r5, r6, sb, sl, fp, sp, lr, pc}                  |     __asm ("stmdaeq r5, {r2, r3, r5, r6, sb, sl, fp, sp, lr, pc}");
    0x0804dfe4 stmdaeq r5, {r2, r3, r5, r6, sb, sl, fp, sp, lr, pc}                  |     __asm ("stmdaeq r5, {r2, r3, r5, r6, sb, sl, fp, sp, lr, pc}");
    0x0804dfe8 stmdaeq r8, {r0, r1, r2, r4, r5, r7, sl, fp, ip, pc}                  |     __asm ("stmdaeq r8, {r0, r1, r2, r4, r5, r7, sl, fp, ip, pc}");
    0x0804dfec b 0x804aef4                                                           |     goto label_0;
                                                                                     | }
    ; assembly                                                                       | /* r2dec pseudo code output */
                                                                                     | /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-80367616.squashfs_v4_le_extract/usr/lib/modules/5.10.52-axis9/kernel/fs/ext4/ext4.ko @ 0x8034f70 */
                                                                                     | #include <stdint.h>
                                                                                     |  
                                                                                     | #define BIT_MASK(t,v) ((t)(-((v)!= 0)))&(((t)-1)>>((sizeof(t)*CHAR_BIT)-(v)))
                                                                                     |  
    ; (fcn) sym.ext4_ind_migrate ()                                                  | void ext4_ind_migrate (int32_t arg1) {
                                                                                     |     int32_t var_0h;
                                                                                     |     int32_t var_4h;
                                                                                     |     int32_t var_8h;
                                                                                     |     r0 = arg1;
    0x08034f70 push {r4, r5, r6, r7, r8, sb, sl, lr}                                 |     
    0x08034f74 ldr r3, [r0, 0x1c]                                                    |     r3 = *((r0 + 0x1c));
    0x08034f78 sub sp, sp, 8                                                         |     
    0x08034f7c ldr r5, [r3, 0x1f8]                                                   |     r5 = *((r3 + 0x1f8));
    0x08034f80 ldr sb, [r5, 0x44]                                                    |     sb = *((r5 + 0x44));
    0x08034f84 ldr r3, [sb, 0x60]                                                    |     r3 = *((sb + 0x60));
    0x08034f88 tst r3, 0x40                                                          |     
                                                                                     |     if ((r3 & 0x40) == 0) {
    0x08034f8c beq 0x8035134                                                         |         goto label_5;
                                                                                     |     }
    0x08034f90 ldr r3, [r0, -0x6c]                                                   |     r3 = *((r0 - 0x6c));
    0x08034f94 mov r4, r0                                                            |     r4 = r0;
    0x08034f98 tst r3, 0x80000                                                       |     
                                                                                     |     if ((r3 & 0x80000) == 0) {
    0x08034f9c beq 0x8035134                                                         |         goto label_5;
                                                                                     |     }
    0x08034fa0 ldr r6, [sb, 0x64]                                                    |     r6 = *((sb + 0x64));
    0x08034fa4 ands r6, r6, 0x200                                                    |     r6 &= 0x200;
                                                                                     |     if (r6 != r6) {
    0x08034fa8 bne 0x803513c                                                         |         goto label_6;
                                                                                     |     }
    0x08034fac ldr r3, [r5, 0x4c]                                                    |     r3 = *((r5 + 0x4c));
    0x08034fb0 tst r3, 0x8000000                                                     |     
                                                                                     |     if ((r3 & loc.imp.fs_overflowgid) != 0) {
    0x08034fb4 bne 0x8035120                                                         |         goto label_7;
                                                                                     |     }
                                                                                     | label_2:
    0x08034fb8 add r5, r5, 0x2ec                                                     |     r5 += 0x2ec;
    0x08034fbc mov r0, r5                                                            |     r0 = r5;
    0x08034fc0 stmdaeq r8, {r0, r1, r2, r4, r5, r6, r8, sb, sl, fp, ip, pc}          |     __asm ("stmdaeq r8, {r0, r1, r2, r4, r5, r6, r8, sb, sl, fp, ip, pc}");
    0x08034fc4 ldr r0, [r4, 0x1c]                                                    |     r0 = *((r4 + 0x1c));
    0x08034fc8 mov r1, 0                                                             |     r1 = 0;
    0x08034fcc mov r3, 1                                                             |     r3 = 1;
    0x08034fd0 ldr r2, [r0, 0x1f8]                                                   |     r2 = *((r0 + 0x1f8));
    0x08034fd4 ldr r2, [r2, 0x2c]                                                    |     r2 = *((r2 + 0x2c));
    0x08034fd8 str r1, [sp]                                                          |     *(sp) = r1;
    0x08034fdc movw r1, 0x271                                                        |     r1 = 0x271;
    0x08034fe0 lsl r2, r2, 3                                                         |     r2 <<= 3;
    0x08034fe4 str r2, [sp, 4]                                                       |     var_4h = r2;
    0x08034fe8 mov r2, 8                                                             |     r2 = 8;
    0x08034fec stmdaeq r0, {r2, r3, r7, r8, fp, ip, sp}                              |     __asm ("stmdaeq r0, {r2, r3, r7, r8, fp, ip, sp}");
    0x08034ff0 cmn r0, 0x1000                                                        |     
    0x08034ff4 mov r8, r0                                                            |     r8 = r0;
                                                                                     |     if (r0 <= 0x1000) {
    0x08034ff8 movhi r7, r0                                                          |         r7 = r0;
                                                                                     |     }
                                                                                     |     if (r0 > 0x1000) {
    0x08034ffc bhi 0x80350ec                                                         |         goto label_8;
                                                                                     |     }
    0x08035000 sub sl, r4, 0x20                                                      |     sl = r4 - 0x20;
    0x08035004 mov r0, sl                                                            |     r0 = sl;
    0x08035008 stmdaeq r8, {r0, r1, r2, r6, r8, sl, fp, ip, pc}                      |     __asm ("stmdaeq r8, {r0, r1, r2, r6, r8, sl, fp, ip, pc}");
    0x0803500c mov r0, r4                                                            |     r0 = r4;
    0x08035010 stmdaeq r0, {r2, r3, r5, r6, sl, fp, ip, lr}                          |     __asm ("stmdaeq r0, {r2, r3, r5, r6, sl, fp, ip, lr}");
    0x08035014 subs r7, r0, 0                                                        |     r7 = r0 - 0;
                                                                                     |     if (r7 != r0) {
    0x08035018 bne 0x80350d4                                                         |         goto label_1;
                                                                                     |     }
    0x0803501c ldr r3, [sb, 0x60]                                                    |     r3 = *((sb + 0x60));
    0x08035020 tst r3, 0x80                                                          |     
                                                                                     |     if ((r3 & 0x80) != 0) {
    0x08035024 bne 0x8035100                                                         |         goto label_9;
                                                                                     |     }
                                                                                     | label_0:
    0x08035028 ldrh r3, [r4, -0xba]                                                  |     r3 = *((r4 - 0xba));
    0x0803502c cmp r3, 0                                                             |     
                                                                                     |     if (r3 != 0) {
    0x08035030 bne 0x8035118                                                         |         goto label_10;
                                                                                     |     }
    0x08035034 ldrh r2, [r4, -0xbe]                                                  |     r2 = *((r4 - 0xbe));
    0x08035038 cmp r2, 1                                                             |     
                                                                                     |     if (r2 > 1) {
    0x0803503c bhi 0x8035118                                                         |         goto label_10;
                                                                                     |     }
    0x08035040 cmp r2, 0                                                             |     
                                                                                     |     if (r2 == 0) {
    0x08035044 beq 0x8035128                                                         |         goto label_11;
                                                                                     |     }
    0x08035048 ldr r6, [r4, -0xb4]                                                   |     r6 = *((r4 - 0xb4));
    0x0803504c ldrh r3, [r4, -0xb0]                                                  |     r3 = *((r4 - 0xb0));
    0x08035050 sub r2, r6, 1                                                         |     r2 = r6 - 1;
    0x08035054 add sb, r2, r3                                                        |     sb = r2 + r3;
    0x08035058 cmp sb, 0xb                                                           |     
                                                                                     |     if (sb > 0xb) {
    0x0803505c bhi 0x8035118                                                         |         goto label_10;
                                                                                     |     }
    0x08035060 ldr r7, [r4, -0xac]                                                   |     r7 = *((r4 - 0xac));
                                                                                     | label_3:
    0x08035064 mrs r2, apsr                                                          |     r2 = apsr;
    0x08035068 cpsid i                                                               |     __asm ("cpsid i");
    0x0803506c ldr r3, [r4, -0x6c]                                                   |     r3 = *((r4 - 0x6c));
    0x08035070 bic r3, r3, 0x80000                                                   |     r3 = BIT_MASK (r3, 0x80000);
    0x08035074 str r3, [r4, -0x6c]                                                   |     *((r4 - 0x6c)) = r3;
    0x08035078 msr cpsr_c, r2                                                        |     cpsr_c = r2;
    0x0803507c mov r2, 0x3c                                                          |     r2 = 0x3c;
    0x08035080 sub r0, r4, 0xc0                                                      |     r0 = r4 - 0xc0;
    0x08035084 mov r1, 0                                                             |     r1 = 0;
    0x08035088 stmdaeq r8, {r0, r1, r3, r4, r6, sl, fp, ip, pc}                      |     __asm ("stmdaeq r8, {r0, r1, r3, r4, r6, sl, fp, ip, pc}");
    0x0803508c cmp r6, sb                                                            |     
                                                                                     |     if (r6 > sb) {
    0x08035090 bhi 0x80350bc                                                         |         goto label_12;
                                                                                     |     }
    0x08035094 add r2, sb, 1                                                         |     r2 = sb + 1;
    0x08035098 mov r3, r7                                                            |     r3 = r7;
    0x0803509c add r2, r2, r7                                                        |     r2 += r7;
    0x080350a0 sub r2, r2, r6                                                        |     r2 -= r6;
    0x080350a4 sub r6, r6, 0x80000031                                                |     r6 -= 0x80000031;
    0x080350a8 add r6, r4, r6, lsl 2                                                 |     r6 = r4 + (r6 << 2);
                                                                                     |     do {
    0x080350ac str r3, [r6, 4]!                                                      |         *((r6 += 4)) = r3;
    0x080350b0 add r3, r3, 1                                                         |         r3++;
    0x080350b4 cmp r3, r2                                                            |         
    0x080350b8 bne 0x80350ac                                                         |         
                                                                                     |     } while (r3 != r2);
                                                                                     | label_12:
    0x080350bc ldr r2, [pc, 0x80]                                                    |     r2 = *(0x8035140);
    0x080350c0 mov r1, r4                                                            |     r1 = r4;
    0x080350c4 mov r0, r8                                                            |     r0 = r8;
    0x080350c8 mov r3, 0x294                                                         |     r3 = 0x294;
    0x080350cc stmdaeq r2, {r2, r3, r6, r7, r8, sb, sl, sp}                          |     __asm ("stmdaeq r2, {r2, r3, r6, r7, r8, sb, sl, sp}");
    0x080350d0 mov r7, r0                                                            |     r7 = r0;
                                                                                     | label_1:
    0x080350d4 ldr r0, [pc, 0x68]                                                    |     r0 = *(0x8035140);
    0x080350d8 mov r2, r8                                                            |     r2 = r8;
    0x080350dc mov r1, 0x298                                                         |     r1 = 0x298;
    0x080350e0 stmdaeq r0, {r5, r7, sb, fp, ip, sp}                                  |     __asm ("stmdaeq r0, {r5, r7, sb, fp, ip, sp}");
    0x080350e4 mov r0, sl                                                            |     r0 = sl;
    0x080350e8 stmdaeq r8, {r0, r1, r3, r6, r8, sl, fp, ip, pc}                      |     __asm ("stmdaeq r8, {r0, r1, r3, r6, r8, sl, fp, ip, pc}");
                                                                                     | label_8:
    0x080350ec mov r0, r5                                                            |     r0 = r5;
    0x080350f0 stmdaeq r8, {r0, r1, r3, r4, r5, r6, r8, sb, sl, fp, ip, pc}          |     __asm ("stmdaeq r8, {r0, r1, r3, r4, r5, r6, r8, sb, sl, fp, ip, pc}");
                                                                                     | label_4:
    0x080350f4 mov r0, r7                                                            |     r0 = r7;
    0x080350f8 add sp, sp, 8                                                         |     
    0x080350fc pop {r4, r5, r6, r7, r8, sb, sl, pc}                                  |     
                                                                                     | label_9:
    0x08035100 ldr r2, [sb, 4]                                                       |     r2 = *((sb + 4));
    0x08035104 mvn r1, 0                                                             |     r1 = ~0;
    0x08035108 ldr r3, [sb, 0x150]                                                   |     r3 = *((sb + 0x150));
    0x0803510c cmp r1, r2                                                            |     
    0x08035110 sbcs r3, r7, r3                                                       |     __asm ("sbcs r3, r7, r3");
                                                                                     |     if (r1 >= r2) {
    0x08035114 bhs 0x8035028                                                         |         goto label_0;
                                                                                     |     }
                                                                                     | label_10:
    0x08035118 mvn r7, 0x5e                                                          |     r7 = ~0x5e;
    0x0803511c b 0x80350d4                                                           |     goto label_1;
                                                                                     | label_7:
    0x08035120 stmdaeq r2, {r5, r7, r8, sb}                                          |     __asm ("stmdaeq r2, {r5, r7, r8, sb}");
    0x08035124 b 0x8034fb8                                                           |     goto label_2;
                                                                                     | label_11:
    0x08035128 mov sb, r2                                                            |     sb = r2;
    0x0803512c mov r7, r2                                                            |     r7 = r2;
    0x08035130 b 0x8035064                                                           |     goto label_3;
                                                                                     | label_5:
    0x08035134 mvn r7, 0x15                                                          |     r7 = ~0x15;
    0x08035138 b 0x80350f4                                                           |     goto label_4;
                                                                                     | label_6:
    0x0803513c mvn r7, 0x5e                                                          |     r7 = ~0x5e;
    0x08035140 b 0x80350f4                                                           |     goto label_4;
                                                                                     | }
    ; assembly                                   | /* r2dec pseudo code output */
                                                 | /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-80367616.squashfs_v4_le_extract/usr/lib/modules/5.10.52-axis9/kernel/fs/ext4/ext4.ko @ 0x80038f8 */
                                                 | #include <stdint.h>
                                                 |  
    ; (fcn) sym.ext4_inode_journal_mode ()       | uint32_t ext4_inode_journal_mode (int32_t arg1) {
                                                 |     r0 = arg1;
    0x080038f8 ldr r3, [r0, 0x1c]                |     r3 = *((r0 + 0x1c));
    0x080038fc ldr r2, [r3, 0x1f8]               |     r2 = *((r3 + 0x1f8));
    0x08003900 ldr r3, [r2, 0x118]               |     r3 = *((r2 + 0x118));
    0x08003904 cmp r3, 0                         |     
                                                 |     if (r3 != 0) {
    0x08003908 beq 0x8003964                     |         
    0x0800390c ldrh r3, [r0]                     |         r3 = *(r0);
    0x08003910 and r3, r3, 0xf000                |         r3 &= 0xf000;
    0x08003914 cmp r3, 0x8000                    |         
                                                 |         if (r3 != 0x8000) {
    0x08003918 beq 0x8003924                     |             
    0x0800391c mov r0, 1                         |             r0 = 1;
    0x08003920 bx lr                             |             return r0;
                                                 |         }
    0x08003924 ldr r3, [r0, -0x6c]               |         r3 = *((r0 - 0x6c));
    0x08003928 tst r3, 0x200000                  |         
                                                 |         if ((r3 & 0x200000) != 0) {
    0x0800392c bne 0x800396c                     |             goto label_0;
                                                 |         }
    0x08003930 ldr r2, [r2, 0x4c]                |         r2 = *((r2 + 0x4c));
    0x08003934 and r3, r2, 0xc00                 |         r3 = r2 & 0xc00;
    0x08003938 cmp r3, 0x400                     |         
                                                 |         if (r3 == 0x400) {
    0x0800393c beq 0x800396c                     |             goto label_0;
                                                 |         }
    0x08003940 ldr r1, [r0, -0x6c]               |         r1 = *((r0 - 0x6c));
    0x08003944 tst r1, 0x4000                    |         
                                                 |         if ((r1 & 0x4000) != 0) {
    0x08003948 beq 0x8003954                     |             
    0x0800394c tst r2, 0x8000000                 |             
                                                 |             if ((r2 & loc.imp.fs_overflowgid) == 0) {
    0x08003950 beq 0x800396c                     |                 goto label_0;
                                                 |             }
                                                 |         }
    0x08003954 cmp r3, 0x800                     |         
                                                 |         if (r3 == 0x800) {
    0x08003958 beq 0x8003980                     |             goto label_1;
                                                 |         }
    0x0800395c cmp r3, 0xc00                     |         
                                                 |         if (r3 != 0xc00) {
    0x08003960 bne 0x8003988                     |             goto label_2;
                                                 |         }
                                                 |     }
    0x08003964 mov r0, 4                         |     r0 = 4;
    0x08003968 bx lr                             |     return r0;
                                                 | label_0:
    0x0800396c ldr r3, [r0, 0xc]                 |     r3 = *((r0 + 0xc));
    0x08003970 tst r3, 0x4000                    |     
                                                 |     if ((r3 & 0x4000) != 0) {
    0x08003974 moveq r0, 1                       |         r0 = 1;
                                                 |     }
                                                 |     if ((r3 & 0x4000) == 0) {
    0x08003978 movne r0, 2                       |         r0 = 2;
                                                 |     }
    0x0800397c bx lr                             |     return r0;
                                                 | label_1:
    0x08003980 mov r0, 2                         |     r0 = 2;
    0x08003984 bx lr                             |     return r0;
                                                 | label_2:
    0x08003988 udf 0x12                          |     __asm ("udf 0x12");
                                                 | }
    ; assembly                                                                   | /* r2dec pseudo code output */
                                                                                 | /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-80367616.squashfs_v4_le_extract/usr/lib/modules/5.10.52-axis9/kernel/fs/ext4/ext4.ko @ 0x801ebe0 */
                                                                                 | #include <stdint.h>
                                                                                 |  
                                                                                 | #define BIT_MASK(t,v) ((t)(-((v)!= 0)))&(((t)-1)>>((sizeof(t)*CHAR_BIT)-(v)))
                                                                                 |  
    ; (fcn) sym.ext4_map_blocks ()                                               | void ext4_map_blocks (int32_t arg_20h, int32_t arg1, int32_t arg2) {
                                                                                 |     int32_t var_14h;
                                                                                 |     int32_t var_18h;
                                                                                 |     int32_t var_24h;
                                                                                 |     int32_t var_28h;
                                                                                 |     int32_t var_30h;
                                                                                 |     int32_t var_34h;
                                                                                 |     int32_t var_0h_2;
                                                                                 |     int32_t var_4h_2;
                                                                                 |     int32_t var_8h;
                                                                                 |     r0 = arg1;
                                                                                 |     r1 = arg2;
    0x0801ebe0 push {r4, r5, r6, r7, r8, sb, sl, fp, lr}                         |     
    0x0801ebe4 mov r4, r2                                                        |     r4 = r2;
    0x0801ebe8 mov r7, r3                                                        |     r7 = r3;
    0x0801ebec mov r2, 0                                                         |     r2 = 0;
    0x0801ebf0 mov r5, r1                                                        |     r5 = r1;
    0x0801ebf4 ldr r3, [r4, 0xc]                                                 |     r3 = *((r4 + 0xc));
    0x0801ebf8 sub sp, sp, 0x3c                                                  |     
    0x0801ebfc ldr r1, [r4, 8]                                                   |     r1 = *((r4 + 8));
    0x0801ec00 mov r8, r0                                                        |     r8 = r0;
    0x0801ec04 cmp r3, r2                                                        |     
    0x0801ec08 str r2, [r4, 0x10]                                                |     *((r4 + 0x10)) = r2;
                                                                                 |     if (r3 >= r2) {
    0x0801ec0c mvnlt r3, 0x80000000                                              |         r3 = ~0x80000000;
                                                                                 |     }
                                                                                 |     if (r3 >= r2) {
    0x0801ec10 strlt r3, [r4, 0xc]                                               |         *((r4 + 0xc)) = r3;
                                                                                 |     }
    0x0801ec14 cmn r1, 1                                                         |     
                                                                                 |     if (r1 == 1) {
    0x0801ec18 beq 0x801f080                                                     |         goto label_18;
                                                                                 |     }
    0x0801ec1c ldr r3, [r5, 0x1c]                                                |     r3 = *((r5 + 0x1c));
    0x0801ec20 ldr r3, [r3, 0x1f8]                                               |     r3 = *((r3 + 0x1f8));
    0x0801ec24 ldrh r2, [r3, 0x78]                                               |     r2 = *((r3 + 0x78));
    0x0801ec28 ands r2, r2, 0x20                                                 |     r2 &= 0x20;
                                                                                 |     if (r2 == r2) {
    0x0801ec2c bne 0x801eca0                                                     |         
    0x0801ec30 add r3, sp, 0x18                                                  |         r3 += var_18h;
    0x0801ec34 mov r0, r5                                                        |         r0 = r5;
    0x0801ec38 stmdaeq r0, {r2, r5, r6, fp, ip, sp, lr, pc}                      |         __asm ("stmdaeq r0, {r2, r5, r6, fp, ip, sp, lr, pc}");
    0x0801ec3c cmp r0, 0                                                         |         
                                                                                 |         if (r0 == 0) {
    0x0801ec40 beq 0x801eca0                                                     |             goto label_19;
                                                                                 |         }
    0x0801ec44 ldr r3, [sp, 0x34]                                                |         r3 = var_34h;
    0x0801ec48 ldr r1, [sp, 0x30]                                                |         r1 = var_30h;
    0x0801ec4c tst r3, 0x8000000                                                 |         
    0x0801ec50 lsr r2, r3, 0x1b                                                  |         r2 = r3 >> 0x1b;
                                                                                 |         if ((r3 & loc.imp.fs_overflowgid) != 0) {
    0x0801ec54 bne 0x801efb0                                                     |             goto label_20;
                                                                                 |         }
    0x0801ec58 tst r2, 2                                                         |         
                                                                                 |         if ((r2 & 2) != 0) {
    0x0801ec5c bne 0x801f0a4                                                     |             goto label_21;
                                                                                 |         }
    0x0801ec60 tst r2, 0xc                                                       |         
                                                                                 |         if ((r2 & 0xc) == 0) {
    0x0801ec64 beq 0x801f1e4                                                     |             goto label_22;
                                                                                 |         }
    0x0801ec68 ldrd r2, r3, [sp, 0x24]                                           |         __asm ("ldrd r2, r3, [var_24h]");
    0x0801ec6c add r3, r3, r2                                                    |         r3 += r2;
    0x0801ec70 ldr r2, [r4, 8]                                                   |         r2 = *((r4 + 8));
    0x0801ec74 sub r3, r3, r2                                                    |         r3 -= r2;
    0x0801ec78 ldr r2, [r4, 0xc]                                                 |         r2 = *((r4 + 0xc));
    0x0801ec7c cmp r2, r3                                                        |         
                                                                                 |         if (r2 < r3) {
    0x0801ec80 movhs r2, r3                                                      |             r2 = r3;
                                                                                 |         }
    0x0801ec84 mov r3, 0                                                         |         r3 = 0;
    0x0801ec88 str r2, [r4, 0xc]                                                 |         *((r4 + 0xc)) = r2;
    0x0801ec8c ands r6, r7, 1                                                    |         r6 = r7 & 1;
    0x0801ec90 mov r2, 0                                                         |         r2 = 0;
    0x0801ec94 strd r2, r3, [r4]                                                 |         __asm ("strd r2, r3, [r4]");
                                                                                 |         if (r6 != r7) {
    0x0801ec98 bne 0x801eda8                                                     |             goto label_23;
                                                                                 |         }
    0x0801ec9c b 0x801ed78                                                       |         goto label_0;
                                                                                 |     }
                                                                                 | label_19:
    0x0801eca0 sub sb, r5, 0x20                                                  |     sb = r5 - 0x20;
    0x0801eca4 mov r0, sb                                                        |     r0 = sb;
    0x0801eca8 stmdaeq r8, {r0, r1, r3, r4, r6, r7, sl, fp, ip, pc}              |     __asm ("stmdaeq r8, {r0, r1, r3, r4, r6, r7, sl, fp, ip, pc}");
    0x0801ecac ldr r3, [r5, -0x6c]                                               |     r3 = *((r5 - 0x6c));
    0x0801ecb0 mov r2, r4                                                        |     r2 = r4;
    0x0801ecb4 mov r1, r5                                                        |     r1 = r5;
    0x0801ecb8 mov r0, r8                                                        |     r0 = r8;
    0x0801ecbc ubfx r3, r3, 0x13, 1                                              |     r3 = (r3 >> 0x13) & ((1 << 1) - 1);
    0x0801ecc0 cmp r3, 0                                                         |     
                                                                                 |     if (r3 != 0) {
    0x0801ecc4 bne 0x801ed84                                                     |         goto label_24;
                                                                                 |     }
    0x0801ecc8 stmdaeq r1, {r2, r4, r7, r8, sb, ip, sp, lr}                      |     __asm ("stmdaeq r1, {r2, r4, r7, r8, sb, ip, sp, lr}");
    0x0801eccc mov r6, r0                                                        |     r6 = r0;
    0x0801ecd0 cmp r6, 0                                                         |     
                                                                                 |     if (r6 <= 0) {
    0x0801ecd4 ble 0x801ed98                                                     |         goto label_25;
                                                                                 |     }
                                                                                 |     do {
    0x0801ecd8 ldr r3, [r4, 0xc]                                                 |         r3 = *((r4 + 0xc));
    0x0801ecdc mov r2, r6                                                        |         r2 = r6;
    0x0801ece0 cmp r3, r6                                                        |         
                                                                                 |         if (r3 != r6) {
    0x0801ece4 bne 0x801f11c                                                     |             goto label_26;
                                                                                 |         }
                                                                                 | label_13:
    0x0801ece8 ldr r3, [r4, 0x10]                                                |         r3 = *((r4 + 0x10));
    0x0801ecec tst r3, 0x800                                                     |         
                                                                                 |         if ((r3 & 0x800) != 0) {
    0x0801ecf0 moveq r3, 1                                                       |             r3 = 1;
                                                                                 |         }
                                                                                 |         if ((r3 & 0x800) != 0) {
    0x0801ecf4 bne 0x801ef2c                                                     |             goto label_27;
                                                                                 |         }
                                                                                 | label_3:
    0x0801ecf8 str r3, [sp, 8]                                                   |         var_8h = r3;
    0x0801ecfc mov r0, r5                                                        |         r0 = r5;
    0x0801ed00 ldrd sl, fp, [r4]                                                 |         __asm ("ldrd sl, fp, [r4]");
    0x0801ed04 ldr r1, [r4, 8]                                                   |         r1 = *((r4 + 8));
    0x0801ed08 strd sl, fp, [sp]                                                 |         __asm ("strd sl, fp, [sp]");
    0x0801ed0c stmdaeq r0, {r2, r3, r4, r5, r7, r8, sb, ip, sp, lr, pc}          |         __asm ("stmdaeq r0, {r2, r3, r4, r5, r7, r8, sb, ip, sp, lr, pc}");
    0x0801ed10 subs sl, r0, 0                                                    |         sl = r0 - 0;
    0x0801ed14 mov r0, sb                                                        |         r0 = sb;
                                                                                 |         if (sl < r0) {
    0x0801ed18 blt 0x801f074                                                     |             goto label_28;
                                                                                 |         }
    0x0801ed1c stmdaeq r8, {r0, r1, r2, r4, r6, r7, sl, fp, ip, pc}              |         __asm ("stmdaeq r8, {r0, r1, r2, r4, r6, r7, sl, fp, ip, pc}");
    0x0801ed20 ldr r3, [r4, 0x10]                                                |         r3 = *((r4 + 0x10));
    0x0801ed24 tst r3, 0x10                                                      |         
                                                                                 |         if ((r3 & 0x10) != 0) {
    0x0801ed28 bne 0x801f00c                                                     |             goto label_29;
                                                                                 |         }
                                                                                 | label_6:
    0x0801ed2c tst r7, 1                                                         |         
                                                                                 |         if ((r7 & 1) != 0) {
    0x0801ed30 beq 0x801ed78                                                     |             
                                                                                 | label_1:
    0x0801ed34 sub sb, r5, 0x20                                                  |             sb = r5 - 0x20;
    0x0801ed38 bic r3, r3, 0xa30                                                 |             r3 = BIT_MASK (r3, 0xa30);
    0x0801ed3c mov r0, sb                                                        |             r0 = sb;
    0x0801ed40 str r3, [r4, 0x10]                                                |             *((r4 + 0x10)) = r3;
    0x0801ed44 stmdaeq r8, {r0, r1, r2, r6, r8, sl, fp, ip, pc}                  |             __asm ("stmdaeq r8, {r0, r1, r2, r6, r8, sl, fp, ip, pc}");
    0x0801ed48 ldr r3, [r5, -0x6c]                                               |             r3 = *((r5 - 0x6c));
    0x0801ed4c mov r2, r4                                                        |             r2 = r4;
    0x0801ed50 mov r1, r5                                                        |             r1 = r5;
    0x0801ed54 tst r3, 0x80000                                                   |             
    0x0801ed58 mov r0, r8                                                        |             r0 = r8;
    0x0801ed5c mov r3, r7                                                        |             r3 = r7;
                                                                                 |             if ((r3 & 0x80000) == 0) {
    0x0801ed60 beq 0x801edb0                                                     |                 goto label_30;
                                                                                 |             }
    0x0801ed64 stmdaeq r0, {r7, fp, ip, pc}                                      |             __asm ("stmdaeq r0, {r7, fp, ip, pc}");
    0x0801ed68 subs r6, r0, 0                                                    |             r6 = r0 - 0;
                                                                                 |             if (r6 > r0) {
    0x0801ed6c bgt 0x801edd0                                                     |                 goto label_10;
                                                                                 |             }
                                                                                 | label_2:
    0x0801ed70 mov r0, sb                                                        |             r0 = sb;
    0x0801ed74 stmdaeq r8, {r0, r1, r3, r6, r8, sl, fp, ip, pc}                  |             __asm ("stmdaeq r8, {r0, r1, r3, r6, r8, sl, fp, ip, pc}");
                                                                                 |         }
                                                                                 | label_0:
    0x0801ed78 mov r0, r6                                                        |         r0 = r6;
    0x0801ed7c add sp, sp, 0x3c                                                  |         
    0x0801ed80 pop {r4, r5, r6, r7, r8, sb, sl, fp, pc}                          |         
                                                                                 | label_24:
    0x0801ed84 mov r3, 0                                                         |         r3 = 0;
    0x0801ed88 stmdaeq r0, {r7, fp, ip, pc}                                      |         __asm ("stmdaeq r0, {r7, fp, ip, pc}");
    0x0801ed8c mov r6, r0                                                        |         r6 = r0;
    0x0801ed90 cmp r6, 0                                                         |         
    0x0801ed94 bgt 0x801ecd8                                                     |         
                                                                                 |     } while (r6 > 0);
                                                                                 | label_25:
    0x0801ed98 mov r0, sb                                                        |     r0 = sb;
    0x0801ed9c stmdaeq r8, {r0, r1, r2, r4, r6, r7, sl, fp, ip, pc}              |     __asm ("stmdaeq r8, {r0, r1, r2, r4, r6, r7, sl, fp, ip, pc}");
                                                                                 | label_5:
    0x0801eda0 tst r7, 1                                                         |     
                                                                                 |     if ((r7 & 1) == 0) {
    0x0801eda4 beq 0x801ed78                                                     |         goto label_0;
                                                                                 |     }
                                                                                 | label_23:
    0x0801eda8 ldr r3, [r4, 0x10]                                                |     r3 = *((r4 + 0x10));
    0x0801edac b 0x801ed34                                                       |     goto label_1;
                                                                                 | label_30:
    0x0801edb0 stmdaeq r1, {r2, r4, r7, r8, sb, ip, sp, lr}                      |     __asm ("stmdaeq r1, {r2, r4, r7, r8, sb, ip, sp, lr}");
    0x0801edb4 subs r6, r0, 0                                                    |     r6 = r0 - 0;
                                                                                 |     if (r6 <= r0) {
    0x0801edb8 ble 0x801ed70                                                     |         goto label_2;
                                                                                 |     }
    0x0801edbc ldr r3, [r4, 0x10]                                                |     r3 = *((r4 + 0x10));
    0x0801edc0 tst r3, 0x20                                                      |     
                                                                                 |     if ((r3 & 0x20) != 0) {
    0x0801edc4 bne 0x801f100                                                     |         goto label_31;
                                                                                 |     }
                                                                                 | label_12:
    0x0801edc8 tst r7, 4                                                         |     
                                                                                 |     if ((r7 & 4) != 0) {
    0x0801edcc bne 0x801f0c8                                                     |         goto label_32;
                                                                                 |     }
                                                                                 | label_10:
    0x0801edd0 ldr r2, [r4, 0xc]                                                 |     r2 = *((r4 + 0xc));
    0x0801edd4 cmp r2, r6                                                        |     
                                                                                 |     if (r2 != r6) {
    0x0801edd8 bne 0x801f164                                                     |         goto label_33;
                                                                                 |     }
                                                                                 | label_14:
    0x0801eddc ands r3, r7, 0x200                                                |     r3 = r7 & 0x200;
    0x0801ede0 ldr r1, [r4, 8]                                                   |     r1 = *((r4 + 8));
    0x0801ede4 str r3, [sp, 0x14]                                                |     var_14h = r3;
                                                                                 |     if (r3 != r7) {
    0x0801ede8 beq 0x801edfc                                                     |         
    0x0801edec ldr r3, [r4, 0x10]                                                |         r3 = *((r4 + 0x10));
    0x0801edf0 and r3, r3, 0x30                                                  |         r3 &= 0x30;
    0x0801edf4 cmp r3, 0x30                                                      |         
                                                                                 |         if (r3 == 0x30) {
    0x0801edf8 beq 0x801f0dc                                                     |             goto label_34;
                                                                                 |         }
                                                                                 |     }
                                                                                 | label_11:
    0x0801edfc tst r7, 8                                                         |     
                                                                                 |     if ((r7 & 8) != 0) {
    0x0801ee00 bne 0x801f044                                                     |         goto label_35;
                                                                                 |     }
                                                                                 | label_8:
    0x0801ee04 ldr r3, [r4, 0x10]                                                |     r3 = *((r4 + 0x10));
    0x0801ee08 tst r3, 0x800                                                     |     
                                                                                 |     if ((r3 & 0x800) != 0) {
    0x0801ee0c bne 0x801ef6c                                                     |         goto label_36;
                                                                                 |     }
    0x0801ee10 ldr r2, [r4, 0xc]                                                 |     r2 = *((r4 + 0xc));
    0x0801ee14 mov r3, 1                                                         |     r3 = 1;
                                                                                 | label_4:
    0x0801ee18 str r3, [sp, 8]                                                   |     var_8h = r3;
    0x0801ee1c mov r0, r5                                                        |     r0 = r5;
    0x0801ee20 ldrd sl, fp, [r4]                                                 |     __asm ("ldrd sl, fp, [r4]");
    0x0801ee24 strd sl, fp, [sp]                                                 |     __asm ("strd sl, fp, [sp]");
    0x0801ee28 stmdaeq r0, {r2, r3, r4, r5, r7, r8, sb, ip, sp, lr, pc}          |     __asm ("stmdaeq r0, {r2, r3, r4, r5, r7, r8, sb, ip, sp, lr, pc}");
    0x0801ee2c subs r3, r0, 0                                                    |     r3 = r0 - 0;
    0x0801ee30 mov r0, sb                                                        |     r0 = sb;
                                                                                 |     if (r3 < r0) {
    0x0801ee34 blt 0x801f098                                                     |         goto label_37;
                                                                                 |     }
                                                                                 | label_7:
    0x0801ee38 stmdaeq r8, {r0, r1, r3, r6, r8, sl, fp, ip, pc}                  |     __asm ("stmdaeq r8, {r0, r1, r3, r6, r8, sl, fp, ip, pc}");
                                                                                 | label_15:
    0x0801ee3c ldr r3, [r4, 0x10]                                                |     r3 = *((r4 + 0x10));
    0x0801ee40 tst r3, 0x10                                                      |     
                                                                                 |     if ((r3 & 0x10) == 0) {
    0x0801ee44 beq 0x801ed78                                                     |         goto label_0;
                                                                                 |     }
    0x0801ee48 mov r2, r4                                                        |     r2 = r4;
    0x0801ee4c mov r0, r5                                                        |     r0 = r5;
    0x0801ee50 movw r1, 0x2cd                                                    |     r1 = 0x2cd;
    0x0801ee54 bl 0x801cc54                                                      |     r0 = check_block_validity_constprop_0 ();
    0x0801ee58 cmp r0, 0                                                         |     
                                                                                 |     if (r0 != 0) {
    0x0801ee5c bne 0x801f090                                                     |         goto label_38;
                                                                                 |     }
    0x0801ee60 ldr r3, [r4, 0x10]                                                |     r3 = *((r4 + 0x10));
    0x0801ee64 and r3, r3, 0x820                                                 |     r3 &= 0x820;
    0x0801ee68 cmp r3, 0x20                                                      |     
                                                                                 |     if (r3 != 0x20) {
    0x0801ee6c bne 0x801ef08                                                     |         goto label_39;
                                                                                 |     }
    0x0801ee70 ldr r3, [sp, 0x14]                                                |     r3 = var_14h;
    0x0801ee74 cmp r3, 0                                                         |     
                                                                                 |     if (r3 != 0) {
    0x0801ee78 bne 0x801ef08                                                     |         goto label_39;
                                                                                 |     }
    0x0801ee7c ldr r3, [r5, 0xc]                                                 |     r3 = *((r5 + 0xc));
    0x0801ee80 tst r3, 0x20                                                      |     
                                                                                 |     if ((r3 & 0x20) != 0) {
    0x0801ee84 beq 0x801ee94                                                     |         
    0x0801ee88 ldr r3, [r5, -0x6c]                                               |         r3 = *((r5 - 0x6c));
    0x0801ee8c tst r3, 0x200000                                                  |         
                                                                                 |         if ((r3 & 0x200000) == 0) {
    0x0801ee90 beq 0x801ef08                                                     |             goto label_39;
                                                                                 |         }
                                                                                 |     }
    0x0801ee94 mov r0, r5                                                        |     r0 = r5;
    0x0801ee98 stmdaeq r0, {r3, r4, r5, r6, r7, fp, ip, sp}                      |     __asm ("stmdaeq r0, {r3, r4, r5, r6, r7, fp, ip, sp}");
    0x0801ee9c tst r0, 2                                                         |     
                                                                                 |     if ((r0 & 2) == 0) {
    0x0801eea0 beq 0x801ef08                                                     |         goto label_39;
                                                                                 |     }
    0x0801eea4 ldrb ip, [r5, 0x72]                                               |     ip = *((r5 + 0x72));
    0x0801eea8 tst r7, 0x400                                                     |     
    0x0801eeac ldr r1, [r4, 8]                                                   |     r1 = *((r4 + 8));
    0x0801eeb0 ldr r2, [r4, 0xc]                                                 |     r2 = *((r4 + 0xc));
    0x0801eeb4 sub r0, ip, 0x20                                                  |     r0 = ip - 0x20;
    0x0801eeb8 rsb lr, ip, 0x20                                                  |     lr = 0x20 - ip;
    0x0801eebc lsl r3, r1, r0                                                    |     r3 = r1 << r0;
    0x0801eec0 lsl r0, r2, r0                                                    |     r0 = r2 << r0;
    0x0801eec4 orr r3, r3, r1, lsr lr                                            |     r3 |= (r1 >> lr);
    0x0801eec8 orr r0, r0, r2, lsr lr                                            |     r0 |= (r2 >> lr);
    0x0801eecc lsl lr, r1, ip                                                    |     lr = r1 << ip;
    0x0801eed0 lsl ip, r2, ip                                                    |     
                                                                                 |     if ((r7 & 0x400) == 0) {
    0x0801eed4 beq 0x801f1bc                                                     |         goto label_40;
                                                                                 |     }
    0x0801eed8 cmp r8, 0x1000                                                    |     
                                                                                 |     if (r8 <= 0x1000) {
    0x0801eedc blo 0x801ef10                                                     |         goto label_16;
                                                                                 |     }
    0x0801eee0 str r0, [sp, 4]                                                   |     var_4h_2 = r0;
    0x0801eee4 mov r2, lr                                                        |     r2 = lr;
    0x0801eee8 str ip, [sp]                                                      |     *(sp) = ip;
    0x0801eeec mov r0, r8                                                        |     r0 = r8;
    0x0801eef0 ldr r1, [r5, 0x170]                                               |     r1 = *((r5 + 0x170));
    0x0801eef4 stmdaeq r8, {r0, r1, r2, r5, r6, r7, sb, sl, fp, ip, pc}          |     __asm ("stmdaeq r8, {r0, r1, r2, r5, r6, r7, sb, sl, fp, ip, pc}");
    0x0801eef8 mov r3, r0                                                        |     r3 = r0;
                                                                                 | label_17:
    0x0801eefc cmp r3, 0                                                         |     
                                                                                 |     if (r3 != 0) {
    0x0801ef00 movne r6, r3                                                      |         r6 = r3;
                                                                                 |         goto label_41;
                                                                                 |     }
                                                                                 |     if (r3 != 0) {
                                                                                 | label_41:
    0x0801ef04 bne 0x801ed78                                                     |         goto label_0;
                                                                                 |     }
                                                                                 | label_39:
    0x0801ef08 ldr r2, [r4, 0xc]                                                 |     r2 = *((r4 + 0xc));
    0x0801ef0c ldr r1, [r4, 8]                                                   |     r1 = *((r4 + 8));
                                                                                 | label_16:
    0x0801ef10 add r3, r1, r2                                                    |     r3 = r1 + r2;
    0x0801ef14 mov r0, r8                                                        |     r0 = r8;
    0x0801ef18 mov r2, r1                                                        |     r2 = r1;
    0x0801ef1c sub r3, r3, 1                                                     |     r3--;
    0x0801ef20 mov r1, r5                                                        |     r1 = r5;
    0x0801ef24 stmdaeq r5, {r2, r3, r4, r7, r8, fp, sp, lr}                      |     __asm ("stmdaeq r5, {r2, r3, r4, r7, r8, fp, sp, lr}");
    0x0801ef28 b 0x801ed78                                                       |     goto label_0;
                                                                                 | label_27:
    0x0801ef2c tst r7, 4                                                         |     
                                                                                 |     if ((r7 & 4) != 0) {
    0x0801ef30 bne 0x801ef64                                                     |         goto label_42;
                                                                                 |     }
    0x0801ef34 ldr ip, [r4, 8]                                                   |     ip = *((r4 + 8));
    0x0801ef38 mov r0, r5                                                        |     r0 = r5;
    0x0801ef3c stmdaeq r1, {r3, r4, r7, sl, lr, pc}                              |     __asm ("stmdaeq r1, {r3, r4, r7, sl, lr, pc}");
    0x0801ef40 stmdaeq r1, {r3, r4, r7, sl, lr, pc}                              |     __asm ("stmdaeq r1, {r3, r4, r7, sl, lr, pc}");
    0x0801ef44 sub r3, ip, 1                                                     |     r3 = ip - 1;
    0x0801ef48 add r3, r3, r2                                                    |     r3 += r2;
    0x0801ef4c mov r2, ip                                                        |     r2 = ip;
    0x0801ef50 stmdaeq r0, {r3, r4, r5, r6, r7, r8, ip, sp, lr, pc}              |     __asm ("stmdaeq r0, {r3, r4, r5, r6, r7, r8, ip, sp, lr, pc}");
    0x0801ef54 cmp r0, 0                                                         |     
    0x0801ef58 ldr r2, [r4, 0xc]                                                 |     r2 = *((r4 + 0xc));
                                                                                 |     if (r0 != 0) {
    0x0801ef5c movne r3, 6                                                       |         r3 = 6;
                                                                                 |         goto label_43;
                                                                                 |     }
                                                                                 |     if (r0 != 0) {
                                                                                 | label_43:
    0x0801ef60 bne 0x801ecf8                                                     |         goto label_3;
                                                                                 |     }
                                                                                 | label_42:
    0x0801ef64 mov r3, 2                                                         |     r3 = 2;
    0x0801ef68 b 0x801ecf8                                                       |     goto label_3;
                                                                                 | label_36:
    0x0801ef6c ldr r2, [r4, 0xc]                                                 |     r2 = *((r4 + 0xc));
    0x0801ef70 tst r7, 4                                                         |     
                                                                                 |     if ((r7 & 4) != 0) {
    0x0801ef74 bne 0x801efa8                                                     |         goto label_44;
                                                                                 |     }
    0x0801ef78 add r3, r2, r1                                                    |     r3 = r2 + r1;
    0x0801ef7c mov r0, r5                                                        |     r0 = r5;
    0x0801ef80 mov r2, r1                                                        |     r2 = r1;
    0x0801ef84 sub r3, r3, 1                                                     |     r3--;
    0x0801ef88 stmdaeq r1, {r3, r4, r7, sl, lr, pc}                              |     __asm ("stmdaeq r1, {r3, r4, r7, sl, lr, pc}");
    0x0801ef8c stmdaeq r1, {r3, r4, r7, sl, lr, pc}                              |     __asm ("stmdaeq r1, {r3, r4, r7, sl, lr, pc}");
    0x0801ef90 stmdaeq r0, {r3, r4, r5, r6, r7, r8, ip, sp, lr, pc}              |     __asm ("stmdaeq r0, {r3, r4, r5, r6, r7, r8, ip, sp, lr, pc}");
    0x0801ef94 cmp r0, 0                                                         |     
    0x0801ef98 ldr r2, [r4, 0xc]                                                 |     r2 = *((r4 + 0xc));
    0x0801ef9c ldr r1, [r4, 8]                                                   |     r1 = *((r4 + 8));
                                                                                 |     if (r0 != 0) {
    0x0801efa0 movne r3, 6                                                       |         r3 = 6;
                                                                                 |         goto label_45;
                                                                                 |     }
                                                                                 |     if (r0 != 0) {
                                                                                 | label_45:
    0x0801efa4 bne 0x801ee18                                                     |         goto label_4;
                                                                                 |     }
                                                                                 | label_44:
    0x0801efa8 mov r3, 2                                                         |     r3 = 2;
    0x0801efac b 0x801ee18                                                       |     goto label_4;
                                                                                 | label_20:
    0x0801efb0 ldr r6, [sp, 0x24]                                                |     r6 = var_24h;
    0x0801efb4 bic r2, r3, 0xf8000000                                            |     r2 = BIT_MASK (r3, 0xf8000000);
    0x0801efb8 ldr r0, [r4, 8]                                                   |     r0 = *((r4 + 8));
    0x0801efbc mov r3, 0x10                                                      |     r3 = 0x10;
    0x0801efc0 subs r1, r1, r6                                                   |     r1 -= r6;
    0x0801efc4 sbc r2, r2, 0                                                     |     __asm ("sbc r2, r2, 0");
    0x0801efc8 adds r1, r1, r0                                                   |     r1 += r0;
    0x0801efcc adc r2, r2, 0                                                     |     __asm ("adc r2, r2, 0");
                                                                                 | label_9:
    0x0801efd0 stm r4, {r1, r2}                                                  |     *(r4) = r1;
                                                                                 |     *((r4 + 4)) = r2;
    0x0801efd4 ldr r2, [sp, 0x28]                                                |     r2 = var_28h;
    0x0801efd8 add r6, r6, r2                                                    |     r6 += r2;
    0x0801efdc ldr r2, [r4, 0xc]                                                 |     r2 = *((r4 + 0xc));
    0x0801efe0 sub r6, r6, r0                                                    |     r6 -= r0;
    0x0801efe4 cmp r6, r2                                                        |     
                                                                                 |     if (r6 < r2) {
    0x0801efe8 movhs r6, r2                                                      |         r6 = r2;
                                                                                 |     }
    0x0801efec ldr r2, [r4, 0x10]                                                |     r2 = *((r4 + 0x10));
    0x0801eff0 cmp r6, 0                                                         |     
    0x0801eff4 str r6, [r4, 0xc]                                                 |     *((r4 + 0xc)) = r6;
    0x0801eff8 orr r3, r3, r2                                                    |     r3 |= r2;
    0x0801effc str r3, [r4, 0x10]                                                |     *((r4 + 0x10)) = r3;
                                                                                 |     if (r6 <= 0) {
    0x0801f000 ble 0x801eda0                                                     |         goto label_5;
                                                                                 |     }
    0x0801f004 tst r3, 0x10                                                      |     
                                                                                 |     if ((r3 & 0x10) == 0) {
    0x0801f008 beq 0x801ed2c                                                     |         goto label_6;
                                                                                 |     }
                                                                                 | label_29:
    0x0801f00c mov r2, r4                                                        |     r2 = r4;
    0x0801f010 mov r0, r5                                                        |     r0 = r5;
    0x0801f014 movw r1, 0x251                                                    |     r1 = 0x251;
    0x0801f018 bl 0x801cc54                                                      |     r0 = check_block_validity_constprop_0 ();
    0x0801f01c cmp r0, 0                                                         |     
                                                                                 |     if (r0 != 0) {
    0x0801f020 bne 0x801f090                                                     |         goto label_38;
                                                                                 |     }
    0x0801f024 tst r7, 1                                                         |     
                                                                                 |     if ((r7 & 1) == 0) {
    0x0801f028 beq 0x801ed78                                                     |         goto label_0;
                                                                                 |     }
    0x0801f02c ldr r3, [r4, 0x10]                                                |     r3 = *((r4 + 0x10));
    0x0801f030 tst r3, 0x10                                                      |     
                                                                                 |     if ((r3 & 0x10) == 0) {
    0x0801f034 beq 0x801ed34                                                     |         goto label_1;
                                                                                 |     }
    0x0801f038 tst r7, 0x100                                                     |     
                                                                                 |     if ((r7 & 0x100) != 0) {
    0x0801f03c bne 0x801ed34                                                     |         goto label_1;
                                                                                 |     }
    0x0801f040 b 0x801ed78                                                       |     goto label_0;
                                                                                 | label_35:
    0x0801f044 add r3, sp, 0x18                                                  |     r3 += var_18h;
    0x0801f048 mov r0, r5                                                        |     r0 = r5;
    0x0801f04c mov r2, 0                                                         |     r2 = 0;
    0x0801f050 stmdaeq r0, {r2, r5, r6, fp, ip, sp, lr, pc}                      |     __asm ("stmdaeq r0, {r2, r5, r6, fp, ip, sp, lr, pc}");
    0x0801f054 cmp r0, 0                                                         |     
                                                                                 |     if (r0 == 0) {
    0x0801f058 beq 0x801f06c                                                     |         goto label_46;
                                                                                 |     }
    0x0801f05c ldr r3, [sp, 0x34]                                                |     r3 = var_34h;
    0x0801f060 tst r3, 0x8000000                                                 |     
                                                                                 |     if ((r3 & loc.imp.fs_overflowgid) != 0) {
    0x0801f064 movne r0, sb                                                      |         r0 = sb;
                                                                                 |         goto label_47;
                                                                                 |     }
                                                                                 |     if ((r3 & loc.imp.fs_overflowgid) != 0) {
                                                                                 | label_47:
    0x0801f068 bne 0x801ee38                                                     |         goto label_7;
                                                                                 |     }
                                                                                 | label_46:
    0x0801f06c ldr r1, [r4, 8]                                                   |     r1 = *((r4 + 8));
    0x0801f070 b 0x801ee04                                                       |     goto label_8;
                                                                                 | label_28:
    0x0801f074 mov r6, sl                                                        |     r6 = sl;
    0x0801f078 stmdaeq r8, {r0, r1, r2, r4, r6, r7, sl, fp, ip, pc}              |     __asm ("stmdaeq r8, {r0, r1, r2, r4, r6, r7, sl, fp, ip, pc}");
    0x0801f07c b 0x801eda0                                                       |     goto label_5;
                                                                                 | label_18:
    0x0801f080 mvn r6, 0x74                                                      |     r6 = ~0x74;
    0x0801f084 mov r0, r6                                                        |     r0 = r6;
    0x0801f088 add sp, sp, 0x3c                                                  |     
    0x0801f08c pop {r4, r5, r6, r7, r8, sb, sl, fp, pc}                          |     
                                                                                 | label_38:
    0x0801f090 mov r6, r0                                                        |     r6 = r0;
    0x0801f094 b 0x801ed78                                                       |     goto label_0;
                                                                                 | label_37:
    0x0801f098 mov r6, r3                                                        |     r6 = r3;
    0x0801f09c stmdaeq r8, {r0, r1, r3, r6, r8, sl, fp, ip, pc}                  |     __asm ("stmdaeq r8, {r0, r1, r3, r6, r8, sl, fp, ip, pc}");
    0x0801f0a0 b 0x801ed78                                                       |     goto label_0;
                                                                                 | label_21:
    0x0801f0a4 ldr r6, [sp, 0x24]                                                |     r6 = var_24h;
    0x0801f0a8 bic r2, r3, 0xf8000000                                            |     r2 = BIT_MASK (r3, 0xf8000000);
    0x0801f0ac ldr r0, [r4, 8]                                                   |     r0 = *((r4 + 8));
    0x0801f0b0 mov r3, 0x800                                                     |     r3 = 0x800;
    0x0801f0b4 subs r1, r1, r6                                                   |     r1 -= r6;
    0x0801f0b8 sbc r2, r2, 0                                                     |     __asm ("sbc r2, r2, 0");
    0x0801f0bc adds r1, r1, r0                                                   |     r1 += r0;
    0x0801f0c0 adc r2, r2, 0                                                     |     __asm ("adc r2, r2, 0");
    0x0801f0c4 b 0x801efd0                                                       |     goto label_9;
                                                                                 | label_32:
    0x0801f0c8 mov r1, r6                                                        |     r1 = r6;
    0x0801f0cc mov r0, r5                                                        |     r0 = r5;
    0x0801f0d0 mov r2, 1                                                         |     r2 = 1;
    0x0801f0d4 stmdaeq r1, {r3, r5, r7, r8, fp, sp, lr, pc}                      |     __asm ("stmdaeq r1, {r3, r5, r7, r8, fp, sp, lr, pc}");
    0x0801f0d8 b 0x801edd0                                                       |     goto label_10;
                                                                                 | label_34:
    0x0801f0dc ldr r3, [r4, 0xc]                                                 |     r3 = *((r4 + 0xc));
    0x0801f0e0 mov r0, r5                                                        |     r0 = r5;
    0x0801f0e4 str r3, [sp]                                                      |     *(sp) = r3;
    0x0801f0e8 ldrd r2, r3, [r4]                                                 |     __asm ("ldrd r2, r3, [r4]");
    0x0801f0ec stmdaeq r1, {r3, r6, r8, sb, fp, sp, lr, pc}                      |     __asm ("stmdaeq r1, {r3, r6, r8, sb, fp, sp, lr, pc}");
    0x0801f0f0 subs fp, r0, 0                                                    |     
                                                                                 |     if (fp == r0) {
    0x0801f0f4 bne 0x801f1a8                                                     |         
    0x0801f0f8 ldr r1, [r4, 8]                                                   |         r1 = *((r4 + 8));
    0x0801f0fc b 0x801edfc                                                       |         goto label_11;
                                                                                 | label_31:
    0x0801f100 mrs r2, apsr                                                      |         r2 = apsr;
    0x0801f104 cpsid i                                                           |         __asm ("cpsid i");
    0x0801f108 ldr r3, [r5, -0x70]                                               |         r3 = *((r5 - 0x70));
    0x0801f10c bic r3, r3, 0x20                                                  |         r3 = BIT_MASK (r3, 0x20);
    0x0801f110 str r3, [r5, -0x70]                                               |         *((r5 - 0x70)) = r3;
    0x0801f114 msr cpsr_c, r2                                                    |         cpsr_c = r2;
    0x0801f118 b 0x801edc8                                                       |         goto label_12;
                                                                                 | label_26:
    0x0801f11c str r3, [sp, 8]                                                   |         var_8h = r3;
    0x0801f120 movw r2, 0x23a                                                    |         r2 = 0x23a;
    0x0801f124 str r6, [sp, 4]                                                   |         var_4h_2 = r6;
    0x0801f128 ldr r1, [pc, 0xb8]                                                |         r1 = $d;
    0x0801f12c ldr r3, [r5, 0x28]                                                |         r3 = *((r5 + 0x28));
    0x0801f130 str r3, [sp]                                                      |         *(sp) = r3;
    0x0801f134 stmdaeq r5, {r2, r3, r4, r8, sb, sl, ip, sp, pc}                  |         __asm ("stmdaeq r5, {r2, r3, r4, r8, sb, sl, ip, sp, pc}");
    0x0801f138 stmdaeq r5, {r2, r3, r4, r8, sb, sl, ip, sp, pc}                  |         __asm ("stmdaeq r5, {r2, r3, r4, r8, sb, sl, ip, sp, pc}");
    0x0801f13c ldr r0, [r5, 0x1c]                                                |         r0 = *((r5 + 0x1c));
    0x0801f140 stmdaeq r4, {r2, r3, r7, r8, sl, fp, pc}                          |         __asm ("stmdaeq r4, {r2, r3, r7, r8, sl, fp, pc}");
    0x0801f144 mov r2, 9                                                         |         r2 = 9;
    0x0801f148 mov r3, 0                                                         |         r3 = 0;
    0x0801f14c movw r1, 0x23e                                                    |         r1 = 0x23e;
    0x0801f150 stmdaeq r5, {r4, r5, r7, sb, sl, ip, sp, pc}                      |         __asm ("stmdaeq r5, {r4, r5, r7, sb, sl, ip, sp, pc}");
    0x0801f154 stmdaeq r5, {r4, r5, r7, sb, sl, ip, sp, pc}                      |         __asm ("stmdaeq r5, {r4, r5, r7, sb, sl, ip, sp, pc}");
    0x0801f158 stmdaeq r8, {r0, r1, r2, r4, r5, r6, sl, fp, ip, pc}              |         __asm ("stmdaeq r8, {r0, r1, r2, r4, r5, r6, sl, fp, ip, pc}");
    0x0801f15c ldr r2, [r4, 0xc]                                                 |         r2 = *((r4 + 0xc));
    0x0801f160 b 0x801ece8                                                       |         goto label_13;
                                                                                 | label_33:
    0x0801f164 str r2, [sp, 8]                                                   |         var_8h = r2;
    0x0801f168 movw r2, 0x299                                                    |         r2 = 0x299;
    0x0801f16c str r6, [sp, 4]                                                   |         var_4h_2 = r6;
    0x0801f170 ldr r1, [pc, 0x70]                                                |         r1 = $d;
    0x0801f174 ldr r3, [r5, 0x28]                                                |         r3 = *((r5 + 0x28));
    0x0801f178 str r3, [sp]                                                      |         *(sp) = r3;
    0x0801f17c stmdaeq r5, {r2, r3, r4, r8, sb, sl, ip, sp, pc}                  |         __asm ("stmdaeq r5, {r2, r3, r4, r8, sb, sl, ip, sp, pc}");
    0x0801f180 stmdaeq r5, {r2, r3, r4, r8, sb, sl, ip, sp, pc}                  |         __asm ("stmdaeq r5, {r2, r3, r4, r8, sb, sl, ip, sp, pc}");
    0x0801f184 ldr r0, [r5, 0x1c]                                                |         r0 = *((r5 + 0x1c));
    0x0801f188 stmdaeq r4, {r2, r3, r7, r8, sl, fp, pc}                          |         __asm ("stmdaeq r4, {r2, r3, r7, r8, sl, fp, pc}");
    0x0801f18c stmdaeq r5, {r4, r5, r7, sb, sl, ip, sp, pc}                      |         __asm ("stmdaeq r5, {r4, r5, r7, sb, sl, ip, sp, pc}");
    0x0801f190 stmdaeq r5, {r4, r5, r7, sb, sl, ip, sp, pc}                      |         __asm ("stmdaeq r5, {r4, r5, r7, sb, sl, ip, sp, pc}");
    0x0801f194 mov r3, 0                                                         |         r3 = 0;
    0x0801f198 mov r2, 9                                                         |         r2 = 9;
    0x0801f19c movw r1, 0x29d                                                    |         r1 = 0x29d;
    0x0801f1a0 stmdaeq r8, {r0, r1, r2, r4, r5, r6, sl, fp, ip, pc}              |         __asm ("stmdaeq r8, {r0, r1, r2, r4, r5, r6, sl, fp, ip, pc}");
    0x0801f1a4 b 0x801eddc                                                       |         goto label_14;
                                                                                 |     }
    0x0801f1a8 mov r0, sb                                                        |     r0 = sb;
    0x0801f1ac stmdaeq r8, {r0, r1, r3, r6, r8, sl, fp, ip, pc}                  |     __asm ("stmdaeq r8, {r0, r1, r3, r6, r8, sl, fp, ip, pc}");
    0x0801f1b0 subs r6, fp, 0                                                    |     r6 -= arg_20h;
                                                                                 |     if (r6 > arg_20h) {
    0x0801f1b4 bgt 0x801ee3c                                                     |         goto label_15;
                                                                                 |     }
    0x0801f1b8 b 0x801ed78                                                       |     goto label_0;
                                                                                 | label_40:
    0x0801f1bc cmp r8, 0x1000                                                    |     
                                                                                 |     if (r8 <= 0x1000) {
    0x0801f1c0 blo 0x801ef10                                                     |         goto label_16;
                                                                                 |     }
    0x0801f1c4 str r0, [sp, 4]                                                   |     var_4h_2 = r0;
    0x0801f1c8 mov r2, lr                                                        |     r2 = lr;
    0x0801f1cc str ip, [sp]                                                      |     *(sp) = ip;
    0x0801f1d0 mov r0, r8                                                        |     r0 = r8;
    0x0801f1d4 ldr r1, [r5, 0x170]                                               |     r1 = *((r5 + 0x170));
    0x0801f1d8 stmdaeq r8, {r0, r1, r3, r5, r6, r7, sb, sl, fp, ip, pc}          |     __asm ("stmdaeq r8, {r0, r1, r3, r5, r6, r7, sb, sl, fp, ip, pc}");
    0x0801f1dc mov r3, r0                                                        |     r3 = r0;
    0x0801f1e0 b 0x801eefc                                                       |     goto label_17;
                                                                                 | label_22:
    0x0801f1e4 udf 0x12                                                          |     __asm ("udf 0x12");
                                                                                 | }
    ; assembly                                                                           | /* r2dec pseudo code output */
                                                                                         | /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-80367616.squashfs_v4_le_extract/usr/lib/modules/5.10.52-axis9/kernel/fs/ext4/ext4.ko @ 0x80271a0 */
                                                                                         | #include <stdint.h>
                                                                                         |  
                                                                                         | #define BIT_MASK(t,v) ((t)(-((v)!= 0)))&(((t)-1)>>((sizeof(t)*CHAR_BIT)-(v)))
                                                                                         |  
    ; (fcn) sym.ext4_page_mkwrite ()                                                     | void ext4_page_mkwrite (int32_t arg1) {
                                                                                         |     int32_t var_0h;
                                                                                         |     int32_t var_4h;
                                                                                         |     int32_t var_ch;
                                                                                         |     int32_t var_10h;
                                                                                         |     int32_t var_14h;
                                                                                         |     int32_t var_1ch;
                                                                                         |     int32_t var_24h;
                                                                                         |     r0 = arg1;
    0x080271a0 push {r4, r5, r6, r7, r8, sb, sl, fp, lr}                                 |     
    0x080271a4 ldr sb, [r0]                                                              |     sb = *(r0);
    0x080271a8 sub sp, sp, 0x24                                                          |     
    0x080271ac ldr r7, [r0, 0x24]                                                        |     r7 = *((r0 + 0x24));
    0x080271b0 ldr r3, [sb, 0x50]                                                        |     r3 = *((sb + 0x50));
    0x080271b4 ldr r4, [r3, 0x10]                                                        |     r4 = *((r3 + 0x10));
    0x080271b8 mov r3, 0                                                                 |     r3 = 0;
    0x080271bc str r3, [sp, 0x1c]                                                        |     var_1ch = r3;
    0x080271c0 ldr r1, [r4, 0xc]                                                         |     r1 = *((r4 + 0xc));
    0x080271c4 ldr fp, [r4, 0x20]                                                        |     fp = *((r4 + 0x20));
    0x080271c8 ands r1, r1, 8                                                            |     r1 &= 8;
                                                                                         |     if (r1 != r1) {
    0x080271cc bne 0x8027824                                                             |         goto label_23;
                                                                                         |     }
    0x080271d0 mov r3, sp                                                                |     r3 = sp;
    0x080271d4 mov r8, r0                                                                |     r8 = r0;
    0x080271d8 bic r3, r3, 0x1fc0                                                        |     r3 = BIT_MASK (r3, 0x1fc0);
    0x080271dc ldr r0, [r4, 0x1c]                                                        |     r0 = *((r4 + 0x1c));
    0x080271e0 bic r3, r3, 0x3f                                                          |     r3 = BIT_MASK (r3, 0x3f);
    0x080271e4 ldr r2, [r3, 4]                                                           |     r2 = *((r3 + 4));
    0x080271e8 add r2, r2, 1                                                             |     r2++;
    0x080271ec str r2, [r3, 4]                                                           |     *((r3 + 4)) = r2;
    0x080271f0 ldr r3, [r0, 0x1a0]                                                       |     r3 = *((r0 + 0x1a0));
    0x080271f4 cmp r3, 0                                                                 |     
                                                                                         |     if (r3 != 0) {
    0x080271f8 bne 0x8027834                                                             |         goto label_24;
                                                                                         |     }
    0x080271fc mrs r1, apsr                                                              |     r1 = apsr;
    0x08027200 cpsid i                                                                   |     __asm ("cpsid i");
    0x08027204 ldr r2, [r0, 0x1b8]                                                       |     r2 = *((r0 + 0x1b8));
    0x08027208 ldr r3, [r2]                                                              |     r3 = *(r2);
    0x0802720c add r3, r3, 1                                                             |     r3++;
    0x08027210 str r3, [r2]                                                              |     *(r2) = r3;
    0x08027214 msr cpsr_c, r1                                                            |     cpsr_c = r1;
                                                                                         | label_16:
    0x08027218 mov r3, sp                                                                |     r3 = sp;
    0x0802721c bic r3, r3, 0x1fc0                                                        |     r3 = BIT_MASK (r3, 0x1fc0);
    0x08027220 bic r3, r3, 0x3f                                                          |     r3 = BIT_MASK (r3, 0x3f);
    0x08027224 ldr r2, [r3, 4]                                                           |     r2 = *((r3 + 4));
    0x08027228 sub r2, r2, 1                                                             |     r2--;
    0x0802722c str r2, [r3, 4]                                                           |     *((r3 + 4)) = r2;
    0x08027230 cmp r2, 0                                                                 |     
                                                                                         |     if (r2 == 0) {
    0x08027234 beq 0x8027534                                                             |         goto label_25;
                                                                                         |     }
                                                                                         | label_3:
    0x08027238 ldr r0, [sb, 0x50]                                                        |     r0 = *((sb + 0x50));
    0x0802723c stmdaeq r8, {r0, r1, r2, r3, r4, r5, r6, r8, sb, sl, fp, ip, pc}          |     __asm ("stmdaeq r8, {r0, r1, r2, r3, r4, r5, r6, r8, sb, sl, fp, ip, pc}");
    0x08027240 sub r3, r4, 0x10                                                          |     r3 = r4 - 0x10;
    0x08027244 mov r0, r3                                                                |     r0 = r3;
    0x08027248 str r3, [sp, 0xc]                                                         |     var_ch = r3;
    0x0802724c stmdaeq r8, {r0, r1, r3, r4, r6, r7, sl, fp, ip, pc}                      |     __asm ("stmdaeq r8, {r0, r1, r3, r4, r6, r7, sl, fp, ip, pc}");
    0x08027250 mov r0, r4                                                                |     r0 = r4;
    0x08027254 stmdaeq r1, {r2, r3, r4, r5, r8, sb, lr, pc}                              |     __asm ("stmdaeq r1, {r2, r3, r4, r5, r8, sb, lr, pc}");
    0x08027258 cmp r0, 0                                                                 |     
                                                                                         |     if (r0 != 0) {
    0x0802725c beq 0x80272e8                                                             |         
                                                                                         | label_20:
    0x08027260 add r0, r0, 0xe                                                           |         r0 += 0xe;
                                                                                         | label_22:
    0x08027264 cmp r0, 0xe                                                               |         
                                                                                         |         if (r0 < 0xe) {
    0x08027268 bls 0x8027880                                                             |             goto label_26;
                                                                                         |         }
                                                                                         | label_1:
    0x0802726c mov r6, 2                                                                 |         r6 = 2;
                                                                                         | label_6:
    0x08027270 ldr r0, [sp, 0xc]                                                         |         r0 = var_ch;
    0x08027274 stmdaeq r8, {r0, r1, r2, r4, r6, r7, sl, fp, ip, pc}                      |         __asm ("stmdaeq r8, {r0, r1, r2, r4, r6, r7, sl, fp, ip, pc}");
    0x08027278 mov r3, sp                                                                |         r3 = sp;
    0x0802727c bic r3, r3, 0x1fc0                                                        |         r3 = BIT_MASK (r3, 0x1fc0);
    0x08027280 ldr r0, [r4, 0x1c]                                                        |         r0 = *((r4 + 0x1c));
    0x08027284 bic r3, r3, 0x3f                                                          |         r3 = BIT_MASK (r3, 0x3f);
    0x08027288 ldr r2, [r3, 4]                                                           |         r2 = *((r3 + 4));
    0x0802728c add r2, r2, 1                                                             |         r2++;
    0x08027290 str r2, [r3, 4]                                                           |         *((r3 + 4)) = r2;
    0x08027294 ldr r3, [r0, 0x1a0]                                                       |         r3 = *((r0 + 0x1a0));
    0x08027298 cmp r3, 0                                                                 |         
                                                                                         |         if (r3 != 0) {
    0x0802729c bne 0x8027840                                                             |             goto label_27;
                                                                                         |         }
    0x080272a0 mrs r1, apsr                                                              |         r1 = apsr;
    0x080272a4 cpsid i                                                                   |         __asm ("cpsid i");
    0x080272a8 ldr r2, [r0, 0x1b8]                                                       |         r2 = *((r0 + 0x1b8));
    0x080272ac ldr r3, [r2]                                                              |         r3 = *(r2);
    0x080272b0 sub r3, r3, 1                                                             |         r3--;
    0x080272b4 str r3, [r2]                                                              |         *(r2) = r3;
    0x080272b8 msr cpsr_c, r1                                                            |         cpsr_c = r1;
                                                                                         | label_17:
    0x080272bc mov r3, sp                                                                |         r3 = sp;
    0x080272c0 bic r3, r3, 0x1fc0                                                        |         r3 = BIT_MASK (r3, 0x1fc0);
    0x080272c4 bic r3, r3, 0x3f                                                          |         r3 = BIT_MASK (r3, 0x3f);
    0x080272c8 ldr r2, [r3, 4]                                                           |         r2 = *((r3 + 4));
    0x080272cc sub r2, r2, 1                                                             |         r2--;
    0x080272d0 str r2, [r3, 4]                                                           |         *((r3 + 4)) = r2;
    0x080272d4 cmp r2, 0                                                                 |         
                                                                                         |         if (r2 == 0) {
    0x080272d8 beq 0x8027548                                                             |             goto label_28;
                                                                                         |         }
                                                                                         | label_4:
    0x080272dc mov r0, r6                                                                |         r0 = r6;
    0x080272e0 add sp, sp, 0x24                                                          |         
    0x080272e4 pop {r4, r5, r6, r7, r8, sb, sl, fp, pc}                                  |         
                                                                                         |     }
    0x080272e8 mov r0, r4                                                                |     r0 = r4;
    0x080272ec stmdaeq r0, {r3, r4, r5, r6, r7, fp, ip, sp}                              |     __asm ("stmdaeq r0, {r3, r4, r5, r6, r7, fp, ip, sp}");
    0x080272f0 tst r0, 1                                                                 |     
                                                                                         |     if ((r0 & 1) != 0) {
    0x080272f4 bne 0x8027490                                                             |         goto label_10;
                                                                                         |     }
    0x080272f8 ldr r0, [r4, 0x1c]                                                        |     r0 = *((r4 + 0x1c));
    0x080272fc ldr r3, [r0, 0x1f8]                                                       |     r3 = *((r0 + 0x1f8));
    0x08027300 ldr r3, [r3, 0x4c]                                                        |     r3 = *((r3 + 0x4c));
    0x08027304 tst r3, 0x8000000                                                         |     
                                                                                         |     if ((r3 & loc.imp.fs_overflowgid) != 0) {
    0x08027308 beq 0x8027318                                                             |         
    0x0802730c bl 0x801c9f8                                                              |         r0 = ext4_nonda_switch ();
    0x08027310 cmp r0, 0                                                                 |         
                                                                                         |         if (r0 == 0) {
    0x08027314 beq 0x8027894                                                             |             goto label_29;
                                                                                         |         }
                                                                                         |     }
    0x08027318 ldr r3, [r7, 4]                                                           |     r3 = *((r7 + 4));
                                                                                         |     if (r0 != 0) {
    0x0802731c andeq r0, r0, r1                                                          |         r0 &= r1;
                                                                                         |     }
                                                                                         |     if (r0 != 0) {
    0x08027320 andeq sp, r0, r0, lsl 28                                                  |         
                                                                                         |     }
                                                                                         |     if (r0 != 0) {
    0x08027324 andeq r0, r0, r0                                                          |         r0 &= r0;
                                                                                         |     }
                                                                                         |     if (r0 != 0) {
    0x08027328 andeq r0, r0, r0                                                          |         r0 &= r0;
                                                                                         |     }
    0x0802732c invalid                                                                   |     
                                                                                         |     if (r0 != 0) {
    0x08027330 andeq r0, r0, r8                                                          |         r0 &= r8;
                                                                                         |     }
                                                                                         |     if (r0 == 0) {
                                                                                         | label_9:
    0x08027334 strne r0, [r0, r0]                                                        |         *((r0 + r0)) = r0;
                                                                                         |     }
                                                                                         |     if (r0 > 0) {
    0x08027338 ldrls pc, [r1, -0x800]!                                                   |         pc = *((r1 -= 0x800));
                                                                                         |     }
                                                                                         | label_8:
    0x0802733c rsbseq r1, r6, 0xe5                                                       |     __asm ("rsbseq r1, r6, 0xe5");
    0x08027340 bic r3, r3, 8, 26                                                         |     r3 = BIT_MASK (r3, 8);
    0x08027344 bic r3, r3, 0x3f                                                          |     r3 = BIT_MASK (r3, 0x3f);
    0x08027348 ldr r2, [r3, 4]                                                           |     r2 = *((r3 + 4));
    0x0802734c add r2, r2, 1                                                             |     r2++;
    0x08027350 str r2, [r3, 4]                                                           |     *((r3 + 4)) = r2;
    0x08027354 ldr r6, [r4, 0x38]                                                        |     r6 = *((r4 + 0x38));
    0x08027358 ldr r5, [r4, 0x3c]                                                        |     r5 = *((r4 + 0x3c));
    0x0802735c ldr r2, [r3, 4]                                                           |     r2 = *((r3 + 4));
    0x08027360 sub r2, r2, 1                                                             |     r2--;
    0x08027364 str r2, [r3, 4]                                                           |     *((r3 + 4)) = r2;
    0x08027368 cmp r2, 0                                                                 |     
                                                                                         |     if (r2 == 0) {
    0x0802736c beq 0x8027868                                                             |         goto label_30;
                                                                                         |     }
                                                                                         | label_18:
    0x08027370 ldr r3, [r7, 0xc]                                                         |     r3 = *((r7 + 0xc));
    0x08027374 cmp r3, fp                                                                |     
                                                                                         |     if (r3 != fp) {
    0x08027378 bne 0x8027730                                                             |         goto label_31;
                                                                                         |     }
    0x0802737c ldr r3, [r7, 0x10]                                                        |     r3 = *((r7 + 0x10));
    0x08027380 mov r1, 0                                                                 |     r1 = 0;
    0x08027384 lsl r2, r3, 0xc                                                           |     r2 = r3 << 0xc;
    0x08027388 cmp r6, r2                                                                |     
    0x0802738c lsr r2, r3, 0x14                                                          |     r2 = r3 >> 0x14;
    0x08027390 sbcs r2, r5, r2                                                           |     __asm ("sbcs r2, r5, r2");
                                                                                         |     if (r6 < r2) {
    0x08027394 blt 0x8027730                                                             |         goto label_31;
                                                                                         |     }
    0x08027398 lsr r2, r6, 0xc                                                           |     r2 = r6 >> 0xc;
    0x0802739c orr r2, r2, r5, lsl 20                                                    |     r2 |= (r5 << 20);
    0x080273a0 asr r5, r5, 0xc                                                           |     r5 >>= 0xc;
    0x080273a4 cmp r5, r1                                                                |     
    0x080273a8 cmpeq r2, r3                                                              |     __asm ("cmpeq r2, r3");
    0x080273ac ldr r3, [r7]                                                              |     r3 = *(r7);
    0x080273b0 ubfxeq r0, r6, 0, 0xc                                                     |     __asm ("ubfxeq r0, r6, 0, 0xc");
                                                                                         |     if (r5 == r1) {
    0x080273b4 movne r0, 0x1000                                                          |         r0 = 0x1000;
                                                                                         |     }
    0x080273b8 tst r3, 0x2000                                                            |     
                                                                                         |     if ((r3 & 0x2000) == 0) {
    0x080273bc beq 0x8027428                                                             |         goto label_32;
                                                                                         |     }
    0x080273c0 ldr r2, [r7]                                                              |     r2 = *(r7);
    0x080273c4 mvn r2, r2, lsr 13                                                        |     r2 = ~r2;
    0x080273c8 ands r2, r2, 1                                                            |     r2 &= 1;
                                                                                         |     if (r2 != r2) {
    0x080273cc bne 0x802787c                                                             |         goto label_33;
                                                                                         |     }
    0x080273d0 ldr r5, [r7, 0x14]                                                        |     r5 = *((r7 + 0x14));
    0x080273d4 mov r1, r5                                                                |     r1 = r5;
    0x080273d8 ldr ip, [r5, 0x18]                                                        |     ip = *((r5 + 0x18));
    0x080273dc b 0x80273f0                                                               |     
                                                                                         |     while (lr != 0) {
                                                                                         | label_0:
    0x080273e0 cmp r5, r1                                                                |         
                                                                                         |         if (r5 == r1) {
    0x080273e4 orrne r3, r3, 1                                                           |             r3 |= 1;
                                                                                         |         }
    0x080273e8 cmp r3, 0                                                                 |         
                                                                                         |         if (r3 == 0) {
    0x080273ec beq 0x80278d8                                                             |             goto label_34;
                                                                                         |         }
    0x080273f0 mov r6, r2                                                                |         r6 = r2;
    0x080273f4 adds r2, r2, ip                                                           |         r2 += ip;
                                                                                         |         if (r2 != r2) {
    0x080273f8 moveq r3, 1                                                               |             r3 = 1;
                                                                                         |         }
                                                                                         |         if (r2 == r2) {
    0x080273fc movne r3, 0                                                               |             r3 = 0;
                                                                                         |         }
    0x08027400 cmp r0, r6                                                                |         
                                                                                         |         if (r0 <= r6) {
    0x08027404 movhi lr, r3                                                              |             lr = r3;
                                                                                         |         }
                                                                                         |         if (r0 > r6) {
    0x08027408 orrls lr, r3, 1                                                           |             lr = r3 | 1;
                                                                                         |         }
    0x0802740c cmp lr, 0                                                                 |         
    0x08027410 mov lr, r1                                                                |         lr = r1;
    0x08027414 ldr r1, [r1, 4]                                                           |         r1 = *((r1 + 4));
    0x08027418 bne 0x80273e0                                                             |         
                                                                                         |     }
    0x0802741c ldr lr, [lr]                                                              |     
    0x08027420 tst lr, 0x10                                                              |     
                                                                                         |     if ((lr & 0x10) != 0) {
    0x08027424 bne 0x80273e0                                                             |         goto label_0;
                                                                                         |     }
                                                                                         | label_32:
    0x08027428 mov r0, r7                                                                |     r0 = r7;
    0x0802742c stmdaeq r8, {r0, r1, r2, r5, r6, sb, sl, fp, ip, pc}                      |     __asm ("stmdaeq r8, {r0, r1, r2, r5, r6, sb, sl, fp, ip, pc}");
    0x08027430 ldr r3, [r4, 0x1c]                                                        |     r3 = *((r4 + 0x1c));
    0x08027434 ldr r3, [r3, 0x1f8]                                                       |     r3 = *((r3 + 0x1f8));
    0x08027438 ldr r3, [r3, 0x4c]                                                        |     r3 = *((r3 + 0x4c));
    0x0802743c tst r3, 0x400000                                                          |     
                                                                                         |     if ((r3 & 0x400000) == 0) {
    0x08027440 beq 0x8027700                                                             |         goto label_35;
                                                                                         |     }
    0x08027444 ldrh r3, [r4]                                                             |     r3 = *(r4);
    0x08027448 and r3, r3, 0xf000                                                        |     r3 &= 0xf000;
    0x0802744c cmp r3, 0x8000                                                            |     
                                                                                         |     if (r3 != 0x8000) {
    0x08027450 bne 0x8027700                                                             |         goto label_35;
                                                                                         |     }
    0x08027454 ldr r3, [r4, -0x6c]                                                       |     r3 = *((r4 - 0x6c));
    0x08027458 tst r3, 0x80000                                                           |     
                                                                                         |     if ((r3 & 0x80000) == 0) {
    0x0802745c beq 0x8027700                                                             |         goto label_35;
                                                                                         |     }
    0x08027460 mov r0, r4                                                                |     r0 = r4;
    0x08027464 stmdaeq r0, {r3, r4, r5, r6, r7, fp, ip, sp}                              |     __asm ("stmdaeq r0, {r3, r4, r5, r6, r7, fp, ip, sp}");
    0x08027468 tst r0, 1                                                                 |     
                                                                                         |     if ((r0 & 1) != 0) {
    0x0802746c bne 0x8027700                                                             |         goto label_35;
                                                                                         |     }
    0x08027470 ldr r3, [r4, 0x1c]                                                        |     r3 = *((r4 + 0x1c));
    0x08027474 ldr r3, [r3, 0x1f8]                                                       |     r3 = *((r3 + 0x1f8));
    0x08027478 ldr r3, [r3, 0x4c]                                                        |     r3 = *((r3 + 0x4c));
    0x0802747c tst r3, 0x8000000                                                         |     
                                                                                         |     if ((r3 & loc.imp.fs_overflowgid) == 0) {
    0x08027480 beq 0x8027700                                                             |         goto label_35;
                                                                                         |     }
    0x08027484 stmdaeq r1, {r2, r5, r7, sb, sl, ip, sp, lr, pc}                          |     __asm ("stmdaeq r1, {r2, r5, r7, sb, sl, ip, sp, lr, pc}");
    0x08027488 stmdaeq r1, {r2, r5, r7, sb, sl, ip, sp, lr, pc}                          |     __asm ("stmdaeq r1, {r2, r5, r7, sb, sl, ip, sp, lr, pc}");
    0x0802748c str r3, [sp, 0x14]                                                        |     var_14h = r3;
                                                                                         | label_10:
    0x08027490 mov r3, sp                                                                |     r3 = sp;
    0x08027494 str r8, [sp, 0x10]                                                        |     var_10h = r8;
    0x08027498 bic sl, r3, 0x1fc0                                                        |     sl = BIT_MASK (r3, 0x1fc0);
    0x0802749c bic sl, sl, 0x3f                                                          |     sl = BIT_MASK (sl, 0x3f);
                                                                                         | label_2:
    0x080274a0 mov r0, r4                                                                |     r0 = r4;
    0x080274a4 stmdaeq r2, {r2, r4, r6, sb, fp, ip}                                      |     __asm ("stmdaeq r2, {r2, r4, r6, sb, fp, ip}");
    0x080274a8 mov r3, r0                                                                |     r3 = r0;
    0x080274ac ldr r0, [r4, 0x1c]                                                        |     r0 = *((r4 + 0x1c));
    0x080274b0 mov ip, 0                                                                 |     
    0x080274b4 mov r2, 2                                                                 |     r2 = 2;
    0x080274b8 ldr r1, [r0, 0x1f8]                                                       |     r1 = *((r0 + 0x1f8));
    0x080274bc ldr r1, [r1, 0x2c]                                                        |     r1 = *((r1 + 0x2c));
    0x080274c0 str ip, [sp]                                                              |     *(sp) = ip;
    0x080274c4 lsl r1, r1, 3                                                             |     r1 <<= 3;
    0x080274c8 str r1, [sp, 4]                                                           |     var_4h = r1;
    0x080274cc movw r1, 0x17fa                                                           |     r1 = 0x17fa;
    0x080274d0 stmdaeq r0, {r2, r3, r7, r8, fp, ip, sp}                                  |     __asm ("stmdaeq r0, {r2, r3, r7, r8, fp, ip, sp}");
    0x080274d4 mov r5, r0                                                                |     r5 = r0;
    0x080274d8 cmn r0, 0x1000                                                            |     
                                                                                         |     if (r0 > 0x1000) {
    0x080274dc bhi 0x802726c                                                             |         goto label_1;
                                                                                         |     }
    0x080274e0 mov r0, r4                                                                |     r0 = r4;
    0x080274e4 stmdaeq r0, {r3, r4, r5, r6, r7, fp, ip, sp}                              |     __asm ("stmdaeq r0, {r3, r4, r5, r6, r7, fp, ip, sp}");
    0x080274e8 tst r0, 1                                                                 |     
                                                                                         |     if ((r0 & 1) != 0) {
    0x080274ec bne 0x8027564                                                             |         goto label_36;
                                                                                         |     }
    0x080274f0 ldr r2, [sp, 0x14]                                                        |     r2 = var_14h;
    0x080274f4 mov r0, sb                                                                |     r0 = sb;
    0x080274f8 ldr r1, [sp, 0x10]                                                        |     r1 = var_10h;
    0x080274fc stmdaeq r8, {r0, r1, r7, r8, sb, sl, fp, ip, pc}                          |     __asm ("stmdaeq r8, {r0, r1, r7, r8, sb, sl, fp, ip, pc}");
    0x08027500 mov r8, r0                                                                |     r8 = r0;
                                                                                         | label_12:
    0x08027504 ldr r0, [pc, 0x3e4]                                                       |     r0 = *(0x80278ec);
    0x08027508 mov r2, r5                                                                |     r2 = r5;
    0x0802750c movw r1, 0x1826                                                           |     r1 = 0x1826;
    0x08027510 stmdaeq r0, {r5, r7, sb, fp, ip, sp}                                      |     __asm ("stmdaeq r0, {r5, r7, sb, fp, ip, sp}");
    0x08027514 cmn r8, 0x1c                                                              |     
                                                                                         |     if (r8 != 0x1c) {
    0x08027518 bne 0x80278e8                                                             |         goto label_37;
                                                                                         |     }
    0x0802751c ldr r0, [r4, 0x1c]                                                        |     r0 = *((r4 + 0x1c));
    0x08027520 add r1, sp, 0x1c                                                          |     r1 += var_1ch;
    0x08027524 stmdaeq r0, {r2, r3, r6, fp}                                              |     __asm ("stmdaeq r0, {r2, r3, r6, fp}");
    0x08027528 cmp r0, 0                                                                 |     
                                                                                         |     if (r0 != 0) {
    0x0802752c bne 0x80274a0                                                             |         goto label_2;
                                                                                         |     }
    0x08027530 b 0x802726c                                                               |     goto label_1;
                                                                                         | label_25:
    0x08027534 ldr r3, [r3]                                                              |     r3 = *(r3);
    0x08027538 tst r3, 2                                                                 |     
                                                                                         |     if ((r3 & 2) == 0) {
    0x0802753c beq 0x8027238                                                             |         goto label_3;
                                                                                         |     }
    0x08027540 stmdaeq r8, {r0, r1, r6, sl, fp, ip, pc}                                  |     __asm ("stmdaeq r8, {r0, r1, r6, sl, fp, ip, pc}");
    0x08027544 b 0x8027238                                                               |     goto label_3;
                                                                                         | label_28:
    0x08027548 ldr r3, [r3]                                                              |     r3 = *(r3);
    0x0802754c tst r3, 2                                                                 |     
                                                                                         |     if ((r3 & 2) == 0) {
    0x08027550 beq 0x80272dc                                                             |         goto label_4;
                                                                                         |     }
    0x08027554 stmdaeq r8, {r0, r1, r6, sl, fp, ip, pc}                                  |     __asm ("stmdaeq r8, {r0, r1, r6, sl, fp, ip, pc}");
    0x08027558 mov r0, r6                                                                |     r0 = r6;
    0x0802755c add sp, sp, 0x24                                                          |     
    0x08027560 pop {r4, r5, r6, r7, r8, sb, sl, fp, pc}                                  |     
                                                                                         | label_36:
    0x08027564 ldr r3, [r7, 4]                                                           |     r3 = *((r7 + 4));
    0x08027568 tst r3, 1                                                                 |     
                                                                                         |     if ((r3 & 1) == 0) {
    0x0802756c subne r3, r3, 1                                                           |         r3--;
                                                                                         |     }
                                                                                         |     if ((r3 & 1) != 0) {
    0x08027570 moveq r3, r7                                                              |         r3 = r7;
                                                                                         |     }
    0x08027574 ldr r2, [r3]                                                              |     r2 = *(r3);
    0x08027578 tst r2, 1                                                                 |     
                                                                                         |     if ((r2 & 1) != 0) {
    0x0802757c bne 0x80276d0                                                             |         goto label_38;
                                                                                         |     }
    0x08027580 pld [r3]                                                                  |     __asm ("pld [r3]");
                                                                                         |     do {
    0x08027584 ldrex r2, [r3]                                                            |         __asm ("ldrex r2, [r3]");
    0x08027588 orr r1, r2, 1                                                             |         r1 = r2 | 1;
    0x0802758c strex r0, r1, [r3]                                                        |         __asm ("strex r0, r1, [r3]");
    0x08027590 teq r0, 0                                                                 |         __asm ("teq r0, 0");
    0x08027594 bne 0x8027584                                                             |         
                                                                                         |     } while ((r2 & 1) != 0);
    0x08027598 tst r2, 1                                                                 |     
                                                                                         |     if ((r2 & 1) != 0) {
    0x0802759c bne 0x80276d0                                                             |         goto label_38;
                                                                                         |     }
                                                                                         | label_7:
    0x080275a0 ldr r3, [sl, 4]                                                           |     r3 = *((sl + 4));
    0x080275a4 add r3, r3, 1                                                             |     r3++;
    0x080275a8 str r3, [sl, 4]                                                           |     *((sl + 4)) = r3;
    0x080275ac ldr r6, [r4, 0x38]                                                        |     r6 = *((r4 + 0x38));
    0x080275b0 ldr r8, [r4, 0x3c]                                                        |     r8 = *((r4 + 0x3c));
    0x080275b4 ldr r2, [sl, 4]                                                           |     r2 = *((sl + 4));
    0x080275b8 sub r2, r2, 1                                                             |     r2--;
    0x080275bc str r2, [sl, 4]                                                           |     *((sl + 4)) = r2;
    0x080275c0 cmp r2, 0                                                                 |     
                                                                                         |     if (r2 == 0) {
    0x080275c4 beq 0x8027710                                                             |         goto label_39;
                                                                                         |     }
                                                                                         | label_11:
    0x080275c8 ldr r2, [r7, 0xc]                                                         |     r2 = *((r7 + 0xc));
    0x080275cc cmp r2, fp                                                                |     
                                                                                         |     if (r2 != fp) {
    0x080275d0 bne 0x80278d0                                                             |         goto label_40;
                                                                                         |     }
    0x080275d4 ldr r2, [r7, 0x10]                                                        |     r2 = *((r7 + 0x10));
    0x080275d8 mov ip, 0                                                                 |     
    0x080275dc lsl r0, r2, 0xc                                                           |     r0 = r2 << 0xc;
    0x080275e0 cmp r6, r0                                                                |     
    0x080275e4 lsr r0, r2, 0x14                                                          |     r0 = r2 >> 0x14;
    0x080275e8 sbcs r0, r8, r0                                                           |     __asm ("sbcs r0, r8, r0");
                                                                                         |     if (r6 < r0) {
    0x080275ec blt 0x80278d0                                                             |         goto label_40;
                                                                                         |     }
    0x080275f0 lsr r0, r6, 0xc                                                           |     r0 = r6 >> 0xc;
    0x080275f4 asr r3, r8, 0xc                                                           |     r3 = r8 >> 0xc;
    0x080275f8 orr r0, r0, r8, lsl 20                                                    |     r0 |= (r8 << 20);
    0x080275fc cmp r3, ip                                                                |     
    0x08027600 cmpeq r0, r2                                                              |     __asm ("cmpeq r0, r2");
    0x08027604 mov r0, r7                                                                |     r0 = r7;
    0x08027608 stmdaeq r1, {r3, r5, r6, r7, sb, ip, sp, lr, pc}                          |     __asm ("stmdaeq r1, {r3, r5, r6, r7, sb, ip, sp, lr, pc}");
    0x0802760c stmdaeq r1, {r3, r5, r6, r7, sb, ip, sp, lr, pc}                          |     __asm ("stmdaeq r1, {r3, r5, r6, r7, sb, ip, sp, lr, pc}");
    0x08027610 ubfxeq r6, r6, 0, 0xc                                                     |     __asm ("ubfxeq r6, r6, 0, 0xc");
                                                                                         |     if (r3 == ip) {
    0x08027614 movne r6, 0x1000                                                          |         r6 = 0x1000;
                                                                                         |     }
    0x08027618 str r3, [sp, 4]                                                           |     var_4h = r3;
    0x0802761c mov r2, 0                                                                 |     r2 = 0;
    0x08027620 str r6, [sp]                                                              |     *(sp) = r6;
    0x08027624 mov r3, 0                                                                 |     r3 = 0;
    0x08027628 stmdaeq r8, {r0, r1, r2, r3, r5, r6, sb, sl, fp, ip, pc}                  |     __asm ("stmdaeq r8, {r0, r1, r2, r3, r5, r6, sb, sl, fp, ip, pc}");
    0x0802762c subs r8, r0, 0                                                            |     r8 = r0 - 0;
                                                                                         |     if (r8 != r0) {
    0x08027630 bne 0x8027724                                                             |         goto label_41;
                                                                                         |     }
    0x08027634 ldr sb, [r7]                                                              |     sb = *(r7);
    0x08027638 mvn sb, sb, lsr 13                                                        |     sb = ~sb;
    0x0802763c ands sb, sb, 1                                                            |     sb &= 1;
                                                                                         |     if (sb != sb) {
    0x08027640 bne 0x802787c                                                             |         goto label_33;
                                                                                         |     }
    0x08027644 ldr sl, [r7, 0x14]                                                        |     sl = *((r7 + 0x14));
    0x08027648 str r4, [sp, 0x10]                                                        |     var_10h = r4;
    0x0802764c mov fp, sl                                                                |     
    0x08027650 mov r4, sl                                                                |     r4 = sl;
    0x08027654 ldr r3, [sl, 0x18]                                                        |     r3 = *((sl + 0x18));
    0x08027658 mov sl, r3                                                                |     sl = r3;
    0x0802765c b 0x8027670                                                               |     
                                                                                         |     while (r2 != 0) {
                                                                                         | label_5:
    0x08027660 cmp fp, r4                                                                |         
                                                                                         |         if (fp == r4) {
    0x08027664 orrne r8, r8, 1                                                           |             r8 |= 1;
                                                                                         |         }
    0x08027668 cmp r8, 0                                                                 |         
                                                                                         |         if (r8 == 0) {
    0x0802766c beq 0x8027740                                                             |             goto label_42;
                                                                                         |         }
    0x08027670 mov r0, sb                                                                |         r0 = sb;
    0x08027674 adds sb, sb, sl                                                           |         sb += sl;
    0x08027678 mov r1, r4                                                                |         r1 = r4;
    0x0802767c ldr r4, [r4, 4]                                                           |         r4 = *((r4 + 4));
                                                                                         |         if (sb != sb) {
    0x08027680 moveq r8, 1                                                               |             r8 = 1;
                                                                                         |         }
                                                                                         |         if (sb == sb) {
    0x08027684 movne r8, 0                                                               |             r8 = 0;
                                                                                         |         }
    0x08027688 cmp r6, r0                                                                |         
                                                                                         |         if (r6 <= r0) {
    0x0802768c movhi r2, r8                                                              |             r2 = r8;
                                                                                         |         }
                                                                                         |         if (r6 > r0) {
    0x08027690 orrls r2, r8, 1                                                           |             r2 = r8 | 1;
                                                                                         |         }
    0x08027694 cmp r2, 0                                                                 |         
    0x08027698 bne 0x8027660                                                             |         
                                                                                         |     }
    0x0802769c mov r0, r5                                                                |     r0 = r5;
    0x080276a0 stmdaeq r2, {r3, r6, r7, r8}                                              |     __asm ("stmdaeq r2, {r3, r6, r7, r8}");
    0x080276a4 cmp r0, 0                                                                 |     
                                                                                         |     if (r0 == 0) {
    0x080276a8 beq 0x8027660                                                             |         goto label_5;
                                                                                         |     }
                                                                                         | label_14:
    0x080276ac ldr r4, [sp, 0x10]                                                        |     r4 = var_10h;
                                                                                         | label_15:
    0x080276b0 mov r6, 2                                                                 |     r6 = 2;
                                                                                         | label_21:
    0x080276b4 mov r0, r7                                                                |     r0 = r7;
    0x080276b8 stmdaeq r8, {r0, r1, r2, r5, r6, sb, sl, fp, ip, pc}                      |     __asm ("stmdaeq r8, {r0, r1, r2, r5, r6, sb, sl, fp, ip, pc}");
    0x080276bc mov r2, r5                                                                |     r2 = r5;
    0x080276c0 movw r1, 0x1831                                                           |     r1 = 0x1831;
    0x080276c4 ldr r0, [pc, 0x224]                                                       |     r0 = *(0x80278ec);
    0x080276c8 stmdaeq r0, {r5, r7, sb, fp, ip, sp}                                      |     __asm ("stmdaeq r0, {r5, r7, sb, fp, ip, sp}");
    0x080276cc b 0x8027270                                                               |     goto label_6;
                                                                                         | label_38:
    0x080276d0 mov r0, r7                                                                |     r0 = r7;
    0x080276d4 stmdaeq r8, {r0, r1, r4, r6, r7, sb, sl, fp, ip, pc}                      |     __asm ("stmdaeq r8, {r0, r1, r4, r6, r7, sb, sl, fp, ip, pc}");
    0x080276d8 b 0x80275a0                                                               |     goto label_7;
    0x080276dc pld [r3]                                                                  |     __asm ("pld [r3]");
                                                                                         |     do {
    0x080276e0 ldrex r2, [r3]                                                            |         __asm ("ldrex r2, [r3]");
    0x080276e4 orr r1, r2, 1                                                             |         r1 = r2 | 1;
    0x080276e8 strex r0, r1, [r3]                                                        |         __asm ("strex r0, r1, [r3]");
    0x080276ec teq r0, 0                                                                 |         __asm ("teq r0, 0");
    0x080276f0 bne 0x80276e0                                                             |         
                                                                                         |     } while (r0 != 0);
    0x080276f4 tst r2, 1                                                                 |     
                                                                                         |     if ((r2 & 1) == 0) {
    0x080276f8 beq 0x802733c                                                             |         goto label_8;
                                                                                         |     }
    0x080276fc b 0x8027334                                                               |     goto label_9;
                                                                                         | label_35:
    0x08027700 stmdaeq r1, {r3, r5, r6, r7, sb, ip, sp, lr, pc}                          |     __asm ("stmdaeq r1, {r3, r5, r6, r7, sb, ip, sp, lr, pc}");
    0x08027704 stmdaeq r1, {r3, r5, r6, r7, sb, ip, sp, lr, pc}                          |     __asm ("stmdaeq r1, {r3, r5, r6, r7, sb, ip, sp, lr, pc}");
    0x08027708 str r3, [sp, 0x14]                                                        |     var_14h = r3;
    0x0802770c b 0x8027490                                                               |     goto label_10;
                                                                                         | label_39:
    0x08027710 ldr r2, [sl]                                                              |     r2 = *(sl);
    0x08027714 tst r2, 2                                                                 |     
                                                                                         |     if ((r2 & 2) == 0) {
    0x08027718 beq 0x80275c8                                                             |         goto label_11;
                                                                                         |     }
    0x0802771c stmdaeq r8, {r0, r1, r6, sl, fp, ip, pc}                                  |     __asm ("stmdaeq r8, {r0, r1, r6, sl, fp, ip, pc}");
    0x08027720 b 0x80275c8                                                               |     goto label_11;
                                                                                         | label_41:
    0x08027724 mov r0, r7                                                                |     r0 = r7;
    0x08027728 stmdaeq r8, {r0, r1, r2, r5, r6, sb, sl, fp, ip, pc}                      |     __asm ("stmdaeq r8, {r0, r1, r2, r5, r6, sb, sl, fp, ip, pc}");
    0x0802772c b 0x8027504                                                               |     goto label_12;
                                                                                         | label_31:
    0x08027730 mov r0, r7                                                                |     r0 = r7;
    0x08027734 mov r6, 0x100                                                             |     r6 = 0x100;
    0x08027738 stmdaeq r8, {r0, r1, r2, r5, r6, sb, sl, fp, ip, pc}                      |     __asm ("stmdaeq r8, {r0, r1, r2, r5, r6, sb, sl, fp, ip, pc}");
    0x0802773c b 0x8027270                                                               |     goto label_6;
                                                                                         | label_42:
    0x08027740 ldr r3, [r7]                                                              |     r3 = *(r7);
    0x08027744 ldr r4, [sp, 0x10]                                                        |     r4 = var_10h;
    0x08027748 mvn r3, r3, lsr 13                                                        |     r3 = ~r3;
    0x0802774c ands fp, r3, 1                                                            |     
                                                                                         |     if (fp != r3) {
    0x08027750 bne 0x802787c                                                             |         goto label_33;
                                                                                         |     }
    0x08027754 ldr ip, [r7, 0x14]                                                        |     ip = *((r7 + 0x14));
    0x08027758 str r4, [sp, 0x10]                                                        |     var_10h = r4;
    0x0802775c mov sb, ip                                                                |     sb = ip;
    0x08027760 mov r4, ip                                                                |     r4 = ip;
    0x08027764 ldr sl, [ip, 0x18]                                                        |     sl = *((ip + 0x18));
    0x08027768 b 0x802777c                                                               |     
                                                                                         |     while (r2 != 0) {
                                                                                         | label_13:
    0x0802776c cmp sb, r4                                                                |         
                                                                                         |         if (sb == r4) {
    0x08027770 orrne r8, r8, 1                                                           |             r8 |= 1;
                                                                                         |         }
    0x08027774 cmp r8, 0                                                                 |         
                                                                                         |         if (r8 == 0) {
    0x08027778 beq 0x80277bc                                                             |             goto label_43;
                                                                                         |         }
    0x0802777c mov r0, fp                                                                |         r0 = fp;
    0x08027780 adds fp, fp, sl                                                           |         
    0x08027784 mov r1, r4                                                                |         r1 = r4;
    0x08027788 ldr r4, [r4, 4]                                                           |         r4 = *((r4 + 4));
                                                                                         |         if (fp != fp) {
    0x0802778c moveq r8, 1                                                               |             r8 = 1;
                                                                                         |         }
                                                                                         |         if (fp == fp) {
    0x08027790 movne r8, 0                                                               |             r8 = 0;
                                                                                         |         }
    0x08027794 cmp r6, r0                                                                |         
                                                                                         |         if (r6 <= r0) {
    0x08027798 movhi r2, r8                                                              |             r2 = r8;
                                                                                         |         }
                                                                                         |         if (r6 > r0) {
    0x0802779c orrls r2, r8, 1                                                           |             r2 = r8 | 1;
                                                                                         |         }
    0x080277a0 cmp r2, 0                                                                 |         
    0x080277a4 bne 0x802776c                                                             |         
                                                                                         |     }
    0x080277a8 mov r0, r5                                                                |     r0 = r5;
    0x080277ac bl 0x801cba4                                                              |     r0 = write_end_fn ();
    0x080277b0 cmp r0, 0                                                                 |     
                                                                                         |     if (r0 == 0) {
    0x080277b4 beq 0x802776c                                                             |         goto label_13;
                                                                                         |     }
    0x080277b8 b 0x80276ac                                                               |     goto label_14;
                                                                                         | label_43:
    0x080277bc ldr r4, [sp, 0x10]                                                        |     r4 = var_10h;
    0x080277c0 mov r2, r8                                                                |     r2 = r8;
    0x080277c4 ldr r3, [r7, 0x10]                                                        |     r3 = *((r7 + 0x10));
    0x080277c8 cmp r5, 0x1000                                                            |     
                                                                                         |     if (r5 <= 0x1000) {
    0x080277cc blo 0x80277f4                                                             |         goto label_44;
                                                                                         |     }
    0x080277d0 ldr r1, [r4, 0x170]                                                       |     r1 = *((r4 + 0x170));
    0x080277d4 mov r0, r5                                                                |     r0 = r5;
    0x080277d8 str r2, [sp, 4]                                                           |     var_4h = r2;
    0x080277dc lsl r2, r3, 0xc                                                           |     r2 = r3 << 0xc;
    0x080277e0 str r6, [sp]                                                              |     *(sp) = r6;
    0x080277e4 lsr r3, r3, 0x14                                                          |     r3 >>= 0x14;
    0x080277e8 stmdaeq r8, {r0, r1, r3, r5, r6, r7, sb, sl, fp, ip, pc}                  |     __asm ("stmdaeq r8, {r0, r1, r3, r5, r6, r7, sb, sl, fp, ip, pc}");
    0x080277ec cmp r0, 0                                                                 |     
                                                                                         |     if (r0 != 0) {
    0x080277f0 bne 0x80276b0                                                             |         goto label_15;
                                                                                         |     }
                                                                                         | label_44:
    0x080277f4 mrs r2, apsr                                                              |     r2 = apsr;
    0x080277f8 cpsid i                                                                   |     __asm ("cpsid i");
    0x080277fc ldr r3, [r4, -0x70]                                                       |     r3 = *((r4 - 0x70));
    0x08027800 orr r3, r3, 1                                                             |     r3 |= 1;
    0x08027804 str r3, [r4, -0x70]                                                       |     *((r4 - 0x70)) = r3;
    0x08027808 msr cpsr_c, r2                                                            |     cpsr_c = r2;
    0x0802780c ldr r0, [pc, 0xdc]                                                        |     r0 = *(0x80278ec);
    0x08027810 mov r2, r5                                                                |     r2 = r5;
    0x08027814 movw r1, 0x1826                                                           |     r1 = 0x1826;
    0x08027818 mov r6, 0x200                                                             |     r6 = 0x200;
    0x0802781c stmdaeq r0, {r5, r7, sb, fp, ip, sp}                                      |     __asm ("stmdaeq r0, {r5, r7, sb, fp, ip, sp}");
    0x08027820 b 0x8027270                                                               |     goto label_6;
                                                                                         | label_23:
    0x08027824 mov r6, 2                                                                 |     r6 = 2;
    0x08027828 mov r0, r6                                                                |     r0 = r6;
    0x0802782c add sp, sp, 0x24                                                          |     
    0x08027830 pop {r4, r5, r6, r7, r8, sb, sl, fp, pc}                                  |     
                                                                                         | label_24:
    0x08027834 add r0, r0, 0x1a0                                                         |     r0 += 0x1a0;
    0x08027838 stmdaeq r8, {r0, r1, r4, r6, r7, r8, sl, fp, ip, pc}                      |     __asm ("stmdaeq r8, {r0, r1, r4, r6, r7, r8, sl, fp, ip, pc}");
    0x0802783c b 0x8027218                                                               |     goto label_16;
                                                                                         | label_27:
    0x08027840 mrs r1, apsr                                                              |     r1 = apsr;
    0x08027844 cpsid i                                                                   |     __asm ("cpsid i");
    0x08027848 ldr r2, [r0, 0x1b8]                                                       |     r2 = *((r0 + 0x1b8));
    0x0802784c ldr r3, [r2]                                                              |     r3 = *(r2);
    0x08027850 sub r3, r3, 1                                                             |     r3--;
    0x08027854 str r3, [r2]                                                              |     *(r2) = r3;
    0x08027858 msr cpsr_c, r1                                                            |     cpsr_c = r1;
    0x0802785c add r0, r0, 0x1bc                                                         |     r0 += 0x1bc;
    0x08027860 stmdaeq r8, {r0, r1, r2, r4, r6, r7, r8, sl, fp, ip, pc}                  |     __asm ("stmdaeq r8, {r0, r1, r2, r4, r6, r7, r8, sl, fp, ip, pc}");
    0x08027864 b 0x80272bc                                                               |     goto label_17;
                                                                                         | label_30:
    0x08027868 ldr r3, [r3]                                                              |     r3 = *(r3);
    0x0802786c tst r3, 2                                                                 |     
                                                                                         |     if ((r3 & 2) == 0) {
    0x08027870 beq 0x8027370                                                             |         goto label_18;
                                                                                         |     }
    0x08027874 stmdaeq r8, {r0, r1, r6, sl, fp, ip, pc}                                  |     __asm ("stmdaeq r8, {r0, r1, r6, sl, fp, ip, pc}");
    0x08027878 b 0x8027370                                                               |     goto label_18;
                                                                                         | label_33:
    0x0802787c udf 0x12                                                                  |     __asm ("udf 0x12");
                                                                                         | label_26:
    0x08027880 stmdaeq r5, {r3, r4, r5, r7, r8, sb, sl, pc}                              |     __asm ("stmdaeq r5, {r3, r4, r5, r7, r8, sb, sl, pc}");
    0x08027884 stmdaeq r5, {r3, r4, r5, r7, r8, sb, sl, pc}                              |     __asm ("stmdaeq r5, {r3, r4, r5, r7, r8, sb, sl, pc}");
    0x08027888 add r3, r3, r0, lsl 2                                                     |     r3 += (r0 << 2);
    0x0802788c ldr r6, [r3, 0x3fc]                                                       |     r6 = *((r3 + 0x3fc));
    0x08027890 b 0x8027270                                                               |     goto label_6;
                                                                                         | label_29:
    0x08027894 stmdaeq r1, {r3, r7, sb, sl, fp, lr, pc}                                  |     __asm ("stmdaeq r1, {r3, r7, sb, sl, fp, lr, pc}");
    0x08027898 stmdaeq r1, {r3, r7, sb, sl, fp, lr, pc}                                  |     __asm ("stmdaeq r1, {r3, r7, sb, sl, fp, lr, pc}");
    0x0802789c b 0x80278b4                                                               |     goto label_45;
                                                                                         | label_19:
    0x080278a0 ldr r0, [r4, 0x1c]                                                        |     r0 = *((r4 + 0x1c));
    0x080278a4 add r1, sp, 0x1c                                                          |     r1 += var_1ch;
    0x080278a8 stmdaeq r0, {r2, r3, r6, fp}                                              |     __asm ("stmdaeq r0, {r2, r3, r6, fp}");
    0x080278ac cmp r0, 0                                                                 |     
                                                                                         |     if (r0 == 0) {
    0x080278b0 beq 0x802726c                                                             |         goto label_1;
                                                                                         |     }
                                                                                         | label_45:
    0x080278b4 mov r2, r5                                                                |     r2 = r5;
    0x080278b8 mov r1, r8                                                                |     r1 = r8;
    0x080278bc mov r0, sb                                                                |     r0 = sb;
    0x080278c0 stmdaeq r8, {r0, r1, r7, r8, sb, sl, fp, ip, pc}                          |     __asm ("stmdaeq r8, {r0, r1, r7, r8, sb, sl, fp, ip, pc}");
    0x080278c4 cmn r0, 0x1c                                                              |     
                                                                                         |     if (r0 == 0x1c) {
    0x080278c8 beq 0x80278a0                                                             |         goto label_19;
                                                                                         |     }
    0x080278cc b 0x8027260                                                               |     goto label_20;
                                                                                         | label_40:
    0x080278d0 mov r6, 0x100                                                             |     r6 = 0x100;
    0x080278d4 b 0x80276b4                                                               |     goto label_21;
                                                                                         | label_34:
    0x080278d8 mov r0, r7                                                                |     r0 = r7;
    0x080278dc mov r6, 0x200                                                             |     r6 = 0x200;
    0x080278e0 stmdaeq r8, {r0, r1, r2, r6, r8, sb, sl, fp, ip, pc}                      |     __asm ("stmdaeq r8, {r0, r1, r2, r6, r8, sb, sl, fp, ip, pc}");
    0x080278e4 b 0x8027270                                                               |     goto label_6;
                                                                                         | label_37:
    0x080278e8 add r0, r8, 0xe                                                           |     r0 = r8 + 0xe;
    0x080278ec b 0x8027264                                                               |     goto label_22;
                                                                                         | }
    ; assembly                                                       | /* r2dec pseudo code output */
                                                                     | /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-80367616.squashfs_v4_le_extract/usr/lib/modules/5.10.52-axis9/kernel/fs/ext4/ext4.ko @ 0x80203b8 */
                                                                     | #include <stdint.h>
                                                                     |  
    ; (fcn) sym.ext4_set_aops ()                                     | void ext4_set_aops (uint32_t arg1) {
                                                                     |     r0 = arg1;
    0x080203b8 push {r4, lr}                                         |     
    0x080203bc mov r4, r0                                            |     r4 = r0;
    0x080203c0 stmdaeq r0, {r3, r4, r5, r6, r7, fp, ip, sp}          |     __asm ("stmdaeq r0, {r3, r4, r5, r6, r7, fp, ip, sp}");
    0x080203c4 sub r3, r0, 2                                         |     r3 = r0 - 2;
    0x080203c8 bics r3, r3, 2                                        |     __asm ("bics r3, r3, 2");
                                                                     |     if (? != ?) {
    0x080203cc beq 0x80203e8                                         |         
    0x080203d0 cmp r0, 1                                             |         
                                                                     |         if (r0 != 1) {
    0x080203d4 bne 0x802040c                                         |             goto label_0;
                                                                     |         }
    0x080203d8 ldr r3, [r4, 0x20]                                    |         r3 = *((r4 + 0x20));
    0x080203dc ldr r2, [pc, 0x2c]                                    |         r2 = $d;
    0x080203e0 str r2, [r3, 0x38]                                    |         *((r3 + 0x38)) = r2;
    0x080203e4 pop {r4, pc}                                          |         
                                                                     |     }
    0x080203e8 ldr r3, [r4, 0x1c]                                    |     r3 = *((r4 + 0x1c));
    0x080203ec ldr r2, [r4, 0x20]                                    |     r2 = *((r4 + 0x20));
    0x080203f0 ldr r3, [r3, 0x1f8]                                   |     r3 = *((r3 + 0x1f8));
    0x080203f4 ldr r3, [r3, 0x4c]                                    |     r3 = *((r3 + 0x4c));
    0x080203f8 tst r3, 0x8000000                                     |     
                                                                     |     if ((r3 & loc.imp.fs_overflowgid) == 0) {
    0x080203fc ldrne r3, [pc, 0x10]                                  |         r3 = loc..LANCHOR0;
                                                                     |     }
                                                                     |     if ((r3 & loc.imp.fs_overflowgid) != 0) {
    0x08020400 ldreq r3, [pc, 0x10]                                  |         r3 = loc..LANCHOR0;
                                                                     |     }
    0x08020404 str r3, [r2, 0x38]                                    |     *((r2 + 0x38)) = r3;
    0x08020408 pop {r4, pc}                                          |     
                                                                     | label_0:
    0x0802040c udf 0x12                                              |     __asm ("udf 0x12");
                                                                     | }
    ; assembly                                                                   | /* r2dec pseudo code output */
                                                                                 | /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-80367616.squashfs_v4_le_extract/usr/lib/modules/5.10.52-axis9/kernel/fs/ext4/ext4.ko @ 0x8019df8 */
                                                                                 | #include <stdint.h>
                                                                                 |  
                                                                                 | #define BIT_MASK(t,v) ((t)(-((v)!= 0)))&(((t)-1)>>((sizeof(t)*CHAR_BIT)-(v)))
                                                                                 |  
    ; (fcn) sym.ext4_try_to_write_inline_data ()                                 | void ext4_try_to_write_inline_data (int32_t arg_60h, int32_t arg_64h, int32_t arg_68h, int32_t arg1, int32_t arg2) {
                                                                                 |     int32_t var_0h;
                                                                                 |     int32_t var_4h;
                                                                                 |     int32_t var_ch;
                                                                                 |     int32_t var_10h;
                                                                                 |     int32_t var_14h;
                                                                                 |     int32_t var_1ch;
                                                                                 |     int32_t var_20h;
                                                                                 |     int32_t var_2ch;
                                                                                 |     int32_t var_3ch;
                                                                                 |     r0 = arg1;
                                                                                 |     r1 = arg2;
    0x08019df8 push {r4, r5, r6, r7, r8, sb, sl, fp, lr}                         |     
    0x08019dfc mov r6, r0                                                        |     r6 = r0;
    0x08019e00 mov r0, r1                                                        |     r0 = r1;
    0x08019e04 sub sp, sp, 0x3c                                                  |     
    0x08019e08 mov r4, r1                                                        |     r4 = r1;
    0x08019e0c ldr r7, [sp, 0x60]                                                |     r7 = *(arg_60h);
    0x08019e10 adds r7, r7, r2                                                   |     r7 += r2;
    0x08019e14 adc r5, r3, 0                                                     |     __asm ("adc r5, r3, 0");
    0x08019e18 stmdaeq r1, {r2, r6, r7, r8, fp, ip, pc}                          |     __asm ("stmdaeq r1, {r2, r6, r7, r8, fp, ip, pc}");
    0x08019e1c cmp r0, r7                                                        |     
    0x08019e20 asr r0, r0, 0x1f                                                  |     r0 >>= 0x1f;
    0x08019e24 sbcs r0, r0, r5                                                   |     __asm ("sbcs r0, r0, r5");
                                                                                 |     if (r0 >= r7) {
    0x08019e28 bge 0x801a0a8                                                     |         goto label_20;
                                                                                 |     }
                                                                                 | label_4:
    0x08019e2c ldr r3, [r4, -0x6c]                                               |     r3 = *((r4 - 0x6c));
    0x08019e30 mov r2, 0                                                         |     r2 = 0;
    0x08019e34 str r2, [sp, 0x1c]                                                |     var_1ch = r2;
    0x08019e38 tst r3, 0x10000000                                                |     
    0x08019e3c bne 0x8019e68                                                     |     
                                                                                 |     while (r3 == r2) {
    0x08019e40 mrs r2, apsr                                                      |         r2 = apsr;
    0x08019e44 cpsid i                                                           |         __asm ("cpsid i");
    0x08019e48 ldr r3, [r4, -0x70]                                               |         r3 = *((r4 - 0x70));
    0x08019e4c bic r3, r3, 0x80                                                  |         r3 = BIT_MASK (r3, 0x80);
    0x08019e50 str r3, [r4, -0x70]                                               |         *((r4 - 0x70)) = r3;
    0x08019e54 msr cpsr_c, r2                                                    |         cpsr_c = r2;
    0x08019e58 mov r5, 0                                                         |         r5 = 0;
                                                                                 | label_0:
    0x08019e5c mov r0, r5                                                        |         r0 = r5;
    0x08019e60 add sp, sp, 0x3c                                                  |         
    0x08019e64 pop {r4, r5, r6, r7, r8, sb, sl, fp, pc}                          |         
    0x08019e68 movw r3, 0x1be                                                    |         r3 = 0x1be;
    0x08019e6c ldrh r3, [r4, r3]                                                 |         r3 = *((r4 + r3));
    0x08019e70 cmp r3, r2                                                        |         
    0x08019e74 beq 0x8019e40                                                     |         
                                                                                 |     }
    0x08019e78 mov r0, r4                                                        |     r0 = r4;
    0x08019e7c stmdaeq r2, {r2, r4, r6, sb, fp, ip}                              |     __asm ("stmdaeq r2, {r2, r4, r6, sb, fp, ip}");
    0x08019e80 mov sb, r0                                                        |     sb = r0;
    0x08019e84 add r1, sp, 0x2c                                                  |     r1 += var_2ch;
    0x08019e88 mov r0, r4                                                        |     r0 = r4;
    0x08019e8c stmdaeq r2, {r4, r5, r6, r8, sb, sl}                              |     __asm ("stmdaeq r2, {r4, r5, r6, r8, sb, sl}");
    0x08019e90 subs r5, r0, 0                                                    |     r5 = r0 - 0;
                                                                                 |     if (r5 == r0) {
    0x08019e94 moveq fp, r5                                                      |         goto label_21;
                                                                                 |     }
                                                                                 |     if (r5 != r0) {
                                                                                 | label_21:
    0x08019e98 bne 0x8019e5c                                                     |         goto label_0;
                                                                                 |     }
                                                                                 | label_7:
    0x08019e9c ldr r0, [r4, 0x1c]                                                |     r0 = *((r4 + 0x1c));
    0x08019ea0 mov r3, sb                                                        |     r3 = sb;
    0x08019ea4 mov r2, 2                                                         |     r2 = 2;
    0x08019ea8 mov r1, 0x228                                                     |     r1 = 0x228;
    0x08019eac ldr ip, [r0, 0x1f8]                                               |     ip = *((r0 + 0x1f8));
    0x08019eb0 ldr ip, [ip, 0x2c]                                                |     ip = *((ip + 0x2c));
    0x08019eb4 str fp, [sp]                                                      |     *(sp) = fp;
    0x08019eb8 lsl ip, ip, 3                                                     |     
    0x08019ebc str ip, [sp, 4]                                                   |     var_4h = ip;
    0x08019ec0 stmdaeq r0, {r2, r3, r7, r8, fp, ip, sp}                          |     __asm ("stmdaeq r0, {r2, r3, r7, r8, fp, ip, sp}");
    0x08019ec4 mov r8, r0                                                        |     r8 = r0;
    0x08019ec8 cmn r0, 0x1000                                                    |     
                                                                                 |     if (r0 > 0x1000) {
    0x08019ecc bhi 0x801a3ac                                                     |         goto label_22;
                                                                                 |     }
    0x08019ed0 ldr r3, [sp, 0x64]                                                |     r3 = *(arg_64h);
    0x08019ed4 mov r0, r6                                                        |     r0 = r6;
    0x08019ed8 mov r1, 0                                                         |     r1 = 0;
    0x08019edc orr r3, r3, 2                                                     |     r3 |= 2;
    0x08019ee0 str r3, [sp, 0x64]                                                |     *(arg_64h) = r3;
    0x08019ee4 mov r2, r3                                                        |     r2 = r3;
    0x08019ee8 stmdaeq r8, {r0, r1, r3, r5, r6, sb, sl, fp, ip, pc}              |     __asm ("stmdaeq r8, {r0, r1, r3, r5, r6, sb, sl, fp, ip, pc}");
    0x08019eec subs r7, r0, 0                                                    |     r7 = r0 - 0;
                                                                                 |     if (r7 == r0) {
    0x08019ef0 beq 0x801a434                                                     |         goto label_23;
                                                                                 |     }
    0x08019ef4 sub sl, r4, 0x68                                                  |     sl = r4 - 0x68;
    0x08019ef8 mov r0, sl                                                        |     r0 = sl;
    0x08019efc stmdaeq r8, {r0, r1, r2, r6, r8, sl, fp, ip, pc}                  |     __asm ("stmdaeq r8, {r0, r1, r2, r6, r8, sl, fp, ip, pc}");
    0x08019f00 ldr r3, [r4, -0x70]                                               |     r3 = *((r4 - 0x70));
    0x08019f04 ubfx r3, r3, 3, 1                                                 |     r3 = (r3 >> 3) & ((1 << 1) - 1);
    0x08019f08 str r3, [sp, 0xc]                                                 |     var_ch = r3;
    0x08019f0c mrs r2, apsr                                                      |     r2 = apsr;
    0x08019f10 cpsid i                                                           |     __asm ("cpsid i");
    0x08019f14 ldr r3, [r4, -0x70]                                               |     r3 = *((r4 - 0x70));
    0x08019f18 orr r3, r3, 8                                                     |     r3 |= 8;
    0x08019f1c str r3, [r4, -0x70]                                               |     *((r4 - 0x70)) = r3;
    0x08019f20 msr cpsr_c, r2                                                    |     cpsr_c = r2;
    0x08019f24 ldr r3, [r4, -0x6c]                                               |     r3 = *((r4 - 0x6c));
    0x08019f28 tst r3, 0x10000000                                                |     
                                                                                 |     if ((r3 & 0x10000000) != 0) {
    0x08019f2c beq 0x801a028                                                     |         
    0x08019f30 movw r3, 0x1be                                                    |         r3 = 0x1be;
    0x08019f34 ldrh r3, [r4, r3]                                                 |         r3 = *((r4 + r3));
    0x08019f38 cmp r3, 0                                                         |         
                                                                                 |         if (r3 == 0) {
    0x08019f3c beq 0x801a028                                                     |             goto label_11;
                                                                                 |         }
    0x08019f40 add r3, r4, 0x1c0                                                 |         r3 = r4 + 0x1c0;
    0x08019f44 ldrh r3, [r3]                                                     |         r3 = *(r3);
    0x08019f48 str r3, [sp, 0x14]                                                |         var_14h = r3;
    0x08019f4c ldr r3, [r7, 4]                                                   |         r3 = *((r7 + 4));
    0x08019f50 tst r3, 1                                                         |         
                                                                                 |         if ((r3 & 1) == 0) {
    0x08019f54 subne r3, r3, 1                                                   |             r3--;
                                                                                 |         }
                                                                                 |         if ((r3 & 1) != 0) {
    0x08019f58 moveq r3, r7                                                      |             r3 = r7;
                                                                                 |         }
    0x08019f5c ldr r3, [r3]                                                      |         r3 = *(r3);
    0x08019f60 tst r3, 4                                                         |         
                                                                                 |         if ((r3 & 4) == 0) {
    0x08019f64 beq 0x801a390                                                     |             goto label_24;
                                                                                 |         }
                                                                                 | label_10:
    0x08019f68 mov r1, r4                                                        |         r1 = r4;
    0x08019f6c mov r0, r8                                                        |         r0 = r8;
    0x08019f70 bl 0x8018ebc                                                      |         r0 = ext4_destroy_inline_data_nolock ();
    0x08019f74 cmp r0, 0                                                         |         
                                                                                 |         if (r0 != 0) {
    0x08019f78 bne 0x801a3a4                                                     |             goto label_25;
                                                                                 |         }
    0x08019f7c ldr r3, [r4, 0x1c]                                                |         r3 = *((r4 + 0x1c));
    0x08019f80 ldr r3, [r3, 0x1f8]                                               |         r3 = *((r3 + 0x1f8));
    0x08019f84 ldr r3, [r3, 0x4c]                                                |         r3 = *((r3 + 0x4c));
    0x08019f88 tst r3, 0x400000                                                  |         
                                                                                 |         if ((r3 & 0x400000) == 0) {
    0x08019f8c beq 0x801a264                                                     |             goto label_26;
                                                                                 |         }
    0x08019f90 ldrh r3, [r4]                                                     |         r3 = *(r4);
    0x08019f94 and r3, r3, 0xf000                                                |         r3 &= 0xf000;
    0x08019f98 cmp r3, 0x8000                                                    |         
                                                                                 |         if (r3 != 0x8000) {
    0x08019f9c bne 0x801a264                                                     |             goto label_26;
                                                                                 |         }
    0x08019fa0 ldr r3, [r4, -0x6c]                                               |         r3 = *((r4 - 0x6c));
    0x08019fa4 tst r3, 0x80000                                                   |         
                                                                                 |         if ((r3 & 0x80000) == 0) {
    0x08019fa8 beq 0x801a264                                                     |             goto label_26;
                                                                                 |         }
    0x08019fac mov r0, r4                                                        |         r0 = r4;
    0x08019fb0 stmdaeq r0, {r3, r4, r5, r6, r7, fp, ip, sp}                      |         __asm ("stmdaeq r0, {r3, r4, r5, r6, r7, fp, ip, sp}");
    0x08019fb4 tst r0, 1                                                         |         
                                                                                 |         if ((r0 & 1) != 0) {
    0x08019fb8 bne 0x801a264                                                     |             goto label_26;
                                                                                 |         }
    0x08019fbc ldr r3, [r4, 0x1c]                                                |         r3 = *((r4 + 0x1c));
    0x08019fc0 ldr r3, [r3, 0x1f8]                                               |         r3 = *((r3 + 0x1f8));
    0x08019fc4 ldr r3, [r3, 0x4c]                                                |         r3 = *((r3 + 0x4c));
    0x08019fc8 tst r3, 0x8000000                                                 |         
                                                                                 |         if ((r3 & loc.imp.fs_overflowgid) == 0) {
    0x08019fcc beq 0x801a264                                                     |             goto label_26;
                                                                                 |         }
    0x08019fd0 ldr r3, [sp, 0x14]                                                |         r3 = var_14h;
    0x08019fd4 mov r0, r7                                                        |         r0 = r7;
    0x08019fd8 str r3, [sp]                                                      |         *(sp) = r3;
    0x08019fdc stmdaeq r1, {r2, r5, r7, sb, sl, ip, sp, lr, pc}                  |         __asm ("stmdaeq r1, {r2, r5, r7, sb, sl, ip, sp, lr, pc}");
    0x08019fe0 stmdaeq r1, {r2, r5, r7, sb, sl, ip, sp, lr, pc}                  |         __asm ("stmdaeq r1, {r2, r5, r7, sb, sl, ip, sp, lr, pc}");
                                                                                 | label_5:
    0x08019fe4 str r3, [sp, 4]                                                   |         var_4h = r3;
    0x08019fe8 mov r2, 0                                                         |         r2 = 0;
    0x08019fec mov r3, 0                                                         |         r3 = 0;
    0x08019ff0 stmdaeq r8, {r0, r1, r2, r3, r5, r6, sb, sl, fp, ip, pc}          |         __asm ("stmdaeq r8, {r0, r1, r2, r3, r5, r6, sb, sl, fp, ip, pc}");
    0x08019ff4 str r0, [sp, 0x10]                                                |         var_10h = r0;
    0x08019ff8 ldr r3, [sp, 0x10]                                                |         r3 = var_10h;
    0x08019ffc cmp r3, 0                                                         |         
                                                                                 |         if (r3 != 0) {
    0x0801a000 bne 0x801a2bc                                                     |             goto label_27;
                                                                                 |         }
    0x0801a004 mov r0, r4                                                        |         r0 = r4;
    0x0801a008 stmdaeq r0, {r3, r4, r5, r6, r7, fp, ip, sp}                      |         __asm ("stmdaeq r0, {r3, r4, r5, r6, r7, fp, ip, sp}");
    0x0801a00c tst r0, 1                                                         |         
                                                                                 |         if ((r0 & 1) != 0) {
    0x0801a010 bne 0x801a27c                                                     |             goto label_28;
                                                                                 |         }
                                                                                 | label_6:
    0x0801a014 mov r5, 0                                                         |         r5 = 0;
    0x0801a018 ldr r2, [sp, 0x14]                                                |         r2 = var_14h;
    0x0801a01c mov r0, r7                                                        |         r0 = r7;
    0x0801a020 mov r1, 0                                                         |         r1 = 0;
    0x0801a024 stmdaeq r8, {r0, r1, r4, r5, r6, sb, sl, fp, ip, pc}              |         __asm ("stmdaeq r8, {r0, r1, r4, r5, r6, sb, sl, fp, ip, pc}");
                                                                                 |     }
                                                                                 | label_11:
    0x0801a028 mov r0, r7                                                        |     r0 = r7;
    0x0801a02c stmdaeq r8, {r0, r1, r2, r5, r6, sb, sl, fp, ip, pc}              |     __asm ("stmdaeq r8, {r0, r1, r2, r5, r6, sb, sl, fp, ip, pc}");
    0x0801a030 ldr r3, [r7, 4]                                                   |     r3 = *((r7 + 4));
    0x0801a034 tst r3, 1                                                         |     
                                                                                 |     if ((r3 & 1) == 0) {
    0x0801a038 subne r7, r3, 1                                                   |         r7 = r3 - 1;
                                                                                 |     }
    0x0801a03c add r3, r7, 0x1c                                                  |     r3 = r7 + 0x1c;
    0x0801a040 pld [r3]                                                          |     __asm ("pld [r3]");
                                                                                 |     do {
    0x0801a044 ldrex r2, [r3]                                                    |         __asm ("ldrex r2, [r3]");
    0x0801a048 sub r2, r2, 1                                                     |         r2--;
    0x0801a04c strex r1, r2, [r3]                                                |         __asm ("strex r1, r2, [r3]");
    0x0801a050 teq r1, 0                                                         |         __asm ("teq r1, 0");
    0x0801a054 bne 0x801a044                                                     |         
                                                                                 |     } while ((r3 & 1) != 0);
    0x0801a058 cmp r2, 0                                                         |     
                                                                                 |     if (r2 == 0) {
    0x0801a05c beq 0x801a384                                                     |         goto label_29;
                                                                                 |     }
                                                                                 | label_9:
    0x0801a060 ldr r3, [sp, 0xc]                                                 |     r3 = var_ch;
    0x0801a064 cmp r3, 0                                                         |     
                                                                                 |     if (r3 == 0) {
    0x0801a068 beq 0x801a3b4                                                     |         goto label_30;
                                                                                 |     }
                                                                                 | label_12:
    0x0801a06c mov r0, sl                                                        |     r0 = sl;
    0x0801a070 stmdaeq r8, {r0, r1, r3, r6, r8, sl, fp, ip, pc}                  |     __asm ("stmdaeq r8, {r0, r1, r3, r6, r8, sl, fp, ip, pc}");
                                                                                 | label_19:
    0x0801a074 cmp r8, 0                                                         |     
                                                                                 |     if (r8 != 0) {
    0x0801a078 beq 0x801a08c                                                     |         
    0x0801a07c ldr r0, [pc, 0x3bc]                                               |         r0 = $d;
    0x0801a080 mov r2, r8                                                        |         r2 = r8;
    0x0801a084 movw r1, 0x27a                                                    |         r1 = 0x27a;
    0x0801a088 stmdaeq r0, {r5, r7, sb, fp, ip, sp}                              |         __asm ("stmdaeq r0, {r5, r7, sb, fp, ip, sp}");
                                                                                 |     }
                                                                                 | label_8:
    0x0801a08c ldr r0, [sp, 0x2c]                                                |     r0 = var_2ch;
    0x0801a090 cmp r0, 0                                                         |     
                                                                                 |     if (r0 == 0) {
    0x0801a094 beq 0x8019e5c                                                     |         goto label_0;
                                                                                 |     }
    0x0801a098 stmdaeq r8, {r0, r1, r2, r3, r4, r6, r7, sl, fp, ip, pc}          |     __asm ("stmdaeq r8, {r0, r1, r2, r3, r4, r6, r7, sl, fp, ip, pc}");
                                                                                 | label_1:
    0x0801a09c mov r0, r5                                                        |     r0 = r5;
    0x0801a0a0 add sp, sp, 0x3c                                                  |     
    0x0801a0a4 pop {r4, r5, r6, r7, r8, sb, sl, fp, pc}                          |     
                                                                                 | label_20:
    0x0801a0a8 add r1, sp, 0x20                                                  |     r1 += var_20h;
    0x0801a0ac mov r0, r4                                                        |     r0 = r4;
    0x0801a0b0 stmdaeq r2, {r4, r5, r6, r8, sb, sl}                              |     __asm ("stmdaeq r2, {r4, r5, r6, r8, sb, sl}");
    0x0801a0b4 subs r5, r0, 0                                                    |     r5 = r0 - 0;
                                                                                 |     if (r5 != r0) {
    0x0801a0b8 bne 0x8019e5c                                                     |         goto label_0;
                                                                                 |     }
    0x0801a0bc ldr r0, [r4, 0x1c]                                                |     r0 = *((r4 + 0x1c));
    0x0801a0c0 mov r3, 1                                                         |     r3 = 1;
    0x0801a0c4 movw r1, 0x29b                                                    |     r1 = 0x29b;
    0x0801a0c8 mov r2, r3                                                        |     r2 = r3;
    0x0801a0cc ldr ip, [r0, 0x1f8]                                               |     ip = *((r0 + 0x1f8));
    0x0801a0d0 ldr ip, [ip, 0x2c]                                                |     ip = *((ip + 0x2c));
    0x0801a0d4 str r5, [sp]                                                      |     *(sp) = r5;
    0x0801a0d8 lsl ip, ip, 3                                                     |     
    0x0801a0dc str ip, [sp, 4]                                                   |     var_4h = ip;
    0x0801a0e0 stmdaeq r0, {r2, r3, r7, r8, fp, ip, sp}                          |     __asm ("stmdaeq r0, {r2, r3, r7, r8, fp, ip, sp}");
    0x0801a0e4 cmn r0, 0x1000                                                    |     
    0x0801a0e8 mov r8, r0                                                        |     r8 = r0;
                                                                                 |     if (r0 <= 0x1000) {
    0x0801a0ec movhi r5, r0                                                      |         r5 = r0;
                                                                                 |     }
                                                                                 |     if (r0 <= 0x1000) {
    0x0801a0f0 bhi 0x801a1a8                                                     |         
    0x0801a0f4 mov r2, r7                                                        |         r2 = r7;
    0x0801a0f8 mov r1, r4                                                        |         r1 = r4;
    0x0801a0fc bl 0x8019a84                                                      |         r0 = ext4_prepare_inline_data ();
    0x0801a100 mov r5, r0                                                        |         r5 = r0;
    0x0801a104 cmp r0, 0                                                         |         
    0x0801a108 cmnne r0, 0x1c                                                    |         __asm ("cmnne r0, 0x1c");
                                                                                 |         if (r0 != 0) {
    0x0801a10c bne 0x801a1bc                                                     |             goto label_31;
                                                                                 |         }
    0x0801a110 cmn r0, 0x1c                                                      |         
                                                                                 |         if (r0 == 0x1c) {
    0x0801a114 beq 0x801a1f8                                                     |             goto label_32;
                                                                                 |         }
    0x0801a118 ldr r3, [sp, 0x20]                                                |         r3 = var_20h;
    0x0801a11c mov r2, r8                                                        |         r2 = r8;
    0x0801a120 ldr r0, [pc, 0x31c]                                               |         r0 = "ext4_validate_block_bitmap";
    0x0801a124 movw r1, 0x2ad                                                    |         r1 = 0x2ad;
    0x0801a128 stmdaeq r0, {r8, sl, fp, ip, sp}                                  |         __asm ("stmdaeq r0, {r8, sl, fp, ip, sp}");
    0x0801a12c subs r5, r0, 0                                                    |         r5 = r0 - 0;
                                                                                 |         if (r5 != r0) {
    0x0801a130 bne 0x801a1bc                                                     |             goto label_31;
                                                                                 |         }
    0x0801a134 ldr r3, [sp, 0x64]                                                |         r3 = *(arg_64h);
    0x0801a138 mov r0, r6                                                        |         r0 = r6;
    0x0801a13c mov r1, r5                                                        |         r1 = r5;
    0x0801a140 orr r2, r3, 2                                                     |         r2 = r3 | 2;
    0x0801a144 stmdaeq r8, {r0, r1, r3, r5, r6, sb, sl, fp, ip, pc}              |         __asm ("stmdaeq r8, {r0, r1, r3, r5, r6, sb, sl, fp, ip, pc}");
    0x0801a148 subs r6, r0, 0                                                    |         r6 = r0 - 0;
                                                                                 |         if (r6 == r0) {
    0x0801a14c beq 0x801a1ec                                                     |             goto label_33;
                                                                                 |         }
    0x0801a150 ldr r3, [sp, 0x68]                                                |         r3 = *(arg_68h);
    0x0801a154 sub r7, r4, 0x68                                                  |         r7 = r4 - 0x68;
    0x0801a158 mov r0, r7                                                        |         r0 = r7;
    0x0801a15c str r6, [r3]                                                      |         *(r3) = r6;
    0x0801a160 stmdaeq r8, {r0, r1, r3, r4, r6, r7, sl, fp, ip, pc}              |         __asm ("stmdaeq r8, {r0, r1, r3, r4, r6, r7, sl, fp, ip, pc}");
    0x0801a164 ldr r3, [r4, -0x6c]                                               |         r3 = *((r4 - 0x6c));
    0x0801a168 tst r3, 0x10000000                                                |         
                                                                                 |         if ((r3 & 0x10000000) == 0) {
    0x0801a16c beq 0x801a21c                                                     |             goto label_17;
                                                                                 |         }
    0x0801a170 movw r3, 0x1be                                                    |         r3 = 0x1be;
    0x0801a174 ldrh r3, [r4, r3]                                                 |         r3 = *((r4 + r3));
    0x0801a178 cmp r3, 0                                                         |         
                                                                                 |         if (r3 == 0) {
    0x0801a17c beq 0x801a21c                                                     |             goto label_17;
                                                                                 |         }
    0x0801a180 ldr r3, [r6, 4]                                                   |         r3 = *((r6 + 4));
    0x0801a184 tst r3, 1                                                         |         
                                                                                 |         if ((r3 & 1) == 0) {
    0x0801a188 subne r3, r3, 1                                                   |             r3--;
                                                                                 |         }
                                                                                 |         if ((r3 & 1) != 0) {
    0x0801a18c moveq r3, r6                                                      |             r3 = r6;
                                                                                 |         }
    0x0801a190 ldr r3, [r3]                                                      |         r3 = *(r3);
    0x0801a194 tst r3, 4                                                         |         
                                                                                 |         if ((r3 & 4) == 0) {
    0x0801a198 beq 0x801a414                                                     |             goto label_34;
                                                                                 |         }
    0x0801a19c mov r0, r7                                                        |         r0 = r7;
    0x0801a1a0 stmdaeq r8, {r0, r1, r2, r4, r6, r7, sl, fp, ip, pc}              |         __asm ("stmdaeq r8, {r0, r1, r2, r4, r6, r7, sl, fp, ip, pc}");
                                                                                 | label_18:
    0x0801a1a4 mov r5, 1                                                         |         r5 = 1;
                                                                                 |     }
                                                                                 | label_2:
    0x0801a1a8 ldr r0, [sp, 0x20]                                                |     r0 = var_20h;
    0x0801a1ac cmp r0, 0                                                         |     
                                                                                 |     if (r0 == 0) {
    0x0801a1b0 beq 0x8019e5c                                                     |         goto label_0;
                                                                                 |     }
    0x0801a1b4 stmdaeq r8, {r0, r1, r2, r3, r4, r6, r7, sl, fp, ip, pc}          |     __asm ("stmdaeq r8, {r0, r1, r2, r3, r4, r6, r7, sl, fp, ip, pc}");
    0x0801a1b8 b 0x801a09c                                                       |     goto label_1;
                                                                                 | label_31:
    0x0801a1bc subs r3, r5, 1                                                    |     r3 = r5 - 1;
                                                                                 |     if (r3 == r5) {
    0x0801a1c0 movne r3, 1                                                       |         r3 = 1;
                                                                                 |     }
                                                                                 | label_3:
    0x0801a1c4 cmp r8, 0                                                         |     
                                                                                 |     if (r8 != 0) {
    0x0801a1c8 moveq r3, 0                                                       |         r3 = 0;
                                                                                 |     }
                                                                                 |     if (r8 == 0) {
    0x0801a1cc andne r3, r3, 1                                                   |         r3 &= 1;
                                                                                 |     }
    0x0801a1d0 cmp r3, 0                                                         |     
                                                                                 |     if (r3 == 0) {
    0x0801a1d4 beq 0x801a1a8                                                     |         goto label_2;
                                                                                 |     }
    0x0801a1d8 mov r2, r8                                                        |     r2 = r8;
    0x0801a1dc movw r1, 0x2d1                                                    |     r1 = 0x2d1;
    0x0801a1e0 ldr r0, [pc, 0x25c]                                               |     r0 = "ext4_validate_block_bitmap";
    0x0801a1e4 stmdaeq r0, {r5, r7, sb, fp, ip, sp}                              |     __asm ("stmdaeq r0, {r5, r7, sb, fp, ip, sp}");
    0x0801a1e8 b 0x801a1a8                                                       |     goto label_2;
                                                                                 | label_33:
    0x0801a1ec mov r3, 1                                                         |     r3 = 1;
    0x0801a1f0 mvn r5, 0xb                                                       |     r5 = ~0xb;
    0x0801a1f4 b 0x801a1c4                                                       |     goto label_3;
                                                                                 | label_32:
    0x0801a1f8 ldr r0, [pc, 0x244]                                               |     r0 = "ext4_validate_block_bitmap";
    0x0801a1fc mov r2, r8                                                        |     r2 = r8;
    0x0801a200 mov r1, 0x2a8                                                     |     r1 = 0x2a8;
    0x0801a204 stmdaeq r0, {r5, r7, sb, fp, ip, sp}                              |     __asm ("stmdaeq r0, {r5, r7, sb, fp, ip, sp}");
    0x0801a208 ldr r0, [sp, 0x20]                                                |     r0 = var_20h;
    0x0801a20c cmp r0, 0                                                         |     
                                                                                 |     if (r0 == 0) {
    0x0801a210 beq 0x8019e2c                                                     |         goto label_4;
                                                                                 |     }
    0x0801a214 stmdaeq r8, {r0, r1, r2, r3, r4, r6, r7, sl, fp, ip, pc}          |     __asm ("stmdaeq r8, {r0, r1, r2, r3, r4, r6, r7, sl, fp, ip, pc}");
    0x0801a218 b 0x8019e2c                                                       |     goto label_4;
                                                                                 | label_17:
    0x0801a21c mov r0, r6                                                        |     r0 = r6;
    0x0801a220 stmdaeq r8, {r0, r1, r2, r5, r6, sb, sl, fp, ip, pc}              |     __asm ("stmdaeq r8, {r0, r1, r2, r5, r6, sb, sl, fp, ip, pc}");
    0x0801a224 ldr r3, [r6, 4]                                                   |     r3 = *((r6 + 4));
    0x0801a228 tst r3, 1                                                         |     
                                                                                 |     if ((r3 & 1) == 0) {
    0x0801a22c subne r6, r3, 1                                                   |         r6 = r3 - 1;
                                                                                 |     }
    0x0801a230 add r3, r6, 0x1c                                                  |     r3 = r6 + 0x1c;
    0x0801a234 pld [r3]                                                          |     __asm ("pld [r3]");
                                                                                 |     do {
    0x0801a238 ldrex r2, [r3]                                                    |         __asm ("ldrex r2, [r3]");
    0x0801a23c sub r2, r2, 1                                                     |         r2--;
    0x0801a240 strex r1, r2, [r3]                                                |         __asm ("strex r1, r2, [r3]");
    0x0801a244 teq r1, 0                                                         |         __asm ("teq r1, 0");
    0x0801a248 bne 0x801a238                                                     |         
                                                                                 |     } while ((r3 & 1) != 0);
    0x0801a24c cmp r2, 0                                                         |     
                                                                                 |     if (r2 == 0) {
    0x0801a250 beq 0x801a3d0                                                     |         goto label_35;
                                                                                 |     }
                                                                                 | label_13:
    0x0801a254 mov r0, r7                                                        |     r0 = r7;
    0x0801a258 stmdaeq r8, {r0, r1, r2, r4, r6, r7, sl, fp, ip, pc}              |     __asm ("stmdaeq r8, {r0, r1, r2, r4, r6, r7, sl, fp, ip, pc}");
    0x0801a25c mov r3, 1                                                         |     r3 = 1;
    0x0801a260 b 0x801a1c4                                                       |     goto label_3;
                                                                                 | label_26:
    0x0801a264 ldr r3, [sp, 0x14]                                                |     r3 = var_14h;
    0x0801a268 mov r0, r7                                                        |     r0 = r7;
    0x0801a26c str r3, [sp]                                                      |     *(sp) = r3;
    0x0801a270 stmdaeq r1, {r3, r5, r6, r7, sb, ip, sp, lr, pc}                  |     __asm ("stmdaeq r1, {r3, r5, r6, r7, sb, ip, sp, lr, pc}");
    0x0801a274 stmdaeq r1, {r3, r5, r6, r7, sb, ip, sp, lr, pc}                  |     __asm ("stmdaeq r1, {r3, r5, r6, r7, sb, ip, sp, lr, pc}");
    0x0801a278 b 0x8019fe4                                                       |     goto label_5;
                                                                                 | label_28:
    0x0801a27c ldr r3, [r7]                                                      |     r3 = *(r7);
    0x0801a280 tst r3, 0x2000                                                    |     
                                                                                 |     if ((r3 & 0x2000) == 0) {
    0x0801a284 beq 0x801a43c                                                     |         goto label_36;
                                                                                 |     }
    0x0801a288 ldr r3, [sp, 0x10]                                                |     r3 = var_10h;
    0x0801a28c mov r0, r8                                                        |     r0 = r8;
    0x0801a290 ldr r1, [r7, 0x14]                                                |     r1 = *((r7 + 0x14));
    0x0801a294 stmdaeq r2, {r3, r6, r7, r8}                                      |     __asm ("stmdaeq r2, {r3, r6, r7, r8}");
    0x0801a298 stmdaeq r2, {r3, r6, r7, r8}                                      |     __asm ("stmdaeq r2, {r3, r6, r7, r8}");
    0x0801a29c mov r2, r3                                                        |     r2 = r3;
    0x0801a2a0 str r3, [sp]                                                      |     *(sp) = r3;
    0x0801a2a4 str ip, [sp, 4]                                                   |     var_4h = ip;
    0x0801a2a8 ldr r3, [sp, 0x14]                                                |     r3 = var_14h;
    0x0801a2ac stmdaeq r2, {r2, r3, r4, r5, r8}                                  |     __asm ("stmdaeq r2, {r2, r3, r4, r5, r8}");
    0x0801a2b0 subs r3, r0, 0                                                    |     r3 = r0 - 0;
                                                                                 |     if (r3 == r0) {
    0x0801a2b4 beq 0x801a014                                                     |         goto label_6;
                                                                                 |     }
    0x0801a2b8 str r3, [sp, 0x10]                                                |     var_10h = r3;
                                                                                 | label_27:
    0x0801a2bc mov r0, r7                                                        |     r0 = r7;
    0x0801a2c0 stmdaeq r8, {r0, r1, r2, r5, r6, sb, sl, fp, ip, pc}              |     __asm ("stmdaeq r8, {r0, r1, r2, r5, r6, sb, sl, fp, ip, pc}");
    0x0801a2c4 ldr r3, [r7, 4]                                                   |     r3 = *((r7 + 4));
    0x0801a2c8 tst r3, 1                                                         |     
                                                                                 |     if ((r3 & 1) == 0) {
    0x0801a2cc subne r7, r3, 1                                                   |         r7 = r3 - 1;
                                                                                 |     }
    0x0801a2d0 add r3, r7, 0x1c                                                  |     r3 = r7 + 0x1c;
    0x0801a2d4 pld [r3]                                                          |     __asm ("pld [r3]");
                                                                                 |     do {
    0x0801a2d8 ldrex r2, [r3]                                                    |         __asm ("ldrex r2, [r3]");
    0x0801a2dc sub r2, r2, 1                                                     |         r2--;
    0x0801a2e0 strex r1, r2, [r3]                                                |         __asm ("strex r1, r2, [r3]");
    0x0801a2e4 teq r1, 0                                                         |         __asm ("teq r1, 0");
    0x0801a2e8 bne 0x801a2d8                                                     |         
                                                                                 |     } while ((r3 & 1) != 0);
    0x0801a2ec cmp r2, 0                                                         |     
                                                                                 |     if (r2 == 0) {
    0x0801a2f0 beq 0x801a3dc                                                     |         goto label_37;
                                                                                 |     }
                                                                                 | label_14:
    0x0801a2f4 mov r1, r4                                                        |     r1 = r4;
    0x0801a2f8 mov r0, r8                                                        |     r0 = r8;
    0x0801a2fc stmdaeq r3, {r3, r4, r7, sl, lr, pc}                              |     __asm ("stmdaeq r3, {r3, r4, r7, sl, lr, pc}");
    0x0801a300 ldr r3, [sp, 0xc]                                                 |     r3 = var_ch;
    0x0801a304 cmp r3, 0                                                         |     
                                                                                 |     if (r3 == 0) {
    0x0801a308 beq 0x801a3f8                                                     |         goto label_38;
                                                                                 |     }
                                                                                 | label_16:
    0x0801a30c mov r0, sl                                                        |     r0 = sl;
    0x0801a310 sub r7, r4, 0x10                                                  |     r7 = r4 - 0x10;
    0x0801a314 stmdaeq r8, {r0, r1, r3, r6, r8, sl, fp, ip, pc}                  |     __asm ("stmdaeq r8, {r0, r1, r3, r6, r8, sl, fp, ip, pc}");
    0x0801a318 mov r1, 0x260                                                     |     r1 = 0x260;
    0x0801a31c mov r2, r8                                                        |     r2 = r8;
    0x0801a320 ldr r0, [pc, 0x118]                                               |     r0 = $d;
    0x0801a324 stmdaeq r0, {r5, r7, sb, fp, ip, sp}                              |     __asm ("stmdaeq r0, {r5, r7, sb, fp, ip, sp}");
    0x0801a328 mov r0, r7                                                        |     r0 = r7;
    0x0801a32c stmdaeq r8, {r0, r1, r2, r6, r8, sl, fp, ip, pc}                  |     __asm ("stmdaeq r8, {r0, r1, r2, r6, r8, sl, fp, ip, pc}");
    0x0801a330 ldr r0, [r4, 0x20]                                                |     r0 = *((r4 + 0x20));
    0x0801a334 ldrd r2, r3, [r4, 0x38]                                           |     __asm ("ldrd r2, r3, [r4, 0x38]");
    0x0801a338 stmdaeq r8, {r0, r1, r5, r6, r7, r8, sl, fp, ip, pc}              |     __asm ("stmdaeq r8, {r0, r1, r5, r6, r7, r8, sl, fp, ip, pc}");
    0x0801a33c mov r0, r4                                                        |     r0 = r4;
    0x0801a340 stmdaeq r2, {r7, sb, sl, lr}                                      |     __asm ("stmdaeq r2, {r7, sb, sl, lr}");
    0x0801a344 mov r0, r7                                                        |     r0 = r7;
    0x0801a348 stmdaeq r8, {r0, r1, r3, r6, r8, sl, fp, ip, pc}                  |     __asm ("stmdaeq r8, {r0, r1, r3, r6, r8, sl, fp, ip, pc}");
    0x0801a34c ldr r3, [r4, 0x2c]                                                |     r3 = *((r4 + 0x2c));
    0x0801a350 cmp r3, 0                                                         |     
                                                                                 |     if (r3 != 0) {
    0x0801a354 bne 0x801a3e8                                                     |         goto label_39;
                                                                                 |     }
                                                                                 | label_15:
    0x0801a358 ldr r3, [sp, 0x10]                                                |     r3 = var_10h;
    0x0801a35c cmn r3, 0x1c                                                      |     
                                                                                 |     if (r3 != 0x1c) {
    0x0801a360 bne 0x801a378                                                     |         goto label_40;
                                                                                 |     }
    0x0801a364 ldr r0, [r4, 0x1c]                                                |     r0 = *((r4 + 0x1c));
    0x0801a368 add r1, sp, 0x1c                                                  |     r1 += var_1ch;
    0x0801a36c stmdaeq r0, {r2, r3, r6, fp}                                      |     __asm ("stmdaeq r0, {r2, r3, r6, fp}");
    0x0801a370 cmp r0, 0                                                         |     
                                                                                 |     if (r0 != 0) {
    0x0801a374 bne 0x8019e9c                                                     |         goto label_7;
                                                                                 |     }
                                                                                 | label_40:
    0x0801a378 ldr r2, [sp, 0x10]                                                |     r2 = var_10h;
    0x0801a37c mov r5, r2                                                        |     r5 = r2;
    0x0801a380 b 0x801a08c                                                       |     goto label_8;
                                                                                 | label_29:
    0x0801a384 mov r0, r7                                                        |     r0 = r7;
    0x0801a388 stmdaeq r8, {r0, r1, r2, r4, r5, r6, sb, sl, fp, ip, pc}          |     __asm ("stmdaeq r8, {r0, r1, r2, r4, r5, r6, sb, sl, fp, ip, pc}");
    0x0801a38c b 0x801a060                                                       |     goto label_9;
                                                                                 | label_24:
    0x0801a390 mov r1, r7                                                        |     r1 = r7;
    0x0801a394 mov r0, r4                                                        |     r0 = r4;
    0x0801a398 bl 0x80190a0                                                      |     r0 = ext4_read_inline_page ();
    0x0801a39c cmp r0, 0                                                         |     
                                                                                 |     if (r0 >= 0) {
    0x0801a3a0 bge 0x8019f68                                                     |         goto label_10;
                                                                                 |     }
                                                                                 | label_25:
    0x0801a3a4 mov r5, r0                                                        |     r5 = r0;
    0x0801a3a8 b 0x801a028                                                       |     goto label_11;
                                                                                 | label_22:
    0x0801a3ac mov r5, r0                                                        |     r5 = r0;
    0x0801a3b0 b 0x801a08c                                                       |     goto label_8;
                                                                                 | label_30:
    0x0801a3b4 mrs r2, apsr                                                      |     r2 = apsr;
    0x0801a3b8 cpsid i                                                           |     __asm ("cpsid i");
    0x0801a3bc ldr r3, [r4, -0x70]                                               |     r3 = *((r4 - 0x70));
    0x0801a3c0 bic r3, r3, 8                                                     |     r3 = BIT_MASK (r3, 8);
    0x0801a3c4 str r3, [r4, -0x70]                                               |     *((r4 - 0x70)) = r3;
    0x0801a3c8 msr cpsr_c, r2                                                    |     cpsr_c = r2;
    0x0801a3cc b 0x801a06c                                                       |     goto label_12;
                                                                                 | label_35:
    0x0801a3d0 mov r0, r6                                                        |     r0 = r6;
    0x0801a3d4 stmdaeq r8, {r0, r1, r2, r4, r5, r6, sb, sl, fp, ip, pc}          |     __asm ("stmdaeq r8, {r0, r1, r2, r4, r5, r6, sb, sl, fp, ip, pc}");
    0x0801a3d8 b 0x801a254                                                       |     goto label_13;
                                                                                 | label_37:
    0x0801a3dc mov r0, r7                                                        |     r0 = r7;
    0x0801a3e0 stmdaeq r8, {r0, r1, r2, r4, r5, r6, sb, sl, fp, ip, pc}          |     __asm ("stmdaeq r8, {r0, r1, r2, r4, r5, r6, sb, sl, fp, ip, pc}");
    0x0801a3e4 b 0x801a2f4                                                       |     goto label_14;
                                                                                 | label_39:
    0x0801a3e8 mov r1, r4                                                        |     r1 = r4;
    0x0801a3ec mov r0, 0                                                         |     r0 = 0;
    0x0801a3f0 stmdaeq r3, {r2, r3, r5, r6, r7, sl, fp, ip, lr, pc}              |     __asm ("stmdaeq r3, {r2, r3, r5, r6, r7, sl, fp, ip, lr, pc}");
    0x0801a3f4 b 0x801a358                                                       |     goto label_15;
                                                                                 | label_38:
    0x0801a3f8 mrs r2, apsr                                                      |     r2 = apsr;
    0x0801a3fc cpsid i                                                           |     __asm ("cpsid i");
    0x0801a400 ldr r3, [r4, -0x70]                                               |     r3 = *((r4 - 0x70));
    0x0801a404 bic r3, r3, 8                                                     |     r3 = BIT_MASK (r3, 8);
    0x0801a408 str r3, [r4, -0x70]                                               |     *((r4 - 0x70)) = r3;
    0x0801a40c msr cpsr_c, r2                                                    |     cpsr_c = r2;
    0x0801a410 b 0x801a30c                                                       |     goto label_16;
                                                                                 | label_34:
    0x0801a414 mov r1, r6                                                        |     r1 = r6;
    0x0801a418 mov r0, r4                                                        |     r0 = r4;
    0x0801a41c bl 0x80190a0                                                      |     r0 = ext4_read_inline_page ();
    0x0801a420 subs r5, r0, 0                                                    |     r5 = r0 - 0;
                                                                                 |     if (r5 < r0) {
    0x0801a424 blt 0x801a21c                                                     |         goto label_17;
                                                                                 |     }
    0x0801a428 mov r0, r7                                                        |     r0 = r7;
    0x0801a42c stmdaeq r8, {r0, r1, r2, r4, r6, r7, sl, fp, ip, pc}              |     __asm ("stmdaeq r8, {r0, r1, r2, r4, r6, r7, sl, fp, ip, pc}");
    0x0801a430 b 0x801a1a4                                                       |     goto label_18;
                                                                                 | label_23:
    0x0801a434 mvn r5, 0xb                                                       |     r5 = ~0xb;
    0x0801a438 b 0x801a074                                                       |     goto label_19;
                                                                                 | label_36:
    0x0801a43c udf 0x12                                                          |     __asm ("udf 0x12");
                                                                                 | }
    ; assembly                                                                   | /* r2dec pseudo code output */
                                                                                 | /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-80367616.squashfs_v4_le_extract/usr/lib/modules/5.10.52-axis9/kernel/fs/ext4/ext4.ko @ 0x8024a74 */
                                                                                 | #include <stdint.h>
                                                                                 |  
    ; (fcn) sym.ext4_write_begin ()                                              | void ext4_write_begin (int32_t arg_70h, int32_t arg_74h, int32_t arg_78h, int32_t arg2) {
                                                                                 |     int32_t var_0h;
                                                                                 |     int32_t var_4h;
                                                                                 |     int32_t var_8h;
                                                                                 |     int32_t var_14h;
                                                                                 |     int32_t var_18h;
                                                                                 |     int32_t var_1ch;
                                                                                 |     int32_t var_20h;
                                                                                 |     int32_t var_24h;
                                                                                 |     int32_t var_28h;
                                                                                 |     int32_t var_2ch;
                                                                                 |     int32_t var_30h;
                                                                                 |     int32_t var_34h;
                                                                                 |     int32_t var_38h;
                                                                                 |     int32_t var_3ch;
                                                                                 |     int32_t var_44h;
                                                                                 |     int32_t var_4ch;
                                                                                 |     r1 = arg2;
    0x08024a74 push {r4, r5, r6, r7, r8, sb, sl, fp, lr}                         |     
    0x08024a78 mov sb, r3                                                        |     sb = r3;
    0x08024a7c mov r3, 0                                                         |     r3 = 0;
    0x08024a80 sub sp, sp, 0x4c                                                  |     
    0x08024a84 ldr r4, [r1]                                                      |     r4 = *(r1);
    0x08024a88 str r3, [sp, 0x44]                                                |     var_44h = r3;
    0x08024a8c ldr r3, [r4, 0x1c]                                                |     r3 = *((r4 + 0x1c));
    0x08024a90 ldr r7, [sp, 0x70]                                                |     r7 = *(arg_70h);
    0x08024a94 str r1, [sp, 0x14]                                                |     var_14h = r1;
    0x08024a98 ldr r3, [r3, 0x1f8]                                               |     r3 = *((r3 + 0x1f8));
    0x08024a9c ldr r3, [r3, 0x130]                                               |     r3 = *((r3 + 0x130));
    0x08024aa0 tst r3, 2                                                         |     
                                                                                 |     if ((r3 & 2) != 0) {
    0x08024aa4 bne 0x8024ed8                                                     |         goto label_12;
                                                                                 |     }
    0x08024aa8 mov r0, r4                                                        |     r0 = r4;
    0x08024aac mov r8, r2                                                        |     r8 = r2;
    0x08024ab0 stmdaeq r2, {r2, r4, r6, sb, fp, ip}                              |     __asm ("stmdaeq r2, {r2, r4, r6, sb, fp, ip}");
    0x08024ab4 add r3, r0, 1                                                     |     r3 = r0 + 1;
    0x08024ab8 str r3, [sp, 0x18]                                                |     var_18h = r3;
    0x08024abc ldr r3, [r4, -0x70]                                               |     r3 = *((r4 - 0x70));
    0x08024ac0 tst r3, 0x80                                                      |     
    0x08024ac4 lsr r3, r8, 0xc                                                   |     r3 = r8 >> 0xc;
    0x08024ac8 orr r5, r3, sb, lsl 20                                            |     r5 = r3 | (sb << 20);
    0x08024acc ubfx r3, r8, 0, 0xc                                               |     r3 = (r8 >> 0) & ((1 << 0xc) - 1);
    0x08024ad0 str r3, [sp, 0x28]                                                |     var_28h = r3;
    0x08024ad4 add r3, r7, r3                                                    |     r3 = r7 + r3;
    0x08024ad8 str r3, [sp, 0x2c]                                                |     var_2ch = r3;
                                                                                 |     if ((r3 & 0x80) != 0) {
    0x08024adc bne 0x8024e90                                                     |         goto label_13;
                                                                                 |     }
                                                                                 | label_8:
    0x08024ae0 stmdaeq r1, {r3, r5, r6, r7, sb, ip, sp, lr, pc}                  |     __asm ("stmdaeq r1, {r3, r5, r6, r7, sb, ip, sp, lr, pc}");
    0x08024ae4 stmdaeq r1, {r3, r5, r6, r7, sb, ip, sp, lr, pc}                  |     __asm ("stmdaeq r1, {r3, r5, r6, r7, sb, ip, sp, lr, pc}");
    0x08024ae8 stmdaeq r1, {r2, r5, r7, sb, sl, ip, sp, lr, pc}                  |     __asm ("stmdaeq r1, {r2, r5, r7, sb, sl, ip, sp, lr, pc}");
    0x08024aec stmdaeq r1, {r2, r5, r7, sb, sl, ip, sp, lr, pc}                  |     __asm ("stmdaeq r1, {r2, r5, r7, sb, sl, ip, sp, lr, pc}");
    0x08024af0 str r3, [sp, 0x20]                                                |     var_20h = r3;
    0x08024af4 mov r3, 0xf000                                                    |     
    0x08024af8 movt r3, 0xffff                                                   |     r3 = 0x-1000;
    0x08024afc str r2, [sp, 0x24]                                                |     var_24h = r2;
    0x08024b00 str r3, [sp, 0x1c]                                                |     var_1ch = r3;
                                                                                 | label_11:
    0x08024b04 ldr r2, [sp, 0x74]                                                |     r2 = *(arg_74h);
    0x08024b08 mov r1, r5                                                        |     r1 = r5;
    0x08024b0c ldr r0, [sp, 0x14]                                                |     r0 = var_14h;
    0x08024b10 stmdaeq r8, {r0, r1, r3, r5, r6, sb, sl, fp, ip, pc}              |     __asm ("stmdaeq r8, {r0, r1, r3, r5, r6, sb, sl, fp, ip, pc}");
    0x08024b14 subs r6, r0, 0                                                    |     r6 = r0 - 0;
                                                                                 |     if (r6 == r0) {
    0x08024b18 beq 0x8024f48                                                     |         goto label_14;
                                                                                 |     }
    0x08024b1c stmdaeq r8, {r0, r1, r2, r5, r6, sb, sl, fp, ip, pc}              |     __asm ("stmdaeq r8, {r0, r1, r2, r5, r6, sb, sl, fp, ip, pc}");
    0x08024b20 str r5, [sp, 0x3c]                                                |     var_3ch = r5;
                                                                                 | label_0:
    0x08024b24 ldr r0, [r4, 0x1c]                                                |     r0 = *((r4 + 0x1c));
    0x08024b28 mov ip, 0                                                         |     
    0x08024b2c ldr r3, [sp, 0x18]                                                |     r3 = var_18h;
    0x08024b30 mov r2, 2                                                         |     r2 = 2;
    0x08024b34 ldr r1, [r0, 0x1f8]                                               |     r1 = *((r0 + 0x1f8));
    0x08024b38 ldr r1, [r1, 0x2c]                                                |     r1 = *((r1 + 0x2c));
    0x08024b3c str ip, [sp]                                                      |     *(sp) = ip;
    0x08024b40 lsl r1, r1, 3                                                     |     r1 <<= 3;
    0x08024b44 str r1, [sp, 4]                                                   |     var_4h = r1;
    0x08024b48 movw r1, 0x49c                                                    |     r1 = 0x49c;
    0x08024b4c stmdaeq r0, {r2, r3, r7, r8, fp, ip, sp}                          |     __asm ("stmdaeq r0, {r2, r3, r7, r8, fp, ip, sp}");
    0x08024b50 mov fp, r0                                                        |     
    0x08024b54 cmn r0, 0x1000                                                    |     
                                                                                 |     if (r0 > 0x1000) {
    0x08024b58 bhi 0x8024e3c                                                     |         goto label_15;
                                                                                 |     }
    0x08024b5c ldr r3, [r6, 4]                                                   |     r3 = *((r6 + 4));
    0x08024b60 tst r3, 1                                                         |     
                                                                                 |     if ((r3 & 1) == 0) {
    0x08024b64 subne r3, r3, 1                                                   |         r3--;
                                                                                 |     }
                                                                                 |     if ((r3 & 1) != 0) {
    0x08024b68 moveq r3, r6                                                      |         r3 = r6;
                                                                                 |     }
    0x08024b6c ldr r2, [r3]                                                      |     r2 = *(r3);
    0x08024b70 tst r2, 1                                                         |     
                                                                                 |     if ((r2 & 1) != 0) {
    0x08024b74 bne 0x8024d30                                                     |         goto label_16;
                                                                                 |     }
    0x08024b78 pld [r3]                                                          |     __asm ("pld [r3]");
                                                                                 |     do {
    0x08024b7c ldrex r2, [r3]                                                    |         __asm ("ldrex r2, [r3]");
    0x08024b80 orr r1, r2, 1                                                     |         r1 = r2 | 1;
    0x08024b84 strex r0, r1, [r3]                                                |         __asm ("strex r0, r1, [r3]");
    0x08024b88 teq r0, 0                                                         |         __asm ("teq r0, 0");
    0x08024b8c bne 0x8024b7c                                                     |         
                                                                                 |     } while ((r2 & 1) != 0);
    0x08024b90 tst r2, 1                                                         |     
                                                                                 |     if ((r2 & 1) != 0) {
    0x08024b94 bne 0x8024d30                                                     |         goto label_16;
                                                                                 |     }
                                                                                 | label_2:
    0x08024b98 ldr r3, [r6, 0xc]                                                 |     r3 = *((r6 + 0xc));
    0x08024b9c ldr r2, [sp, 0x14]                                                |     r2 = var_14h;
    0x08024ba0 cmp r3, r2                                                        |     
                                                                                 |     if (r3 != r2) {
    0x08024ba4 bne 0x8024eec                                                     |         goto label_17;
                                                                                 |     }
    0x08024ba8 mov r0, r6                                                        |     r0 = r6;
    0x08024bac stmdaeq r8, {r0, r1, r2, r6, r8, sb, sl, fp, ip, pc}              |     __asm ("stmdaeq r8, {r0, r1, r2, r6, r8, sb, sl, fp, ip, pc}");
    0x08024bb0 ldr r3, [r4, 0x1c]                                                |     r3 = *((r4 + 0x1c));
    0x08024bb4 ldr r3, [r3, 0x1f8]                                               |     r3 = *((r3 + 0x1f8));
    0x08024bb8 ldr r3, [r3, 0x4c]                                                |     r3 = *((r3 + 0x4c));
    0x08024bbc tst r3, 0x400000                                                  |     
                                                                                 |     if ((r3 & 0x400000) != 0) {
    0x08024bc0 beq 0x8024c0c                                                     |         
    0x08024bc4 ldrh r3, [r4]                                                     |         r3 = *(r4);
    0x08024bc8 ldr r2, [sp, 0x1c]                                                |         r2 = var_1ch;
    0x08024bcc and r3, r3, r2                                                    |         r3 &= r2;
    0x08024bd0 cmp r3, 0x8000                                                    |         
                                                                                 |         if (r3 != 0x8000) {
    0x08024bd4 bne 0x8024c0c                                                     |             goto label_18;
                                                                                 |         }
    0x08024bd8 ldr r3, [r4, -0x6c]                                               |         r3 = *((r4 - 0x6c));
    0x08024bdc tst r3, 0x80000                                                   |         
                                                                                 |         if ((r3 & 0x80000) == 0) {
    0x08024be0 beq 0x8024c0c                                                     |             goto label_18;
                                                                                 |         }
    0x08024be4 mov r0, r4                                                        |         r0 = r4;
    0x08024be8 stmdaeq r0, {r3, r4, r5, r6, r7, fp, ip, sp}                      |         __asm ("stmdaeq r0, {r3, r4, r5, r6, r7, fp, ip, sp}");
    0x08024bec tst r0, 1                                                         |         
                                                                                 |         if ((r0 & 1) != 0) {
    0x08024bf0 bne 0x8024c0c                                                     |             goto label_18;
                                                                                 |         }
    0x08024bf4 ldr r3, [r4, 0x1c]                                                |         r3 = *((r4 + 0x1c));
    0x08024bf8 ldr r3, [r3, 0x1f8]                                               |         r3 = *((r3 + 0x1f8));
    0x08024bfc ldr r3, [r3, 0x4c]                                                |         r3 = *((r3 + 0x4c));
    0x08024c00 tst r3, 0x8000000                                                 |         
                                                                                 |         if ((r3 & loc.imp.fs_overflowgid) == 0) {
    0x08024c04 ldrne r3, [sp, 0x24]                                              |             r3 = var_24h;
                                                                                 |         }
                                                                                 |         if ((r3 & loc.imp.fs_overflowgid) != 0) {
    0x08024c08 bne 0x8024c10                                                     |             goto label_19;
                                                                                 |         }
                                                                                 |     }
                                                                                 | label_18:
    0x08024c0c ldr r3, [sp, 0x20]                                                |     r3 = var_20h;
                                                                                 | label_19:
    0x08024c10 str r3, [sp, 4]                                                   |     var_4h = r3;
    0x08024c14 mov r2, r8                                                        |     r2 = r8;
    0x08024c18 mov r3, sb                                                        |     r3 = sb;
    0x08024c1c mov r0, r6                                                        |     r0 = r6;
    0x08024c20 str r7, [sp]                                                      |     *(sp) = r7;
    0x08024c24 bl 0x801d38c                                                      |     r0 = ext4_block_write_begin ();
    0x08024c28 mov sl, r0                                                        |     sl = r0;
    0x08024c2c cmp r0, 0                                                         |     
                                                                                 |     if (r0 == 0) {
    0x08024c30 beq 0x8024d3c                                                     |         goto label_20;
                                                                                 |     }
                                                                                 | label_4:
    0x08024c34 ldr r0, [r4, 0x38]                                                |     r0 = *((r4 + 0x38));
    0x08024c38 adds r1, r7, r8                                                   |     r1 = r7 + r8;
    0x08024c3c ldr r3, [r4, 0x3c]                                                |     r3 = *((r4 + 0x3c));
    0x08024c40 adc r2, sb, 0                                                     |     __asm ("adc r2, sb, 0");
    0x08024c44 cmp r0, r1                                                        |     
    0x08024c48 mov r0, r6                                                        |     r0 = r6;
    0x08024c4c sbcs r3, r3, r2                                                   |     __asm ("sbcs r3, r3, r2");
                                                                                 |     if (r0 >= r1) {
    0x08024c50 bge 0x8024d18                                                     |         goto label_21;
                                                                                 |     }
    0x08024c54 stmdaeq r8, {r0, r1, r2, r5, r6, sb, sl, fp, ip, pc}              |     __asm ("stmdaeq r8, {r0, r1, r2, r5, r6, sb, sl, fp, ip, pc}");
    0x08024c58 ldrh r3, [r4]                                                     |     r3 = *(r4);
    0x08024c5c ldr r2, [sp, 0x1c]                                                |     r2 = var_1ch;
    0x08024c60 and r3, r3, r2                                                    |     r3 &= r2;
    0x08024c64 sub r2, r3, 0x4000                                                |     r2 = r3 - 0x4000;
    0x08024c68 tst r2, 0xb000                                                    |     
                                                                                 |     if ((r2 & 0xb000) == 0) {
    0x08024c6c beq 0x8024e1c                                                     |         goto label_22;
                                                                                 |     }
    0x08024c70 cmp r3, 0xa000                                                    |     
                                                                                 |     if (r3 == 0xa000) {
    0x08024c74 beq 0x8024e0c                                                     |         goto label_23;
                                                                                 |     }
                                                                                 | label_5:
    0x08024c78 ldr r0, [pc, 0x2d0]                                               |     r0 = *(0x8024f4c);
    0x08024c7c mov r2, fp                                                        |     r2 = fp;
    0x08024c80 movw r1, 0x4d1                                                    |     r1 = 0x4d1;
    0x08024c84 stmdaeq r0, {r5, r7, sb, fp, ip, sp}                              |     __asm ("stmdaeq r0, {r5, r7, sb, fp, ip, sp}");
                                                                                 | label_6:
    0x08024c88 sub r5, r4, 0x10                                                  |     r5 = r4 - 0x10;
    0x08024c8c mov r0, r5                                                        |     r0 = r5;
    0x08024c90 stmdaeq r8, {r0, r1, r2, r6, r8, sl, fp, ip, pc}                  |     __asm ("stmdaeq r8, {r0, r1, r2, r6, r8, sl, fp, ip, pc}");
    0x08024c94 ldr r0, [r4, 0x20]                                                |     r0 = *((r4 + 0x20));
    0x08024c98 ldrd r2, r3, [r4, 0x38]                                           |     __asm ("ldrd r2, r3, [r4, 0x38]");
    0x08024c9c stmdaeq r8, {r0, r1, r5, r6, r7, r8, sl, fp, ip, pc}              |     __asm ("stmdaeq r8, {r0, r1, r5, r6, r7, r8, sl, fp, ip, pc}");
    0x08024ca0 mov r0, r4                                                        |     r0 = r4;
    0x08024ca4 stmdaeq r2, {r7, sb, sl, lr}                                      |     __asm ("stmdaeq r2, {r7, sb, sl, lr}");
    0x08024ca8 mov r0, r5                                                        |     r0 = r5;
    0x08024cac stmdaeq r8, {r0, r1, r3, r6, r8, sl, fp, ip, pc}                  |     __asm ("stmdaeq r8, {r0, r1, r3, r6, r8, sl, fp, ip, pc}");
    0x08024cb0 ldr r3, [r4, 0x2c]                                                |     r3 = *((r4 + 0x2c));
    0x08024cb4 cmp r3, 0                                                         |     
                                                                                 |     if (r3 != 0) {
    0x08024cb8 bne 0x8024e80                                                     |         goto label_24;
                                                                                 |     }
                                                                                 | label_1:
    0x08024cbc cmn sl, 0x1c                                                      |     
                                                                                 |     if (sl != 0x1c) {
    0x08024cc0 bne 0x8024cd8                                                     |         goto label_25;
                                                                                 |     }
    0x08024cc4 ldr r0, [r4, 0x1c]                                                |     r0 = *((r4 + 0x1c));
    0x08024cc8 add r1, sp, 0x44                                                  |     r1 += var_44h;
    0x08024ccc stmdaeq r0, {r2, r3, r6, fp}                                      |     __asm ("stmdaeq r0, {r2, r3, r6, fp}");
    0x08024cd0 cmp r0, 0                                                         |     
                                                                                 |     if (r0 != 0) {
    0x08024cd4 bne 0x8024b24                                                     |         goto label_0;
                                                                                 |     }
                                                                                 | label_25:
    0x08024cd8 ldr r3, [r6, 4]                                                   |     r3 = *((r6 + 4));
    0x08024cdc mov fp, sl                                                        |     
    0x08024ce0 tst r3, 1                                                         |     
                                                                                 |     if ((r3 & 1) == 0) {
    0x08024ce4 subne r6, r3, 1                                                   |         r6 = r3 - 1;
                                                                                 |     }
    0x08024ce8 add r3, r6, 0x1c                                                  |     r3 = r6 + 0x1c;
    0x08024cec pld [r3]                                                          |     __asm ("pld [r3]");
                                                                                 |     do {
    0x08024cf0 ldrex r2, [r3]                                                    |         __asm ("ldrex r2, [r3]");
    0x08024cf4 sub r2, r2, 1                                                     |         r2--;
    0x08024cf8 strex r0, r2, [r3]                                                |         __asm ("strex r0, r2, [r3]");
    0x08024cfc teq r0, 0                                                         |         __asm ("teq r0, 0");
    0x08024d00 bne 0x8024cf0                                                     |         
                                                                                 |     } while ((r3 & 1) != 0);
    0x08024d04 cmp r2, 0                                                         |     
                                                                                 |     if (r2 != 0) {
    0x08024d08 bne 0x8024e00                                                     |         goto label_7;
                                                                                 |     }
    0x08024d0c mov r0, r6                                                        |     r0 = r6;
    0x08024d10 stmdaeq r8, {r0, r1, r2, r4, r5, r6, sb, sl, fp, ip, pc}          |     __asm ("stmdaeq r8, {r0, r1, r2, r4, r5, r6, sb, sl, fp, ip, pc}");
    0x08024d14 b 0x8024e00                                                       |     goto label_7;
                                                                                 | label_21:
    0x08024d18 stmdaeq r8, {r0, r1, r2, r5, r6, sb, sl, fp, ip, pc}              |     __asm ("stmdaeq r8, {r0, r1, r2, r5, r6, sb, sl, fp, ip, pc}");
    0x08024d1c mov r2, fp                                                        |     r2 = fp;
    0x08024d20 movw r1, 0x4d1                                                    |     r1 = 0x4d1;
    0x08024d24 ldr r0, [pc, 0x224]                                               |     r0 = *(0x8024f4c);
    0x08024d28 stmdaeq r0, {r5, r7, sb, fp, ip, sp}                              |     __asm ("stmdaeq r0, {r5, r7, sb, fp, ip, sp}");
    0x08024d2c b 0x8024cbc                                                       |     goto label_1;
                                                                                 | label_16:
    0x08024d30 mov r0, r6                                                        |     r0 = r6;
    0x08024d34 stmdaeq r8, {r0, r1, r4, r6, r7, sb, sl, fp, ip, pc}              |     __asm ("stmdaeq r8, {r0, r1, r4, r6, r7, sb, sl, fp, ip, pc}");
    0x08024d38 b 0x8024b98                                                       |     goto label_2;
                                                                                 | label_20:
    0x08024d3c mov r0, r4                                                        |     r0 = r4;
    0x08024d40 stmdaeq r0, {r3, r4, r5, r6, r7, fp, ip, sp}                      |     __asm ("stmdaeq r0, {r3, r4, r5, r6, r7, fp, ip, sp}");
    0x08024d44 tst r0, 1                                                         |     
                                                                                 |     if ((r0 & 1) == 0) {
    0x08024d48 beq 0x8024df4                                                     |         goto label_26;
                                                                                 |     }
    0x08024d4c ldr r3, [r6]                                                      |     r3 = *(r6);
    0x08024d50 mvn r3, r3, lsr 13                                                |     r3 = ~r3;
    0x08024d54 ands r3, r3, 1                                                    |     r3 &= 1;
                                                                                 |     if (r3 != r3) {
    0x08024d58 bne 0x8024ee8                                                     |         goto label_27;
                                                                                 |     }
    0x08024d5c ldr ip, [r6, 0x14]                                                |     ip = *((r6 + 0x14));
    0x08024d60 str r4, [sp, 0x30]                                                |     var_30h = r4;
    0x08024d64 str r7, [sp, 0x70]                                                |     *(arg_70h) = r7;
    0x08024d68 mov r5, ip                                                        |     r5 = ip;
    0x08024d6c str r8, [sp, 0x34]                                                |     var_34h = r8;
    0x08024d70 mov r8, ip                                                        |     r8 = ip;
    0x08024d74 str sb, [sp, 0x38]                                                |     var_38h = sb;
    0x08024d78 mov sb, r3                                                        |     sb = r3;
    0x08024d7c ldr sl, [ip, 0x18]                                                |     sl = *((ip + 0x18));
    0x08024d80 ldr r4, [sp, 0x28]                                                |     r4 = var_28h;
    0x08024d84 ldr r7, [sp, 0x2c]                                                |     r7 = var_2ch;
    0x08024d88 b 0x8024da4                                                       |     
                                                                                 |     while (r1 != 0) {
                                                                                 | label_3:
    0x08024d8c clz r1, sb                                                        |         r1 &= sb;
    0x08024d90 lsr r1, r1, 5                                                     |         r1 >>= 5;
    0x08024d94 cmp r5, r8                                                        |         
                                                                                 |         if (r5 == r8) {
    0x08024d98 orrne r1, r1, 1                                                   |             r1 |= 1;
                                                                                 |         }
    0x08024d9c cmp r1, 0                                                         |         
                                                                                 |         if (r1 == 0) {
    0x08024da0 beq 0x8024df4                                                     |             goto label_26;
                                                                                 |         }
    0x08024da4 mov r1, sb                                                        |         r1 = sb;
    0x08024da8 add sb, sb, sl                                                    |         sb += sl;
    0x08024dac cmp r7, r1                                                        |         
                                                                                 |         if (r7 <= r1) {
    0x08024db0 movhi r1, 0                                                       |             r1 = 0;
                                                                                 |         }
                                                                                 |         if (r7 > r1) {
    0x08024db4 movls r1, 1                                                       |             r1 = 1;
                                                                                 |         }
    0x08024db8 cmp r4, sb                                                        |         
                                                                                 |         if (r4 < sb) {
    0x08024dbc orrhs r1, r1, 1                                                   |             r1 |= 1;
                                                                                 |         }
    0x08024dc0 cmp r1, 0                                                         |         
    0x08024dc4 mov r1, r8                                                        |         r1 = r8;
    0x08024dc8 ldr r8, [r8, 4]                                                   |         r8 = *((r8 + 4));
    0x08024dcc bne 0x8024d8c                                                     |         
                                                                                 |     }
    0x08024dd0 mov r0, fp                                                        |     r0 = fp;
    0x08024dd4 stmdaeq r2, {r3, r6, r7, r8}                                      |     __asm ("stmdaeq r2, {r3, r6, r7, r8}");
    0x08024dd8 cmp r0, 0                                                         |     
                                                                                 |     if (r0 == 0) {
    0x08024ddc beq 0x8024d8c                                                     |         goto label_3;
                                                                                 |     }
    0x08024de0 ldr r4, [sp, 0x30]                                                |     r4 = var_30h;
    0x08024de4 mov sl, r0                                                        |     sl = r0;
    0x08024de8 ldr r7, [sp, 0x70]                                                |     r7 = *(arg_70h);
    0x08024dec ldrd r8, sb, [sp, 0x34]                                           |     __asm ("ldrd r8, sb, [var_34h]");
    0x08024df0 b 0x8024c34                                                       |     goto label_4;
                                                                                 | label_26:
    0x08024df4 ldr r3, [sp, 0x78]                                                |     r3 = *(arg_78h);
    0x08024df8 str r6, [r3]                                                      |     *(r3) = r6;
                                                                                 | label_9:
    0x08024dfc mov fp, 0                                                         |     
                                                                                 | label_7:
    0x08024e00 mov r0, fp                                                        |     r0 = fp;
    0x08024e04 add sp, sp, 0x4c                                                  |     
    0x08024e08 pop {r4, r5, r6, r7, r8, sb, sl, fp, pc}                          |     
                                                                                 | label_23:
    0x08024e0c mov r0, r4                                                        |     r0 = r4;
    0x08024e10 stmdaeq r1, {r2, r3, r5, r6, r7, fp, sp, lr, pc}                  |     __asm ("stmdaeq r1, {r2, r3, r5, r6, r7, fp, sp, lr, pc}");
    0x08024e14 cmp r0, 0                                                         |     
                                                                                 |     if (r0 != 0) {
    0x08024e18 bne 0x8024c78                                                     |         goto label_5;
                                                                                 |     }
                                                                                 | label_22:
    0x08024e1c mov r1, r4                                                        |     r1 = r4;
    0x08024e20 mov r0, fp                                                        |     r0 = fp;
    0x08024e24 stmdaeq r3, {r3, r4, r7, sl, lr, pc}                              |     __asm ("stmdaeq r3, {r3, r4, r7, sl, lr, pc}");
    0x08024e28 mov r2, fp                                                        |     r2 = fp;
    0x08024e2c movw r1, 0x4d1                                                    |     r1 = 0x4d1;
    0x08024e30 ldr r0, [pc, 0x118]                                               |     r0 = *(0x8024f4c);
    0x08024e34 stmdaeq r0, {r5, r7, sb, fp, ip, sp}                              |     __asm ("stmdaeq r0, {r5, r7, sb, fp, ip, sp}");
    0x08024e38 b 0x8024c88                                                       |     goto label_6;
                                                                                 | label_15:
    0x08024e3c ldr r3, [r6, 4]                                                   |     r3 = *((r6 + 4));
    0x08024e40 mov sl, r0                                                        |     sl = r0;
    0x08024e44 tst r3, 1                                                         |     
                                                                                 |     if ((r3 & 1) == 0) {
    0x08024e48 subne r6, r3, 1                                                   |         r6 = r3 - 1;
                                                                                 |     }
    0x08024e4c add r3, r6, 0x1c                                                  |     r3 = r6 + 0x1c;
    0x08024e50 pld [r3]                                                          |     __asm ("pld [r3]");
                                                                                 |     do {
    0x08024e54 ldrex r1, [r3]                                                    |         __asm ("ldrex r1, [r3]");
    0x08024e58 sub r1, r1, 1                                                     |         r1--;
    0x08024e5c strex r0, r1, [r3]                                                |         __asm ("strex r0, r1, [r3]");
    0x08024e60 teq r0, 0                                                         |         __asm ("teq r0, 0");
    0x08024e64 bne 0x8024e54                                                     |         
                                                                                 |     } while ((r3 & 1) != 0);
    0x08024e68 cmp r1, 0                                                         |     
                                                                                 |     if (r1 == 0) {
    0x08024e6c beq 0x8024ecc                                                     |         goto label_28;
                                                                                 |     }
                                                                                 | label_10:
    0x08024e70 mov fp, sl                                                        |     
    0x08024e74 mov r0, fp                                                        |     r0 = fp;
    0x08024e78 add sp, sp, 0x4c                                                  |     
    0x08024e7c pop {r4, r5, r6, r7, r8, sb, sl, fp, pc}                          |     
                                                                                 | label_24:
    0x08024e80 mov r1, r4                                                        |     r1 = r4;
    0x08024e84 mov r0, 0                                                         |     r0 = 0;
    0x08024e88 stmdaeq r3, {r2, r3, r5, r6, r7, sl, fp, ip, lr, pc}              |     __asm ("stmdaeq r3, {r2, r3, r5, r6, r7, sl, fp, ip, lr, pc}");
    0x08024e8c b 0x8024cbc                                                       |     goto label_1;
                                                                                 | label_13:
    0x08024e90 ldr r3, [sp, 0x78]                                                |     r3 = *(arg_78h);
    0x08024e94 mov r2, r8                                                        |     r2 = r8;
    0x08024e98 str r3, [sp, 8]                                                   |     var_8h = r3;
    0x08024e9c mov r1, r4                                                        |     r1 = r4;
    0x08024ea0 ldr r3, [sp, 0x74]                                                |     r3 = *(arg_74h);
    0x08024ea4 str r3, [sp, 4]                                                   |     var_4h = r3;
    0x08024ea8 mov r3, sb                                                        |     r3 = sb;
    0x08024eac ldr r0, [sp, 0x14]                                                |     r0 = var_14h;
    0x08024eb0 str r7, [sp]                                                      |     *(sp) = r7;
    0x08024eb4 stmdaeq r1, {r3, r4, r5, r6, r7, r8, sl, fp, ip, pc}              |     __asm ("stmdaeq r1, {r3, r4, r5, r6, r7, r8, sl, fp, ip, pc}");
    0x08024eb8 subs fp, r0, 0                                                    |     
                                                                                 |     if (fp < r0) {
    0x08024ebc blt 0x8024e00                                                     |         goto label_7;
                                                                                 |     }
    0x08024ec0 cmp fp, 1                                                         |     
                                                                                 |     if (fp != 1) {
    0x08024ec4 bne 0x8024ae0                                                     |         goto label_8;
                                                                                 |     }
    0x08024ec8 b 0x8024dfc                                                       |     goto label_9;
                                                                                 | label_28:
    0x08024ecc mov r0, r6                                                        |     r0 = r6;
    0x08024ed0 stmdaeq r8, {r0, r1, r2, r4, r5, r6, sb, sl, fp, ip, pc}          |     __asm ("stmdaeq r8, {r0, r1, r2, r4, r5, r6, sb, sl, fp, ip, pc}");
    0x08024ed4 b 0x8024e70                                                       |     goto label_10;
                                                                                 | label_12:
    0x08024ed8 mvn fp, 4                                                         |     
    0x08024edc mov r0, fp                                                        |     r0 = fp;
    0x08024ee0 add sp, sp, 0x4c                                                  |     
    0x08024ee4 pop {r4, r5, r6, r7, r8, sb, sl, fp, pc}                          |     
                                                                                 | label_27:
    0x08024ee8 udf 0x12                                                          |     __asm ("udf 0x12");
                                                                                 | label_17:
    0x08024eec mov r0, r6                                                        |     r0 = r6;
    0x08024ef0 ldr r5, [sp, 0x3c]                                                |     r5 = var_3ch;
    0x08024ef4 stmdaeq r8, {r0, r1, r2, r5, r6, sb, sl, fp, ip, pc}              |     __asm ("stmdaeq r8, {r0, r1, r2, r5, r6, sb, sl, fp, ip, pc}");
    0x08024ef8 ldr r3, [r6, 4]                                                   |     r3 = *((r6 + 4));
    0x08024efc tst r3, 1                                                         |     
                                                                                 |     if ((r3 & 1) == 0) {
    0x08024f00 subne r6, r3, 1                                                   |         r6 = r3 - 1;
                                                                                 |     }
    0x08024f04 add r3, r6, 0x1c                                                  |     r3 = r6 + 0x1c;
    0x08024f08 pld [r3]                                                          |     __asm ("pld [r3]");
                                                                                 |     do {
    0x08024f0c ldrex r1, [r3]                                                    |         __asm ("ldrex r1, [r3]");
    0x08024f10 sub r1, r1, 1                                                     |         r1--;
    0x08024f14 strex r0, r1, [r3]                                                |         __asm ("strex r0, r1, [r3]");
    0x08024f18 teq r0, 0                                                         |         __asm ("teq r0, 0");
    0x08024f1c bne 0x8024f0c                                                     |         
                                                                                 |     } while ((r3 & 1) != 0);
    0x08024f20 cmp r1, 0                                                         |     
    0x08024f24 beq 0x8024f3c                                                     |     
                                                                                 |     while (1) {
    0x08024f28 mov r2, fp                                                        |         r2 = fp;
    0x08024f2c movw r1, 0x4a7                                                    |         r1 = 0x4a7;
    0x08024f30 ldr r0, [pc, 0x18]                                                |         r0 = *(0x8024f4c);
    0x08024f34 stmdaeq r0, {r5, r7, sb, fp, ip, sp}                              |         __asm ("stmdaeq r0, {r5, r7, sb, fp, ip, sp}");
    0x08024f38 b 0x8024b04                                                       |         goto label_11;
    0x08024f3c mov r0, r6                                                        |         r0 = r6;
    0x08024f40 stmdaeq r8, {r0, r1, r2, r4, r5, r6, sb, sl, fp, ip, pc}          |         __asm ("stmdaeq r8, {r0, r1, r2, r4, r5, r6, sb, sl, fp, ip, pc}");
    0x08024f44 b 0x8024f28                                                       |         
                                                                                 |     }
                                                                                 | label_14:
    0x08024f48 mvn fp, 0xb                                                       |     
    0x08024f4c b 0x8024e00                                                       |     goto label_7;
                                                                                 | }
    ; assembly                                                                       | /* r2dec pseudo code output */
                                                                                     | /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-80367616.squashfs_v4_le_extract/usr/lib/modules/5.10.52-axis9/kernel/fs/ext4/ext4.ko @ 0x80230cc */
                                                                                     | #include <stdint.h>
                                                                                     |  
                                                                                     | #define BIT_MASK(t,v) ((t)(-((v)!= 0)))&(((t)-1)>>((sizeof(t)*CHAR_BIT)-(v)))
                                                                                     |  
    ; (fcn) sym.ext4_writepages ()                                                   | void ext4_writepages (int32_t arg1, int32_t arg2) {
                                                                                     |     int32_t var_0h;
                                                                                     |     int32_t var_4h;
                                                                                     |     int32_t var_8h;
                                                                                     |     int32_t var_14h;
                                                                                     |     int32_t var_18h;
                                                                                     |     int32_t var_1ch;
                                                                                     |     int32_t var_20h;
                                                                                     |     int32_t var_24h;
                                                                                     |     int32_t var_2bh;
                                                                                     |     int32_t var_2ch;
                                                                                     |     int32_t var_40h;
                                                                                     |     int32_t var_44h;
                                                                                     |     int32_t var_48h;
                                                                                     |     int32_t var_50h;
                                                                                     |     int32_t var_64h;
                                                                                     |     int32_t var_70h;
                                                                                     |     int32_t var_78h;
                                                                                     |     int32_t var_88h;
                                                                                     |     int32_t var_94h;
                                                                                     |     r0 = arg1;
                                                                                     |     r1 = arg2;
    0x080230cc push {r4, r5, r6, r7, r8, sb, sl, fp, lr}                             |     
    0x080230d0 mov r3, 0                                                             |     r3 = 0;
    0x080230d4 mov r6, r1                                                            |     r6 = r1;
    0x080230d8 ldr r5, [r0]                                                          |     r5 = *(r0);
    0x080230dc sub sp, sp, 0x94                                                      |     
    0x080230e0 strb r3, [sp, 0x2b]                                                   |     var_2bh = r3;
    0x080230e4 ldr r3, [r5, 0x1c]                                                    |     r3 = *((r5 + 0x1c));
    0x080230e8 ldr sl, [r3, 0x1f8]                                                   |     sl = *((r3 + 0x1f8));
    0x080230ec ldr r1, [sl, 0x130]                                                   |     r1 = *((sl + 0x130));
    0x080230f0 ubfx r1, r1, 1, 1                                                     |     r1 = (r1 >> 1) & ((1 << 1) - 1);
    0x080230f4 cmp r1, 0                                                             |     
                                                                                     |     if (r1 != 0) {
    0x080230f8 bne 0x80236b0                                                         |         goto label_16;
                                                                                     |     }
    0x080230fc mov r3, sp                                                            |     r3 = sp;
    0x08023100 mov r8, r0                                                            |     r8 = r0;
    0x08023104 bic r3, r3, 0x1fc0                                                    |     r3 = BIT_MASK (r3, 0x1fc0);
    0x08023108 bic r3, r3, 0x3f                                                      |     r3 = BIT_MASK (r3, 0x3f);
    0x0802310c ldr r2, [r3, 4]                                                       |     r2 = *((r3 + 4));
    0x08023110 add r2, r2, 1                                                         |     r2++;
    0x08023114 str r2, [r3, 4]                                                       |     *((r3 + 4)) = r2;
    0x08023118 ldr r3, [sl, 0x2ec]                                                   |     r3 = *((sl + 0x2ec));
    0x0802311c cmp r3, 0                                                             |     
                                                                                     |     if (r3 != 0) {
    0x08023120 bne 0x80236c0                                                         |         goto label_17;
                                                                                     |     }
    0x08023124 mrs r1, apsr                                                          |     r1 = apsr;
    0x08023128 cpsid i                                                               |     __asm ("cpsid i");
    0x0802312c ldr r2, [sl, 0x304]                                                   |     r2 = *((sl + 0x304));
    0x08023130 ldr r3, [r2]                                                          |     r3 = *(r2);
    0x08023134 add r3, r3, 1                                                         |     r3++;
    0x08023138 str r3, [r2]                                                          |     *(r2) = r3;
    0x0802313c msr cpsr_c, r1                                                        |     cpsr_c = r1;
                                                                                     | label_9:
    0x08023140 mov r3, sp                                                            |     r3 = sp;
    0x08023144 bic r3, r3, 0x1fc0                                                    |     r3 = BIT_MASK (r3, 0x1fc0);
    0x08023148 bic r3, r3, 0x3f                                                      |     r3 = BIT_MASK (r3, 0x3f);
    0x0802314c ldr r2, [r3, 4]                                                       |     r2 = *((r3 + 4));
    0x08023150 sub r2, r2, 1                                                         |     r2--;
    0x08023154 str r2, [r3, 4]                                                       |     *((r3 + 4)) = r2;
    0x08023158 cmp r2, 0                                                             |     
                                                                                     |     if (r2 == 0) {
    0x0802315c beq 0x8023558                                                         |         goto label_18;
                                                                                     |     }
                                                                                     | label_1:
    0x08023160 ldr r4, [r8, 0x2c]                                                    |     r4 = *((r8 + 0x2c));
    0x08023164 cmp r4, 0                                                             |     
                                                                                     |     if (r4 == 0) {
    0x08023168 beq 0x8023178                                                         |         goto label_4;
                                                                                     |     }
    0x0802316c ldr r4, [r8, 4]                                                       |     r4 = *((r8 + 4));
    0x08023170 ands r4, r4, 0x800000                                                 |     r4 &= 0x800000;
    0x08023174 bne 0x80231e4                                                         |     
                                                                                     |     while (r0 > 0x1000) {
                                                                                     | label_4:
    0x08023178 mov r3, sp                                                            |         r3 = sp;
    0x0802317c bic r3, r3, 0x1fc0                                                    |         r3 = BIT_MASK (r3, 0x1fc0);
    0x08023180 bic r3, r3, 0x3f                                                      |         r3 = BIT_MASK (r3, 0x3f);
    0x08023184 ldr r2, [r3, 4]                                                       |         r2 = *((r3 + 4));
    0x08023188 add r2, r2, 1                                                         |         r2++;
    0x0802318c str r2, [r3, 4]                                                       |         *((r3 + 4)) = r2;
    0x08023190 ldr r3, [sl, 0x2ec]                                                   |         r3 = *((sl + 0x2ec));
    0x08023194 cmp r3, 0                                                             |         
                                                                                     |         if (r3 != 0) {
    0x08023198 bne 0x80236f4                                                         |             goto label_19;
                                                                                     |         }
    0x0802319c mrs r1, apsr                                                          |         r1 = apsr;
    0x080231a0 cpsid i                                                               |         __asm ("cpsid i");
    0x080231a4 ldr r2, [sl, 0x304]                                                   |         r2 = *((sl + 0x304));
    0x080231a8 ldr r3, [r2]                                                          |         r3 = *(r2);
    0x080231ac sub r3, r3, 1                                                         |         r3--;
    0x080231b0 str r3, [r2]                                                          |         *(r2) = r3;
    0x080231b4 msr cpsr_c, r1                                                        |         cpsr_c = r1;
                                                                                     | label_11:
    0x080231b8 mov r3, sp                                                            |         r3 = sp;
    0x080231bc bic r3, r3, 0x1fc0                                                    |         r3 = BIT_MASK (r3, 0x1fc0);
    0x080231c0 bic r3, r3, 0x3f                                                      |         r3 = BIT_MASK (r3, 0x3f);
    0x080231c4 ldr r2, [r3, 4]                                                       |         r2 = *((r3 + 4));
    0x080231c8 sub r2, r2, 1                                                         |         r2--;
    0x080231cc str r2, [r3, 4]                                                       |         *((r3 + 4)) = r2;
    0x080231d0 cmp r2, 0                                                             |         
                                                                                     |         if (r2 == 0) {
    0x080231d4 beq 0x802356c                                                         |             goto label_20;
                                                                                     |         }
                                                                                     | label_2:
    0x080231d8 mov r0, r4                                                            |         r0 = r4;
    0x080231dc add sp, sp, 0x94                                                      |         
    0x080231e0 pop {r4, r5, r6, r7, r8, sb, sl, fp, pc}                              |         
    0x080231e4 mov r0, r5                                                            |         r0 = r5;
    0x080231e8 stmdaeq r0, {r3, r4, r5, r6, r7, fp, ip, sp}                          |         __asm ("stmdaeq r0, {r3, r4, r5, r6, r7, fp, ip, sp}");
    0x080231ec ands r3, r0, 1                                                        |         r3 = r0 & 1;
    0x080231f0 str r3, [sp, 0x20]                                                    |         var_20h = r3;
                                                                                     |         if (r3 != r0) {
    0x080231f4 bne 0x802371c                                                         |             goto label_21;
                                                                                     |         }
    0x080231f8 ldr r3, [r8]                                                          |         r3 = *(r8);
    0x080231fc ldr r3, [r3, 0x1c]                                                    |         r3 = *((r3 + 0x1c));
    0x08023200 ldr r3, [r3, 0x1f8]                                                   |         r3 = *((r3 + 0x1f8));
    0x08023204 ldr r3, [r3, 0x130]                                                   |         r3 = *((r3 + 0x130));
    0x08023208 tst r3, 2                                                             |         
                                                                                     |         if ((r3 & 2) != 0) {
    0x0802320c bne 0x8023778                                                         |             goto label_22;
                                                                                     |         }
    0x08023210 ldr r0, [r5, 0x1c]                                                    |         r0 = *((r5 + 0x1c));
    0x08023214 ldr r3, [r0, 0x1f8]                                                   |         r3 = *((r0 + 0x1f8));
    0x08023218 ldr fp, [r3, 0x54]                                                    |         fp = *((r3 + 0x54));
    0x0802321c ubfx fp, fp, 1, 1                                                     |         fp = (fp >> 1) & ((1 << 1) - 1);
    0x08023220 cmp fp, 0                                                             |         
                                                                                     |         if (fp != 0) {
    0x08023224 bne 0x8023778                                                         |             goto label_22;
                                                                                     |         }
    0x08023228 ldr r2, [r5, -0x6c]                                                   |         r2 = *((r5 - 0x6c));
    0x0802322c tst r2, 0x10000000                                                    |         
                                                                                     |         if ((r2 & 0x10000000) == 0) {
    0x08023230 beq 0x802329c                                                         |             goto label_23;
                                                                                     |         }
    0x08023234 movw r2, 0x1be                                                        |         r2 = 0x1be;
    0x08023238 ldrh r2, [r5, r2]                                                     |         r2 = *((r5 + r2));
    0x0802323c cmp r2, 0                                                             |         
                                                                                     |         if (r2 == 0) {
    0x08023240 beq 0x802329c                                                         |             goto label_23;
                                                                                     |         }
    0x08023244 ldr r3, [r3, 0x2c]                                                    |         r3 = *((r3 + 0x2c));
    0x08023248 movw r1, 0xa8c                                                        |         r1 = 0xa8c;
    0x0802324c str fp, [sp]                                                          |         *(sp) = fp;
    0x08023250 lsl r3, r3, 3                                                         |         r3 <<= 3;
    0x08023254 str r3, [sp, 4]                                                       |         var_4h = r3;
    0x08023258 mov r3, 1                                                             |         r3 = 1;
    0x0802325c mov r2, r3                                                            |         r2 = r3;
    0x08023260 stmdaeq r0, {r2, r3, r7, r8, fp, ip, sp}                              |         __asm ("stmdaeq r0, {r2, r3, r7, r8, fp, ip, sp}");
    0x08023264 mov r4, r0                                                            |         r4 = r0;
    0x08023268 cmn r0, 0x1000                                                        |         
    0x0802326c bhi 0x8023178                                                         |         
                                                                                     |     }
    0x08023270 ldr r3, [r5, -0x70]                                                   |     r3 = *((r5 - 0x70));
    0x08023274 tst r3, 0x80                                                          |     
                                                                                     |     if ((r3 & 0x80) != 0) {
    0x08023278 bne 0x8023650                                                         |         goto label_24;
                                                                                     |     }
    0x0802327c mov r1, r5                                                            |     r1 = r5;
    0x08023280 stmdaeq r1, {r2, r6, r7, r8, sl, fp, ip, sp, pc}                      |     __asm ("stmdaeq r1, {r2, r6, r7, r8, sl, fp, ip, sp, pc}");
    0x08023284 ldr r0, [pc, 0x528]                                                   |     r0 = *(0x80237b0);
    0x08023288 mov r2, r4                                                            |     r2 = r4;
    0x0802328c movw r1, 0xa94                                                        |     r1 = 0xa94;
    0x08023290 stmdaeq r0, {r5, r7, sb, fp, ip, sp}                                  |     __asm ("stmdaeq r0, {r5, r7, sb, fp, ip, sp}");
    0x08023294 ldr r3, [r5, 0x1c]                                                    |     r3 = *((r5 + 0x1c));
    0x08023298 ldr r3, [r3, 0x1f8]                                                   |     r3 = *((r3 + 0x1f8));
                                                                                     | label_23:
    0x0802329c ldr r3, [r3, 0x4c]                                                    |     r3 = *((r3 + 0x4c));
    0x080232a0 tst r3, 0x400000                                                      |     
                                                                                     |     if ((r3 & 0x400000) != 0) {
    0x080232a4 beq 0x80232c4                                                         |         
    0x080232a8 ldrh r3, [r5]                                                         |         r3 = *(r5);
    0x080232ac and r3, r3, 0xf000                                                    |         r3 &= 0xf000;
    0x080232b0 cmp r3, 0x8000                                                        |         
                                                                                     |         if (r3 != 0x8000) {
    0x080232b4 bne 0x80232c4                                                         |             goto label_12;
                                                                                     |         }
    0x080232b8 ldr r3, [r5, -0x6c]                                                   |         r3 = *((r5 - 0x6c));
    0x080232bc tst r3, 0x80000                                                       |         
                                                                                     |         if ((r3 & 0x80000) != 0) {
    0x080232c0 bne 0x8023730                                                         |             goto label_25;
                                                                                     |         }
                                                                                     |     }
                                                                                     | label_12:
    0x080232c4 mov r3, 0                                                             |     r3 = 0;
    0x080232c8 str r3, [sp, 0x14]                                                    |     var_14h = r3;
                                                                                     | label_13:
    0x080232cc ldr r3, [r6, 8]                                                       |     r3 = *((r6 + 8));
    0x080232d0 ldr r2, [r6, 0xc]                                                     |     r2 = *((r6 + 0xc));
    0x080232d4 orrs r1, r3, r2                                                       |     r1 = r3 | r2;
                                                                                     |     if (r1 == r3) {
    0x080232d8 bne 0x80232f4                                                         |         
    0x080232dc ldrd r0, r1, [r6, 0x10]                                               |         __asm ("ldrd r0, r1, [r6, 0x10]");
    0x080232e0 cmn r1, 0x80000001                                                    |         
    0x080232e4 cmneq r0, 1                                                           |         __asm ("cmneq r0, 1");
                                                                                     |         if (r1 != 0x80000001) {
    0x080232e8 moveq r1, 1                                                           |             r1 = 1;
                                                                                     |         }
                                                                                     |         if (r1 == 0x80000001) {
    0x080232ec movne r1, 0                                                           |             r1 = 0;
                                                                                     |         }
    0x080232f0 str r1, [sp, 0x20]                                                    |         var_20h = r1;
                                                                                     |     }
    0x080232f4 ldrb r1, [r6, 0x1c]                                                   |     r1 = *((r6 + 0x1c));
    0x080232f8 tst r1, 0x10                                                          |     
                                                                                     |     if ((r1 & 0x10) == 0) {
    0x080232fc beq 0x80236cc                                                         |         goto label_26;
                                                                                     |     }
    0x08023300 ldr fp, [r8, 0x34]                                                    |     fp = *((r8 + 0x34));
    0x08023304 mvn r3, 0                                                             |     r3 = ~0;
    0x08023308 str fp, [sp, 0x48]                                                    |     var_48h = fp;
    0x0802330c clz r2, fp                                                            |     r2 &= fp;
    0x08023310 lsr r2, r2, 5                                                         |     r2 >>= 5;
    0x08023314 str r2, [sp, 0x18]                                                    |     var_18h = r2;
                                                                                     | label_10:
    0x08023318 mov r4, fp                                                            |     r4 = fp;
    0x0802331c mov r1, r6                                                            |     r1 = r6;
    0x08023320 add r0, sp, 0x70                                                      |     r0 += var_70h;
    0x08023324 str r3, [sp, 0x50]                                                    |     var_50h = r3;
    0x08023328 str r5, [sp, 0x40]                                                    |     var_40h = r5;
    0x0802332c str r6, [sp, 0x44]                                                    |     var_44h = r6;
    0x08023330 stmdaeq r3, {r2, r3, r5, r7, r8, ip, sp, lr, pc}                      |     __asm ("stmdaeq r3, {r2, r3, r5, r7, r8, ip, sp, lr, pc}");
                                                                                     | label_0:
    0x08023334 ldr r3, [r6, 0x18]                                                    |     r3 = *((r6 + 0x18));
    0x08023338 cmp r3, 1                                                             |     
                                                                                     |     if (r3 != 1) {
    0x0802333c beq 0x802334c                                                         |         
    0x08023340 ldrb r3, [r6, 0x1c]                                                   |         r3 = *((r6 + 0x1c));
    0x08023344 tst r3, 4                                                             |         
                                                                                     |         if ((r3 & 4) == 0) {
    0x08023348 beq 0x802335c                                                         |             goto label_27;
                                                                                     |         }
                                                                                     |     }
    0x0802334c ldr r2, [sp, 0x50]                                                    |     r2 = var_50h;
    0x08023350 mov r0, r8                                                            |     r0 = r8;
    0x08023354 ldr r1, [sp, 0x48]                                                    |     r1 = var_48h;
    0x08023358 stmdaeq r8, {r0, r1, r3, r4, r5, r8, sb, sl, fp, ip, pc}              |     __asm ("stmdaeq r8, {r0, r1, r3, r4, r5, r8, sb, sl, fp, ip, pc}");
                                                                                     | label_27:
    0x0802335c add r0, sp, 0x2c                                                      |     r0 += var_2ch;
    0x08023360 stmdaeq r8, {r0, r1, r3, r4, r6, r7, sb, sl, fp, ip, pc}              |     __asm ("stmdaeq r8, {r0, r1, r3, r4, r6, r7, sb, sl, fp, ip, pc}");
    0x08023364 ldrb r3, [sp, 0x88]                                                   |     r3 = var_88h;
    0x08023368 mov r0, r5                                                            |     r0 = r5;
    0x0802336c mov r1, 0xcc0                                                         |     r1 = 0xcc0;
    0x08023370 bic r3, r3, 3                                                         |     r3 = BIT_MASK (r3, 3);
    0x08023374 strb r3, [sp, 0x88]                                                   |     var_88h = r3;
    0x08023378 stmdaeq r3, {r3, r4, r5, r6, r7, sl, fp, sp, lr, pc}                  |     __asm ("stmdaeq r3, {r3, r4, r5, r6, r7, sl, fp, sp, lr, pc}");
    0x0802337c cmp r0, 0                                                             |     
    0x08023380 str r0, [sp, 0x78]                                                    |     var_78h = r0;
                                                                                     |     if (r0 == 0) {
    0x08023384 beq 0x8023628                                                         |         goto label_28;
                                                                                     |     }
    0x08023388 add r0, sp, 0x40                                                      |     r0 += var_40h;
    0x0802338c bl 0x801db78                                                          |     mpage_prepare_extent_to_map ();
    0x08023390 mov r1, 0                                                             |     r1 = 0;
    0x08023394 mov fp, r0                                                            |     
    0x08023398 add r0, sp, 0x40                                                      |     r0 += var_40h;
    0x0802339c bl 0x801c830                                                          |     mpage_release_unused_pages ();
    0x080233a0 add r0, sp, 0x70                                                      |     r0 += var_70h;
    0x080233a4 stmdaeq r3, {r4, r6, r8, ip, sp, lr, pc}                              |     __asm ("stmdaeq r3, {r4, r6, r8, ip, sp, lr, pc}");
    0x080233a8 ldr r0, [sp, 0x78]                                                    |     r0 = var_78h;
    0x080233ac stmdaeq r3, {r6, r8, sl, fp, sp, lr, pc}                              |     __asm ("stmdaeq r3, {r6, r8, sl, fp, sp, lr, pc}");
    0x080233b0 mov r2, 0                                                             |     r2 = 0;
    0x080233b4 cmp fp, 0                                                             |     
    0x080233b8 str r2, [sp, 0x78]                                                    |     var_78h = r2;
                                                                                     |     if (fp < 0) {
    0x080233bc blt 0x802360c                                                         |         goto label_29;
                                                                                     |     }
    0x080233c0 ldrb lr, [sp, 0x88]                                                   |     lr = var_88h;
    0x080233c4 ands lr, lr, 2                                                        |     lr &= 2;
                                                                                     |     if (lr != lr) {
    0x080233c8 streq r4, [sp, 0x24]                                                  |         var_24h = r4;
                                                                                     |     }
                                                                                     |     if (lr != lr) {
    0x080233cc streq r8, [sp, 0x1c]                                                  |         var_1ch = r8;
                                                                                     |     }
                                                                                     |     if (lr != lr) {
    0x080233d0 moveq r4, lr                                                          |         r4 = lr;
                                                                                     |     }
                                                                                     |     if (lr != lr) {
    0x080233d4 bne 0x8023788                                                         |         goto label_30;
                                                                                     |     }
                                                                                     |     do {
    0x080233d8 ldr r3, [r6]                                                          |         r3 = *(r6);
    0x080233dc cmp r3, 0                                                             |         
                                                                                     |         if (r3 <= 0) {
    0x080233e0 ble 0x8023780                                                         |             goto label_31;
                                                                                     |         }
    0x080233e4 mov r0, r5                                                            |         r0 = r5;
    0x080233e8 mov r1, 0xcc0                                                         |         r1 = 0xcc0;
    0x080233ec stmdaeq r3, {r3, r4, r5, r6, r7, sl, fp, sp, lr, pc}                  |         __asm ("stmdaeq r3, {r3, r4, r5, r6, r7, sl, fp, sp, lr, pc}");
    0x080233f0 cmp r0, 0                                                             |         
    0x080233f4 str r0, [sp, 0x78]                                                    |         var_78h = r0;
                                                                                     |         if (r0 == 0) {
    0x080233f8 beq 0x80237a0                                                         |             goto label_32;
                                                                                     |         }
    0x080233fc mov r0, r5                                                            |         r0 = r5;
    0x08023400 stmdaeq r0, {r3, r4, r5, r6, r7, fp, ip, sp}                          |         __asm ("stmdaeq r0, {r3, r4, r5, r6, r7, fp, ip, sp}");
    0x08023404 ands fp, r0, 1                                                        |         
                                                                                     |         if (fp != r0) {
    0x08023408 bne 0x8023650                                                         |             goto label_24;
                                                                                     |         }
    0x0802340c ldr r3, [r5, 0x1c]                                                    |         r3 = *((r5 + 0x1c));
    0x08023410 ldr r3, [r3, 0x1f8]                                                   |         r3 = *((r3 + 0x1f8));
    0x08023414 ldr r3, [r3, 0x118]                                                   |         r3 = *((r3 + 0x118));
    0x08023418 cmp r3, 0                                                             |         
                                                                                     |         if (r3 != 0) {
    0x0802341c moveq r2, fp                                                          |             r2 = fp;
                                                                                     |         }
    0x08023420 movweq r1, 0x7ff                                                      |         __asm ("movweq r1, 0x7ff");
                                                                                     |         if (r3 != 0) {
    0x08023424 beq 0x802343c                                                         |             
    0x08023428 mov r0, r5                                                            |             r0 = r5;
    0x0802342c stmdaeq r8, {r0, r1, r2, r3, r4, r8, sb, sl, fp, ip, pc}              |             __asm ("stmdaeq r8, {r0, r1, r2, r3, r4, r8, sb, sl, fp, ip, pc}");
    0x08023430 add r1, r0, 0x7f0                                                     |             r1 = r0 + 0x7f0;
    0x08023434 mov r2, r0                                                            |             r2 = r0;
    0x08023438 add r1, r1, 0xf                                                       |             r1 += 0xf;
                                                                                     |         }
    0x0802343c mov r0, r5                                                            |         r0 = r5;
    0x08023440 bl 0x801c7cc                                                          |         r0 = ext4_meta_trans_blocks ();
    0x08023444 mov r3, r0                                                            |         r3 = r0;
    0x08023448 ldr r0, [r5, 0x1c]                                                    |         r0 = *((r5 + 0x1c));
    0x0802344c mov r2, 2                                                             |         r2 = 2;
    0x08023450 ldr lr, [sp, 0x14]                                                    |         lr = var_14h;
    0x08023454 mov r1, 0xae0                                                         |         r1 = 0xae0;
    0x08023458 ldr ip, [r0, 0x1f8]                                                   |         ip = *((r0 + 0x1f8));
    0x0802345c ldr ip, [ip, 0x2c]                                                    |         ip = *((ip + 0x2c));
    0x08023460 str lr, [sp]                                                          |         
    0x08023464 lsl ip, ip, 3                                                         |         
    0x08023468 str ip, [sp, 4]                                                       |         var_4h = ip;
    0x0802346c stmdaeq r0, {r2, r3, r7, r8, fp, ip, sp}                              |         __asm ("stmdaeq r0, {r2, r3, r7, r8, fp, ip, sp}");
    0x08023470 mov r7, r0                                                            |         r7 = r0;
    0x08023474 cmn r0, 0x1000                                                        |         
                                                                                     |         if (r0 > 0x1000) {
    0x08023478 bhi 0x802365c                                                         |             goto label_33;
                                                                                     |         }
    0x0802347c ldrb r3, [sp, 0x88]                                                   |         r3 = var_88h;
    0x08023480 add r0, sp, 0x40                                                      |         r0 += var_40h;
    0x08023484 orr r3, r3, 1                                                         |         r3 |= 1;
    0x08023488 strb r3, [sp, 0x88]                                                   |         var_88h = r3;
    0x0802348c bl 0x801db78                                                          |         mpage_prepare_extent_to_map ();
    0x08023490 subs sb, r0, 0                                                        |         sb -= var_40h;
                                                                                     |         if (sb == var_40h) {
    0x08023494 bne 0x80234a4                                                         |             
    0x08023498 ldr r3, [sp, 0x64]                                                    |             r3 = var_64h;
    0x0802349c cmp r3, 0                                                             |             
                                                                                     |             if (r3 != 0) {
    0x080234a0 bne 0x8023638                                                         |                 goto label_34;
                                                                                     |             }
                                                                                     |         }
                                                                                     | label_7:
    0x080234a4 ldrb r8, [sp, 0x2b]                                                   |         r8 = var_2bh;
    0x080234a8 cmp r7, 0x1000                                                        |         
                                                                                     |         if (r7 > 0x1000) {
    0x080234ac blo 0x80234bc                                                         |             
    0x080234b0 ldrb r2, [r7, 0x1c]                                                   |             r2 = *((r7 + 0x1c));
    0x080234b4 tst r2, 1                                                             |             
                                                                                     |             if ((r2 & 1) != 0) {
    0x080234b8 bne 0x8023588                                                         |                 goto label_35;
                                                                                     |             }
                                                                                     |         }
    0x080234bc mov r2, r7                                                            |         r2 = r7;
    0x080234c0 movw r1, 0xafe                                                        |         r1 = 0xafe;
    0x080234c4 ldr r0, [pc, 0x2e8]                                                   |         r0 = *(0x80237b0);
    0x080234c8 stmdaeq r0, {r5, r7, sb, fp, ip, sp}                                  |         __asm ("stmdaeq r0, {r5, r7, sb, fp, ip, sp}");
    0x080234cc ldrb r3, [sp, 0x88]                                                   |         r3 = var_88h;
    0x080234d0 mov r1, r8                                                            |         r1 = r8;
    0x080234d4 add r0, sp, 0x40                                                      |         r0 += var_40h;
    0x080234d8 bfc r3, 0, 1                                                          |         value_0 = BIT_MASK (1, );
                                                                                     |         value_0 = ~value_0;
                                                                                     |         r3 &= value_0;
    0x080234dc strb r3, [sp, 0x88]                                                   |         var_88h = r3;
    0x080234e0 bl 0x801c830                                                          |         mpage_release_unused_pages ();
    0x080234e4 add r0, sp, 0x70                                                      |         r0 += var_70h;
    0x080234e8 stmdaeq r3, {r4, r6, r8, ip, sp, lr, pc}                              |         __asm ("stmdaeq r3, {r4, r6, r8, ip, sp, lr, pc}");
    0x080234ec ldr r0, [sp, 0x78]                                                    |         r0 = var_78h;
    0x080234f0 stmdaeq r3, {r2, r4, r6, ip, sp, lr, pc}                              |         __asm ("stmdaeq r3, {r2, r4, r6, ip, sp, lr, pc}");
    0x080234f4 cmn sb, 0x1c                                                          |         
    0x080234f8 str r4, [sp, 0x78]                                                    |         var_78h = r4;
                                                                                     |         if (sb == 0x1c) {
    0x080234fc beq 0x80235c0                                                         |             goto label_36;
                                                                                     |         }
                                                                                     | label_3:
    0x08023500 cmp sb, 0                                                             |         
                                                                                     |         if (sb != 0) {
    0x08023504 bne 0x80235cc                                                         |             goto label_37;
                                                                                     |         }
                                                                                     | label_8:
    0x08023508 ldrb r3, [sp, 0x88]                                                   |         r3 = var_88h;
    0x0802350c tst r3, 2                                                             |         
    0x08023510 beq 0x80233d8                                                         |         
                                                                                     |     } while ((r3 & 2) == 0);
    0x08023514 ldr r4, [sp, 0x24]                                                    |     r4 = var_24h;
    0x08023518 mov r7, 0                                                             |     r7 = 0;
    0x0802351c ldr r8, [sp, 0x1c]                                                    |     r8 = var_1ch;
    0x08023520 ldr fp, [sp, 0x18]                                                    |     fp = var_18h;
                                                                                     | label_14:
    0x08023524 add r0, sp, 0x2c                                                      |     r0 += var_2ch;
    0x08023528 stmdaeq r8, {r0, r1, r2, r3, r4, r6, r7, sb, sl, fp, ip, pc}          |     __asm ("stmdaeq r8, {r0, r1, r2, r3, r4, r6, r7, sb, sl, fp, ip, pc}");
    0x0802352c cmp fp, 0                                                             |     
                                                                                     |     if (fp != 0) {
    0x08023530 bne 0x80237ac                                                         |         goto label_38;
                                                                                     |     }
    0x08023534 ldr r2, [r6]                                                          |     r2 = *(r6);
    0x08023538 cmp r2, 0                                                             |     
                                                                                     |     if (r2 <= 0) {
    0x0802353c ble 0x8023798                                                         |         goto label_39;
                                                                                     |     }
    0x08023540 sub r3, r4, 1                                                         |     r3 = r4 - 1;
    0x08023544 str fp, [sp, 0x48]                                                    |     var_48h = fp;
    0x08023548 str r3, [sp, 0x50]                                                    |     var_50h = r3;
    0x0802354c mov r3, 1                                                             |     r3 = 1;
    0x08023550 str r3, [sp, 0x18]                                                    |     var_18h = r3;
    0x08023554 b 0x8023334                                                           |     goto label_0;
                                                                                     | label_18:
    0x08023558 ldr r3, [r3]                                                          |     r3 = *(r3);
    0x0802355c tst r3, 2                                                             |     
                                                                                     |     if ((r3 & 2) == 0) {
    0x08023560 beq 0x8023160                                                         |         goto label_1;
                                                                                     |     }
    0x08023564 stmdaeq r8, {r0, r1, r6, sl, fp, ip, pc}                              |     __asm ("stmdaeq r8, {r0, r1, r6, sl, fp, ip, pc}");
    0x08023568 b 0x8023160                                                           |     goto label_1;
                                                                                     | label_20:
    0x0802356c ldr r3, [r3]                                                          |     r3 = *(r3);
    0x08023570 tst r3, 2                                                             |     
                                                                                     |     if ((r3 & 2) == 0) {
    0x08023574 beq 0x80231d8                                                         |         goto label_2;
                                                                                     |     }
    0x08023578 stmdaeq r8, {r0, r1, r6, sl, fp, ip, pc}                              |     __asm ("stmdaeq r8, {r0, r1, r6, sl, fp, ip, pc}");
    0x0802357c mov r0, r4                                                            |     r0 = r4;
    0x08023580 add sp, sp, 0x94                                                      |     
    0x08023584 pop {r4, r5, r6, r7, r8, sb, sl, fp, pc}                              |     
                                                                                     | label_35:
    0x08023588 mov r1, r8                                                            |     r1 = r8;
    0x0802358c add r0, sp, 0x40                                                      |     r0 += var_40h;
    0x08023590 bl 0x801c830                                                          |     mpage_release_unused_pages ();
    0x08023594 add r0, sp, 0x70                                                      |     r0 += var_70h;
    0x08023598 stmdaeq r3, {r4, r6, r8, ip, sp, lr, pc}                              |     __asm ("stmdaeq r3, {r4, r6, r8, ip, sp, lr, pc}");
    0x0802359c ldr r0, [sp, 0x78]                                                    |     r0 = var_78h;
    0x080235a0 stmdaeq r3, {r6, r8, sl, fp, sp, lr, pc}                              |     __asm ("stmdaeq r3, {r6, r8, sl, fp, sp, lr, pc}");
    0x080235a4 ldr r0, [pc, 0x208]                                                   |     r0 = *(0x80237b0);
    0x080235a8 mov r2, r7                                                            |     r2 = r7;
    0x080235ac mov r1, 0xb10                                                         |     r1 = 0xb10;
    0x080235b0 stmdaeq r0, {r5, r7, sb, fp, ip, sp}                                  |     __asm ("stmdaeq r0, {r5, r7, sb, fp, ip, sp}");
    0x080235b4 cmn sb, 0x1c                                                          |     
    0x080235b8 str r4, [sp, 0x78]                                                    |     var_78h = r4;
                                                                                     |     if (sb != 0x1c) {
    0x080235bc bne 0x8023500                                                         |         goto label_3;
                                                                                     |     }
                                                                                     | label_36:
    0x080235c0 ldr r0, [sl, 0x118]                                                   |     r0 = *((sl + 0x118));
    0x080235c4 cmp r0, 0                                                             |     
                                                                                     |     if (r0 != 0) {
    0x080235c8 bne 0x8023654                                                         |         goto label_40;
                                                                                     |     }
                                                                                     | label_37:
    0x080235cc ldr r8, [sp, 0x1c]                                                    |     r8 = var_1ch;
                                                                                     | label_15:
    0x080235d0 mov r4, sb                                                            |     r4 = sb;
    0x080235d4 add r0, sp, 0x2c                                                      |     r0 += var_2ch;
    0x080235d8 stmdaeq r8, {r0, r1, r2, r3, r4, r6, r7, sb, sl, fp, ip, pc}          |     __asm ("stmdaeq r8, {r0, r1, r2, r3, r4, r6, r7, sb, sl, fp, ip, pc}");
                                                                                     | label_6:
    0x080235dc ldrb r3, [r6, 0x1c]                                                   |     r3 = *((r6 + 0x1c));
    0x080235e0 tst r3, 0x10                                                          |     
                                                                                     |     if ((r3 & 0x10) != 0) {
    0x080235e4 bne 0x8023600                                                         |         goto label_41;
                                                                                     |     }
                                                                                     | label_5:
    0x080235e8 ldr r3, [sp, 0x20]                                                    |     r3 = var_20h;
    0x080235ec cmp r3, 0                                                             |     
                                                                                     |     if (r3 == 0) {
    0x080235f0 beq 0x8023178                                                         |         goto label_4;
                                                                                     |     }
    0x080235f4 ldr r3, [r6]                                                          |     r3 = *(r6);
    0x080235f8 cmp r3, 0                                                             |     
                                                                                     |     if (r3 <= 0) {
    0x080235fc ble 0x8023178                                                         |         goto label_4;
                                                                                     |     }
                                                                                     |     do {
                                                                                     | label_41:
    0x08023600 ldr r3, [sp, 0x48]                                                    |         r3 = var_48h;
    0x08023604 str r3, [r8, 0x34]                                                    |         *((r8 + 0x34)) = r3;
    0x08023608 b 0x8023178                                                           |         goto label_4;
                                                                                     | label_29:
    0x0802360c add r0, sp, 0x2c                                                      |         r0 += var_2ch;
    0x08023610 mov r4, fp                                                            |         r4 = fp;
    0x08023614 stmdaeq r8, {r0, r1, r2, r3, r4, r6, r7, sb, sl, fp, ip, pc}          |         __asm ("stmdaeq r8, {r0, r1, r2, r3, r4, r6, r7, sb, sl, fp, ip, pc}");
    0x08023618 ldrb r3, [r6, 0x1c]                                                   |         r3 = *((r6 + 0x1c));
    0x0802361c tst r3, 0x10                                                          |         
    0x08023620 bne 0x8023600                                                         |         
                                                                                     |     } while ((r3 & 0x10) != 0);
    0x08023624 b 0x80235e8                                                           |     goto label_5;
                                                                                     | label_28:
    0x08023628 add r0, sp, 0x2c                                                      |     r0 += var_2ch;
    0x0802362c mvn r4, 0xb                                                           |     r4 = ~0xb;
    0x08023630 stmdaeq r8, {r0, r1, r2, r3, r4, r6, r7, sb, sl, fp, ip, pc}          |     __asm ("stmdaeq r8, {r0, r1, r2, r3, r4, r6, r7, sb, sl, fp, ip, pc}");
    0x08023634 b 0x80235dc                                                           |     goto label_6;
                                                                                     | label_34:
    0x08023638 add r2, sp, 0x2b                                                      |     r2 += var_2bh;
    0x0802363c add r1, sp, 0x40                                                      |     r1 += var_40h;
    0x08023640 mov r0, r7                                                            |     r0 = r7;
    0x08023644 bl 0x802294c                                                          |     r0 = mpage_map_and_submit_extent ();
    0x08023648 mov sb, r0                                                            |     sb = r0;
    0x0802364c b 0x80234a4                                                           |     goto label_7;
                                                                                     | label_24:
    0x08023650 udf 0x12                                                              |     __asm ("udf 0x12");
                                                                                     | label_40:
    0x08023654 stmdaeq r8, {r0, r1, r2, r4, r6, sl, fp, ip, pc}                      |     __asm ("stmdaeq r8, {r0, r1, r2, r4, r6, sl, fp, ip, pc}");
    0x08023658 b 0x8023508                                                           |     goto label_8;
                                                                                     | label_33:
    0x0802365c mov r4, r0                                                            |     r4 = r0;
    0x08023660 ldr r0, [r5, 0x1c]                                                    |     r0 = *((r5 + 0x1c));
    0x08023664 str r7, [sp, 8]                                                       |     var_8h = r7;
    0x08023668 stmdaeq r5, {r2, r3, r5, r8, sb, fp, ip, sp, pc}                      |     __asm ("stmdaeq r5, {r2, r3, r5, r8, sb, fp, ip, sp, pc}");
    0x0802366c stmdaeq r5, {r2, r3, r5, r8, sb, fp, ip, sp, pc}                      |     __asm ("stmdaeq r5, {r2, r3, r5, r8, sb, fp, ip, sp, pc}");
    0x08023670 stmdaeq r5, {r5, r6, sb, fp, ip, sp, pc}                              |     __asm ("stmdaeq r5, {r5, r6, sb, fp, ip, sp, pc}");
    0x08023674 stmdaeq r5, {r5, r6, sb, fp, ip, sp, pc}                              |     __asm ("stmdaeq r5, {r5, r6, sb, fp, ip, sp, pc}");
    0x08023678 ldr r3, [r5, 0x28]                                                    |     r3 = *((r5 + 0x28));
    0x0802367c str r3, [sp, 4]                                                       |     var_4h = r3;
    0x08023680 ldr r8, [sp, 0x1c]                                                    |     r8 = var_1ch;
    0x08023684 ldr r3, [r6]                                                          |     r3 = *(r6);
    0x08023688 str r3, [sp]                                                          |     *(sp) = r3;
    0x0802368c ldr r3, [pc, 0x120]                                                   |     r3 = *(0x80237b0);
    0x08023690 stmdaeq r4, {r4, r7, r8, sb, fp, sp, lr}                              |     __asm ("stmdaeq r4, {r4, r7, r8, sb, fp, sp, lr}");
    0x08023694 ldr r0, [sp, 0x78]                                                    |     r0 = var_78h;
    0x08023698 stmdaeq r3, {r2, r4, r6, ip, sp, lr, pc}                              |     __asm ("stmdaeq r3, {r2, r4, r6, ip, sp, lr, pc}");
    0x0802369c add r0, sp, 0x2c                                                      |     r0 += var_2ch;
    0x080236a0 mov r3, 0                                                             |     r3 = 0;
    0x080236a4 str r3, [sp, 0x78]                                                    |     var_78h = r3;
    0x080236a8 stmdaeq r8, {r0, r1, r2, r3, r4, r6, r7, sb, sl, fp, ip, pc}          |     __asm ("stmdaeq r8, {r0, r1, r2, r3, r4, r6, r7, sb, sl, fp, ip, pc}");
    0x080236ac b 0x80235dc                                                           |     goto label_6;
                                                                                     | label_16:
    0x080236b0 mvn r4, 4                                                             |     r4 = ~4;
    0x080236b4 mov r0, r4                                                            |     r0 = r4;
    0x080236b8 add sp, sp, 0x94                                                      |     
    0x080236bc pop {r4, r5, r6, r7, r8, sb, sl, fp, pc}                              |     
                                                                                     | label_17:
    0x080236c0 add r0, sl, 0x2ec                                                     |     r0 = sl + 0x2ec;
    0x080236c4 stmdaeq r8, {r0, r1, r4, r6, r7, r8, sl, fp, ip, pc}                  |     __asm ("stmdaeq r8, {r0, r1, r4, r6, r7, r8, sl, fp, ip, pc}");
    0x080236c8 b 0x8023140                                                           |     goto label_9;
                                                                                     | label_26:
    0x080236cc lsr r3, r3, 0xc                                                       |     r3 >>= 0xc;
    0x080236d0 orr r3, r3, r2, lsl 20                                                |     r3 |= (r2 << 20);
    0x080236d4 str r3, [sp, 0x48]                                                    |     var_48h = r3;
    0x080236d8 ldr r3, [r6, 0x10]                                                    |     r3 = *((r6 + 0x10));
    0x080236dc ldr r2, [r6, 0x14]                                                    |     r2 = *((r6 + 0x14));
    0x080236e0 lsr r3, r3, 0xc                                                       |     r3 >>= 0xc;
    0x080236e4 orr r3, r3, r2, lsl 20                                                |     r3 |= (r2 << 20);
    0x080236e8 mov r2, 1                                                             |     r2 = 1;
    0x080236ec str r2, [sp, 0x18]                                                    |     var_18h = r2;
    0x080236f0 b 0x8023318                                                           |     goto label_10;
                                                                                     | label_19:
    0x080236f4 mrs r1, apsr                                                          |     r1 = apsr;
    0x080236f8 cpsid i                                                               |     __asm ("cpsid i");
    0x080236fc ldr r2, [sl, 0x304]                                                   |     r2 = *((sl + 0x304));
    0x08023700 ldr r3, [r2]                                                          |     r3 = *(r2);
    0x08023704 sub r3, r3, 1                                                         |     r3--;
    0x08023708 str r3, [r2]                                                          |     *(r2) = r3;
    0x0802370c msr cpsr_c, r1                                                        |     cpsr_c = r1;
    0x08023710 add r0, sl, 0x308                                                     |     r0 = sl + 0x308;
    0x08023714 stmdaeq r8, {r0, r1, r2, r4, r6, r7, r8, sl, fp, ip, pc}              |     __asm ("stmdaeq r8, {r0, r1, r2, r4, r6, r7, r8, sl, fp, ip, pc}");
    0x08023718 b 0x80231b8                                                           |     goto label_11;
                                                                                     | label_21:
    0x0802371c mov r1, r6                                                            |     r1 = r6;
    0x08023720 mov r0, r8                                                            |     r0 = r8;
    0x08023724 stmdaeq r8, {r0, r1, r2, r3, r4, r5, r8, sb, sl, fp, ip, pc}          |     __asm ("stmdaeq r8, {r0, r1, r2, r3, r4, r5, r8, sb, sl, fp, ip, pc}");
    0x08023728 mov r4, r0                                                            |     r4 = r0;
    0x0802372c b 0x8023178                                                           |     goto label_4;
                                                                                     | label_25:
    0x08023730 mov r0, r5                                                            |     r0 = r5;
    0x08023734 stmdaeq r0, {r3, r4, r5, r6, r7, fp, ip, sp}                          |     __asm ("stmdaeq r0, {r3, r4, r5, r6, r7, fp, ip, sp}");
    0x08023738 tst r0, 1                                                             |     
                                                                                     |     if ((r0 & 1) != 0) {
    0x0802373c bne 0x80232c4                                                         |         goto label_12;
                                                                                     |     }
    0x08023740 ldr r3, [r5, 0x1c]                                                    |     r3 = *((r5 + 0x1c));
    0x08023744 ldr r3, [r3, 0x1f8]                                                   |     r3 = *((r3 + 0x1f8));
    0x08023748 ldr r3, [r3, 0x4c]                                                    |     r3 = *((r3 + 0x4c));
    0x0802374c tst r3, 0x8000000                                                     |     
                                                                                     |     if ((r3 & loc.imp.fs_overflowgid) == 0) {
    0x08023750 beq 0x80232c4                                                         |         goto label_12;
                                                                                     |     }
    0x08023754 ldrb r3, [r5, 0x72]                                                   |     r3 = *((r5 + 0x72));
    0x08023758 mov r1, 0x1000                                                        |     r1 = 0x1000;
    0x0802375c mov r0, r5                                                            |     r0 = r5;
    0x08023760 mov r2, 1                                                             |     r2 = 1;
    0x08023764 lsr r1, r1, r3                                                        |     r1 >>= r3;
    0x08023768 bl 0x801c7cc                                                          |     r0 = ext4_meta_trans_blocks ();
    0x0802376c add r3, r0, 1                                                         |     r3 = r0 + 1;
    0x08023770 str r3, [sp, 0x14]                                                    |     var_14h = r3;
    0x08023774 b 0x80232cc                                                           |     goto label_13;
                                                                                     | label_22:
    0x08023778 mvn r4, 0x1d                                                          |     r4 = ~0x1d;
    0x0802377c b 0x8023178                                                           |     goto label_4;
                                                                                     | label_31:
    0x08023780 ldr r4, [sp, 0x24]                                                    |     r4 = var_24h;
    0x08023784 ldr r8, [sp, 0x1c]                                                    |     r8 = var_1ch;
                                                                                     | label_30:
    0x08023788 ldr r3, [sp, 0x18]                                                    |     r3 = var_18h;
    0x0802378c mov r7, fp                                                            |     r7 = fp;
    0x08023790 orr fp, r3, fp                                                        |     
    0x08023794 b 0x8023524                                                           |     goto label_14;
                                                                                     | label_39:
    0x08023798 mov r4, fp                                                            |     r4 = fp;
    0x0802379c b 0x80235dc                                                           |     goto label_6;
                                                                                     | label_32:
    0x080237a0 ldr r8, [sp, 0x1c]                                                    |     r8 = var_1ch;
    0x080237a4 mvn sb, 0xb                                                           |     sb = ~0xb;
    0x080237a8 b 0x80235d0                                                           |     goto label_15;
                                                                                     | label_38:
    0x080237ac mov r4, r7                                                            |     r4 = r7;
    0x080237b0 b 0x80235dc                                                           |     goto label_6;
                                                                                     | }
    ; assembly                                                                   | /* r2dec pseudo code output */
                                                                                 | /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-80367616.squashfs_v4_le_extract/usr/lib/modules/5.10.52-axis9/kernel/fs/ext4/ext4.ko @ 0x802294c */
                                                                                 | #include <stdint.h>
                                                                                 |  
                                                                                 | #define BIT_MASK(t,v) ((t)(-((v)!= 0)))&(((t)-1)>>((sizeof(t)*CHAR_BIT)-(v)))
                                                                                 |  
    ; (fcn) sym.mpage_map_and_submit_extent ()                                   | void mpage_map_and_submit_extent (int32_t arg1, int32_t arg2) {
                                                                                 |     int32_t var_0h;
                                                                                 |     int32_t var_sp_0h;
                                                                                 |     int32_t var_4h;
                                                                                 |     int32_t var_8h;
                                                                                 |     int32_t var_ch;
                                                                                 |     int32_t var_14h;
                                                                                 |     int32_t var_18h;
                                                                                 |     int32_t var_1ch;
                                                                                 |     int32_t var_20h;
                                                                                 |     int32_t var_24h;
                                                                                 |     int32_t var_28h;
                                                                                 |     int32_t var_2ch;
                                                                                 |     int32_t var_30h;
                                                                                 |     int32_t var_34h;
                                                                                 |     int32_t var_3ch;
                                                                                 |     int32_t var_40h;
                                                                                 |     int32_t var_4h_2;
                                                                                 |     int32_t var_84h;
                                                                                 |     r0 = arg1;
                                                                                 |     r1 = arg2;
    0x0802294c push {r4, r5, r6, r7, r8, sb, sl, fp, lr}                         |     
    0x08022950 mov r8, r0                                                        |     r8 = r0;
    0x08022954 mov sl, r1                                                        |     sl = r1;
    0x08022958 ldr r0, [r1, 0x38]                                                |     r0 = *((r1 + 0x38));
    0x0802295c sub sp, sp, 0x84                                                  |     
    0x08022960 ldr r5, [r1]                                                      |     r5 = *(r1);
    0x08022964 mov r7, r2                                                        |     r7 = r2;
    0x08022968 stmdaeq r3, {r8, sb, fp, sp, lr, pc}                              |     __asm ("stmdaeq r3, {r8, sb, fp, sp, lr, pc}");
    0x0802296c cmn r0, 0x1000                                                    |     
                                                                                 |     if (r0 <= 0x1000) {
    0x08022970 movhi fp, r0                                                      |         
                                                                                 |     }
                                                                                 |     if (r0 > 0x1000) {
    0x08022974 bhi 0x8022d5c                                                     |         goto label_10;
                                                                                 |     }
    0x08022978 ldrb r1, [r5, 0x72]                                               |     r1 = *((r5 + 0x72));
    0x0802297c add r2, sl, 0x18                                                  |     r2 = sl + 0x18;
    0x08022980 ldr r3, [sl, 0x20]                                                |     r3 = *((sl + 0x20));
    0x08022984 mov r6, 0                                                         |     r6 = 0;
    0x08022988 str r2, [sp, 0x28]                                                |     var_28h = r2;
    0x0802298c sub r2, r1, 0x20                                                  |     r2 = r1 - 0x20;
    0x08022990 rsb ip, r1, 0x20                                                  |     
    0x08022994 str r8, [sp, 0x24]                                                |     var_24h = r8;
    0x08022998 lsl r2, r3, r2                                                    |     r2 = r3 << r2;
    0x0802299c mov r8, sl                                                        |     r8 = sl;
    0x080229a0 orr r2, r2, r3, lsr ip                                            |     r2 |= (r3 >> ip);
    0x080229a4 str r5, [sp, 0x2c]                                                |     var_2ch = r5;
    0x080229a8 lsl r3, r3, r1                                                    |     r3 <<= r1;
    0x080229ac str r2, [r0, 0xc]                                                 |     *((r0 + 0xc)) = r2;
    0x080229b0 str r3, [r0, 8]                                                   |     *((r0 + 8)) = r3;
    0x080229b4 str r7, [sp, 0x34]                                                |     var_34h = r7;
                                                                                 | label_2:
    0x080229b8 ldr r7, [r8]                                                      |     r7 = *(r8);
    0x080229bc ldr r3, [r7, 0x1c]                                                |     r3 = *((r7 + 0x1c));
    0x080229c0 ldr r3, [r3, 0x1f8]                                               |     r3 = *((r3 + 0x1f8));
    0x080229c4 ldr r3, [r3, 0x4c]                                                |     r3 = *((r3 + 0x4c));
    0x080229c8 tst r3, 0x400000                                                  |     
                                                                                 |     if ((r3 & 0x400000) != 0) {
    0x080229cc beq 0x80229e0                                                     |         
    0x080229d0 ldrh r3, [r7]                                                     |         r3 = *(r7);
    0x080229d4 and r3, r3, 0xf000                                                |         r3 &= 0xf000;
    0x080229d8 cmp r3, 0x8000                                                    |         
                                                                                 |         if (r3 == 0x8000) {
    0x080229dc beq 0x8022d68                                                     |             goto label_16;
                                                                                 |         }
                                                                                 |     }
                                                                                 | label_6:
    0x080229e0 mov r4, 0                                                         |     r4 = 0;
    0x080229e4 movw r3, 0x421                                                    |     r3 = 0x421;
                                                                                 | label_7:
    0x080229e8 ldr r2, [r8, 0x28]                                                |     r2 = *((r8 + 0x28));
    0x080229ec mov r1, r7                                                        |     r1 = r7;
    0x080229f0 ldr r0, [sp, 0x24]                                                |     r0 = var_24h;
    0x080229f4 tst r2, 0x100                                                     |     
    0x080229f8 ldr r2, [sp, 0x28]                                                |     r2 = var_28h;
                                                                                 |     if ((r2 & 0x100) == 0) {
    0x080229fc orrne r3, r3, 4                                                   |         r3 |= 4;
                                                                                 |     }
    0x08022a00 stmdaeq r1, {r5, r6, r7, r8, sb, fp, sp, lr, pc}                  |     __asm ("stmdaeq r1, {r5, r6, r7, r8, sb, fp, sp, lr, pc}");
    0x08022a04 cmp r0, 0                                                         |     
                                                                                 |     if (r0 < 0) {
    0x08022a08 blt 0x8022de8                                                     |         goto label_17;
                                                                                 |     }
    0x08022a0c cmp r4, 0                                                         |     
                                                                                 |     if (r4 != 0) {
    0x08022a10 beq 0x8022a20                                                     |         
    0x08022a14 ldr r3, [r8, 0x28]                                                |         r3 = *((r8 + 0x28));
    0x08022a18 tst r3, 0x800                                                     |         
                                                                                 |         if ((r3 & 0x800) != 0) {
    0x08022a1c bne 0x8022da4                                                     |             goto label_18;
                                                                                 |         }
                                                                                 |     }
                                                                                 | label_8:
    0x08022a20 ldr r2, [r8, 0x24]                                                |     r2 = *((r8 + 0x24));
    0x08022a24 cmp r2, 0                                                         |     
                                                                                 |     if (r2 == 0) {
    0x08022a28 beq 0x8022c20                                                     |         goto label_19;
                                                                                 |     }
    0x08022a2c ldr r7, [r8]                                                      |     r7 = *(r8);
    0x08022a30 ldr r3, [r8, 0x20]                                                |     r3 = *((r8 + 0x20));
    0x08022a34 ldr r6, [r8, 0x18]                                                |     r6 = *((r8 + 0x18));
    0x08022a38 mov r5, r7                                                        |     r5 = r7;
    0x08022a3c ldrb r4, [r7, 0x72]                                               |     r4 = *((r7 + 0x72));
    0x08022a40 add r2, r2, r3                                                    |     r2 += r3;
    0x08022a44 sub r2, r2, 1                                                     |     r2--;
    0x08022a48 ldr sl, [r8, 0x1c]                                                |     sl = *((r8 + 0x1c));
    0x08022a4c rsb r4, r4, 0xc                                                   |     r4 = 0xc - r4;
    0x08022a50 lsr r3, r3, r4                                                    |     r3 >>= r4;
    0x08022a54 str r3, [sp, 0x3c]                                                |     var_3ch = r3;
    0x08022a58 lsr r2, r2, r4                                                    |     r2 >>= r4;
    0x08022a5c str r2, [sp, 0x20]                                                |     var_20h = r2;
    0x08022a60 lsl r4, r3, r4                                                    |     r4 = r3 << r4;
    0x08022a64 mov r2, 0                                                         |     r2 = 0;
    0x08022a68 strh r2, [sp, 0x40]                                               |     var_40h = r2;
                                                                                 | label_1:
    0x08022a6c ldr r2, [sp, 0x20]                                                |     r2 = var_20h;
    0x08022a70 cmp r3, r2                                                        |     
                                                                                 |     if (r3 > r2) {
    0x08022a74 bhi 0x8022e74                                                     |         goto label_20;
                                                                                 |     }
    0x08022a78 ldr r3, [sp, 0x20]                                                |     r3 = var_20h;
    0x08022a7c add r2, sp, 0x3c                                                  |     r2 += var_3ch;
    0x08022a80 ldr r1, [r5, 0x20]                                                |     r1 = *((r5 + 0x20));
    0x08022a84 add r0, sp, 0x40                                                  |     r0 += var_40h;
    0x08022a88 stmdaeq r8, {r0, r1, r4, r7, sb, sl, fp, ip, pc}                  |     __asm ("stmdaeq r8, {r0, r1, r4, r7, sb, sl, fp, ip, pc}");
    0x08022a8c subs r3, r0, 0                                                    |     r3 -= var_40h;
    0x08022a90 str r3, [sp, 0x1c]                                                |     var_1ch = r3;
                                                                                 |     if (r3 == var_40h) {
    0x08022a94 beq 0x8022e74                                                     |         goto label_20;
                                                                                 |     }
                                                                                 |     if (r3 <= var_40h) {
    0x08022a98 ble 0x8022b9c                                                     |         goto label_21;
                                                                                 |     }
    0x08022a9c add fp, sp, 0x40                                                  |     
    0x08022aa0 mov sb, 0                                                         |     sb = 0;
    0x08022aa4 mov r7, fp                                                        |     r7 = fp;
    0x08022aa8 str r5, [sp, 0x30]                                                |     var_30h = r5;
                                                                                 | label_0:
    0x08022aac ldr r3, [r8]                                                      |     r3 = *(r8);
    0x08022ab0 ldr r5, [r7, 4]!                                                  |     r5 = var_4h_2;
    0x08022ab4 ldr r0, [r8, 0x38]                                                |     r0 = *((r8 + 0x38));
    0x08022ab8 ldrb r3, [r3, 0x72]                                               |     r3 = *((r3 + 0x72));
    0x08022abc str r0, [sp, 0x18]                                                |     var_18h = r0;
    0x08022ac0 str r3, [sp, 0x14]                                                |     var_14h = r3;
    0x08022ac4 stmdaeq r3, {r6, r8, sb, fp, sp, lr, pc}                          |     __asm ("stmdaeq r3, {r6, r8, sb, fp, sp, lr, pc}");
    0x08022ac8 ldr lr, [r5]                                                      |     
    0x08022acc mvn lr, lr, lsr 13                                                |     lr = ~lr;
    0x08022ad0 ands lr, lr, 1                                                    |     lr &= 1;
                                                                                 |     if (lr != lr) {
    0x08022ad4 bne 0x8022c20                                                     |         goto label_19;
                                                                                 |     }
    0x08022ad8 ldr r2, [sp, 0x14]                                                |     r2 = var_14h;
    0x08022adc mov r3, 1                                                         |     r3 = 1;
    0x08022ae0 ldr r1, [r5, 0x14]                                                |     r1 = *((r5 + 0x14));
    0x08022ae4 lsl fp, r3, r2                                                    |     
    0x08022ae8 mov r2, r1                                                        |     r2 = r1;
                                                                                 |     do {
    0x08022aec ldr r3, [r8, 0x20]                                                |         r3 = *((r8 + 0x20));
    0x08022af0 cmp r3, r4                                                        |         
                                                                                 |         if (r3 <= r4) {
    0x08022af4 bhi 0x8022b58                                                     |             
    0x08022af8 ldr ip, [r8, 0x24]                                                |             ip = *((r8 + 0x24));
    0x08022afc add r3, r3, ip                                                    |             r3 += ip;
    0x08022b00 cmp r4, r3                                                        |             
                                                                                 |             if (r4 >= r3) {
    0x08022b04 bhs 0x8022bb0                                                     |                 goto label_22;
                                                                                 |             }
    0x08022b08 ldr r3, [r2]                                                      |             r3 = *(r2);
    0x08022b0c tst r3, 0x100                                                     |             
                                                                                 |             if ((r3 & 0x100) != 0) {
    0x08022b10 beq 0x8022b3c                                                     |                 
    0x08022b14 mrs ip, apsr                                                      |                 ip = apsr;
    0x08022b18 cpsid i                                                           |                 __asm ("cpsid i");
    0x08022b1c ldr r3, [r2]                                                      |                 r3 = *(r2);
    0x08022b20 bic r3, r3, 0x100                                                 |                 r3 = BIT_MASK (r3, 0x100);
    0x08022b24 str r3, [r2]                                                      |                 *(r2) = r3;
    0x08022b28 msr cpsr_c, ip                                                    |                 cpsr_c = ip;
    0x08022b2c str r6, [r2, 0x10]                                                |                 *((r2 + 0x10)) = r6;
    0x08022b30 adds r6, r6, 1                                                    |                 r6++;
    0x08022b34 str sl, [r2, 0x14]                                                |                 *((r2 + 0x14)) = sl;
    0x08022b38 adc sl, sl, 0                                                     |                 __asm ("adc sl, sl, 0");
                                                                                 |             }
    0x08022b3c mrs ip, apsr                                                      |             ip = apsr;
    0x08022b40 cpsid i                                                           |             __asm ("cpsid i");
    0x08022b44 ldr r3, [r2]                                                      |             r3 = *(r2);
    0x08022b48 bic r3, r3, 0x800                                                 |             r3 = BIT_MASK (r3, 0x800);
    0x08022b4c str r3, [r2]                                                      |             *(r2) = r3;
    0x08022b50 msr cpsr_c, ip                                                    |             cpsr_c = ip;
    0x08022b54 add lr, lr, fp                                                    |             lr += fp;
                                                                                 |         }
    0x08022b58 ldr r2, [r2, 4]                                                   |         r2 = *((r2 + 4));
    0x08022b5c add r4, r4, 1                                                     |         r4++;
    0x08022b60 cmp r1, r2                                                        |         
    0x08022b64 bne 0x8022aec                                                     |         
                                                                                 |     } while (r1 != r2);
    0x08022b68 ldr r3, [r0, 0x10]                                                |     r3 = *((r0 + 0x10));
    0x08022b6c add r3, r3, lr                                                    |     r3 += lr;
    0x08022b70 str r3, [r0, 0x10]                                                |     *((r0 + 0x10)) = r3;
                                                                                 | label_5:
    0x08022b74 mov r1, r5                                                        |     r1 = r5;
    0x08022b78 mov r0, r8                                                        |     r0 = r8;
    0x08022b7c bl 0x801d8e0                                                      |     r0 = mpage_submit_page ();
    0x08022b80 cmp r0, 0                                                         |     
                                                                                 |     if (r0 < 0) {
    0x08022b84 blt 0x8022c88                                                     |         goto label_23;
                                                                                 |     }
    0x08022b88 ldr r3, [sp, 0x1c]                                                |     r3 = var_1ch;
    0x08022b8c add sb, sb, 1                                                     |     sb++;
    0x08022b90 cmp r3, sb                                                        |     
                                                                                 |     if (r3 != sb) {
    0x08022b94 bne 0x8022aac                                                     |         goto label_0;
                                                                                 |     }
    0x08022b98 ldr r5, [sp, 0x30]                                                |     r5 = var_30h;
                                                                                 | label_21:
    0x08022b9c ldrb r3, [sp, 0x40]                                               |     r3 = var_40h;
    0x08022ba0 cmp r3, 0                                                         |     
                                                                                 |     if (r3 != 0) {
    0x08022ba4 bne 0x8022e68                                                     |         goto label_24;
                                                                                 |     }
                                                                                 | label_12:
    0x08022ba8 ldr r3, [sp, 0x3c]                                                |     r3 = var_3ch;
    0x08022bac b 0x8022a6c                                                       |     goto label_1;
                                                                                 | label_22:
    0x08022bb0 mov r3, 0                                                         |     r3 = 0;
    0x08022bb4 str r3, [r8, 0x24]                                                |     *((r8 + 0x24)) = r3;
    0x08022bb8 str r3, [r8, 0x28]                                                |     *((r8 + 0x28)) = r3;
    0x08022bbc ldr r3, [r0, 0x10]                                                |     r3 = *((r0 + 0x10));
    0x08022bc0 add r3, r3, lr                                                    |     r3 += lr;
    0x08022bc4 str r3, [r0, 0x10]                                                |     *((r0 + 0x10)) = r3;
    0x08022bc8 mov r3, r4                                                        |     r3 = r4;
    0x08022bcc mov r0, r8                                                        |     r0 = r8;
    0x08022bd0 bl 0x801d9b8                                                      |     r0 = mpage_process_page_bufs ();
    0x08022bd4 cmp r0, 0                                                         |     
                                                                                 |     if (r0 < 0) {
    0x08022bd8 blt 0x8022c88                                                     |         goto label_23;
                                                                                 |     }
    0x08022bdc ldr r3, [r8, 0x24]                                                |     r3 = *((r8 + 0x24));
    0x08022be0 cmp r3, 0                                                         |     
                                                                                 |     if (r3 != 0) {
    0x08022be4 beq 0x8022bf4                                                     |         
    0x08022be8 ldr r3, [r8, 0x20]                                                |         r3 = *((r8 + 0x20));
    0x08022bec cmp r4, r3                                                        |         
                                                                                 |         if (r4 <= r3) {
    0x08022bf0 blo 0x8022c24                                                     |             goto label_25;
                                                                                 |         }
                                                                                 |     }
    0x08022bf4 ldrb r3, [sp, 0x40]                                               |     r3 = var_40h;
    0x08022bf8 cmp r3, 0                                                         |     
                                                                                 |     if (r3 != 0) {
    0x08022bfc bne 0x8022c64                                                     |         goto label_26;
                                                                                 |     }
                                                                                 | label_3:
    0x08022c00 ldr r3, [r8, 0x24]                                                |     r3 = *((r8 + 0x24));
    0x08022c04 mov r6, 1                                                         |     r6 = 1;
    0x08022c08 cmp r3, 0                                                         |     
                                                                                 |     if (r3 != 0) {
    0x08022c0c bne 0x80229b8                                                     |         goto label_2;
                                                                                 |     }
                                                                                 | label_4:
    0x08022c10 mov sl, r8                                                        |     sl = r8;
    0x08022c14 ldr r5, [sp, 0x2c]                                                |     r5 = var_2ch;
    0x08022c18 ldr r8, [sp, 0x24]                                                |     r8 = var_24h;
    0x08022c1c b 0x8022e8c                                                       |     goto label_27;
                                                                                 | label_19:
    0x08022c20 udf 0x12                                                          |     __asm ("udf 0x12");
                                                                                 | label_25:
    0x08022c24 ldr r0, [sp, 0x18]                                                |     r0 = var_18h;
    0x08022c28 stmdaeq r3, {r8, sb, fp, sp, lr, pc}                              |     __asm ("stmdaeq r3, {r8, sb, fp, sp, lr, pc}");
    0x08022c2c cmn r0, 0x1000                                                    |     
                                                                                 |     if (r0 > 0x1000) {
    0x08022c30 bhi 0x8022c80                                                     |         goto label_28;
                                                                                 |     }
    0x08022c34 ldr ip, [sp, 0x14]                                                |     ip = var_14h;
    0x08022c38 ldr r3, [r8, 0x20]                                                |     r3 = *((r8 + 0x20));
    0x08022c3c ldrb r1, [sp, 0x40]                                               |     r1 = var_40h;
    0x08022c40 sub r2, ip, 0x20                                                  |     r2 = ip - 0x20;
    0x08022c44 cmp r1, 0                                                         |     
    0x08022c48 rsb r1, ip, 0x20                                                  |     r1 = 0x20 - ip;
    0x08022c4c lsl r2, r3, r2                                                    |     r2 = r3 << r2;
    0x08022c50 orr r2, r2, r3, lsr r1                                            |     r2 |= (r3 >> r1);
    0x08022c54 str r2, [r0, 0xc]                                                 |     *((r0 + 0xc)) = r2;
    0x08022c58 lsl r3, r3, ip                                                    |     r3 <<= ip;
    0x08022c5c str r3, [r0, 8]                                                   |     *((r0 + 8)) = r3;
                                                                                 |     if (r1 == 0) {
    0x08022c60 beq 0x8022c00                                                     |         goto label_3;
                                                                                 |     }
                                                                                 | label_26:
    0x08022c64 add r0, sp, 0x40                                                  |     r0 += var_40h;
    0x08022c68 mov r6, 1                                                         |     r6 = 1;
    0x08022c6c stmdaeq r8, {r0, r1, r2, r3, r4, r7, sb, sl, fp, ip, pc}          |     __asm ("stmdaeq r8, {r0, r1, r2, r3, r4, r7, sb, sl, fp, ip, pc}");
    0x08022c70 ldr r3, [r8, 0x24]                                                |     r3 = *((r8 + 0x24));
    0x08022c74 cmp r3, 0                                                         |     
                                                                                 |     if (r3 != 0) {
    0x08022c78 bne 0x80229b8                                                     |         goto label_2;
                                                                                 |     }
    0x08022c7c b 0x8022c10                                                       |     goto label_4;
                                                                                 | label_28:
    0x08022c80 cmp r0, 0                                                         |     
                                                                                 |     if (r0 >= 0) {
    0x08022c84 bge 0x8022b74                                                     |         goto label_5;
                                                                                 |     }
                                                                                 | label_23:
    0x08022c88 ldrb r3, [sp, 0x40]                                               |     r3 = var_40h;
    0x08022c8c mov sl, r8                                                        |     sl = r8;
    0x08022c90 ldr r5, [sp, 0x2c]                                                |     r5 = var_2ch;
    0x08022c94 mov fp, r0                                                        |     
    0x08022c98 ldr r8, [sp, 0x24]                                                |     r8 = var_24h;
    0x08022c9c cmp r3, 0                                                         |     
                                                                                 |     if (r3 != 0) {
    0x08022ca0 bne 0x8022e98                                                     |         goto label_29;
                                                                                 |     }
                                                                                 | label_9:
    0x08022ca4 ldr r2, [sl, 8]                                                   |     r2 = *((sl + 8));
    0x08022ca8 lsr r6, r2, 0x14                                                  |     r6 = r2 >> 0x14;
    0x08022cac lsl r4, r2, 0xc                                                   |     r4 = r2 << 0xc;
    0x08022cb0 ldrd r2, r3, [r5, -0x28]                                          |     __asm ("ldrd r2, r3, [r5, -0x28]");
    0x08022cb4 cmp r2, r4                                                        |     
    0x08022cb8 sbcs r3, r3, r6                                                   |     __asm ("sbcs r3, r3, r6");
                                                                                 |     if (r2 < r4) {
    0x08022cbc bge 0x8022d5c                                                     |         
    0x08022cc0 sub r7, r5, 0x20                                                  |         r7 = r5 - 0x20;
    0x08022cc4 mov r0, r7                                                        |         r0 = r7;
    0x08022cc8 stmdaeq r8, {r0, r1, r2, r6, r8, sl, fp, ip, pc}                  |         __asm ("stmdaeq r8, {r0, r1, r2, r6, r8, sl, fp, ip, pc}");
    0x08022ccc mov r3, sp                                                        |         r3 = sp;
    0x08022cd0 bic r3, r3, 0x1fc0                                                |         r3 = BIT_MASK (r3, 0x1fc0);
    0x08022cd4 bic r3, r3, 0x3f                                                  |         r3 = BIT_MASK (r3, 0x3f);
    0x08022cd8 ldr r2, [r3, 4]                                                   |         r2 = *((r3 + 4));
    0x08022cdc add r2, r2, 1                                                     |         r2++;
    0x08022ce0 str r2, [r3, 4]                                                   |         *((r3 + 4)) = r2;
    0x08022ce4 ldr sl, [r5, 0x38]                                                |         sl = *((r5 + 0x38));
    0x08022ce8 ldr sb, [r5, 0x3c]                                                |         sb = *((r5 + 0x3c));
    0x08022cec ldr r2, [r3, 4]                                                   |         r2 = *((r3 + 4));
    0x08022cf0 sub r2, r2, 1                                                     |         r2--;
    0x08022cf4 str r2, [r3, 4]                                                   |         *((r3 + 4)) = r2;
    0x08022cf8 cmp r2, 0                                                         |         
                                                                                 |         if (r2 == 0) {
    0x08022cfc beq 0x8022f38                                                     |             goto label_30;
                                                                                 |         }
                                                                                 | label_14:
    0x08022d00 cmp sl, r4                                                        |         
    0x08022d04 mov r2, r4                                                        |         r2 = r4;
    0x08022d08 sbcs r1, sb, r6                                                   |         __asm ("sbcs r1, sb, r6");
    0x08022d0c ldr r1, [r5, -0x28]                                               |         r1 = *((r5 - 0x28));
                                                                                 |         if (sl >= r4) {
    0x08022d10 movlt r2, sl                                                      |             r2 = sl;
                                                                                 |         }
    0x08022d14 mov r3, r6                                                        |         r3 = r6;
                                                                                 |         if (sl >= r4) {
    0x08022d18 movlt r3, sb                                                      |             r3 = sb;
                                                                                 |         }
    0x08022d1c cmp r1, r2                                                        |         
    0x08022d20 ldr r1, [r5, -0x24]                                               |         r1 = *((r5 - 0x24));
    0x08022d24 mov r0, r7                                                        |         r0 = r7;
    0x08022d28 sbcs r1, r1, r3                                                   |         __asm ("sbcs r1, r1, r3");
    0x08022d2c strdlt r2, r3, [r5, -0x28]                                        |         __asm ("strdlt r2, r3, [r5, -0x28]");
    0x08022d30 stmdaeq r8, {r0, r1, r3, r6, r8, sl, fp, ip, pc}                  |         __asm ("stmdaeq r8, {r0, r1, r3, r6, r8, sl, fp, ip, pc}");
    0x08022d34 ldr r2, [pc, 0x38c]                                               |         r2 = *(0x80230c4);
    0x08022d38 mov r1, r5                                                        |         r1 = r5;
    0x08022d3c mov r0, r8                                                        |         r0 = r8;
    0x08022d40 movw r3, 0x9ce                                                    |         r3 = 0x9ce;
    0x08022d44 stmdaeq r2, {r2, r3, r6, r7, r8, sb, sl, sp}                      |         __asm ("stmdaeq r2, {r2, r3, r6, r7, r8, sb, sl, sp}");
    0x08022d48 subs r4, r0, 0                                                    |         r4 = r0 - 0;
                                                                                 |         if (r4 != r0) {
    0x08022d4c bne 0x8022f00                                                     |             goto label_31;
                                                                                 |         }
                                                                                 | label_13:
    0x08022d50 subs r3, fp, 0                                                    |         r3 -= var_0h;
                                                                                 |         if (r3 != var_0h) {
    0x08022d54 moveq r3, r4                                                      |             r3 = r4;
                                                                                 |         }
    0x08022d58 mov fp, r3                                                        |         
                                                                                 |     }
                                                                                 | label_10:
    0x08022d5c mov r0, fp                                                        |     r0 = fp;
    0x08022d60 add sp, sp, 0x84                                                  |     
    0x08022d64 pop {r4, r5, r6, r7, r8, sb, sl, fp, pc}                          |     
                                                                                 | label_16:
    0x08022d68 ldr r3, [r7, -0x6c]                                               |     r3 = *((r7 - 0x6c));
    0x08022d6c tst r3, 0x80000                                                   |     
                                                                                 |     if ((r3 & 0x80000) == 0) {
    0x08022d70 beq 0x80229e0                                                     |         goto label_6;
                                                                                 |     }
    0x08022d74 mov r0, r7                                                        |     r0 = r7;
    0x08022d78 stmdaeq r0, {r3, r4, r5, r6, r7, fp, ip, sp}                      |     __asm ("stmdaeq r0, {r3, r4, r5, r6, r7, fp, ip, sp}");
    0x08022d7c tst r0, 1                                                         |     
                                                                                 |     if ((r0 & 1) != 0) {
    0x08022d80 bne 0x80229e0                                                     |         goto label_6;
                                                                                 |     }
    0x08022d84 ldr r3, [r7, 0x1c]                                                |     r3 = *((r7 + 0x1c));
    0x08022d88 ldr r3, [r3, 0x1f8]                                               |     r3 = *((r3 + 0x1f8));
    0x08022d8c ldr r3, [r3, 0x4c]                                                |     r3 = *((r3 + 0x4c));
    0x08022d90 tst r3, 0x8000000                                                 |     
                                                                                 |     if ((r3 & loc.imp.fs_overflowgid) == 0) {
    0x08022d94 movne r4, 1                                                       |         r4 = 1;
                                                                                 |     }
    0x08022d98 movwne r3, 0x42b                                                  |     __asm ("movwne r3, 0x42b");
                                                                                 |     if ((r3 & loc.imp.fs_overflowgid) != 0) {
    0x08022d9c bne 0x80229e8                                                     |         goto label_7;
                                                                                 |     }
    0x08022da0 b 0x80229e0                                                       |     goto label_6;
                                                                                 | label_18:
    0x08022da4 ldr r3, [r8, 0x38]                                                |     r3 = *((r8 + 0x38));
    0x08022da8 ldr r2, [r3, 8]                                                   |     r2 = *((r3 + 8));
    0x08022dac cmp r2, 0                                                         |     
                                                                                 |     if (r2 == 0) {
    0x08022db0 beq 0x8022e4c                                                     |         goto label_32;
                                                                                 |     }
                                                                                 | label_11:
    0x08022db4 ldr r2, [r3, 0x14]                                                |     r2 = *((r3 + 0x14));
    0x08022db8 tst r2, 1                                                         |     
                                                                                 |     if ((r2 & 1) != 0) {
    0x08022dbc bne 0x8022a20                                                     |         goto label_8;
                                                                                 |     }
    0x08022dc0 add r7, r7, 0x1dc                                                 |     r7 += 0x1dc;
    0x08022dc4 orr r2, r2, 1                                                     |     r2 |= 1;
    0x08022dc8 str r2, [r3, 0x14]                                                |     *((r3 + 0x14)) = r2;
    0x08022dcc pld [r7]                                                          |     __asm ("pld [r7]");
                                                                                 |     do {
    0x08022dd0 ldrex r3, [r7]                                                    |         __asm ("ldrex r3, [r7]");
    0x08022dd4 add r3, r3, 1                                                     |         r3++;
    0x08022dd8 strex r2, r3, [r7]                                                |         __asm ("strex r2, r3, [r7]");
    0x08022ddc teq r2, 0                                                         |         __asm ("teq r2, 0");
    0x08022de0 bne 0x8022dd0                                                     |         
                                                                                 |     } while ((r2 & 1) != 0);
    0x08022de4 b 0x8022a20                                                       |     goto label_8;
                                                                                 | label_17:
    0x08022de8 ldr r5, [sp, 0x2c]                                                |     r5 = var_2ch;
    0x08022dec mov sl, r8                                                        |     sl = r8;
    0x08022df0 ldr r7, [sp, 0x34]                                                |     r7 = var_34h;
    0x08022df4 mov fp, r0                                                        |     
    0x08022df8 ldr r8, [sp, 0x24]                                                |     r8 = var_24h;
    0x08022dfc ldr r4, [r5, 0x1c]                                                |     r4 = *((r5 + 0x1c));
    0x08022e00 ldr r3, [r4, 0x1f8]                                               |     r3 = *((r4 + 0x1f8));
    0x08022e04 ldr r2, [r3, 0x130]                                               |     r2 = *((r3 + 0x130));
    0x08022e08 tst r2, 2                                                         |     
                                                                                 |     if ((r2 & 2) != 0) {
    0x08022e0c bne 0x8022ef4                                                     |         goto label_15;
                                                                                 |     }
    0x08022e10 ldr sb, [r3, 0x54]                                                |     sb = *((r3 + 0x54));
    0x08022e14 ubfx sb, sb, 1, 1                                                 |     sb = (sb >> 1) & ((1 << 1) - 1);
    0x08022e18 cmp sb, 0                                                         |     
                                                                                 |     if (sb != 0) {
    0x08022e1c bne 0x8022ef4                                                     |         goto label_15;
                                                                                 |     }
    0x08022e20 cmn r0, 0xc                                                       |     
                                                                                 |     if (r0 != 0xc) {
    0x08022e24 beq 0x8022e40                                                     |         
    0x08022e28 cmn r0, 0x1c                                                      |         
                                                                                 |         if (r0 != 0x1c) {
    0x08022e2c bne 0x8022ea4                                                     |             goto label_33;
                                                                                 |         }
    0x08022e30 mov r0, r4                                                        |         r0 = r4;
    0x08022e34 stmdaeq r0, {r2, r3, r4, sb, fp}                                  |         __asm ("stmdaeq r0, {r2, r3, r4, sb, fp}");
    0x08022e38 orrs r0, r0, r1                                                   |         r0 |= r1;
                                                                                 |         if (r0 == r0) {
    0x08022e3c beq 0x8022f4c                                                     |             goto label_34;
                                                                                 |         }
                                                                                 |     }
    0x08022e40 cmp r6, 0                                                         |     
                                                                                 |     if (r6 != 0) {
    0x08022e44 bne 0x8022ca4                                                     |         goto label_9;
                                                                                 |     }
    0x08022e48 b 0x8022d5c                                                       |     goto label_10;
                                                                                 | label_32:
    0x08022e4c ldr r0, [sp, 0x24]                                                |     r0 = var_24h;
    0x08022e50 cmp r0, 0x1000                                                    |     
                                                                                 |     if (r0 < 0x1000) {
    0x08022e54 ldrhs r1, [r0, 4]                                                 |         r1 = *((r0 + 4));
                                                                                 |     }
                                                                                 |     if (r0 < 0x1000) {
    0x08022e58 strhs r1, [r3, 8]                                                 |         *((r3 + 8)) = r1;
                                                                                 |     }
                                                                                 |     if (r0 < 0x1000) {
    0x08022e5c strhs r2, [r0, 4]                                                 |         *((r0 + 4)) = r2;
                                                                                 |     }
                                                                                 |     if (r0 < 0x1000) {
    0x08022e60 ldrhs r3, [r8, 0x38]                                              |         r3 = *((r8 + 0x38));
                                                                                 |     }
    0x08022e64 b 0x8022db4                                                       |     goto label_11;
                                                                                 | label_24:
    0x08022e68 add r0, sp, 0x40                                                  |     r0 += var_40h;
    0x08022e6c stmdaeq r8, {r0, r1, r2, r3, r4, r7, sb, sl, fp, ip, pc}          |     __asm ("stmdaeq r8, {r0, r1, r2, r3, r4, r7, sb, sl, fp, ip, pc}");
    0x08022e70 b 0x8022ba8                                                       |     goto label_12;
                                                                                 | label_20:
    0x08022e74 mov sl, r8                                                        |     sl = r8;
    0x08022e78 ldr r5, [sp, 0x2c]                                                |     r5 = var_2ch;
    0x08022e7c ldr r8, [sp, 0x24]                                                |     r8 = var_24h;
    0x08022e80 mov r3, 0                                                         |     r3 = 0;
    0x08022e84 str r3, [sl, 0x24]                                                |     *((sl + 0x24)) = r3;
    0x08022e88 str r3, [sl, 0x28]                                                |     *((sl + 0x28)) = r3;
                                                                                 | label_27:
    0x08022e8c mov r3, 0                                                         |     r3 = 0;
    0x08022e90 mov fp, r3                                                        |     
    0x08022e94 b 0x8022ca4                                                       |     goto label_9;
                                                                                 | label_29:
    0x08022e98 add r0, sp, 0x40                                                  |     r0 += var_40h;
    0x08022e9c stmdaeq r8, {r0, r1, r2, r3, r4, r7, sb, sl, fp, ip, pc}          |     __asm ("stmdaeq r8, {r0, r1, r2, r3, r4, r7, sb, sl, fp, ip, pc}");
    0x08022ea0 b 0x8022ca4                                                       |     goto label_9;
                                                                                 | label_33:
    0x08022ea4 ldr r3, [r5, 0x28]                                                |     r3 = *((r5 + 0x28));
    0x08022ea8 mov r0, r4                                                        |     r0 = r4;
    0x08022eac str sb, [sp, 4]                                                   |     var_4h = sb;
    0x08022eb0 rsb r1, fp, 0                                                     |     r1 = fp - ;
    0x08022eb4 ldr r2, [sl, 0x24]                                                |     r2 = *((sl + 0x24));
    0x08022eb8 str r2, [sp, 8]                                                   |     var_8h = r2;
    0x08022ebc ldr r2, [sl, 0x20]                                                |     r2 = *((sl + 0x20));
    0x08022ec0 str r2, [sp]                                                      |     *(sp) = r2;
    0x08022ec4 stmdaeq r5, {r3, r4, r5, r6, r7, r8, fp, ip, sp, pc}              |     __asm ("stmdaeq r5, {r3, r4, r5, r6, r7, r8, fp, ip, sp, pc}");
    0x08022ec8 stmdaeq r5, {r3, r4, r5, r6, r7, r8, fp, ip, sp, pc}              |     __asm ("stmdaeq r5, {r3, r4, r5, r6, r7, r8, fp, ip, sp, pc}");
    0x08022ecc str r1, [sp, 0xc]                                                 |     var_ch = r1;
    0x08022ed0 stmdaeq r5, {r5, r6, sb, fp, ip, sp, pc}                          |     __asm ("stmdaeq r5, {r5, r6, sb, fp, ip, sp, pc}");
    0x08022ed4 stmdaeq r5, {r5, r6, sb, fp, ip, sp, pc}                          |     __asm ("stmdaeq r5, {r5, r6, sb, fp, ip, sp, pc}");
    0x08022ed8 stmdaeq r4, {r4, r7, r8, sb, fp, sp, lr}                          |     __asm ("stmdaeq r4, {r4, r7, r8, sb, fp, sp, lr}");
    0x08022edc stmdaeq r5, {r2, r5, r6, sb, fp, ip, sp, pc}                      |     __asm ("stmdaeq r5, {r2, r5, r6, sb, fp, ip, sp, pc}");
    0x08022ee0 stmdaeq r5, {r2, r5, r6, sb, fp, ip, sp, pc}                      |     __asm ("stmdaeq r5, {r2, r5, r6, sb, fp, ip, sp, pc}");
    0x08022ee4 stmdaeq r5, {r5, r6, sb, fp, ip, sp, pc}                          |     __asm ("stmdaeq r5, {r5, r6, sb, fp, ip, sp, pc}");
    0x08022ee8 stmdaeq r5, {r5, r6, sb, fp, ip, sp, pc}                          |     __asm ("stmdaeq r5, {r5, r6, sb, fp, ip, sp, pc}");
    0x08022eec mov r0, r4                                                        |     r0 = r4;
    0x08022ef0 stmdaeq r4, {r4, r7, r8, sb, fp, sp, lr}                          |     __asm ("stmdaeq r4, {r4, r7, r8, sb, fp, sp, lr}");
                                                                                 | label_15:
    0x08022ef4 mov r3, 1                                                         |     r3 = 1;
    0x08022ef8 strb r3, [r7]                                                     |     *(r7) = r3;
    0x08022efc b 0x8022d5c                                                       |     goto label_10;
                                                                                 | label_31:
    0x08022f00 ldr r3, [r5, 0x28]                                                |     r3 = *((r5 + 0x28));
    0x08022f04 mov r2, 0                                                         |     r2 = 0;
    0x08022f08 ldr r0, [r5, 0x1c]                                                |     r0 = *((r5 + 0x1c));
    0x08022f0c ldr r1, [pc, 0x1b4]                                               |     r1 = *(0x80230c4);
    0x08022f10 str r3, [sp, 0xc]                                                 |     var_ch = r3;
    0x08022f14 stmdaeq r5, {r3, r4, r6, r7, r8, fp, ip, sp, pc}                  |     __asm ("stmdaeq r5, {r3, r4, r6, r7, r8, fp, ip, sp, pc}");
    0x08022f18 stmdaeq r5, {r3, r4, r6, r7, r8, fp, ip, sp, pc}                  |     __asm ("stmdaeq r5, {r3, r4, r6, r7, r8, fp, ip, sp, pc}");
    0x08022f1c str r3, [sp, 8]                                                   |     var_8h = r3;
    0x08022f20 mov r3, 0                                                         |     r3 = 0;
    0x08022f24 strd r2, r3, [sp]                                                 |     __asm ("strd r2, r3, [sp]");
    0x08022f28 rsb r3, r4, 0                                                     |     r3 = r4 - ;
    0x08022f2c mov r2, 0x9d0                                                     |     r2 = 0x9d0;
    0x08022f30 stmdaeq r4, {r3, r6, ip, sp, lr}                                  |     __asm ("stmdaeq r4, {r3, r6, ip, sp, lr}");
    0x08022f34 b 0x8022d50                                                       |     goto label_13;
                                                                                 | label_30:
    0x08022f38 ldr r3, [r3]                                                      |     r3 = *(r3);
    0x08022f3c tst r3, 2                                                         |     
                                                                                 |     if ((r3 & 2) == 0) {
    0x08022f40 beq 0x8022d00                                                     |         goto label_14;
                                                                                 |     }
    0x08022f44 stmdaeq r8, {r0, r1, r6, sl, fp, ip, pc}                          |     __asm ("stmdaeq r8, {r0, r1, r6, sl, fp, ip, pc}");
    0x08022f48 b 0x8022d00                                                       |     goto label_14;
                                                                                 | label_34:
    0x08022f4c ldr r3, [r5, 0x28]                                                |     r3 = *((r5 + 0x28));
    0x08022f50 mov r0, r4                                                        |     r0 = r4;
    0x08022f54 str sb, [sp, 4]                                                   |     var_4h = sb;
    0x08022f58 stmdaeq r5, {r5, r6, sb, fp, ip, sp, pc}                          |     __asm ("stmdaeq r5, {r5, r6, sb, fp, ip, sp, pc}");
    0x08022f5c stmdaeq r5, {r5, r6, sb, fp, ip, sp, pc}                          |     __asm ("stmdaeq r5, {r5, r6, sb, fp, ip, sp, pc}");
    0x08022f60 ldr r2, [sl, 0x24]                                                |     r2 = *((sl + 0x24));
    0x08022f64 str r2, [sp, 8]                                                   |     var_8h = r2;
    0x08022f68 ldr r2, [sl, 0x20]                                                |     r2 = *((sl + 0x20));
    0x08022f6c str r2, [sp]                                                      |     *(sp) = r2;
    0x08022f70 mov r2, 0x1c                                                      |     r2 = 0x1c;
    0x08022f74 str r2, [sp, 0xc]                                                 |     var_ch = r2;
    0x08022f78 stmdaeq r5, {r3, r4, r5, r6, r7, r8, fp, ip, sp, pc}              |     __asm ("stmdaeq r5, {r3, r4, r5, r6, r7, r8, fp, ip, sp, pc}");
    0x08022f7c stmdaeq r5, {r3, r4, r5, r6, r7, r8, fp, ip, sp, pc}              |     __asm ("stmdaeq r5, {r3, r4, r5, r6, r7, r8, fp, ip, sp, pc}");
    0x08022f80 stmdaeq r4, {r4, r7, r8, sb, fp, sp, lr}                          |     __asm ("stmdaeq r4, {r4, r7, r8, sb, fp, sp, lr}");
    0x08022f84 mov r0, r4                                                        |     r0 = r4;
    0x08022f88 stmdaeq r5, {r2, r5, r6, sb, fp, ip, sp, pc}                      |     __asm ("stmdaeq r5, {r2, r5, r6, sb, fp, ip, sp, pc}");
    0x08022f8c stmdaeq r5, {r2, r5, r6, sb, fp, ip, sp, pc}                      |     __asm ("stmdaeq r5, {r2, r5, r6, sb, fp, ip, sp, pc}");
    0x08022f90 stmdaeq r5, {r5, r6, sb, fp, ip, sp, pc}                          |     __asm ("stmdaeq r5, {r5, r6, sb, fp, ip, sp, pc}");
    0x08022f94 stmdaeq r5, {r5, r6, sb, fp, ip, sp, pc}                          |     __asm ("stmdaeq r5, {r5, r6, sb, fp, ip, sp, pc}");
    0x08022f98 stmdaeq r4, {r4, r7, r8, sb, fp, sp, lr}                          |     __asm ("stmdaeq r4, {r4, r7, r8, sb, fp, sp, lr}");
    0x08022f9c ldr r4, [r5, 0x1c]                                                |     r4 = *((r5 + 0x1c));
    0x08022fa0 mov r0, r4                                                        |     r0 = r4;
    0x08022fa4 ldr r6, [r4, 0x1f8]                                               |     r6 = *((r4 + 0x1f8));
    0x08022fa8 stmdaeq r0, {r2, r3, r4, sb, fp}                                  |     __asm ("stmdaeq r0, {r2, r3, r4, sb, fp}");
    0x08022fac ldr r2, [r5, 0x1c]                                                |     r2 = *((r5 + 0x1c));
    0x08022fb0 mov r3, r0                                                        |     r3 = r0;
    0x08022fb4 ldr r2, [r2, 0x1f8]                                               |     r2 = *((r2 + 0x1f8));
    0x08022fb8 ldr r0, [r2, 0x30]                                                |     r0 = *((r2 + 0x30));
    0x08022fbc lsl r2, r1, r0                                                    |     r2 = r1 << r0;
    0x08022fc0 sub r1, r0, 0x20                                                  |     r1 = r0 - 0x20;
    0x08022fc4 orr r2, r2, r3, lsl r1                                            |     r2 |= (r3 << r1);
    0x08022fc8 rsb r1, r0, 0x20                                                  |     r1 = 0x20 - r0;
    0x08022fcc orr r2, r2, r3, lsr r1                                            |     r2 |= (r3 >> r1);
    0x08022fd0 stmdaeq r5, {r5, r6, sb, fp, ip, sp, pc}                          |     __asm ("stmdaeq r5, {r5, r6, sb, fp, ip, sp, pc}");
    0x08022fd4 stmdaeq r5, {r5, r6, sb, fp, ip, sp, pc}                          |     __asm ("stmdaeq r5, {r5, r6, sb, fp, ip, sp, pc}");
    0x08022fd8 lsl r3, r3, r0                                                    |     r3 <<= r0;
    0x08022fdc str r2, [sp, 4]                                                   |     var_4h = r2;
    0x08022fe0 mov r0, r4                                                        |     r0 = r4;
    0x08022fe4 str r3, [sp]                                                      |     *(sp) = r3;
    0x08022fe8 stmdaeq r5, {r4, r7, sb, fp, ip, sp, pc}                          |     __asm ("stmdaeq r5, {r4, r7, sb, fp, ip, sp, pc}");
    0x08022fec stmdaeq r5, {r4, r7, sb, fp, ip, sp, pc}                          |     __asm ("stmdaeq r5, {r4, r7, sb, fp, ip, sp, pc}");
    0x08022ff0 stmdaeq r4, {r4, r7, r8, sb, fp, sp, lr}                          |     __asm ("stmdaeq r4, {r4, r7, r8, sb, fp, sp, lr}");
    0x08022ff4 mov r0, r4                                                        |     r0 = r4;
    0x08022ff8 stmdaeq r5, {r4, r5, r7, sb, fp, ip, sp, pc}                      |     __asm ("stmdaeq r5, {r4, r5, r7, sb, fp, ip, sp, pc}");
    0x08022ffc stmdaeq r5, {r4, r5, r7, sb, fp, ip, sp, pc}                      |     __asm ("stmdaeq r5, {r4, r5, r7, sb, fp, ip, sp, pc}");
    0x08023000 stmdaeq r5, {r5, r6, sb, fp, ip, sp, pc}                          |     __asm ("stmdaeq r5, {r5, r6, sb, fp, ip, sp, pc}");
    0x08023004 stmdaeq r5, {r5, r6, sb, fp, ip, sp, pc}                          |     __asm ("stmdaeq r5, {r5, r6, sb, fp, ip, sp, pc}");
    0x08023008 stmdaeq r4, {r4, r7, r8, sb, fp, sp, lr}                          |     __asm ("stmdaeq r4, {r4, r7, r8, sb, fp, sp, lr}");
    0x0802300c ldr r3, [r4, 0x1f8]                                               |     r3 = *((r4 + 0x1f8));
    0x08023010 ldr r2, [r6, 0xb0]                                                |     r2 = *((r6 + 0xb0));
    0x08023014 ldr r1, [r3, 0x30]                                                |     r1 = *((r3 + 0x30));
    0x08023018 ldr r3, [r6, 0xb4]                                                |     r3 = *((r6 + 0xb4));
    0x0802301c sub r0, r1, 0x20                                                  |     r0 = r1 - 0x20;
    0x08023020 lsl r3, r3, r1                                                    |     r3 <<= r1;
    0x08023024 orr r3, r3, r2, lsl r0                                            |     r3 |= (r2 << r0);
    0x08023028 rsb r0, r1, 0x20                                                  |     r0 = 0x20 - r1;
    0x0802302c orr r3, r3, r2, lsr r0                                            |     r3 |= (r2 >> r0);
    0x08023030 mov r0, r4                                                        |     r0 = r4;
    0x08023034 lsl r2, r2, r1                                                    |     r2 <<= r1;
    0x08023038 stmdaeq r5, {r5, r6, sb, fp, ip, sp, pc}                          |     __asm ("stmdaeq r5, {r5, r6, sb, fp, ip, sp, pc}");
    0x0802303c stmdaeq r5, {r5, r6, sb, fp, ip, sp, pc}                          |     __asm ("stmdaeq r5, {r5, r6, sb, fp, ip, sp, pc}");
    0x08023040 strd r2, r3, [sp]                                                 |     __asm ("strd r2, r3, [sp]");
    0x08023044 stmdaeq r5, {r2, r3, r6, r7, sb, fp, ip, sp, pc}                  |     __asm ("stmdaeq r5, {r2, r3, r6, r7, sb, fp, ip, sp, pc}");
    0x08023048 stmdaeq r5, {r2, r3, r6, r7, sb, fp, ip, sp, pc}                  |     __asm ("stmdaeq r5, {r2, r3, r6, r7, sb, fp, ip, sp, pc}");
    0x0802304c stmdaeq r4, {r4, r7, r8, sb, fp, sp, lr}                          |     __asm ("stmdaeq r4, {r4, r7, r8, sb, fp, sp, lr}");
    0x08023050 ldr r3, [r4, 0x1f8]                                               |     r3 = *((r4 + 0x1f8));
    0x08023054 ldr r1, [r3, 0x30]                                                |     r1 = *((r3 + 0x30));
    0x08023058 ldrd r2, r3, [r6, 0xc8]                                           |     __asm ("ldrd r2, r3, [r6, 0xc8]");
    0x0802305c sub r0, r1, 0x20                                                  |     r0 = r1 - 0x20;
    0x08023060 lsl r3, r3, r1                                                    |     r3 <<= r1;
    0x08023064 orr r3, r3, r2, lsl r0                                            |     r3 |= (r2 << r0);
    0x08023068 rsb r0, r1, 0x20                                                  |     r0 = 0x20 - r1;
    0x0802306c orr r3, r3, r2, lsr r0                                            |     r3 |= (r2 >> r0);
    0x08023070 mov r0, r4                                                        |     r0 = r4;
    0x08023074 lsl r2, r2, r1                                                    |     r2 <<= r1;
    0x08023078 stmdaeq r5, {r5, r6, sb, fp, ip, sp, pc}                          |     __asm ("stmdaeq r5, {r5, r6, sb, fp, ip, sp, pc}");
    0x0802307c stmdaeq r5, {r5, r6, sb, fp, ip, sp, pc}                          |     __asm ("stmdaeq r5, {r5, r6, sb, fp, ip, sp, pc}");
    0x08023080 strd r2, r3, [sp]                                                 |     __asm ("strd r2, r3, [sp]");
    0x08023084 stmdaeq r5, {r5, r6, r7, sb, fp, ip, sp, pc}                      |     __asm ("stmdaeq r5, {r5, r6, r7, sb, fp, ip, sp, pc}");
    0x08023088 stmdaeq r5, {r5, r6, r7, sb, fp, ip, sp, pc}                      |     __asm ("stmdaeq r5, {r5, r6, r7, sb, fp, ip, sp, pc}");
    0x0802308c stmdaeq r4, {r4, r7, r8, sb, fp, sp, lr}                          |     __asm ("stmdaeq r4, {r4, r7, r8, sb, fp, sp, lr}");
    0x08023090 mov r0, r4                                                        |     r0 = r4;
    0x08023094 stmdaeq r5, {r2, r4, r5, r6, r7, sb, fp, ip, sp, pc}              |     __asm ("stmdaeq r5, {r2, r4, r5, r6, r7, sb, fp, ip, sp, pc}");
    0x08023098 stmdaeq r5, {r2, r4, r5, r6, r7, sb, fp, ip, sp, pc}              |     __asm ("stmdaeq r5, {r2, r4, r5, r6, r7, sb, fp, ip, sp, pc}");
    0x0802309c stmdaeq r5, {r5, r6, sb, fp, ip, sp, pc}                          |     __asm ("stmdaeq r5, {r5, r6, sb, fp, ip, sp, pc}");
    0x080230a0 stmdaeq r5, {r5, r6, sb, fp, ip, sp, pc}                          |     __asm ("stmdaeq r5, {r5, r6, sb, fp, ip, sp, pc}");
    0x080230a4 stmdaeq r4, {r4, r7, r8, sb, fp, sp, lr}                          |     __asm ("stmdaeq r4, {r4, r7, r8, sb, fp, sp, lr}");
    0x080230a8 ldr r3, [r5, 0x1b4]                                               |     r3 = *((r5 + 0x1b4));
    0x080230ac mov r0, r4                                                        |     r0 = r4;
    0x080230b0 stmdaeq r5, {r4, r8, sb, fp, ip, sp, pc}                          |     __asm ("stmdaeq r5, {r4, r8, sb, fp, ip, sp, pc}");
    0x080230b4 stmdaeq r5, {r4, r8, sb, fp, ip, sp, pc}                          |     __asm ("stmdaeq r5, {r4, r8, sb, fp, ip, sp, pc}");
    0x080230b8 stmdaeq r5, {r5, r6, sb, fp, ip, sp, pc}                          |     __asm ("stmdaeq r5, {r5, r6, sb, fp, ip, sp, pc}");
    0x080230bc stmdaeq r5, {r5, r6, sb, fp, ip, sp, pc}                          |     __asm ("stmdaeq r5, {r5, r6, sb, fp, ip, sp, pc}");
    0x080230c0 stmdaeq r4, {r4, r7, r8, sb, fp, sp, lr}                          |     __asm ("stmdaeq r4, {r4, r7, r8, sb, fp, sp, lr}");
    0x080230c4 b 0x8022ef4                                                       |     goto label_15;
                                                                                 | }
    ; assembly                                                                   | /* r2dec pseudo code output */
                                                                                 | /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-80367616.squashfs_v4_le_extract/usr/lib/modules/5.10.52-axis9/kernel/fs/ext4/ext4.ko @ 0x8047eac */
                                                                                 | #include <stdint.h>
                                                                                 |  
                                                                                 | #define BIT_MASK(t,v) ((t)(-((v)!= 0)))&(((t)-1)>>((sizeof(t)*CHAR_BIT)-(v)))
                                                                                 |  
    ; (fcn) sym.parse_options ()                                                 | void parse_options (int32_t arg_78h, uint32_t arg1, int32_t arg2) {
                                                                                 |     int32_t var_8h;
                                                                                 |     int32_t var_8h_2;
                                                                                 |     int32_t var_14h;
                                                                                 |     int32_t var_14h_2;
                                                                                 |     int32_t var_1ch;
                                                                                 |     int32_t var_6h;
                                                                                 |     int32_t var_20h;
                                                                                 |     int32_t var_24h;
                                                                                 |     int32_t var_2ch;
                                                                                 |     int32_t var_38h;
                                                                                 |     int32_t var_38h_2;
                                                                                 |     int32_t var_8h_3;
                                                                                 |     int32_t var_ch;
                                                                                 |     int32_t var_54h;
                                                                                 |     r0 = arg1;
                                                                                 |     r1 = arg2;
    0x08047eac push {r4, r5, r6, r7, r8, sb, sl, fp, lr}                         |     
    0x08047eb0 cmp r0, 0                                                         |     
    0x08047eb4 sub sp, sp, 0x54                                                  |     
    0x08047eb8 ldr r5, [r1, 0x1f8]                                               |     r5 = *((r1 + 0x1f8));
    0x08047ebc strd r2, r3, [sp, 0x14]                                           |     __asm ("strd r2, r3, [var_14h]");
    0x08047ec0 str r0, [sp, 0x24]                                                |     var_24h = r0;
                                                                                 |     if (arg_78h == ) {
    0x08047ec4 beq 0x80482bc                                                     |         goto label_0;
                                                                                 |     }
    0x08047ec8 ldr fp, [pc, 0xab4]                                               |     fp = loc..LANCHOR0;
    0x08047ecc stmdaeq r5, {r4, r5, sb, sp, lr, pc}                              |     __asm ("stmdaeq r5, {r4, r5, sb, sp, lr, pc}");
    0x08047ed0 stmdaeq r5, {r4, r5, sb, sp, lr, pc}                              |     __asm ("stmdaeq r5, {r4, r5, sb, sp, lr, pc}");
    0x08047ed4 mov r8, r1                                                        |     r8 = r1;
    0x08047ed8 mov r6, 0                                                         |     r6 = 0;
    0x08047edc mov r7, 0                                                         |     r7 = 0;
    0x08047ee0 strd r6, r7, [sp, 8]                                              |     __asm ("strd r6, r7, [var_8h]");
                                                                                 |     do {
                                                                                 | label_4:
    0x08047ee4 mov r1, sb                                                        |         r1 = sb;
    0x08047ee8 add r0, sp, 0x24                                                  |         r0 += var_24h;
    0x08047eec stmdaeq r8, {r0, r1, r6, r7, r8, sp, pc}                          |         __asm ("stmdaeq r8, {r0, r1, r6, r7, r8, sp, pc}");
    0x08047ef0 subs r4, r0, 0                                                    |         r4 -= var_24h;
                                                                                 |         if (r4 == var_24h) {
    0x08047ef4 beq 0x80482ac                                                     |             goto label_7;
                                                                                 |         }
    0x08047ef8 ldrb r3, [r4]                                                     |         r3 = *(r4);
    0x08047efc cmp r3, 0                                                         |         
    0x08047f00 beq 0x8047ee4                                                     |         
                                                                                 |     } while (r3 == 0);
    0x08047f04 ldrd r2, r3, [sp, 8]                                              |     __asm ("ldrd r2, r3, [var_8h]");
    0x08047f08 strd r2, r3, [sp, 0x38]                                           |     __asm ("strd r2, r3, [var_38h]");
    0x08047f0c mov r1, fp                                                        |     r1 = fp;
    0x08047f10 add r2, sp, 0x38                                                  |     r2 += var_38h;
    0x08047f14 stmdaeq r8, {r0, r1, r2, r6, r7, r8, sp, pc}                      |     __asm ("stmdaeq r8, {r0, r1, r2, r6, r7, r8, sp, pc}");
    0x08047f18 mov r3, 0                                                         |     r3 = 0;
    0x08047f1c str r3, [sp, 0x2c]                                                |     var_2ch = r3;
    0x08047f20 sub r3, r0, 6                                                     |     r3 -= var_6h;
    0x08047f24 ldr r7, [r8, 0x1f8]                                               |     r7 = *((r8 + 0x1f8));
    0x08047f28 mov sl, r0                                                        |     sl = r0;
    0x08047f2c cmp r3, 0x38                                                      |     
                                                                                 |     if (r3 > 0x38) {
                                                                                 |         /* switch table (57 cases) at 0x8047f38 */
    0x08047f30 ldrls pc, [pc, r3, lsl 2]                                         |         offset_0 = r3 << 2;
                                                                                 |         pc = *((pc + offset_0));
                                                                                 |     }
    0x08047f34 b 0x8048040                                                       |     
    0x08048040 stmdaeq r5, {r2, r3, r5, r8, sl, ip, pc}                          |     __asm ("stmdaeq r5, {r2, r3, r5, r8, sl, ip, pc}");
    0x08048044 stmdaeq r5, {r2, r3, r5, r8, sl, ip, pc}                          |     __asm ("stmdaeq r5, {r2, r3, r5, r8, sl, ip, pc}");
    0x08048048 mov r3, 1                                                         |     r3 = 1;
    0x0804804c b 0x804805c                                                       |     
                                                                                 |     while (sl != r3) {
    0x08048050 ldr r3, [r2, 0xc]!                                                |         r3 = var_ch;
    0x08048054 cmp r3, 0x2e                                                      |         
                                                                                 |         if (r3 == 0x2e) {
    0x08048058 beq 0x80487a4                                                     |             goto label_8;
                                                                                 |         }
    0x0804805c cmp sl, r3                                                        |         
    0x08048060 bne 0x8048050                                                     |         
                                                                                 |     }
    0x08048064 ldr r0, [r2, 8]                                                   |     r0 = var_8h_3;
    0x08048068 tst r0, 0x200                                                     |     
                                                                                 |     if ((r0 & 0x200) != 0) {
    0x0804806c beq 0x8048088                                                     |         
    0x08048070 ldr r1, [r8, 0x78]                                                |         r1 = *((r8 + 0x78));
    0x08048074 ldr ip, [r1, 0x20]                                                |         ip = *((r1 + 0x20));
    0x08048078 stmdaeq r6, {r3, r5, r8, sb, sl, fp}                              |         __asm ("stmdaeq r6, {r3, r5, r8, sb, sl, fp}");
    0x0804807c stmdaeq r6, {r3, r5, r8, sb, sl, fp}                              |         __asm ("stmdaeq r6, {r3, r5, r8, sb, sl, fp}");
    0x08048080 cmp ip, r1                                                        |         
                                                                                 |         if (ip == r1) {
    0x08048084 beq 0x8048834                                                     |             goto label_9;
                                                                                 |         }
                                                                                 |     }
    0x08048088 ldr r1, [sp, 0x38]                                                |     r1 = var_38h;
    0x0804808c cmp r1, 0                                                         |     
                                                                                 |     if (r1 == 0) {
    0x08048090 beq 0x80480a4                                                     |         goto label_2;
                                                                                 |     }
    0x08048094 tst r0, 0x400                                                     |     
                                                                                 |     if ((r0 & 0x400) == 0) {
    0x08048098 beq 0x8048324                                                     |         goto label_10;
                                                                                 |     }
    0x0804809c tst r0, 0x20                                                      |     
    0x080480a0 bne 0x80482c8                                                     |     
                                                                                 |     while (ip >= 0) {
                                                                                 | label_2:
    0x080480a4 tst r0, 8                                                         |         
                                                                                 |         if ((r0 & 8) != 0) {
    0x080480a8 beq 0x80480d4                                                     |             
    0x080480ac ldr r0, [r2, 4]                                                   |             r0 = var_38h_2;
    0x080480b0 tst r0, 0x8000000                                                 |             
                                                                                 |             if ((r0 & loc.imp.fs_overflowgid) != 0) {
    0x080480b4 bne 0x804830c                                                     |                 goto label_11;
                                                                                 |             }
    0x080480b8 tst r0, 0x800000                                                  |             
                                                                                 |             if ((r0 & 0x800000) == 0) {
    0x080480bc beq 0x80483d0                                                     |                 goto label_6;
                                                                                 |             }
    0x080480c0 ldr ip, [r8, 0x1f8]                                               |             ip = *((r8 + 0x1f8));
    0x080480c4 ldr r0, [ip, 0x50]                                                |             r0 = *((ip + 0x50));
    0x080480c8 orr r0, r0, 8                                                     |             r0 |= 8;
    0x080480cc str r0, [ip, 0x50]                                                |             *((ip + 0x50)) = r0;
    0x080480d0 ldr r0, [r2, 8]                                                   |             r0 = var_8h_3;
                                                                                 |         }
                                                                                 | label_1:
    0x080480d4 tst r0, 0x10                                                      |         
                                                                                 |         if ((r0 & 0x10) == 0) {
    0x080480d8 ldrne ip, [r8, 0x1f8]                                             |             ip = *((r8 + 0x1f8));
                                                                                 |         }
                                                                                 |         if ((r0 & 0x10) == 0) {
    0x080480dc ldrne r0, [ip, 0x4c]                                              |             r0 = *((ip + 0x4c));
                                                                                 |         }
    0x080480e0 bicne r0, r0, 0x70                                                |         __asm ("bicne r0, r0, 0x70");
                                                                                 |         if ((r0 & 0x10) == 0) {
    0x080480e4 strne r0, [ip, 0x4c]                                              |             *((ip + 0x4c)) = r0;
                                                                                 |         }
                                                                                 |         if ((r0 & 0x10) == 0) {
    0x080480e8 ldrne r0, [r2, 8]                                                 |             r0 = *((r2 + 8));
                                                                                 |         }
    0x080480ec tst r0, 4                                                         |         
                                                                                 |         if ((r0 & 4) != 0) {
    0x080480f0 bne 0x8048360                                                     |             goto label_12;
                                                                                 |         }
    0x080480f4 sub ip, r3, 4                                                     |         
    0x080480f8 cmp ip, 0x47                                                      |         
                                                                                 |         if (ip > 0x47) {
                                                                                 |             /* switch table (72 cases) at 0x8048104 */
    0x080480fc ldrls pc, [pc, ip, lsl 2]                                         |             offset_1 = ip << 2;
                                                                                 |             pc = *((pc + offset_1));
                                                                                 |         }
    0x08048100 b 0x8048380                                                       |         goto label_13;
                                                                                 | label_7:
    0x080482ac ldr r3, [r8, 0x1f8]                                               |         r3 = *((r8 + 0x1f8));
    0x080482b0 ldr r3, [r3, 0x4c]                                                |         r3 = *((r3 + 0x4c));
    0x080482b4 tst r3, 0x400000                                                  |         
                                                                                 |         if ((r3 & 0x400000) != 0) {
    0x080482b8 bne 0x80482d8                                                     |             goto label_14;
                                                                                 |         }
                                                                                 | label_0:
    0x080482bc mov r0, 1                                                         |         r0 = 1;
                                                                                 | label_5:
    0x080482c0 add sp, sp, 0x54                                                  |         
    0x080482c4 pop {r4, r5, r6, r7, r8, sb, sl, fp, pc}                          |         
                                                                                 | label_3:
    0x080482c8 ldr ip, [sp, 0x2c]                                                |         ip = var_2ch;
    0x080482cc cmp ip, 0                                                         |         
    0x080482d0 bge 0x80480a4                                                     |         
                                                                                 |     }
    0x080482d4 b 0x80483d0                                                       |     goto label_6;
                                                                                 | label_14:
    0x080482d8 ldr r2, [r5, 0x44]                                                |     r2 = *((r5 + 0x44));
    0x080482dc mov r3, 0x400                                                     |     r3 = 0x400;
    0x080482e0 ldr r2, [r2, 0x18]                                                |     r2 = *((r2 + 0x18));
    0x080482e4 lsl r3, r3, r2                                                    |     r3 <<= r2;
    0x080482e8 cmp r3, 0x1000                                                    |     
                                                                                 |     if (r3 >= 0x1000) {
    0x080482ec bhs 0x80482bc                                                     |         goto label_0;
                                                                                 |     }
    0x080482f0 mov r0, r8                                                        |     r0 = r8;
    0x080482f4 stmdaeq r5, {r2, r4, r5, sb, sp, lr, pc}                          |     __asm ("stmdaeq r5, {r2, r4, r5, sb, sp, lr, pc}");
    0x080482f8 stmdaeq r5, {r2, r4, r5, sb, sp, lr, pc}                          |     __asm ("stmdaeq r5, {r2, r4, r5, sb, sp, lr, pc}");
    0x080482fc stmdaeq r5, {r3, r4, r6, sb, sl, fp, ip, lr, pc}                  |     __asm ("stmdaeq r5, {r3, r4, r6, sb, sl, fp, ip, lr, pc}");
    0x08048300 stmdaeq r5, {r3, r4, r6, sb, sl, fp, ip, lr, pc}                  |     __asm ("stmdaeq r5, {r3, r4, r6, sb, sl, fp, ip, lr, pc}");
    0x08048304 stmdaeq r4, {r4, r7, r8, sb, fp, sp, lr}                          |     __asm ("stmdaeq r4, {r4, r7, r8, sb, fp, sp, lr}");
    0x08048308 b 0x80482bc                                                       |     goto label_0;
                                                                                 | label_11:
    0x0804830c ldr ip, [r8, 0x1f8]                                               |     ip = *((r8 + 0x1f8));
    0x08048310 ldr r0, [ip, 0x50]                                                |     r0 = *((ip + 0x50));
    0x08048314 orr r0, r0, 1                                                     |     r0 |= 1;
    0x08048318 str r0, [ip, 0x50]                                                |     *((ip + 0x50)) = r0;
    0x0804831c ldr r0, [r2, 8]                                                   |     r0 = var_8h_3;
    0x08048320 b 0x80480d4                                                       |     goto label_1;
                                                                                 | label_10:
    0x08048324 add r1, sp, 0x2c                                                  |     r1 += var_2ch;
    0x08048328 add r0, sp, 0x38                                                  |     r0 += var_38h;
    0x0804832c strd r2, r3, [sp, 0x1c]                                           |     __asm ("strd r2, r3, [var_1ch]");
    0x08048330 stmdaeq r8, {r0, r1, r3, r6, r7, r8, sp, pc}                      |     __asm ("stmdaeq r8, {r0, r1, r3, r6, r7, r8, sp, pc}");
    0x08048334 cmp r0, 0                                                         |     
                                                                                 |     if (r0 != 0) {
    0x08048338 bne 0x80483d0                                                     |         goto label_6;
                                                                                 |     }
    0x0804833c ldr r2, [sp, 0x1c]                                                |     r2 = var_1ch;
    0x08048340 ldr r1, [sp, 0x38]                                                |     r1 = var_38h;
    0x08048344 ldr r3, [sp, 0x20]                                                |     r3 = var_20h;
    0x08048348 ldr r0, [r2, 8]                                                   |     r0 = *((r2 + 8));
    0x0804834c cmp r1, 0                                                         |     
                                                                                 |     if (r1 == 0) {
    0x08048350 beq 0x80480a4                                                     |         goto label_2;
                                                                                 |     }
    0x08048354 tst r0, 0x20                                                      |     
                                                                                 |     if ((r0 & 0x20) == 0) {
    0x08048358 beq 0x80480a4                                                     |         goto label_2;
                                                                                 |     }
    0x0804835c b 0x80482c8                                                       |     goto label_3;
                                                                                 | label_12:
    0x08048360 mov r3, r4                                                        |     r3 = r4;
    0x08048364 mov r0, r8                                                        |     r0 = r8;
    0x08048368 stmdaeq r5, {r3, r4, r5, r6, r7, sb, sl, fp, ip, lr, pc}          |     __asm ("stmdaeq r5, {r3, r4, r5, r6, r7, sb, sl, fp, ip, lr, pc}");
    0x0804836c stmdaeq r5, {r3, r4, r5, r6, r7, sb, sl, fp, ip, lr, pc}          |     __asm ("stmdaeq r5, {r3, r4, r5, r6, r7, sb, sl, fp, ip, lr, pc}");
    0x08048370 stmdaeq r5, {r2, r3, r5, r6, r7, r8, fp, ip, lr, pc}              |     __asm ("stmdaeq r5, {r2, r3, r5, r6, r7, r8, fp, ip, lr, pc}");
    0x08048374 stmdaeq r5, {r2, r3, r5, r6, r7, r8, fp, ip, lr, pc}              |     __asm ("stmdaeq r5, {r2, r3, r5, r6, r7, r8, fp, ip, lr, pc}");
    0x08048378 stmdaeq r4, {r4, r7, r8, sb, fp, sp, lr}                          |     __asm ("stmdaeq r4, {r4, r7, r8, sb, fp, sp, lr}");
    0x0804837c b 0x8047ee4                                                       |     goto label_4;
                                                                                 | label_13:
    0x08048380 tst r0, 0x80                                                      |     
                                                                                 |     if ((r0 & 0x80) == 0) {
    0x08048384 beq 0x8048654                                                     |         goto label_15;
                                                                                 |     }
    0x08048388 ldr r3, [sp, 0x78]                                                |     r3 = *(arg_78h);
    0x0804838c cmp r3, 0                                                         |     
                                                                                 |     if (r3 == 0) {
    0x08048390 beq 0x80486dc                                                     |         goto label_16;
                                                                                 |     }
    0x08048394 ldr r3, [r7, 0x118]                                               |     r3 = *((r7 + 0x118));
    0x08048398 cmp r3, 0                                                         |     
                                                                                 |     if (r3 == 0) {
    0x0804839c beq 0x80487c4                                                     |         goto label_17;
                                                                                 |     }
    0x080483a0 ldr r3, [r8, 0x1f8]                                               |     r3 = *((r8 + 0x1f8));
    0x080483a4 ldr r2, [r2, 4]                                                   |     r2 = var_38h_2;
    0x080483a8 ldr r3, [r3, 0x4c]                                                |     r3 = *((r3 + 0x4c));
    0x080483ac and r3, r3, 0xc00                                                 |     r3 &= 0xc00;
    0x080483b0 cmp r3, r2                                                        |     
                                                                                 |     if (r3 == r2) {
    0x080483b4 beq 0x8047ee4                                                     |         goto label_4;
                                                                                 |     }
    0x080483b8 stmdaeq r5, {r2, r4, r6, r7, r8, sp, lr, pc}                      |     __asm ("stmdaeq r5, {r2, r4, r6, r7, r8, sp, lr, pc}");
    0x080483bc stmdaeq r5, {r2, r4, r6, r7, r8, sp, lr, pc}                      |     __asm ("stmdaeq r5, {r2, r4, r6, r7, r8, sp, lr, pc}");
    0x080483c0 stmdaeq r5, {r2, r3, r5, r6, r7, r8, fp, ip, lr, pc}              |     __asm ("stmdaeq r5, {r2, r3, r5, r6, r7, r8, fp, ip, lr, pc}");
    0x080483c4 stmdaeq r5, {r2, r3, r5, r6, r7, r8, fp, ip, lr, pc}              |     __asm ("stmdaeq r5, {r2, r3, r5, r6, r7, r8, fp, ip, lr, pc}");
    0x080483c8 mov r0, r8                                                        |     r0 = r8;
    0x080483cc stmdaeq r4, {r4, r7, r8, sb, fp, sp, lr}                          |     __asm ("stmdaeq r4, {r4, r7, r8, sb, fp, sp, lr}");
                                                                                 | label_6:
    0x080483d0 mov r0, 0                                                         |     r0 = 0;
    0x080483d4 b 0x80482c0                                                       |     goto label_5;
                                                                                 | label_15:
    0x08048654 sub ip, r3, 0x33                                                  |     
    0x08048658 cmp ip, 3                                                         |     
                                                                                 |     if (ip < 3) {
    0x0804865c bls 0x80488bc                                                     |         goto label_18;
                                                                                 |     }
    0x08048660 cmp r3, 0x1f                                                      |     
                                                                                 |     if (r3 == 0x1f) {
    0x08048664 beq 0x8048700                                                     |         goto label_19;
                                                                                 |     }
    0x08048668 cmp r3, 0x20                                                      |     
                                                                                 |     if (r3 == 0x20) {
    0x0804866c beq 0x804873c                                                     |         goto label_20;
                                                                                 |     }
    0x08048670 cmp r1, 0                                                         |     
                                                                                 |     if (r1 != 0) {
    0x08048674 moveq r3, 1                                                       |         r3 = 1;
                                                                                 |     }
                                                                                 |     if (r1 != 0) {
    0x08048678 streq r3, [sp, 0x2c]                                              |         var_2ch = r3;
                                                                                 |     }
    0x0804867c ands r3, r0, 2                                                    |     r3 = r0 & 2;
    0x08048680 mov r6, r3                                                        |     r6 = r3;
                                                                                 |     if (r3 == r0) {
    0x08048684 beq 0x804872c                                                     |         goto label_21;
                                                                                 |     }
    0x08048688 ldr r1, [sp, 0x2c]                                                |     r1 = var_2ch;
    0x0804868c clz r1, r1                                                        |     r1 &= r1;
    0x08048690 lsr r1, r1, 5                                                     |     r1 >>= 5;
    0x08048694 str r1, [sp, 0x2c]                                                |     var_2ch = r1;
                                                                                 |     do {
    0x08048698 ldr r3, [r2, 4]                                                   |         r3 = var_38h_2;
    0x0804869c tst r0, 0x1000                                                    |         
                                                                                 |         if ((r0 & 0x1000) == 0) {
    0x080486a0 beq 0x8048750                                                     |             goto label_22;
                                                                                 |         }
    0x080486a4 ldr r2, [r7, 0x50]                                                |         r2 = *((r7 + 0x50));
    0x080486a8 cmp r1, 0                                                         |         
                                                                                 |         if (r1 == 0) {
    0x080486ac orrne r3, r3, r2                                                  |             r3 |= r2;
                                                                                 |         }
    0x080486b0 biceq r2, r2, r3                                                  |         __asm ("biceq r2, r2, r3");
                                                                                 |         if (r1 == 0) {
    0x080486b4 strne r3, [r7, 0x50]                                              |             *((r7 + 0x50)) = r3;
                                                                                 |         }
                                                                                 |         if (r1 != 0) {
    0x080486b8 streq r2, [r7, 0x50]                                              |             *((r7 + 0x50)) = r2;
                                                                                 |         }
    0x080486bc b 0x8047ee4                                                       |         goto label_4;
                                                                                 | label_16:
    0x080486dc ldr r1, [r8, 0x1f8]                                               |         r1 = *((r8 + 0x1f8));
    0x080486e0 ldr r3, [r1, 0x4c]                                                |         r3 = *((r1 + 0x4c));
    0x080486e4 bic r3, r3, 0xc00                                                 |         r3 = BIT_MASK (r3, 0xc00);
    0x080486e8 str r3, [r1, 0x4c]                                                |         *((r1 + 0x4c)) = r3;
    0x080486ec ldr r2, [r2, 4]                                                   |         r2 = var_38h_2;
    0x080486f0 ldr r3, [r7, 0x4c]                                                |         r3 = *((r7 + 0x4c));
    0x080486f4 orr r3, r3, r2                                                    |         r3 |= r2;
    0x080486f8 str r3, [r7, 0x4c]                                                |         *((r7 + 0x4c)) = r3;
    0x080486fc b 0x8047ee4                                                       |         goto label_4;
                                                                                 | label_19:
    0x08048700 ldr r2, [r2, 4]                                                   |         r2 = var_38h_2;
    0x08048704 ldr r3, [r7, 0x4c]                                                |         r3 = *((r7 + 0x4c));
    0x08048708 orr r3, r3, r2                                                    |         r3 |= r2;
    0x0804870c str r3, [r7, 0x4c]                                                |         *((r7 + 0x4c)) = r3;
    0x08048710 b 0x8047ee4                                                       |         goto label_4;
                                                                                 | label_21:
    0x0804872c tst r0, 1                                                         |         
                                                                                 |         if ((r0 & 1) == 0) {
    0x08048730 beq 0x80487e0                                                     |             goto label_23;
                                                                                 |         }
    0x08048734 ldr r1, [sp, 0x2c]                                                |         r1 = var_2ch;
    0x08048738 b 0x8048698                                                       |         
                                                                                 |     } while (1);
                                                                                 | label_20:
    0x0804873c ldr r2, [r2, 4]                                                   |     r2 = var_38h_2;
    0x08048740 ldr r3, [r7, 0x4c]                                                |     r3 = *((r7 + 0x4c));
    0x08048744 bic r3, r3, r2                                                    |     r3 = BIT_MASK (r3, r2);
    0x08048748 str r3, [r7, 0x4c]                                                |     *((r7 + 0x4c)) = r3;
    0x0804874c b 0x8047ee4                                                       |     goto label_4;
                                                                                 | label_22:
    0x08048750 ldr r2, [r7, 0x4c]                                                |     r2 = *((r7 + 0x4c));
    0x08048754 cmp r1, 0                                                         |     
                                                                                 |     if (r1 == 0) {
    0x08048758 orrne r3, r3, r2                                                  |         r3 |= r2;
                                                                                 |     }
    0x0804875c biceq r2, r2, r3                                                  |     __asm ("biceq r2, r2, r3");
                                                                                 |     if (r1 == 0) {
    0x08048760 strne r3, [r7, 0x4c]                                              |         *((r7 + 0x4c)) = r3;
                                                                                 |     }
                                                                                 |     if (r1 != 0) {
    0x08048764 streq r2, [r7, 0x4c]                                              |         *((r7 + 0x4c)) = r2;
                                                                                 |     }
    0x08048768 b 0x8047ee4                                                       |     goto label_4;
                                                                                 | label_8:
    0x080487a4 mov r3, r4                                                        |     r3 = r4;
    0x080487a8 mov r0, r8                                                        |     r0 = r8;
    0x080487ac stmdaeq r5, {r2, r3, r4, r7, sb, sl, fp, ip, lr, pc}              |     __asm ("stmdaeq r5, {r2, r3, r4, r7, sb, sl, fp, ip, lr, pc}");
    0x080487b0 stmdaeq r5, {r2, r3, r4, r7, sb, sl, fp, ip, lr, pc}              |     __asm ("stmdaeq r5, {r2, r3, r4, r7, sb, sl, fp, ip, lr, pc}");
    0x080487b4 stmdaeq r5, {r2, r3, r5, r6, r7, r8, fp, ip, lr, pc}              |     __asm ("stmdaeq r5, {r2, r3, r5, r6, r7, r8, fp, ip, lr, pc}");
    0x080487b8 stmdaeq r5, {r2, r3, r5, r6, r7, r8, fp, ip, lr, pc}              |     __asm ("stmdaeq r5, {r2, r3, r5, r6, r7, r8, fp, ip, lr, pc}");
    0x080487bc stmdaeq r4, {r4, r7, r8, sb, fp, sp, lr}                          |     __asm ("stmdaeq r4, {r4, r7, r8, sb, fp, sp, lr}");
    0x080487c0 b 0x80483d0                                                       |     goto label_6;
                                                                                 | label_17:
    0x080487c4 mov r0, r8                                                        |     r0 = r8;
    0x080487c8 stmdaeq r5, {r3, r7, r8, sp, lr, pc}                              |     __asm ("stmdaeq r5, {r3, r7, r8, sp, lr, pc}");
    0x080487cc stmdaeq r5, {r3, r7, r8, sp, lr, pc}                              |     __asm ("stmdaeq r5, {r3, r7, r8, sp, lr, pc}");
    0x080487d0 stmdaeq r5, {r3, r4, r6, sb, sl, fp, ip, lr, pc}                  |     __asm ("stmdaeq r5, {r3, r4, r6, sb, sl, fp, ip, lr, pc}");
    0x080487d4 stmdaeq r5, {r3, r4, r6, sb, sl, fp, ip, lr, pc}                  |     __asm ("stmdaeq r5, {r3, r4, r6, sb, sl, fp, ip, lr, pc}");
    0x080487d8 stmdaeq r4, {r4, r7, r8, sb, fp, sp, lr}                          |     __asm ("stmdaeq r4, {r4, r7, r8, sb, fp, sp, lr}");
    0x080487dc b 0x8047ee4                                                       |     goto label_4;
                                                                                 | label_23:
    0x080487e0 mov r0, r8                                                        |     r0 = r8;
    0x080487e4 mov r3, r4                                                        |     r3 = r4;
    0x080487e8 stmdaeq r5, {r2, r4, sb, sp, lr, pc}                              |     __asm ("stmdaeq r5, {r2, r4, sb, sp, lr, pc}");
    0x080487ec stmdaeq r5, {r2, r4, sb, sp, lr, pc}                              |     __asm ("stmdaeq r5, {r2, r4, sb, sp, lr, pc}");
    0x080487f0 stmdaeq r5, {r3, r4, r6, sb, sl, fp, ip, lr, pc}                  |     __asm ("stmdaeq r5, {r3, r4, r6, sb, sl, fp, ip, lr, pc}");
    0x080487f4 stmdaeq r5, {r3, r4, r6, sb, sl, fp, ip, lr, pc}                  |     __asm ("stmdaeq r5, {r3, r4, r6, sb, sl, fp, ip, lr, pc}");
    0x080487f8 stmdaeq r4, {r4, r7, r8, sb, fp, sp, lr}                          |     __asm ("stmdaeq r4, {r4, r7, r8, sb, fp, sp, lr}");
    0x080487fc mov r3, r6                                                        |     r3 = r6;
    0x08048800 mov r2, 9                                                         |     r2 = 9;
    0x08048804 movw r1, 0x96b                                                    |     r1 = 0x96b;
    0x08048808 stmdaeq r5, {r5, r7, fp, ip, lr, pc}                              |     __asm ("stmdaeq r5, {r5, r7, fp, ip, lr, pc}");
    0x0804880c stmdaeq r5, {r5, r7, fp, ip, lr, pc}                              |     __asm ("stmdaeq r5, {r5, r7, fp, ip, lr, pc}");
    0x08048810 stmdaeq r8, {r0, r1, r2, r4, r5, r6, sl, fp, ip, pc}              |     __asm ("stmdaeq r8, {r0, r1, r2, r4, r5, r6, sl, fp, ip, pc}");
    0x08048814 b 0x80483d0                                                       |     goto label_6;
                                                                                 | label_9:
    0x08048834 mov r3, r4                                                        |     r3 = r4;
    0x08048838 mov r0, r8                                                        |     r0 = r8;
    0x0804883c stmdaeq r5, {r2, r3, r6, r7, sb, sl, fp, ip, lr, pc}              |     __asm ("stmdaeq r5, {r2, r3, r6, r7, sb, sl, fp, ip, lr, pc}");
    0x08048840 stmdaeq r5, {r2, r3, r6, r7, sb, sl, fp, ip, lr, pc}              |     __asm ("stmdaeq r5, {r2, r3, r6, r7, sb, sl, fp, ip, lr, pc}");
    0x08048844 stmdaeq r5, {r2, r3, r5, r6, r7, r8, fp, ip, lr, pc}              |     __asm ("stmdaeq r5, {r2, r3, r5, r6, r7, r8, fp, ip, lr, pc}");
    0x08048848 stmdaeq r5, {r2, r3, r5, r6, r7, r8, fp, ip, lr, pc}              |     __asm ("stmdaeq r5, {r2, r3, r5, r6, r7, r8, fp, ip, lr, pc}");
    0x0804884c stmdaeq r4, {r4, r7, r8, sb, fp, sp, lr}                          |     __asm ("stmdaeq r4, {r4, r7, r8, sb, fp, sp, lr}");
    0x08048850 b 0x80483d0                                                       |     goto label_6;
                                                                                 | label_18:
    0x080488bc mov r0, r8                                                        |     r0 = r8;
    0x080488c0 stmdaeq r5, {r3, r4, r5, r6, r7, r8, sp, lr, pc}                  |     __asm ("stmdaeq r5, {r3, r4, r5, r6, r7, r8, sp, lr, pc}");
    0x080488c4 stmdaeq r5, {r3, r4, r5, r6, r7, r8, sp, lr, pc}                  |     __asm ("stmdaeq r5, {r3, r4, r5, r6, r7, r8, sp, lr, pc}");
    0x080488c8 stmdaeq r5, {r2, r5, r7, r8, sl, fp, ip, lr, pc}                  |     __asm ("stmdaeq r5, {r2, r5, r7, r8, sl, fp, ip, lr, pc}");
    0x080488cc stmdaeq r5, {r2, r5, r7, r8, sl, fp, ip, lr, pc}                  |     __asm ("stmdaeq r5, {r2, r5, r7, r8, sl, fp, ip, lr, pc}");
    0x080488d0 stmdaeq r4, {r4, r7, r8, sb, fp, sp, lr}                          |     __asm ("stmdaeq r4, {r4, r7, r8, sb, fp, sp, lr}");
    0x080488d4 ldr r3, [r7, 0x50]                                                |     r3 = *((r7 + 0x50));
    0x080488d8 orr r3, r3, 0x20                                                  |     r3 |= 0x20;
    0x080488dc str r3, [r7, 0x50]                                                |     *((r7 + 0x50)) = r3;
    0x080488e0 b 0x80483d0                                                       |     goto label_6;
                                                                                 | }

[*] Function printf used 1 times ext4.ko