[*] Binary protection state of ext4.ko

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


[*] Function popen 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 @ 0x80283cc */
                                                                                         | #include <stdint.h>
                                                                                         |  
                                                                                         | #define BIT_MASK(t,v) ((t)(-((v)!= 0)))&(((t)-1)>>((sizeof(t)*CHAR_BIT)-(v)))
                                                                                         |  
    ; (fcn) sym.__ext4_ioctl ()                                                          | void ext4_ioctl (int32_t arg1, uint32_t arg2) {
                                                                                         |     int32_t var_0h;
                                                                                         |     int32_t var_4h;
                                                                                         |     int32_t var_8h;
                                                                                         |     int32_t var_8h_2;
                                                                                         |     int32_t var_10h;
                                                                                         |     int32_t var_40h;
                                                                                         |     int32_t var_54h_2;
                                                                                         |     int32_t var_60h;
                                                                                         |     int32_t var_70h;
                                                                                         |     int32_t var_74h;
                                                                                         |     int32_t var_54h;
                                                                                         |     int32_t var_78h_2;
                                                                                         |     int32_t var_80h;
                                                                                         |     int32_t var_84h;
                                                                                         |     int32_t var_88h_2;
                                                                                         |     int32_t var_88h_3;
                                                                                         |     int32_t var_90h;
                                                                                         |     int32_t var_70h_2;
                                                                                         |     int32_t var_78h;
                                                                                         |     int32_t var_80h_2;
                                                                                         |     int32_t var_84h_2;
                                                                                         |     int32_t var_88h;
                                                                                         |     r0 = arg1;
                                                                                         |     r1 = arg2;
    0x080283cc push {r4, r5, r6, r7, r8, sb, sl, fp, lr}                                 |     
    0x080283d0 movw r3, 0x587d                                                           |     
    0x080283d4 movt r3, 0x8004                                                           |     r3 = 0x8004587d;
    0x080283d8 ldr r6, [r0, 0x10]                                                        |     r6 = *((r0 + 0x10));
    0x080283dc sub sp, sp, 0xa4                                                          |     
    0x080283e0 mov r8, r2                                                                |     r8 = r2;
    0x080283e4 cmp r1, r3                                                                |     
    0x080283e8 ldr r7, [r6, 0x1c]                                                        |     r7 = *((r6 + 0x1c));
                                                                                         |     if (r1 == r3) {
    0x080283ec beq 0x8029568                                                             |         goto label_31;
                                                                                         |     }
    0x080283f0 mov r4, r0                                                                |     r4 = r0;
                                                                                         |     if (r1 > r3) {
    0x080283f4 bhi 0x802876c                                                             |         goto label_32;
                                                                                         |     }
    0x080283f8 movw r3, 0x6607                                                           |     
    0x080283fc movt r3, 0x4004                                                           |     r3 = 0x40046607;
    0x08028400 cmp r1, r3                                                                |     
                                                                                         |     if (r1 == r3) {
    0x08028404 beq 0x802932c                                                             |         goto label_33;
                                                                                         |     }
                                                                                         |     if (r1 < r3) {
    0x08028408 bls 0x80286c0                                                             |         goto label_34;
                                                                                         |     }
    0x0802840c movw r3, 0x6614                                                           |     
    0x08028410 movt r3, 0x4010                                                           |     r3 = 0x40106614;
    0x08028414 cmp r1, r3                                                                |     
                                                                                         |     if (r1 == r3) {
    0x08028418 beq 0x80291a8                                                             |         goto label_35;
                                                                                         |     }
                                                                                         |     if (r1 < r3) {
    0x0802841c bls 0x80285dc                                                             |         goto label_36;
                                                                                         |     }
    0x08028420 movw r3, 0x6608                                                           |     
    0x08028424 movt r3, 0x4028                                                           |     r3 = 0x40286608;
    0x08028428 cmp r1, r3                                                                |     
                                                                                         |     if (r1 == r3) {
    0x0802842c beq 0x8029664                                                             |         goto label_37;
                                                                                         |     }
    0x08028430 movw r3, 0x6685                                                           |     
    0x08028434 movt r3, 0x4080                                                           |     r3 = 0x40806685;
    0x08028438 cmp r1, r3                                                                |     
    0x0802843c bne 0x8028450                                                             |     
                                                                                         |     while (r2 != 0) {
                                                                                         | label_0:
    0x08028440 mvn r5, 0x5e                                                              |         r5 = ~0x5e;
                                                                                         | label_1:
    0x08028444 mov r0, r5                                                                |         r0 = r5;
    0x08028448 add sp, sp, 0xa4                                                          |         
    0x0802844c pop {r4, r5, r6, r7, r8, sb, sl, fp, pc}                                  |         
    0x08028450 movw r3, 0x5820                                                           |         
    0x08028454 movt r3, 0x401c                                                           |         r3 = 0x401c5820;
    0x08028458 cmp r1, r3                                                                |         
                                                                                         |         if (r1 != r3) {
    0x0802845c bne 0x8028634                                                             |             goto label_2;
                                                                                         |         }
    0x08028460 mov r3, sp                                                                |         r3 = sp;
    0x08028464 bic r2, r3, 0x1fc0                                                        |         r2 = BIT_MASK (r3, 0x1fc0);
    0x08028468 bic r2, r2, 0x3f                                                          |         r2 = BIT_MASK (r2, 0x3f);
    0x0802846c ldr r3, [r2, 8]                                                           |         r3 = *((r2 + 8));
    0x08028470 adds r1, r8, 0x1c                                                         |         r1 = r8 + 0x1c;
    0x08028474 sbcslo r1, r1, r3                                                         |         __asm ("sbcslo r1, r1, r3");
                                                                                         |         if (r1 >= r8) {
    0x08028478 movlo r3, 0                                                               |             r3 = 0;
                                                                                         |         }
    0x0802847c cmp r3, 0                                                                 |         
                                                                                         |         if (r3 != 0) {
    0x08028480 bne 0x8028aec                                                             |             goto label_4;
                                                                                         |         }
    0x08028484 mrc p15, 0, r5, c3, c0, 0                                                 |         __asm ("mrc p15, 0, r5, c3, c0, 0");
    0x08028488 bic r3, r5, 0xc                                                           |         r3 = BIT_MASK (r5, 0xc);
    0x0802848c orr r3, r3, 4                                                             |         r3 |= 4;
    0x08028490 mcr p15, 0, r3, c3, c0, 0                                                 |         __asm ("mcr p15, 0, r3, c3, c0, 0");
    0x08028494 isb sy                                                                    |         __asm ("isb sy");
    0x08028498 add r7, sp, 0x54                                                          |         r7 += var_54h_2;
    0x0802849c mov r1, r8                                                                |         r1 = r8;
    0x080284a0 mov r0, r7                                                                |         r0 = r7;
    0x080284a4 mov r2, 0x1c                                                              |         r2 = 0x1c;
    0x080284a8 stmdaeq r8, {r0, r1, r2, r3, r4, r7, r8, sb, sl, fp, ip, pc}              |         __asm ("stmdaeq r8, {r0, r1, r2, r3, r4, r7, r8, sb, sl, fp, ip, pc}");
    0x080284ac mcr p15, 0, r5, c3, c0, 0                                                 |         __asm ("mcr p15, 0, r5, c3, c0, 0");
    0x080284b0 isb sy                                                                    |         __asm ("isb sy");
    0x080284b4 cmp r0, 0                                                                 |         
                                                                                         |         if (r0 != 0) {
    0x080284b8 bne 0x8028aec                                                             |             goto label_4;
                                                                                         |         }
    0x080284bc mov r0, r6                                                                |         r0 = r6;
    0x080284c0 stmdaeq r8, {r0, r1, r2, r5, r7, r8, sb, sl, fp, ip, pc}                  |         __asm ("stmdaeq r8, {r0, r1, r2, r5, r7, r8, sb, sl, fp, ip, pc}");
    0x080284c4 cmp r0, 0                                                                 |         
                                                                                         |         if (r0 == 0) {
    0x080284c8 beq 0x8029050                                                             |             goto label_38;
                                                                                         |         }
    0x080284cc ldr r3, [sp, 0x54]                                                        |         r3 = var_54h_2;
    0x080284d0 bic r2, r3, 0x8200                                                        |         r2 = BIT_MASK (r3, 0x8200);
    0x080284d4 bic r2, r2, 0xf8                                                          |         r2 = BIT_MASK (r2, 0xf8);
    0x080284d8 cmp r2, 0                                                                 |         
    0x080284dc bne 0x8028440                                                             |         
                                                                                         |     }
    0x080284e0 ubfx r8, r3, 5, 1                                                         |     r8 = (r3 >> 5) & ((1 << 1) - 1);
    0x080284e4 tst r3, 8                                                                 |     
    0x080284e8 lsl r8, r8, 3                                                             |     r8 <<= 3;
                                                                                         |     if ((r3 & 8) == 0) {
    0x080284ec orrne r8, r8, 0x10                                                        |         r8 |= 0x10;
                                                                                         |     }
    0x080284f0 tst r3, 0x10                                                              |     
                                                                                         |     if ((r3 & 0x10) == 0) {
    0x080284f4 orrne r8, r8, 0x20                                                        |         r8 |= 0x20;
                                                                                         |     }
    0x080284f8 tst r3, 0x80                                                              |     
                                                                                         |     if ((r3 & 0x80) == 0) {
    0x080284fc orrne r8, r8, 0x40                                                        |         r8 |= 0x40;
                                                                                         |     }
    0x08028500 tst r3, 0x40                                                              |     
                                                                                         |     if ((r3 & 0x40) == 0) {
    0x08028504 orrne r8, r8, 0x80                                                        |         r8 |= 0x80;
                                                                                         |     }
    0x08028508 tst r3, 0x200                                                             |     
                                                                                         |     if ((r3 & 0x200) == 0) {
    0x0802850c orrne r8, r8, 0x20000000                                                  |         r8 |= 0x20000000;
                                                                                         |     }
    0x08028510 tst r3, 0x8000                                                            |     
    0x08028514 ldrh r3, [r6]                                                             |     r3 = *(r6);
    0x08028518 and r3, r3, 0xf000                                                        |     r3 &= 0xf000;
                                                                                         |     if ((r3 & 0x8000) == 0) {
    0x0802851c beq 0x8029aac                                                             |         goto label_39;
                                                                                         |     }
    0x08028520 orr r8, r8, 0x2000000                                                     |     r8 |= 0x2000000;
    0x08028524 cmp r3, 0x4000                                                            |     
                                                                                         |     if (r3 == 0x4000) {
    0x08028528 beq 0x8028544                                                             |         goto label_19;
                                                                                         |     }
    0x0802852c cmp r3, 0x8000                                                            |     
                                                                                         |     if (r3 != 0x8000) {
    0x08028530 bne 0x8028440                                                             |         goto label_0;
                                                                                         |     }
                                                                                         | label_21:
    0x08028534 bic r3, r8, 0x60000000                                                    |     r3 = BIT_MASK (r8, 0x60000000);
    0x08028538 bic r3, r3, 0x30000                                                       |     r3 = BIT_MASK (r3, 0x30000);
                                                                                         | label_20:
    0x0802853c cmp r8, r3                                                                |     
                                                                                         |     if (r8 != r3) {
    0x08028540 bne 0x8028440                                                             |         goto label_0;
                                                                                         |     }
                                                                                         | label_19:
    0x08028544 mov r0, r4                                                                |     r0 = r4;
    0x08028548 stmdaeq r8, {r0, r1, r3, r5, r7, r8, sb, sl, fp, ip, pc}                  |     __asm ("stmdaeq r8, {r0, r1, r3, r5, r7, r8, sb, sl, fp, ip, pc}");
    0x0802854c subs r5, r0, 0                                                            |     r5 = r0 - 0;
                                                                                         |     if (r5 != r0) {
    0x08028550 bne 0x8028444                                                             |         goto label_1;
                                                                                         |     }
    0x08028554 add sb, r6, 0x84                                                          |     sb = r6 + 0x84;
    0x08028558 mov r0, sb                                                                |     r0 = sb;
    0x0802855c stmdaeq r8, {r0, r1, r2, r6, r8, sl, fp, ip, pc}                          |     __asm ("stmdaeq r8, {r0, r1, r2, r6, r8, sl, fp, ip, pc}");
    0x08028560 mov r0, r6                                                                |     r0 = r6;
    0x08028564 add r1, sp, 0x70                                                          |     r1 += var_70h;
    0x08028568 bl 0x8027930                                                              |     ext4_fill_fsxattr ();
    0x0802856c mov r2, r7                                                                |     r2 = r7;
    0x08028570 add r1, sp, 0x70                                                          |     r1 += var_70h;
    0x08028574 mov r0, r6                                                                |     r0 = r6;
    0x08028578 stmdaeq r8, {r0, r1, r2, r3, r5, r7, r8, sb, sl, fp, ip, pc}              |     __asm ("stmdaeq r8, {r0, r1, r2, r3, r5, r7, r8, sb, sl, fp, ip, pc}");
    0x0802857c subs r5, r0, 0                                                            |     r5 = r0 - 0;
                                                                                         |     if (r5 == r0) {
    0x08028580 bne 0x80285c8                                                             |         
    0x08028584 ldr r3, [r6, -0x6c]                                                       |         r3 = *((r6 - 0x6c));
    0x08028588 mov r0, r6                                                                |         r0 = r6;
    0x0802858c ldr r1, [sp, 0x60]                                                        |         r1 = var_60h;
    0x08028590 bic r3, r3, 0x22000000                                                    |         r3 = BIT_MASK (r3, 0x22000000);
    0x08028594 bic r3, r3, 0xf8                                                          |         r3 = BIT_MASK (r3, 0xf8);
    0x08028598 orr r2, r3, r8                                                            |         r2 = r3 | r8;
    0x0802859c bl 0x80279c4                                                              |         r0 = ext4_ioctl_check_immutable ();
    0x080285a0 subs r5, r0, 0                                                            |         r5 = r0 - 0;
                                                                                         |         if (r5 != r0) {
    0x080285a4 bne 0x80285c8                                                             |             goto label_40;
                                                                                         |         }
    0x080285a8 mov r1, r2                                                                |         r1 = r2;
    0x080285ac mov r0, r6                                                                |         r0 = r6;
    0x080285b0 bl 0x8027a20                                                              |         r0 = ext4_ioctl_setflags ();
    0x080285b4 subs r5, r0, 0                                                            |         r5 = r0 - 0;
                                                                                         |         if (r5 != r0) {
    0x080285b8 bne 0x80285c8                                                             |             goto label_40;
                                                                                         |         }
    0x080285bc ldr r3, [sp, 0x60]                                                        |         r3 = var_60h;
    0x080285c0 cmp r3, 0                                                                 |         
                                                                                         |         if (r3 != 0) {
    0x080285c4 mvnne r5, 0x5e                                                            |             r5 = ~0x5e;
                                                                                         |             goto label_40;
                                                                                         |         }
                                                                                         |     }
                                                                                         | label_40:
    0x080285c8 mov r0, sb                                                                |     r0 = sb;
    0x080285cc stmdaeq r8, {r0, r1, r3, r6, r8, sl, fp, ip, pc}                          |     __asm ("stmdaeq r8, {r0, r1, r3, r6, r8, sl, fp, ip, pc}");
    0x080285d0 mov r0, r4                                                                |     r0 = r4;
    0x080285d4 stmdaeq r8, {r0, r1, r4, r5, r7, r8, sb, sl, fp, ip, pc}                  |     __asm ("stmdaeq r8, {r0, r1, r4, r5, r7, r8, sb, sl, fp, ip, pc}");
    0x080285d8 b 0x8028444                                                               |     goto label_1;
                                                                                         | label_36:
    0x080285dc movw r3, 0x6610                                                           |     
    0x080285e0 movt r3, 0x4008                                                           |     r3 = 0x40086610;
    0x080285e4 cmp r1, r3                                                                |     
                                                                                         |     if (r1 == r3) {
    0x080285e8 beq 0x8029438                                                             |         goto label_41;
                                                                                         |     }
                                                                                         |     if (r1 < r3) {
    0x080285ec bls 0x8028644                                                             |         goto label_42;
                                                                                         |     }
    0x080285f0 movw r3, 0x6615                                                           |     
    0x080285f4 movt r3, 0x400c                                                           |     r3 = 0x400c6615;
    0x080285f8 cmp r1, r3                                                                |     
                                                                                         |     if (r1 != r3) {
    0x080285fc bne 0x8028634                                                             |         goto label_2;
                                                                                         |     }
    0x08028600 ldr r3, [r7, 0x1f8]                                                       |     r3 = *((r7 + 0x1f8));
    0x08028604 ldr r3, [r3, 0x44]                                                        |     r3 = *((r3 + 0x44));
    0x08028608 ldr r3, [r3, 0x60]                                                        |     r3 = *((r3 + 0x60));
    0x0802860c tst r3, 0x10000                                                           |     
                                                                                         |     if ((r3 & 0x10000) == 0) {
    0x08028610 beq 0x8028440                                                             |         goto label_0;
                                                                                         |     }
    0x08028614 mov r1, r2                                                                |     r1 = r2;
    0x08028618 add sp, sp, 0xa4                                                          |     
    0x0802861c pop {r4, r5, r6, r7, r8, sb, sl, fp, lr}                                  |     
    0x08028620 stmdaeq r8, {r0, r1, r2, r4, r5, r7, r8, sb, sl, fp, ip, pc}              |     __asm ("stmdaeq r8, {r0, r1, r2, r4, r5, r7, r8, sb, sl, fp, ip, pc}");
                                                                                         | label_3:
    0x08028624 movw r3, 0x6604                                                           |     
    0x08028628 movt r3, 0x4004                                                           |     r3 = 0x40046604;
    0x0802862c cmp r1, r3                                                                |     
                                                                                         |     if (r1 == r3) {
    0x08028630 beq 0x80287d8                                                             |         goto label_43;
                                                                                         |     }
                                                                                         |     do {
                                                                                         | label_2:
    0x08028634 mvn r5, 0x18                                                              |         r5 = ~0x18;
    0x08028638 mov r0, r5                                                                |         r0 = r5;
    0x0802863c add sp, sp, 0xa4                                                          |         
    0x08028640 pop {r4, r5, r6, r7, r8, sb, sl, fp, pc}                                  |         
                                                                                         | label_42:
    0x08028644 movw r3, 0x6629                                                           |         
    0x08028648 movt r3, 0x4004                                                           |         r3 = 0x40046629;
    0x0802864c cmp r1, r3                                                                |         
                                                                                         |         if (r1 != r3) {
    0x08028650 bne 0x80287c8                                                             |             goto label_44;
                                                                                         |         }
    0x08028654 ldr r2, [r6, -0x70]                                                       |         r2 = *((r6 - 0x70));
    0x08028658 ldr r3, [r6, -0x70]                                                       |         r3 = *((r6 - 0x70));
    0x0802865c tst r3, 2                                                                 |         
    0x08028660 ldr r3, [r6, -0x70]                                                       |         r3 = *((r6 - 0x70));
    0x08028664 ubfx r2, r2, 8, 1                                                         |         r2 = (r2 >> 8) & ((1 << 1) - 1);
                                                                                         |         if ((r3 & 2) == 0) {
    0x08028668 orrne r2, r2, 2                                                           |             r2 |= 2;
                                                                                         |         }
    0x0802866c tst r3, 0x40                                                              |         
    0x08028670 ldr r3, [r6, -0x70]                                                       |         r3 = *((r6 - 0x70));
                                                                                         |         if ((r3 & 0x40) == 0) {
    0x08028674 orrne r2, r2, 4                                                           |             r2 |= 4;
                                                                                         |         }
    0x08028678 tst r3, 0x10                                                              |         
                                                                                         |         if ((r3 & 0x10) == 0) {
    0x0802867c orrne r2, r2, 8                                                           |             r2 |= 8;
                                                                                         |         }
                                                                                         | label_5:
    0x08028680 mov r3, sp                                                                |         r3 = sp;
    0x08028684 bic r3, r3, 0x1fc0                                                        |         r3 = BIT_MASK (r3, 0x1fc0);
                                                                                         | label_6:
    0x08028688 bic r3, r3, 0x3f                                                          |         r3 = BIT_MASK (r3, 0x3f);
    0x0802868c mrc p15, 0, r4, c3, c0, 0                                                 |         __asm ("mrc p15, 0, r4, c3, c0, 0");
    0x08028690 bic r1, r4, 0xc                                                           |         r1 = BIT_MASK (r4, 0xc);
    0x08028694 orr r1, r1, 4                                                             |         r1 |= 4;
    0x08028698 mcr p15, 0, r1, c3, c0, 0                                                 |         __asm ("mcr p15, 0, r1, c3, c0, 0");
    0x0802869c isb sy                                                                    |         __asm ("isb sy");
    0x080286a0 ldr r1, [r3, 8]                                                           |         r1 = *((r3 + 8));
    0x080286a4 mov r0, r8                                                                |         r0 = r8;
    0x080286a8 sub r1, r1, 1                                                             |         r1--;
    0x080286ac stmdaeq r8, {r0, r1, r3, r4, r5, r7, r8, sb, sl, fp, ip, pc}              |         __asm ("stmdaeq r8, {r0, r1, r3, r4, r5, r7, r8, sb, sl, fp, ip, pc}");
    0x080286b0 mov r5, r0                                                                |         r5 = r0;
    0x080286b4 mcr p15, 0, r4, c3, c0, 0                                                 |         __asm ("mcr p15, 0, r4, c3, c0, 0");
    0x080286b8 isb sy                                                                    |         __asm ("isb sy");
    0x080286bc b 0x8028444                                                               |         goto label_1;
                                                                                         | label_34:
    0x080286c0 movw r3, 0x6628                                                           |         r3 = 0x6628;
    0x080286c4 cmp r1, r3                                                                |         
                                                                                         |         if (r1 > r3) {
    0x080286c8 bhi 0x80287f0                                                             |             goto label_45;
                                                                                         |         }
    0x080286cc movw r3, 0x6608                                                           |         r3 = 0x6608;
    0x080286d0 cmp r1, r3                                                                |         
    0x080286d4 bls 0x8028634                                                             |         
                                                                                         |     } while (r1 < r3);
    0x080286d8 sub r1, r1, 0x6600                                                        |     r1 -= 0x6600;
    0x080286dc sub r1, r1, 9                                                             |     r1 -= 9;
    0x080286e0 cmp r1, 0x1f                                                              |     
                                                                                         |     if (r1 > 0x1f) {
                                                                                         |         /* switch table (32 cases) at 0x80286ec */
    0x080286e4 ldrls pc, [pc, r1, lsl 2]                                                 |         offset_0 = r1 << 2;
                                                                                         |         pc = *((pc + offset_0));
                                                                                         |     }
    0x080286e8 b 0x8028634                                                               |     goto label_2;
                                                                                         | label_32:
    0x0802876c movw r3, 0x5879                                                           |     
    0x08028770 movt r3, 0xc018                                                           |     r3 = 0xc0185879;
    0x08028774 cmp r1, r3                                                                |     
                                                                                         |     if (r1 == r3) {
    0x08028778 beq 0x802907c                                                             |         goto label_46;
                                                                                         |     }
                                                                                         |     if (r1 < r3) {
    0x0802877c bls 0x802896c                                                             |         goto label_47;
                                                                                         |     }
    0x08028780 movw r3, 0x6619                                                           |     
    0x08028784 movt r3, 0xc040                                                           |     r3 = 0xc0406619;
    0x08028788 cmp r1, r3                                                                |     
                                                                                         |     if (r1 == r3) {
    0x0802878c beq 0x8029058                                                             |         goto label_48;
                                                                                         |     }
                                                                                         |     if (r1 < r3) {
    0x08028790 bls 0x8028928                                                             |         goto label_49;
                                                                                         |     }
    0x08028794 movw r3, 0x661a                                                           |     
    0x08028798 movt r3, 0xc080                                                           |     r3 = 0xc080661a;
    0x0802879c cmp r1, r3                                                                |     
                                                                                         |     if (r1 == r3) {
    0x080287a0 beq 0x8029640                                                             |         goto label_50;
                                                                                         |     }
    0x080287a4 movw r3, 0x583b                                                           |     
    0x080287a8 movt r3, 0xc0c0                                                           |     r3 = 0xc0c0583b;
    0x080287ac cmp r1, r3                                                                |     
                                                                                         |     if (r1 != r3) {
    0x080287b0 bne 0x80288f4                                                             |         goto label_51;
                                                                                         |     }
    0x080287b4 mov r1, r2                                                                |     r1 = r2;
    0x080287b8 mov r0, r7                                                                |     r0 = r7;
    0x080287bc add sp, sp, 0xa4                                                          |     
    0x080287c0 pop {r4, r5, r6, r7, r8, sb, sl, fp, lr}                                  |     
    0x080287c4 b 0x8028070                                                               |     void (*0x8028070)() ();
                                                                                         | label_44:
    0x080287c8 movw r3, 0x7602                                                           |     
    0x080287cc movt r3, 0x4004                                                           |     r3 = 0x40047602;
    0x080287d0 cmp r1, r3                                                                |     
                                                                                         |     if (r1 != r3) {
    0x080287d4 bne 0x8028634                                                             |         goto label_2;
                                                                                         |     }
                                                                                         | label_43:
    0x080287d8 mov r0, r6                                                                |     r0 = r6;
    0x080287dc stmdaeq r8, {r0, r1, r2, r5, r7, r8, sb, sl, fp, ip, pc}                  |     __asm ("stmdaeq r8, {r0, r1, r2, r5, r7, r8, sb, sl, fp, ip, pc}");
    0x080287e0 cmp r0, 0                                                                 |     
                                                                                         |     if (r0 != 0) {
    0x080287e4 bne 0x802900c                                                             |         goto label_52;
                                                                                         |     }
                                                                                         | label_7:
    0x080287e8 mvn r5, 0                                                                 |     r5 = ~0;
    0x080287ec b 0x8028444                                                               |     goto label_1;
                                                                                         | label_45:
    0x080287f0 movw r3, 0x6602                                                           |     
    0x080287f4 movt r3, 0x4004                                                           |     r3 = 0x40046602;
    0x080287f8 cmp r1, r3                                                                |     
                                                                                         |     if (r1 != r3) {
    0x080287fc bne 0x8028624                                                             |         goto label_3;
                                                                                         |     }
    0x08028800 mov r0, r6                                                                |     r0 = r6;
    0x08028804 stmdaeq r8, {r0, r1, r2, r5, r7, r8, sb, sl, fp, ip, pc}                  |     __asm ("stmdaeq r8, {r0, r1, r2, r5, r7, r8, sb, sl, fp, ip, pc}");
    0x08028808 cmp r0, 0                                                                 |     
                                                                                         |     if (r0 == 0) {
    0x0802880c beq 0x8029050                                                             |         goto label_38;
                                                                                         |     }
    0x08028810 mov r3, sp                                                                |     r3 = sp;
    0x08028814 mov r0, r8                                                                |     r0 = r8;
    0x08028818 bic r3, r3, 0x1fc0                                                        |     r3 = BIT_MASK (r3, 0x1fc0);
    0x0802881c bic r3, r3, 0x3f                                                          |     r3 = BIT_MASK (r3, 0x3f);
    0x08028820 mrc p15, 0, ip, c3, c0, 0                                                 |     __asm ("mrc p15, 0, ip, c3, c0, 0");
    0x08028824 ldr r1, [r3, 8]                                                           |     r1 = *((r3 + 8));
    0x08028828 bic r3, ip, 0xc                                                           |     r3 = BIT_MASK (ip, 0xc);
    0x0802882c orr r3, r3, 4                                                             |     r3 |= 4;
    0x08028830 sub r1, r1, 1                                                             |     r1--;
    0x08028834 mcr p15, 0, r3, c3, c0, 0                                                 |     __asm ("mcr p15, 0, r3, c3, c0, 0");
    0x08028838 isb sy                                                                    |     __asm ("isb sy");
    0x0802883c stmdaeq r8, {r0, r1, r2, r3, r4, r5, r7, r8, sb, sl, fp, ip, pc}          |     __asm ("stmdaeq r8, {r0, r1, r2, r3, r4, r5, r7, r8, sb, sl, fp, ip, pc}");
    0x08028840 mcr p15, 0, ip, c3, c0, 0                                                 |     __asm ("mcr p15, 0, ip, c3, c0, 0");
    0x08028844 isb sy                                                                    |     __asm ("isb sy");
    0x08028848 cmp r0, 0                                                                 |     
                                                                                         |     if (r0 != 0) {
    0x0802884c bne 0x8028aec                                                             |         goto label_4;
                                                                                         |     }
    0x08028850 mov r3, 0x2000                                                            |     
    0x08028854 movt r3, 0x8da4                                                           |     r3 = 0x-725be000;
    0x08028858 and r3, r3, r2                                                            |     r3 &= r2;
    0x0802885c cmp r3, 0                                                                 |     
                                                                                         |     if (r3 != 0) {
    0x08028860 bne 0x8028440                                                             |         goto label_0;
                                                                                         |     }
    0x08028864 ldrh r3, [r6]                                                             |     r3 = *(r6);
    0x08028868 movw r7, 0xc0ff                                                           |     
    0x0802886c movt r7, 0x624b                                                           |     r7 = 0x624bc0ff;
    0x08028870 and r3, r3, 0xf000                                                        |     r3 &= 0xf000;
    0x08028874 and r7, r7, r2                                                            |     r7 &= r2;
    0x08028878 cmp r3, 0x4000                                                            |     
                                                                                         |     if (r3 == 0x4000) {
    0x0802887c beq 0x802889c                                                             |         goto label_53;
                                                                                         |     }
    0x08028880 cmp r3, 0x8000                                                            |     
                                                                                         |     if (r3 == 0x8000) {
    0x08028884 andne r3, r2, 0xc0                                                        |         r3 = r2 & 0xc0;
                                                                                         |     }
    0x08028888 movweq r3, 0xc0ff                                                         |     __asm ("movweq r3, 0xc0ff");
    0x0802888c movteq r3, 0x248                                                          |     __asm ("movteq r3, 0x248");
                                                                                         |     if (r3 != 0x8000) {
    0x08028890 andeq r3, r3, r2                                                          |         r3 &= r2;
                                                                                         |     }
    0x08028894 cmp r7, r3                                                                |     
                                                                                         |     if (r7 != r3) {
    0x08028898 bne 0x8028440                                                             |         goto label_0;
                                                                                         |     }
                                                                                         | label_53:
    0x0802889c mov r0, r4                                                                |     r0 = r4;
    0x080288a0 stmdaeq r8, {r0, r1, r3, r5, r7, r8, sb, sl, fp, ip, pc}                  |     __asm ("stmdaeq r8, {r0, r1, r3, r5, r7, r8, sb, sl, fp, ip, pc}");
    0x080288a4 subs r5, r0, 0                                                            |     r5 = r0 - 0;
                                                                                         |     if (r5 != r0) {
    0x080288a8 bne 0x8028444                                                             |         goto label_1;
                                                                                         |     }
    0x080288ac add r8, r6, 0x84                                                          |     r8 = r6 + 0x84;
    0x080288b0 mov r0, r8                                                                |     r0 = r8;
    0x080288b4 stmdaeq r8, {r0, r1, r2, r6, r8, sl, fp, ip, pc}                          |     __asm ("stmdaeq r8, {r0, r1, r2, r6, r8, sl, fp, ip, pc}");
    0x080288b8 ldr r1, [r6, 0x1ec]                                                       |     r1 = *((r6 + 0x1ec));
    0x080288bc stmdaeq r8, {r0, r1, r4, r5, sb, sl, fp, ip, pc}                          |     __asm ("stmdaeq r8, {r0, r1, r4, r5, sb, sl, fp, ip, pc}");
    0x080288c0 stmdaeq r8, {r0, r1, r4, r5, sb, sl, fp, ip, pc}                          |     __asm ("stmdaeq r8, {r0, r1, r4, r5, sb, sl, fp, ip, pc}");
    0x080288c4 stmdaeq r8, {r0, r1, r3, r5, r8, sb, sl, fp, ip, pc}                      |     __asm ("stmdaeq r8, {r0, r1, r3, r5, r8, sb, sl, fp, ip, pc}");
    0x080288c8 mov r2, r7                                                                |     r2 = r7;
    0x080288cc mov r1, r0                                                                |     r1 = r0;
    0x080288d0 mov r0, r6                                                                |     r0 = r6;
    0x080288d4 bl 0x80279c4                                                              |     r0 = ext4_ioctl_check_immutable ();
    0x080288d8 subs r5, r0, 0                                                            |     r5 = r0 - 0;
                                                                                         |     if (r5 == r0) {
    0x080288dc beq 0x8029a58                                                             |         goto label_54;
                                                                                         |     }
                                                                                         | label_17:
    0x080288e0 mov r0, r8                                                                |     r0 = r8;
    0x080288e4 stmdaeq r8, {r0, r1, r3, r6, r8, sl, fp, ip, pc}                          |     __asm ("stmdaeq r8, {r0, r1, r3, r6, r8, sl, fp, ip, pc}");
    0x080288e8 mov r0, r4                                                                |     r0 = r4;
    0x080288ec stmdaeq r8, {r0, r1, r4, r5, r7, r8, sb, sl, fp, ip, pc}                  |     __asm ("stmdaeq r8, {r0, r1, r4, r5, r7, r8, sb, sl, fp, ip, pc}");
    0x080288f0 b 0x8028444                                                               |     goto label_1;
                                                                                         | label_51:
    0x080288f4 movw r3, 0x6617                                                           |     
    0x080288f8 movt r3, 0xc050                                                           |     r3 = 0xc0506617;
    0x080288fc cmp r1, r3                                                                |     
                                                                                         |     if (r1 != r3) {
    0x08028900 bne 0x8028634                                                             |         goto label_2;
                                                                                         |     }
    0x08028904 ldr r3, [r7, 0x1f8]                                                       |     r3 = *((r7 + 0x1f8));
    0x08028908 ldr r3, [r3, 0x44]                                                        |     r3 = *((r3 + 0x44));
    0x0802890c ldr r3, [r3, 0x60]                                                        |     r3 = *((r3 + 0x60));
    0x08028910 tst r3, 0x10000                                                           |     
                                                                                         |     if ((r3 & 0x10000) == 0) {
    0x08028914 beq 0x8028440                                                             |         goto label_0;
                                                                                         |     }
    0x08028918 mov r1, r2                                                                |     r1 = r2;
    0x0802891c add sp, sp, 0xa4                                                          |     
    0x08028920 pop {r4, r5, r6, r7, r8, sb, sl, fp, lr}                                  |     
    0x08028924 stmdaeq r8, {r0, r1, r6, r7, r8, sb, sl, fp, ip, pc}                      |     __asm ("stmdaeq r8, {r0, r1, r6, r7, r8, sb, sl, fp, ip, pc}");
                                                                                         | label_49:
    0x08028928 movw r3, 0x660f                                                           |     
    0x0802892c movt r3, 0xc028                                                           |     r3 = 0xc028660f;
    0x08028930 cmp r1, r3                                                                |     
                                                                                         |     if (r1 == r3) {
    0x08028934 beq 0x8029190                                                             |         goto label_55;
                                                                                         |     }
    0x08028938 movw r3, 0x6618                                                           |     
    0x0802893c movt r3, 0xc040                                                           |     r3 = 0xc0406618;
    0x08028940 cmp r1, r3                                                                |     
                                                                                         |     if (r1 != r3) {
    0x08028944 bne 0x80289c4                                                             |         goto label_56;
                                                                                         |     }
    0x08028948 ldr r3, [r7, 0x1f8]                                                       |     r3 = *((r7 + 0x1f8));
    0x0802894c ldr r3, [r3, 0x44]                                                        |     r3 = *((r3 + 0x44));
    0x08028950 ldr r3, [r3, 0x60]                                                        |     r3 = *((r3 + 0x60));
    0x08028954 tst r3, 0x10000                                                           |     
                                                                                         |     if ((r3 & 0x10000) == 0) {
    0x08028958 beq 0x8028440                                                             |         goto label_0;
                                                                                         |     }
    0x0802895c mov r1, r2                                                                |     r1 = r2;
    0x08028960 add sp, sp, 0xa4                                                          |     
    0x08028964 pop {r4, r5, r6, r7, r8, sb, sl, fp, lr}                                  |     
    0x08028968 stmdaeq r8, {r0, r1, r2, r6, r7, r8, sb, sl, fp, ip, pc}                  |     __asm ("stmdaeq r8, {r0, r1, r2, r6, r7, r8, sb, sl, fp, ip, pc}");
                                                                                         | label_47:
    0x0802896c movw r3, 0x661b                                                           |     
    0x08028970 movt r3, 0x8010                                                           |     r3 = 0x8010661b;
    0x08028974 cmp r1, r3                                                                |     
                                                                                         |     if (r1 == r3) {
    0x08028978 beq 0x8029414                                                             |         goto label_57;
                                                                                         |     }
                                                                                         |     if (r1 < r3) {
    0x0802897c bls 0x8028b74                                                             |         goto label_58;
                                                                                         |     }
    0x08028980 movw r3, 0x6686                                                           |     
    0x08028984 movt r3, 0xc004                                                           |     r3 = 0xc0046686;
    0x08028988 cmp r1, r3                                                                |     
                                                                                         |     if (r1 == r3) {
    0x0802898c beq 0x8028440                                                             |         goto label_0;
                                                                                         |     }
    0x08028990 movw r3, 0x6616                                                           |     
    0x08028994 movt r3, 0xc009                                                           |     r3 = 0xc0096616;
    0x08028998 cmp r1, r3                                                                |     
                                                                                         |     if (r1 != r3) {
    0x0802899c bne 0x8028af4                                                             |         goto label_59;
                                                                                         |     }
    0x080289a0 ldr r3, [r7, 0x1f8]                                                       |     r3 = *((r7 + 0x1f8));
    0x080289a4 ldr r3, [r3, 0x44]                                                        |     r3 = *((r3 + 0x44));
    0x080289a8 ldr r3, [r3, 0x60]                                                        |     r3 = *((r3 + 0x60));
    0x080289ac tst r3, 0x10000                                                           |     
                                                                                         |     if ((r3 & 0x10000) == 0) {
    0x080289b0 beq 0x8028440                                                             |         goto label_0;
                                                                                         |     }
    0x080289b4 mov r1, r2                                                                |     r1 = r2;
    0x080289b8 add sp, sp, 0xa4                                                          |     
    0x080289bc pop {r4, r5, r6, r7, r8, sb, sl, fp, lr}                                  |     
    0x080289c0 stmdaeq r8, {r0, r1, r3, r6, r7, r8, sb, sl, fp, ip, pc}                  |     __asm ("stmdaeq r8, {r0, r1, r3, r6, r7, r8, sb, sl, fp, ip, pc}");
                                                                                         | label_56:
    0x080289c4 movw r3, 0x662a                                                           |     
    0x080289c8 movt r3, 0xc020                                                           |     r3 = 0xc020662a;
    0x080289cc cmp r1, r3                                                                |     
                                                                                         |     if (r1 != r3) {
    0x080289d0 bne 0x8028634                                                             |         goto label_2;
                                                                                         |     }
    0x080289d4 add r7, sp, 0x54                                                          |     r7 += var_54h;
    0x080289d8 mov r3, sp                                                                |     r3 = sp;
    0x080289dc bic r2, r3, 0x1fc0                                                        |     r2 = BIT_MASK (r3, 0x1fc0);
    0x080289e0 mov r3, 0                                                                 |     r3 = 0;
    0x080289e4 bic r2, r2, 0x3f                                                          |     r2 = BIT_MASK (r2, 0x3f);
    0x080289e8 str r3, [sp, 0x54]                                                        |     var_54h = r3;
    0x080289ec str r3, [r7, 4]                                                           |     *((r7 + 4)) = r3;
    0x080289f0 str r3, [r7, 8]                                                           |     *((r7 + 8)) = r3;
    0x080289f4 str r3, [r7, 0xc]                                                         |     *((r7 + 0xc)) = r3;
    0x080289f8 ldr r3, [r2, 8]                                                           |     r3 = *((r2 + 8));
    0x080289fc adds r1, r8, 0x20                                                         |     r1 = r8 + 0x20;
    0x08028a00 sbcslo r1, r1, r3                                                         |     __asm ("sbcslo r1, r1, r3");
                                                                                         |     if (r1 >= r8) {
    0x08028a04 movlo r3, 0                                                               |         r3 = 0;
                                                                                         |     }
    0x08028a08 cmp r3, 0                                                                 |     
                                                                                         |     if (r3 != 0) {
    0x08028a0c bne 0x8028aec                                                             |         goto label_4;
                                                                                         |     }
    0x08028a10 mrc p15, 0, r4, c3, c0, 0                                                 |     __asm ("mrc p15, 0, r4, c3, c0, 0");
    0x08028a14 bic r3, r4, 0xc                                                           |     r3 = BIT_MASK (r4, 0xc);
    0x08028a18 orr r3, r3, 4                                                             |     r3 |= 4;
    0x08028a1c mcr p15, 0, r3, c3, c0, 0                                                 |     __asm ("mcr p15, 0, r3, c3, c0, 0");
    0x08028a20 isb sy                                                                    |     __asm ("isb sy");
    0x08028a24 mov r2, 0x20                                                              |     r2 = 0x20;
    0x08028a28 mov r1, r8                                                                |     r1 = r8;
    0x08028a2c add r0, sp, 0x70                                                          |     r0 += var_70h_2;
    0x08028a30 stmdaeq r8, {r0, r1, r2, r3, r4, r7, r8, sb, sl, fp, ip, pc}              |     __asm ("stmdaeq r8, {r0, r1, r2, r3, r4, r7, r8, sb, sl, fp, ip, pc}");
    0x08028a34 mcr p15, 0, r4, c3, c0, 0                                                 |     __asm ("mcr p15, 0, r4, c3, c0, 0");
    0x08028a38 isb sy                                                                    |     __asm ("isb sy");
    0x08028a3c cmp r0, 0                                                                 |     
                                                                                         |     if (r0 != 0) {
    0x08028a40 bne 0x8028aec                                                             |         goto label_4;
                                                                                         |     }
    0x08028a44 ldr r3, [sp, 0x88]                                                        |     r3 = var_88h;
    0x08028a48 movw r2, 0x4924                                                           |     
    0x08028a4c movt r2, 0x492                                                            |     r2 = 0x4924924;
    0x08028a50 cmp r3, r2                                                                |     
                                                                                         |     if (r3 > r2) {
    0x08028a54 bhi 0x8029b7c                                                             |         goto label_60;
                                                                                         |     }
    0x08028a58 str r3, [sp, 0x5c]                                                        |     var_80h = r3;
    0x08028a5c add r3, r8, 0x20                                                          |     r3 = r8 + 0x20;
    0x08028a60 str r3, [sp, 0x60]                                                        |     var_84h = r3;
    0x08028a64 mov r1, r7                                                                |     r1 = r7;
    0x08028a68 ldrd r2, r3, [sp, 0x78]                                                   |     __asm ("ldrd r2, r3, [var_78h]");
    0x08028a6c strd r2, r3, [sp]                                                         |     __asm ("strd r2, r3, [sp]");
    0x08028a70 ldr r3, [sp, 0x80]                                                        |     r3 = var_80h_2;
    0x08028a74 mov r0, r6                                                                |     r0 = r6;
    0x08028a78 str r3, [sp, 0x54]                                                        |     var_54h = r3;
    0x08028a7c ldrd r2, r3, [sp, 0x70]                                                   |     __asm ("ldrd r2, r3, [var_70h_2]");
    0x08028a80 stmdaeq r0, {r4, r6, r8, sl, lr, pc}                                      |     __asm ("stmdaeq r0, {r4, r6, r8, sl, lr, pc}");
    0x08028a84 ldrd r2, r3, [sp, 0x54]                                                   |     __asm ("ldrd r2, r3, [var_54h]");
    0x08028a88 str r2, [sp, 0x80]                                                        |     var_80h_2 = r2;
    0x08028a8c mov r2, sp                                                                |     r2 = sp;
    0x08028a90 str r3, [sp, 0x84]                                                        |     var_84h_2 = r3;
    0x08028a94 bic r2, r2, 0x1fc0                                                        |     r2 = BIT_MASK (r2, 0x1fc0);
    0x08028a98 mov r5, r0                                                                |     r5 = r0;
    0x08028a9c bic r2, r2, 0x3f                                                          |     r2 = BIT_MASK (r2, 0x3f);
    0x08028aa0 ldr r3, [r2, 8]                                                           |     r3 = *((r2 + 8));
    0x08028aa4 adds r1, r8, 0x20                                                         |     r1 = r8 + 0x20;
    0x08028aa8 sbcslo r1, r1, r3                                                         |     __asm ("sbcslo r1, r1, r3");
                                                                                         |     if (r1 >= r8) {
    0x08028aac movlo r3, 0                                                               |         r3 = 0;
                                                                                         |     }
    0x08028ab0 cmp r3, 0                                                                 |     
                                                                                         |     if (r3 != 0) {
    0x08028ab4 bne 0x8028aec                                                             |         goto label_4;
                                                                                         |     }
    0x08028ab8 mrc p15, 0, r4, c3, c0, 0                                                 |     __asm ("mrc p15, 0, r4, c3, c0, 0");
    0x08028abc bic r3, r4, 0xc                                                           |     r3 = BIT_MASK (r4, 0xc);
    0x08028ac0 orr r3, r3, 4                                                             |     r3 |= 4;
    0x08028ac4 mcr p15, 0, r3, c3, c0, 0                                                 |     __asm ("mcr p15, 0, r3, c3, c0, 0");
    0x08028ac8 isb sy                                                                    |     __asm ("isb sy");
    0x08028acc mov r2, 0x20                                                              |     r2 = 0x20;
    0x08028ad0 add r1, sp, 0x70                                                          |     r1 += var_70h_2;
    0x08028ad4 mov r0, r8                                                                |     r0 = r8;
    0x08028ad8 stmdaeq r8, {r0, r1, r3, r4, r7, r8, sb, sl, fp, ip, pc}                  |     __asm ("stmdaeq r8, {r0, r1, r3, r4, r7, r8, sb, sl, fp, ip, pc}");
    0x08028adc mcr p15, 0, r4, c3, c0, 0                                                 |     __asm ("mcr p15, 0, r4, c3, c0, 0");
    0x08028ae0 isb sy                                                                    |     __asm ("isb sy");
    0x08028ae4 cmp r0, 0                                                                 |     
                                                                                         |     if (r0 == 0) {
    0x08028ae8 beq 0x8028444                                                             |         goto label_1;
                                                                                         |     }
                                                                                         | label_4:
    0x08028aec mvn r5, 0xd                                                               |     r5 = ~0xd;
    0x08028af0 b 0x8028444                                                               |     goto label_1;
                                                                                         | label_59:
    0x08028af4 movw r3, 0x581f                                                           |     
    0x08028af8 movt r3, 0x801c                                                           |     r3 = 0x801c581f;
    0x08028afc cmp r1, r3                                                                |     
                                                                                         |     if (r1 != r3) {
    0x08028b00 bne 0x8028634                                                             |         goto label_2;
                                                                                         |     }
    0x08028b04 add sb, sp, 0x70                                                          |     sb += var_70h;
    0x08028b08 mov r0, r6                                                                |     r0 = r6;
    0x08028b0c mov r1, sb                                                                |     r1 = sb;
    0x08028b10 bl 0x8027930                                                              |     ext4_fill_fsxattr ();
    0x08028b14 mov r3, sp                                                                |     r3 = sp;
    0x08028b18 bic r2, r3, 0x1fc0                                                        |     r2 = BIT_MASK (r3, 0x1fc0);
    0x08028b1c bic r2, r2, 0x3f                                                          |     r2 = BIT_MASK (r2, 0x3f);
    0x08028b20 ldr r3, [r2, 8]                                                           |     r3 = *((r2 + 8));
    0x08028b24 adds r1, r8, 0x1c                                                         |     r1 = r8 + 0x1c;
    0x08028b28 sbcslo r1, r1, r3                                                         |     __asm ("sbcslo r1, r1, r3");
                                                                                         |     if (r1 >= r8) {
    0x08028b2c movlo r3, 0                                                               |         r3 = 0;
                                                                                         |     }
    0x08028b30 cmp r3, 0                                                                 |     
                                                                                         |     if (r3 != 0) {
    0x08028b34 bne 0x8028aec                                                             |         goto label_4;
                                                                                         |     }
    0x08028b38 mrc p15, 0, r4, c3, c0, 0                                                 |     __asm ("mrc p15, 0, r4, c3, c0, 0");
    0x08028b3c bic r3, r4, 0xc                                                           |     r3 = BIT_MASK (r4, 0xc);
    0x08028b40 orr r3, r3, 4                                                             |     r3 |= 4;
    0x08028b44 mcr p15, 0, r3, c3, c0, 0                                                 |     __asm ("mcr p15, 0, r3, c3, c0, 0");
    0x08028b48 isb sy                                                                    |     __asm ("isb sy");
    0x08028b4c mov r1, sb                                                                |     r1 = sb;
    0x08028b50 mov r2, 0x1c                                                              |     r2 = 0x1c;
                                                                                         | label_8:
    0x08028b54 mov r0, r8                                                                |     r0 = r8;
    0x08028b58 stmdaeq r8, {r0, r1, r3, r4, r7, r8, sb, sl, fp, ip, pc}                  |     __asm ("stmdaeq r8, {r0, r1, r3, r4, r7, r8, sb, sl, fp, ip, pc}");
    0x08028b5c mov r5, r0                                                                |     r5 = r0;
    0x08028b60 mcr p15, 0, r4, c3, c0, 0                                                 |     __asm ("mcr p15, 0, r4, c3, c0, 0");
    0x08028b64 isb sy                                                                    |     __asm ("isb sy");
    0x08028b68 cmp r0, 0                                                                 |     
                                                                                         |     if (r0 == 0) {
    0x08028b6c beq 0x8028444                                                             |         goto label_1;
                                                                                         |     }
    0x08028b70 b 0x8028aec                                                               |     goto label_4;
                                                                                         | label_58:
    0x08028b74 movw r3, 0x7601                                                           |     
    0x08028b78 movt r3, 0x8004                                                           |     r3 = 0x80047601;
    0x08028b7c cmp r1, r3                                                                |     
                                                                                         |     if (r1 == r3) {
    0x08028b80 beq 0x8028c00                                                             |         goto label_61;
                                                                                         |     }
                                                                                         |     if (r1 < r3) {
    0x08028b84 bls 0x8028bbc                                                             |         goto label_62;
                                                                                         |     }
    0x08028b88 movw r3, 0x6613                                                           |     
    0x08028b8c movt r3, 0x800c                                                           |     r3 = 0x800c6613;
    0x08028b90 cmp r1, r3                                                                |     
                                                                                         |     if (r1 != r3) {
    0x08028b94 bne 0x8028634                                                             |         goto label_2;
                                                                                         |     }
    0x08028b98 ldr r3, [r7, 0x1f8]                                                       |     r3 = *((r7 + 0x1f8));
    0x08028b9c ldr r3, [r3, 0x44]                                                        |     r3 = *((r3 + 0x44));
    0x08028ba0 ldr r3, [r3, 0x60]                                                        |     r3 = *((r3 + 0x60));
    0x08028ba4 tst r3, 0x10000                                                           |     
                                                                                         |     if ((r3 & 0x10000) == 0) {
    0x08028ba8 beq 0x8028440                                                             |         goto label_0;
                                                                                         |     }
    0x08028bac mov r1, r2                                                                |     r1 = r2;
    0x08028bb0 add sp, sp, 0xa4                                                          |     
    0x08028bb4 pop {r4, r5, r6, r7, r8, sb, sl, fp, lr}                                  |     
    0x08028bb8 stmdaeq r8, {r0, r1, r2, r3, r6, r7, r8, sb, sl, fp, ip, pc}              |     __asm ("stmdaeq r8, {r0, r1, r2, r3, r6, r7, r8, sb, sl, fp, ip, pc}");
                                                                                         | label_62:
    0x08028bbc movw r3, 0x6601                                                           |     
    0x08028bc0 movt r3, 0x8004                                                           |     r3 = 0x80046601;
    0x08028bc4 cmp r1, r3                                                                |     
                                                                                         |     if (r1 == r3) {
    0x08028bc8 bne 0x8028bf0                                                             |         
    0x08028bcc ldrh r3, [r6]                                                             |         r3 = *(r6);
    0x08028bd0 movw r2, 0xdfff                                                           |         r2 = 0xdfff;
    0x08028bd4 ldr r1, [r6, -0x6c]                                                       |         r1 = *((r6 - 0x6c));
    0x08028bd8 and r3, r3, 0xf000                                                        |         r3 &= 0xf000;
    0x08028bdc cmp r3, 0x8000                                                            |         
    0x08028be0 movtne r2, 0x725b                                                         |         __asm ("movtne r2, 0x725b");
    0x08028be4 movteq r2, 0x525b                                                         |         __asm ("movteq r2, 0x525b");
    0x08028be8 and r2, r2, r1                                                            |         r2 &= r1;
    0x08028bec b 0x8028680                                                               |         goto label_5;
                                                                                         |     }
    0x08028bf0 movw r3, 0x6603                                                           |     
    0x08028bf4 movt r3, 0x8004                                                           |     r3 = 0x80046603;
    0x08028bf8 cmp r1, r3                                                                |     
                                                                                         |     if (r1 != r3) {
    0x08028bfc bne 0x8028634                                                             |         goto label_2;
                                                                                         |     }
                                                                                         | label_61:
    0x08028c00 mov r3, sp                                                                |     r3 = sp;
    0x08028c04 ldr r2, [r6, 0x15c]                                                       |     r2 = *((r6 + 0x15c));
    0x08028c08 bic r3, r3, 0x1fc0                                                        |     r3 = BIT_MASK (r3, 0x1fc0);
    0x08028c0c b 0x8028688                                                               |     goto label_6;
                                                                                         | label_10:
    0x08028c28 mov r5, 0                                                                 |     r5 = 0;
    0x08028c2c b 0x8028444                                                               |     goto label_1;
                                                                                         | label_15:
    0x08029000 mov r0, r4                                                                |     r0 = r4;
                                                                                         | label_9:
    0x08029004 stmdaeq r8, {r0, r1, r4, r5, r7, r8, sb, sl, fp, ip, pc}                  |     __asm ("stmdaeq r8, {r0, r1, r4, r5, r7, r8, sb, sl, fp, ip, pc}");
    0x08029008 b 0x8028444                                                               |     goto label_1;
                                                                                         | label_52:
    0x0802900c ldr r5, [r6, 0x1c]                                                        |     r5 = *((r6 + 0x1c));
    0x08029010 ldr r3, [r5, 0x1f8]                                                       |     r3 = *((r5 + 0x1f8));
    0x08029014 ldr r2, [r3, 0x44]                                                        |     r2 = *((r3 + 0x44));
    0x08029018 ldr r2, [r2, 0x64]                                                        |     r2 = *((r2 + 0x64));
    0x0802901c tst r2, 0x400                                                             |     
                                                                                         |     if ((r2 & 0x400) == 0) {
    0x08029020 beq 0x8029908                                                             |         goto label_63;
                                                                                         |     }
    0x08029024 ldr r3, [r3, 0x220]                                                       |     r3 = *((r3 + 0x220));
    0x08029028 cmp r3, 0                                                                 |     
                                                                                         |     if (r3 == 0) {
    0x0802902c beq 0x80298b8                                                             |         goto label_64;
                                                                                         |     }
                                                                                         | label_14:
    0x08029030 ldr r1, [pc, 0xac0]                                                       |     r1 = *(0x8029af4);
    0x08029034 mov r0, r7                                                                |     r0 = r7;
    0x08029038 stmdaeq r5, {r2, r3, r6, r7, r8, sb, fp, ip, sp, pc}                      |     __asm ("stmdaeq r5, {r2, r3, r6, r7, r8, sb, fp, ip, sp, pc}");
    0x0802903c stmdaeq r5, {r2, r3, r6, r7, r8, sb, fp, ip, sp, pc}                      |     __asm ("stmdaeq r5, {r2, r3, r6, r7, r8, sb, fp, ip, sp, pc}");
    0x08029040 mov r2, 0x374                                                             |     r2 = 0x374;
    0x08029044 mvn r5, 0x18                                                              |     r5 = ~0x18;
    0x08029048 stmdaeq r4, {r2, r3, r7, r8, sl, fp, pc}                                  |     __asm ("stmdaeq r4, {r2, r3, r7, r8, sl, fp, pc}");
    0x0802904c b 0x8028444                                                               |     goto label_1;
                                                                                         | label_38:
    0x08029050 mvn r5, 0xc                                                               |     r5 = ~0xc;
    0x08029054 b 0x8028444                                                               |     goto label_1;
                                                                                         | label_48:
    0x08029058 ldr r3, [r7, 0x1f8]                                                       |     r3 = *((r7 + 0x1f8));
    0x0802905c ldr r3, [r3, 0x44]                                                        |     r3 = *((r3 + 0x44));
    0x08029060 ldr r3, [r3, 0x60]                                                        |     r3 = *((r3 + 0x60));
    0x08029064 tst r3, 0x10000                                                           |     
                                                                                         |     if ((r3 & 0x10000) == 0) {
    0x08029068 beq 0x8028440                                                             |         goto label_0;
                                                                                         |     }
    0x0802906c mov r1, r2                                                                |     r1 = r2;
    0x08029070 add sp, sp, 0xa4                                                          |     
    0x08029074 pop {r4, r5, r6, r7, r8, sb, sl, fp, lr}                                  |     
    0x08029078 stmdaeq r8, {r0, r1, r3, r4, r6, r7, r8, sb, sl, fp, ip, pc}              |     __asm ("stmdaeq r8, {r0, r1, r3, r4, r6, r7, r8, sb, sl, fp, ip, pc}");
                                                                                         | label_46:
    0x0802907c ldr r3, [r7, 0x78]                                                        |     r3 = *((r7 + 0x78));
    0x08029080 mov r0, 0x15                                                              |     r0 = 0x15;
    0x08029084 ldr r3, [r3, 0x44]                                                        |     r3 = *((r3 + 0x44));
    0x08029088 ldr r4, [r3, 0x244]                                                       |     r4 = *((r3 + 0x244));
    0x0802908c stmdaeq r8, {r0, r1, r2, r4, r5, sl, fp, ip, pc}                          |     __asm ("stmdaeq r8, {r0, r1, r2, r4, r5, sl, fp, ip, pc}");
    0x08029090 cmp r0, 0                                                                 |     
                                                                                         |     if (r0 == 0) {
    0x08029094 beq 0x80287e8                                                             |         goto label_7;
                                                                                         |     }
    0x08029098 ldr r3, [r4, 0x34]                                                        |     r3 = *((r4 + 0x34));
    0x0802909c tst r3, 0x100                                                             |     
                                                                                         |     if ((r3 & 0x100) == 0) {
    0x080290a0 beq 0x8028440                                                             |         goto label_0;
                                                                                         |     }
    0x080290a4 ldr r3, [r7, 0x1f8]                                                       |     r3 = *((r7 + 0x1f8));
    0x080290a8 ldr r2, [r3, 0x4c]                                                        |     r2 = *((r3 + 0x4c));
    0x080290ac tst r2, 0x100                                                             |     
                                                                                         |     if ((r2 & 0x100) == 0) {
    0x080290b0 beq 0x80290c8                                                             |         goto label_65;
                                                                                         |     }
    0x080290b4 ldr r3, [r3, 0x44]                                                        |     r3 = *((r3 + 0x44));
    0x080290b8 ldr r3, [r3, 0x5c]                                                        |     r3 = *((r3 + 0x5c));
    0x080290bc tst r3, 4                                                                 |     
                                                                                         |     if ((r3 & 4) != 0) {
    0x080290c0 mvnne r5, 0x1d                                                            |         r5 = ~0x1d;
                                                                                         |         goto label_66;
                                                                                         |     }
                                                                                         |     if ((r3 & 4) != 0) {
                                                                                         | label_66:
    0x080290c4 bne 0x8028444                                                             |         goto label_1;
                                                                                         |     }
                                                                                         | label_65:
    0x080290c8 mov r3, sp                                                                |     r3 = sp;
    0x080290cc mov r6, 0xe000                                                            |     
    0x080290d0 movt r6, 0xffff                                                           |     r6 = 0x-2000;
    0x080290d4 and r2, r3, r6                                                            |     r2 = r3 & r6;
    0x080290d8 ldr r3, [r2, 8]                                                           |     r3 = *((r2 + 8));
    0x080290dc adds r1, r8, 0x18                                                         |     r1 = r8 + 0x18;
    0x080290e0 sbcslo r1, r1, r3                                                         |     __asm ("sbcslo r1, r1, r3");
                                                                                         |     if (r1 >= r8) {
    0x080290e4 movlo r3, 0                                                               |         r3 = 0;
                                                                                         |     }
    0x080290e8 cmp r3, 0                                                                 |     
                                                                                         |     if (r3 != 0) {
    0x080290ec bne 0x8028aec                                                             |         goto label_4;
                                                                                         |     }
    0x080290f0 mrc p15, 0, r5, c3, c0, 0                                                 |     __asm ("mrc p15, 0, r5, c3, c0, 0");
    0x080290f4 bic r3, r5, 0xc                                                           |     r3 = BIT_MASK (r5, 0xc);
    0x080290f8 orr r3, r3, 4                                                             |     r3 |= 4;
    0x080290fc mcr p15, 0, r3, c3, c0, 0                                                 |     __asm ("mcr p15, 0, r3, c3, c0, 0");
    0x08029100 isb sy                                                                    |     __asm ("isb sy");
    0x08029104 mov r2, 0x18                                                              |     r2 = 0x18;
    0x08029108 mov r1, r8                                                                |     r1 = r8;
    0x0802910c add r0, sp, 0x70                                                          |     r0 += var_70h;
    0x08029110 stmdaeq r8, {r0, r1, r2, r3, r4, r7, r8, sb, sl, fp, ip, pc}              |     __asm ("stmdaeq r8, {r0, r1, r2, r3, r4, r7, r8, sb, sl, fp, ip, pc}");
    0x08029114 mcr p15, 0, r5, c3, c0, 0                                                 |     __asm ("mcr p15, 0, r5, c3, c0, 0");
    0x08029118 isb sy                                                                    |     __asm ("isb sy");
    0x0802911c cmp r0, 0                                                                 |     
                                                                                         |     if (r0 != 0) {
    0x08029120 bne 0x8028aec                                                             |         goto label_4;
                                                                                         |     }
    0x08029124 ldr r2, [r4, 0x398]                                                       |     r2 = *((r4 + 0x398));
    0x08029128 add r1, sp, 0x70                                                          |     r1 += var_70h;
    0x0802912c ldr r3, [sp, 0x80]                                                        |     r3 = var_80h;
    0x08029130 str r0, [sp, 0x84]                                                        |     var_84h = r0;
    0x08029134 mov r0, r7                                                                |     r0 = r7;
    0x08029138 cmp r3, r2                                                                |     
                                                                                         |     if (r3 >= r2) {
    0x0802913c movlo r3, r2                                                              |         r3 = r2;
                                                                                         |     }
    0x08029140 str r3, [sp, 0x80]                                                        |     var_80h = r3;
    0x08029144 stmdaeq r3, {r2, r3, r4, r7, r8, sl, ip, sp}                              |     __asm ("stmdaeq r3, {r2, r3, r4, r7, r8, sl, ip, sp}");
    0x08029148 subs r5, r0, 0                                                            |     r5 = r0 - 0;
                                                                                         |     if (r5 < r0) {
    0x0802914c blt 0x8028444                                                             |         goto label_1;
                                                                                         |     }
    0x08029150 mov r3, sp                                                                |     r3 = sp;
    0x08029154 and r6, r6, r3                                                            |     r6 &= r3;
    0x08029158 ldr r3, [r6, 8]                                                           |     r3 = *((r6 + 8));
    0x0802915c adds r2, r8, 0x18                                                         |     r2 = r8 + 0x18;
    0x08029160 sbcslo r2, r2, r3                                                         |     __asm ("sbcslo r2, r2, r3");
                                                                                         |     if (r2 >= r8) {
    0x08029164 movlo r3, 0                                                               |         r3 = 0;
                                                                                         |     }
    0x08029168 cmp r3, 0                                                                 |     
                                                                                         |     if (r3 != 0) {
    0x0802916c bne 0x8028aec                                                             |         goto label_4;
                                                                                         |     }
    0x08029170 mrc p15, 0, r4, c3, c0, 0                                                 |     __asm ("mrc p15, 0, r4, c3, c0, 0");
    0x08029174 bic r3, r4, 0xc                                                           |     r3 = BIT_MASK (r4, 0xc);
    0x08029178 orr r3, r3, 4                                                             |     r3 |= 4;
    0x0802917c mcr p15, 0, r3, c3, c0, 0                                                 |     __asm ("mcr p15, 0, r3, c3, c0, 0");
    0x08029180 isb sy                                                                    |     __asm ("isb sy");
    0x08029184 mov r2, 0x18                                                              |     r2 = 0x18;
    0x08029188 add r1, sp, 0x70                                                          |     r1 += var_70h;
    0x0802918c b 0x8028b54                                                               |     goto label_8;
                                                                                         | label_55:
    0x08029190 ldr r3, [r0, 0x24]                                                        |     r3 = *((r0 + 0x24));
    0x08029194 and r3, r3, 3                                                             |     r3 &= 3;
    0x08029198 cmp r3, 3                                                                 |     
                                                                                         |     if (r3 == 3) {
    0x0802919c beq 0x8029794                                                             |         goto label_67;
                                                                                         |     }
                                                                                         | label_13:
    0x080291a0 mvn r5, 8                                                                 |     r5 = ~8;
    0x080291a4 b 0x8028444                                                               |     goto label_1;
                                                                                         | label_35:
    0x080291a8 ldr r6, [r7, 0x1f8]                                                       |     r6 = *((r7 + 0x1f8));
    0x080291ac ldr r0, [r6, 0x44]                                                        |     r0 = *((r6 + 0x44));
    0x080291b0 ldr r3, [r0, 0x60]                                                        |     r3 = *((r0 + 0x60));
    0x080291b4 tst r3, 0x10000                                                           |     
                                                                                         |     if ((r3 & 0x10000) == 0) {
    0x080291b8 beq 0x8028440                                                             |         goto label_0;
                                                                                         |     }
    0x080291bc add r3, r0, 0x254                                                         |     r3 = r0 + 0x254;
    0x080291c0 add r1, r0, 0x264                                                         |     r1 = r0 + 0x264;
    0x080291c4 add r3, r3, 3                                                             |     r3 += 3;
    0x080291c8 add r1, r1, 3                                                             |     r1 += 3;
                                                                                         |     do {
    0x080291cc ldrb r2, [r3, 1]!                                                         |         r2 = *((r3 += 1));
    0x080291d0 cmp r2, 0                                                                 |         
                                                                                         |         if (r2 != 0) {
    0x080291d4 bne 0x8029784                                                             |             goto label_68;
                                                                                         |         }
    0x080291d8 cmp r1, r3                                                                |         
    0x080291dc bne 0x80291cc                                                             |         
                                                                                         |     } while (r1 != r3);
    0x080291e0 mov r0, r4                                                                |     r0 = r4;
    0x080291e4 stmdaeq r8, {r0, r1, r3, r5, r7, r8, sb, sl, fp, ip, pc}                  |     __asm ("stmdaeq r8, {r0, r1, r3, r5, r7, r8, sb, sl, fp, ip, pc}");
    0x080291e8 subs r5, r0, 0                                                            |     r5 = r0 - 0;
                                                                                         |     if (r5 != r0) {
    0x080291ec bne 0x8028444                                                             |         goto label_1;
                                                                                         |     }
    0x080291f0 ldr r3, [r7, 0x1f8]                                                       |     r3 = *((r7 + 0x1f8));
    0x080291f4 mov r2, r5                                                                |     r2 = r5;
    0x080291f8 mov r0, r7                                                                |     r0 = r7;
    0x080291fc movw r1, 0x486                                                            |     r1 = 0x486;
    0x08029200 ldr r3, [r3, 0x2c]                                                        |     r3 = *((r3 + 0x2c));
    0x08029204 str r5, [sp]                                                              |     *(sp) = r5;
    0x08029208 lsl r3, r3, 3                                                             |     r3 <<= 3;
    0x0802920c str r3, [sp, 4]                                                           |     var_4h = r3;
    0x08029210 mov r3, 1                                                                 |     r3 = 1;
    0x08029214 stmdaeq r0, {r2, r3, r7, r8, fp, ip, sp}                                  |     __asm ("stmdaeq r0, {r2, r3, r7, r8, fp, ip, sp}");
    0x08029218 mov sb, r0                                                                |     sb = r0;
    0x0802921c cmn r0, 0x1000                                                            |     
                                                                                         |     if (r0 > 0x1000) {
    0x08029220 bhi 0x8029bac                                                             |         goto label_69;
                                                                                         |     }
    0x08029224 ldr r3, [r6, 0x40]                                                        |     r3 = *((r6 + 0x40));
    0x08029228 mov r2, sb                                                                |     r2 = sb;
    0x0802922c ldr r0, [pc, 0x8c4]                                                       |     r0 = *(0x8029af4);
    0x08029230 movw r1, 0x48b                                                            |     r1 = 0x48b;
    0x08029234 stmdaeq r0, {r8, sl, fp, ip, sp}                                          |     __asm ("stmdaeq r0, {r8, sl, fp, ip, sp}");
    0x08029238 subs r5, r0, 0                                                            |     r5 = r0 - 0;
                                                                                         |     if (r5 != r0) {
    0x0802923c bne 0x8029ac4                                                             |         goto label_70;
                                                                                         |     }
    0x08029240 ldr r0, [r6, 0x40]                                                        |     r0 = *((r6 + 0x40));
    0x08029244 ldr r3, [r0]                                                              |     r3 = *(r0);
    0x08029248 tst r3, 4                                                                 |     
                                                                                         |     if ((r3 & 4) == 0) {
    0x0802924c beq 0x8029b20                                                             |         goto label_71;
                                                                                         |     }
                                                                                         | label_25:
    0x08029250 stmdaeq r8, {r0, r1, r2, r3, r5, r6, sl, fp, ip, pc}                      |     __asm ("stmdaeq r8, {r0, r1, r2, r3, r5, r6, sl, fp, ip, pc}");
                                                                                         | label_24:
    0x08029254 ldr r0, [r6, 0x44]                                                        |     r0 = *((r6 + 0x44));
    0x08029258 add r0, r0, 0x258                                                         |     r0 += 0x258;
    0x0802925c stmdaeq r8, {r0, r1, r2, r3, r4, r6, r7, r8, sb, sl, fp, ip, pc}          |     __asm ("stmdaeq r8, {r0, r1, r2, r3, r4, r6, r7, r8, sb, sl, fp, ip, pc}");
    0x08029260 mov r0, r7                                                                |     r0 = r7;
    0x08029264 stmdaeq r4, {r2, r3, r4, r6, fp, sp, lr}                                  |     __asm ("stmdaeq r4, {r2, r3, r4, r6, fp, sp, lr}");
    0x08029268 ldr r0, [r6, 0x40]                                                        |     r0 = *((r6 + 0x40));
    0x0802926c stmdaeq r8, {r0, r1, r4, r5, r6, sl, fp, ip, pc}                          |     __asm ("stmdaeq r8, {r0, r1, r4, r5, r6, sl, fp, ip, pc}");
    0x08029270 ldr r3, [r6, 0x40]                                                        |     r3 = *((r6 + 0x40));
    0x08029274 mov r2, sb                                                                |     r2 = sb;
    0x08029278 str r3, [sp]                                                              |     *(sp) = r3;
    0x0802927c movw r1, 0x492                                                            |     r1 = 0x492;
    0x08029280 mov r3, 0                                                                 |     r3 = 0;
    0x08029284 ldr r0, [pc, 0x86c]                                                       |     r0 = *(0x8029af4);
    0x08029288 stmdaeq r0, {r4, r5, r7, r8, sb, sl, fp, ip, sp}                          |     __asm ("stmdaeq r0, {r4, r5, r7, r8, sb, sl, fp, ip, sp}");
    0x0802928c mov r2, sb                                                                |     r2 = sb;
    0x08029290 mov r7, r0                                                                |     r7 = r0;
    0x08029294 movw r1, 0x495                                                            |     r1 = 0x495;
    0x08029298 ldr r0, [pc, 0x858]                                                       |     r0 = *(0x8029af4);
    0x0802929c stmdaeq r0, {r5, r7, sb, fp, ip, sp}                                      |     __asm ("stmdaeq r0, {r5, r7, sb, fp, ip, sp}");
    0x080292a0 subs r3, r0, 0                                                            |     r3 = r0 - 0;
    0x080292a4 mov r5, r0                                                                |     r5 = r0;
    0x080292a8 mov r0, r4                                                                |     r0 = r4;
                                                                                         |     if (r3 == r0) {
    0x080292ac movne r3, 1                                                               |         r3 = 1;
                                                                                         |     }
    0x080292b0 cmp r7, 0                                                                 |     
                                                                                         |     if (r7 == 0) {
    0x080292b4 movne r3, 0                                                               |         r3 = 0;
                                                                                         |     }
    0x080292b8 cmp r3, 0                                                                 |     
                                                                                         |     if (r3 != 0) {
    0x080292bc bne 0x8029004                                                             |         goto label_9;
                                                                                         |     }
    0x080292c0 stmdaeq r8, {r0, r1, r4, r5, r7, r8, sb, sl, fp, ip, pc}                  |     __asm ("stmdaeq r8, {r0, r1, r4, r5, r7, r8, sb, sl, fp, ip, pc}");
    0x080292c4 cmp r7, 0                                                                 |     
                                                                                         |     if (r7 != 0) {
    0x080292c8 bne 0x8029cfc                                                             |         goto label_72;
                                                                                         |     }
    0x080292cc ldr r1, [r6, 0x44]                                                        |     r1 = *((r6 + 0x44));
    0x080292d0 add r1, r1, 0x258                                                         |     r1 += 0x258;
                                                                                         | label_12:
    0x080292d4 mov r3, sp                                                                |     r3 = sp;
    0x080292d8 bic r2, r3, 0x1fc0                                                        |     r2 = BIT_MASK (r3, 0x1fc0);
    0x080292dc bic r2, r2, 0x3f                                                          |     r2 = BIT_MASK (r2, 0x3f);
    0x080292e0 ldr r3, [r2, 8]                                                           |     r3 = *((r2 + 8));
    0x080292e4 adds r0, r8, 0x10                                                         |     r0 = r8 + 0x10;
    0x080292e8 sbcslo r0, r0, r3                                                         |     __asm ("sbcslo r0, r0, r3");
                                                                                         |     if (r0 >= r8) {
    0x080292ec movlo r3, 0                                                               |         r3 = 0;
                                                                                         |     }
    0x080292f0 cmp r3, 0                                                                 |     
                                                                                         |     if (r3 != 0) {
    0x080292f4 bne 0x8028aec                                                             |         goto label_4;
                                                                                         |     }
    0x080292f8 mrc p15, 0, r4, c3, c0, 0                                                 |     __asm ("mrc p15, 0, r4, c3, c0, 0");
    0x080292fc bic r3, r4, 0xc                                                           |     r3 = BIT_MASK (r4, 0xc);
    0x08029300 orr r3, r3, 4                                                             |     r3 |= 4;
    0x08029304 mcr p15, 0, r3, c3, c0, 0                                                 |     __asm ("mcr p15, 0, r3, c3, c0, 0");
    0x08029308 isb sy                                                                    |     __asm ("isb sy");
    0x0802930c mov r2, 0x10                                                              |     r2 = 0x10;
    0x08029310 mov r0, r8                                                                |     r0 = r8;
    0x08029314 stmdaeq r8, {r0, r1, r3, r4, r7, r8, sb, sl, fp, ip, pc}                  |     __asm ("stmdaeq r8, {r0, r1, r3, r4, r7, r8, sb, sl, fp, ip, pc}");
    0x08029318 mcr p15, 0, r4, c3, c0, 0                                                 |     __asm ("mcr p15, 0, r4, c3, c0, 0");
    0x0802931c isb sy                                                                    |     __asm ("isb sy");
    0x08029320 cmp r0, 0                                                                 |     
                                                                                         |     if (r0 == 0) {
    0x08029324 beq 0x8028c28                                                             |         goto label_10;
                                                                                         |     }
    0x08029328 b 0x8028aec                                                               |     goto label_4;
                                                                                         | label_33:
    0x0802932c mov r0, r7                                                                |     r0 = r7;
    0x08029330 stmdaeq r4, {r2, r5, r7, sl, fp, sp}                                      |     __asm ("stmdaeq r4, {r2, r5, r7, sl, fp, sp}");
    0x08029334 subs r5, r0, 0                                                            |     r5 = r0 - 0;
                                                                                         |     if (r5 != r0) {
    0x08029338 bne 0x8028444                                                             |         goto label_1;
                                                                                         |     }
    0x0802933c mov r3, sp                                                                |     r3 = sp;
    0x08029340 mov r0, r8                                                                |     r0 = r8;
    0x08029344 bic r3, r3, 0x1fc0                                                        |     r3 = BIT_MASK (r3, 0x1fc0);
    0x08029348 bic r3, r3, 0x3f                                                          |     r3 = BIT_MASK (r3, 0x3f);
    0x0802934c mrc p15, 0, ip, c3, c0, 0                                                 |     __asm ("mrc p15, 0, ip, c3, c0, 0");
    0x08029350 ldr r1, [r3, 8]                                                           |     r1 = *((r3 + 8));
    0x08029354 bic r3, ip, 0xc                                                           |     r3 = BIT_MASK (ip, 0xc);
    0x08029358 orr r3, r3, 4                                                             |     r3 |= 4;
    0x0802935c sub r1, r1, 1                                                             |     r1--;
    0x08029360 mcr p15, 0, r3, c3, c0, 0                                                 |     __asm ("mcr p15, 0, r3, c3, c0, 0");
    0x08029364 isb sy                                                                    |     __asm ("isb sy");
    0x08029368 stmdaeq r8, {r0, r1, r2, r3, r4, r5, r7, r8, sb, sl, fp, ip, pc}          |     __asm ("stmdaeq r8, {r0, r1, r2, r3, r4, r5, r7, r8, sb, sl, fp, ip, pc}");
    0x0802936c mcr p15, 0, ip, c3, c0, 0                                                 |     __asm ("mcr p15, 0, ip, c3, c0, 0");
    0x08029370 isb sy                                                                    |     __asm ("isb sy");
    0x08029374 cmp r0, 0                                                                 |     
    0x08029378 mov r6, r2                                                                |     r6 = r2;
                                                                                         |     if (r0 == 0) {
    0x0802937c mvnne r5, 0xd                                                             |         r5 = ~0xd;
                                                                                         |     }
                                                                                         |     if (r0 == 0) {
    0x08029380 bne 0x8029408                                                             |         
    0x08029384 ldr r3, [r7, 0x1f8]                                                       |         r3 = *((r7 + 0x1f8));
    0x08029388 ldr r3, [r3, 0x44]                                                        |         r3 = *((r3 + 0x44));
    0x0802938c ldr r3, [r3, 0x64]                                                        |         r3 = *((r3 + 0x64));
    0x08029390 tst r3, 0x200                                                             |         
                                                                                         |         if ((r3 & 0x200) != 0) {
    0x08029394 bne 0x8029a6c                                                             |             goto label_73;
                                                                                         |         }
    0x08029398 mov r0, r4                                                                |         r0 = r4;
    0x0802939c stmdaeq r8, {r0, r1, r3, r5, r7, r8, sb, sl, fp, ip, pc}                  |         __asm ("stmdaeq r8, {r0, r1, r3, r5, r7, r8, sb, sl, fp, ip, pc}");
    0x080293a0 subs r5, r0, 0                                                            |         r5 = r0 - 0;
                                                                                         |         if (r5 != r0) {
    0x080293a4 bne 0x8029408                                                             |             goto label_11;
                                                                                         |         }
    0x080293a8 ldr r3, [r7, 0x1f8]                                                       |         r3 = *((r7 + 0x1f8));
    0x080293ac mov r2, r6                                                                |         r2 = r6;
    0x080293b0 mov r0, r7                                                                |         r0 = r7;
    0x080293b4 ldr r1, [r3, 0x44]                                                        |         r1 = *((r3 + 0x44));
    0x080293b8 mov r3, r5                                                                |         r3 = r5;
    0x080293bc stmdaeq r4, {r4, r5, r6, r7, r8, sl, ip, sp}                              |         __asm ("stmdaeq r4, {r4, r5, r6, r7, r8, sl, ip, sp}");
    0x080293c0 ldr r3, [r7, 0x1f8]                                                       |         r3 = *((r7 + 0x1f8));
    0x080293c4 mov r6, r0                                                                |         r6 = r0;
    0x080293c8 ldr r0, [r3, 0x118]                                                       |         r0 = *((r3 + 0x118));
    0x080293cc cmp r0, 0                                                                 |         
                                                                                         |         if (r0 != 0) {
    0x080293d0 beq 0x80293f4                                                             |             
    0x080293d4 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}");
    0x080293d8 ldr r3, [r7, 0x1f8]                                                       |             r3 = *((r7 + 0x1f8));
    0x080293dc ldr r0, [r3, 0x118]                                                       |             r0 = *((r3 + 0x118));
    0x080293e0 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}");
    0x080293e4 ldr r3, [r7, 0x1f8]                                                       |             r3 = *((r7 + 0x1f8));
    0x080293e8 mov r5, r0                                                                |             r5 = r0;
    0x080293ec ldr r0, [r3, 0x118]                                                       |             r0 = *((r3 + 0x118));
    0x080293f0 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}");
                                                                                         |         }
    0x080293f4 cmp r6, 0                                                                 |         
    0x080293f8 mov r0, r4                                                                |         r0 = r4;
                                                                                         |         if (r6 != 0) {
    0x080293fc moveq r6, r5                                                              |             r6 = r5;
                                                                                         |         }
    0x08029400 mov r5, r6                                                                |         r5 = r6;
    0x08029404 stmdaeq r8, {r0, r1, r4, r5, r7, r8, sb, sl, fp, ip, pc}                  |         __asm ("stmdaeq r8, {r0, r1, r4, r5, r7, r8, sb, sl, fp, ip, pc}");
                                                                                         |     }
                                                                                         | label_11:
    0x08029408 mov r0, r7                                                                |     r0 = r7;
    0x0802940c stmdaeq r4, {r5, r7, r8, sl, fp, sp}                                      |     __asm ("stmdaeq r4, {r5, r7, r8, sl, fp, sp}");
    0x08029410 b 0x8028444                                                               |     goto label_1;
                                                                                         | label_57:
    0x08029414 ldr r3, [r7, 0x1f8]                                                       |     r3 = *((r7 + 0x1f8));
    0x08029418 ldr r3, [r3, 0x44]                                                        |     r3 = *((r3 + 0x44));
    0x0802941c ldr r3, [r3, 0x60]                                                        |     r3 = *((r3 + 0x60));
    0x08029420 tst r3, 0x10000                                                           |     
                                                                                         |     if ((r3 & 0x10000) == 0) {
    0x08029424 beq 0x8028440                                                             |         goto label_0;
                                                                                         |     }
    0x08029428 mov r1, r2                                                                |     r1 = r2;
    0x0802942c add sp, sp, 0xa4                                                          |     
    0x08029430 pop {r4, r5, r6, r7, r8, sb, sl, fp, lr}                                  |     
    0x08029434 stmdaeq r8, {r0, r1, r5, r6, r7, r8, sb, sl, fp, ip, pc}                  |     __asm ("stmdaeq r8, {r0, r1, r5, r6, r7, r8, sb, sl, fp, ip, pc}");
                                                                                         | label_41:
    0x08029438 mov r3, sp                                                                |     r3 = sp;
    0x0802943c bic r2, r3, 0x1fc0                                                        |     r2 = BIT_MASK (r3, 0x1fc0);
    0x08029440 ldr r3, [r7, 0x1f8]                                                       |     r3 = *((r7 + 0x1f8));
    0x08029444 bic r2, r2, 0x3f                                                          |     r2 = BIT_MASK (r2, 0x3f);
    0x08029448 ldr r6, [r3, 0x20]                                                        |     r6 = *((r3 + 0x20));
    0x0802944c ldr r3, [r2, 8]                                                           |     r3 = *((r2 + 8));
    0x08029450 adds r1, r8, 8                                                            |     r1 = r8 + 8;
    0x08029454 sbcslo r1, r1, r3                                                         |     __asm ("sbcslo r1, r1, r3");
                                                                                         |     if (r1 >= r8) {
    0x08029458 movlo r3, 0                                                               |         r3 = 0;
                                                                                         |     }
    0x0802945c cmp r3, 0                                                                 |     
                                                                                         |     if (r3 != 0) {
    0x08029460 bne 0x8028aec                                                             |         goto label_4;
                                                                                         |     }
    0x08029464 mrc p15, 0, r5, c3, c0, 0                                                 |     __asm ("mrc p15, 0, r5, c3, c0, 0");
    0x08029468 bic r3, r5, 0xc                                                           |     r3 = BIT_MASK (r5, 0xc);
    0x0802946c orr r3, r3, 4                                                             |     r3 |= 4;
    0x08029470 mcr p15, 0, r3, c3, c0, 0                                                 |     __asm ("mcr p15, 0, r3, c3, c0, 0");
    0x08029474 isb sy                                                                    |     __asm ("isb sy");
    0x08029478 mov r2, 8                                                                 |     r2 = 8;
    0x0802947c mov r1, r8                                                                |     r1 = r8;
    0x08029480 add r0, sp, 0x70                                                          |     r0 += var_70h_2;
    0x08029484 stmdaeq r8, {r0, r1, r2, r3, r4, r7, r8, sb, sl, fp, ip, pc}              |     __asm ("stmdaeq r8, {r0, r1, r2, r3, r4, r7, r8, sb, sl, fp, ip, pc}");
    0x08029488 mcr p15, 0, r5, c3, c0, 0                                                 |     __asm ("mcr p15, 0, r5, c3, c0, 0");
    0x0802948c isb sy                                                                    |     __asm ("isb sy");
    0x08029490 cmp r0, 0                                                                 |     
                                                                                         |     if (r0 != 0) {
    0x08029494 bne 0x8028aec                                                             |         goto label_4;
                                                                                         |     }
    0x08029498 mov r0, r7                                                                |     r0 = r7;
    0x0802949c stmdaeq r4, {r2, r5, r7, sl, fp, sp}                                      |     __asm ("stmdaeq r4, {r2, r5, r7, sl, fp, sp}");
    0x080294a0 subs r5, r0, 0                                                            |     r5 = r0 - 0;
                                                                                         |     if (r5 != r0) {
    0x080294a4 bne 0x8028444                                                             |         goto label_1;
                                                                                         |     }
    0x080294a8 mov r0, r4                                                                |     r0 = r4;
    0x080294ac stmdaeq r8, {r0, r1, r3, r5, r7, r8, sb, sl, fp, ip, pc}                  |     __asm ("stmdaeq r8, {r0, r1, r3, r5, r7, r8, sb, sl, fp, ip, pc}");
    0x080294b0 subs r5, r0, 0                                                            |     r5 = r0 - 0;
                                                                                         |     if (r5 != r0) {
    0x080294b4 bne 0x8029408                                                             |         goto label_11;
                                                                                         |     }
    0x080294b8 ldrd r2, r3, [sp, 0x70]                                                   |     __asm ("ldrd r2, r3, [var_70h_2]");
    0x080294bc mov r0, r7                                                                |     r0 = r7;
    0x080294c0 stmdaeq r4, {r2, r4, r5, fp, ip, sp}                                      |     __asm ("stmdaeq r4, {r2, r4, r5, fp, ip, sp}");
    0x080294c4 ldr r3, [r7, 0x1f8]                                                       |     r3 = *((r7 + 0x1f8));
    0x080294c8 mov sb, r0                                                                |     sb = r0;
    0x080294cc ldr r3, [r3, 0x118]                                                       |     r3 = *((r3 + 0x118));
    0x080294d0 cmp r3, 0                                                                 |     
                                                                                         |     if (r3 == 0) {
    0x080294d4 beq 0x8029ae4                                                             |         goto label_74;
                                                                                         |     }
    0x080294d8 mov r1, 5                                                                 |     r1 = 5;
    0x080294dc mov r0, r7                                                                |     r0 = r7;
    0x080294e0 stmdaeq r5, {r2, r3, r4, r7, sb, sp, lr}                                  |     __asm ("stmdaeq r5, {r2, r3, r4, r7, sb, sp, lr}");
    0x080294e4 ldr r3, [r7, 0x1f8]                                                       |     r3 = *((r7 + 0x1f8));
    0x080294e8 ldr r0, [r3, 0x118]                                                       |     r0 = *((r3 + 0x118));
    0x080294ec 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}");
    0x080294f0 ldr r3, [r7, 0x1f8]                                                       |     r3 = *((r7 + 0x1f8));
    0x080294f4 ldr r0, [r3, 0x118]                                                       |     r0 = *((r3 + 0x118));
    0x080294f8 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}");
    0x080294fc ldr r3, [r7, 0x1f8]                                                       |     r3 = *((r7 + 0x1f8));
    0x08029500 mov r8, r0                                                                |     r8 = r0;
    0x08029504 ldr r0, [r3, 0x118]                                                       |     r0 = *((r3 + 0x118));
    0x08029508 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}");
    0x0802950c mov r0, r4                                                                |     r0 = r4;
    0x08029510 cmp sb, 0                                                                 |     
                                                                                         |     if (sb != 0) {
    0x08029514 bne 0x8029ad8                                                             |         goto label_75;
                                                                                         |     }
    0x08029518 stmdaeq r8, {r0, r1, r4, r5, r7, r8, sb, sl, fp, ip, pc}                  |     __asm ("stmdaeq r8, {r0, r1, r4, r5, r7, r8, sb, sl, fp, ip, pc}");
    0x0802951c cmp r8, 0                                                                 |     
                                                                                         |     if (r8 != 0) {
    0x08029520 movne r5, r8                                                              |         r5 = r8;
                                                                                         |         goto label_76;
                                                                                         |     }
                                                                                         |     if (r8 != 0) {
                                                                                         | label_76:
    0x08029524 bne 0x8029408                                                             |         goto label_11;
                                                                                         |     }
                                                                                         | label_22:
    0x08029528 ldr r3, [r7, 0x1f8]                                                       |     r3 = *((r7 + 0x1f8));
    0x0802952c ldr r2, [r3, 0x20]                                                        |     r2 = *((r3 + 0x20));
    0x08029530 cmp r2, r6                                                                |     
                                                                                         |     if (r2 < r6) {
    0x08029534 bls 0x8029408                                                             |         goto label_11;
                                                                                         |     }
    0x08029538 ldr r2, [r3, 0x44]                                                        |     r2 = *((r3 + 0x44));
    0x0802953c ldr r2, [r2, 0x64]                                                        |     r2 = *((r2 + 0x64));
    0x08029540 tst r2, 0x10                                                              |     
                                                                                         |     if ((r2 & 0x10) == 0) {
    0x08029544 beq 0x8029c5c                                                             |         goto label_77;
                                                                                         |     }
                                                                                         | label_30:
    0x08029548 ldr r3, [r3, 0x4c]                                                        |     r3 = *((r3 + 0x4c));
    0x0802954c cmp r3, 0                                                                 |     
                                                                                         |     if (r3 >= 0) {
    0x08029550 bge 0x8029408                                                             |         goto label_11;
                                                                                         |     }
    0x08029554 mov r1, r6                                                                |     r1 = r6;
    0x08029558 mov r0, r7                                                                |     r0 = r7;
    0x0802955c stmdaeq r4, {r2, r3, r4, r5, sp, pc}                                      |     __asm ("stmdaeq r4, {r2, r3, r4, r5, sp, pc}");
    0x08029560 mov r5, r0                                                                |     r5 = r0;
    0x08029564 b 0x8029408                                                               |     goto label_11;
                                                                                         | label_31:
    0x08029568 mov r0, 0x15                                                              |     r0 = 0x15;
    0x0802956c ldr r5, [r7, 0x1f8]                                                       |     r5 = *((r7 + 0x1f8));
    0x08029570 stmdaeq r8, {r0, r1, r2, r4, r5, sl, fp, ip, pc}                          |     __asm ("stmdaeq r8, {r0, r1, r2, r4, r5, sl, fp, ip, pc}");
    0x08029574 cmp r0, 0                                                                 |     
                                                                                         |     if (r0 == 0) {
    0x08029578 beq 0x80287e8                                                             |         goto label_7;
                                                                                         |     }
    0x0802957c mov r3, sp                                                                |     r3 = sp;
    0x08029580 mov r0, r8                                                                |     r0 = r8;
    0x08029584 bic r3, r3, 0x1fc0                                                        |     r3 = BIT_MASK (r3, 0x1fc0);
    0x08029588 bic r3, r3, 0x3f                                                          |     r3 = BIT_MASK (r3, 0x3f);
    0x0802958c mrc p15, 0, ip, c3, c0, 0                                                 |     __asm ("mrc p15, 0, ip, c3, c0, 0");
    0x08029590 ldr r1, [r3, 8]                                                           |     r1 = *((r3 + 8));
    0x08029594 bic r3, ip, 0xc                                                           |     r3 = BIT_MASK (ip, 0xc);
    0x08029598 orr r3, r3, 4                                                             |     r3 |= 4;
    0x0802959c sub r1, r1, 1                                                             |     r1--;
    0x080295a0 mcr p15, 0, r3, c3, c0, 0                                                 |     __asm ("mcr p15, 0, r3, c3, c0, 0");
    0x080295a4 isb sy                                                                    |     __asm ("isb sy");
    0x080295a8 stmdaeq r8, {r0, r1, r2, r3, r4, r5, r7, r8, sb, sl, fp, ip, pc}          |     __asm ("stmdaeq r8, {r0, r1, r2, r3, r4, r5, r7, r8, sb, sl, fp, ip, pc}");
    0x080295ac mcr p15, 0, ip, c3, c0, 0                                                 |     __asm ("mcr p15, 0, ip, c3, c0, 0");
    0x080295b0 isb sy                                                                    |     __asm ("isb sy");
    0x080295b4 mov r4, r2                                                                |     r4 = r2;
    0x080295b8 cmp r0, 0                                                                 |     
                                                                                         |     if (r0 != 0) {
    0x080295bc bne 0x8028aec                                                             |         goto label_4;
                                                                                         |     }
    0x080295c0 cmp r2, 2                                                                 |     
                                                                                         |     if (r2 > 2) {
    0x080295c4 bhi 0x8029b7c                                                             |         goto label_60;
                                                                                         |     }
    0x080295c8 ldr r3, [r5, 0x130]                                                       |     r3 = *((r5 + 0x130));
    0x080295cc tst r3, 2                                                                 |     
                                                                                         |     if ((r3 & 2) != 0) {
    0x080295d0 bne 0x8028c28                                                             |         goto label_10;
                                                                                         |     }
    0x080295d4 mov r3, r2                                                                |     r3 = r2;
    0x080295d8 mov r0, r7                                                                |     r0 = r7;
    0x080295dc stmdaeq r5, {r2, r4, r7, sl, fp, ip, sp, pc}                              |     __asm ("stmdaeq r5, {r2, r4, r7, sl, fp, ip, sp, pc}");
    0x080295e0 stmdaeq r5, {r2, r4, r7, sl, fp, ip, sp, pc}                              |     __asm ("stmdaeq r5, {r2, r4, r7, sl, fp, ip, sp, pc}");
    0x080295e4 stmdaeq r5, {r4, r5, r7, sl, fp, ip, sp, pc}                              |     __asm ("stmdaeq r5, {r4, r5, r7, sl, fp, ip, sp, pc}");
    0x080295e8 stmdaeq r5, {r4, r5, r7, sl, fp, ip, sp, pc}                              |     __asm ("stmdaeq r5, {r4, r5, r7, sl, fp, ip, sp, pc}");
    0x080295ec stmdaeq r4, {r4, r7, r8, sb, fp, sp, lr}                                  |     __asm ("stmdaeq r4, {r4, r7, r8, sb, fp, sp, lr}");
    0x080295f0 cmp r4, 1                                                                 |     
                                                                                         |     if (r4 == 1) {
    0x080295f4 beq 0x8029a10                                                             |         goto label_78;
                                                                                         |     }
    0x080295f8 cmp r4, 2                                                                 |     
                                                                                         |     if (r4 == 2) {
    0x080295fc beq 0x80299d4                                                             |         goto label_79;
                                                                                         |     }
    0x08029600 ldr r0, [r7, 0x78]                                                        |     r0 = *((r7 + 0x78));
    0x08029604 stmdaeq r8, {r0, r1, r2, r5, r6, r7, r8, sb, sl, fp, ip, pc}              |     __asm ("stmdaeq r8, {r0, r1, r2, r5, r6, r7, r8, sb, sl, fp, ip, pc}");
    0x08029608 mrs r2, apsr                                                              |     r2 = apsr;
    0x0802960c cpsid i                                                                   |     __asm ("cpsid i");
    0x08029610 ldr r3, [r5, 0x130]                                                       |     r3 = *((r5 + 0x130));
    0x08029614 orr r3, r3, 2                                                             |     r3 |= 2;
    0x08029618 str r3, [r5, 0x130]                                                       |     *((r5 + 0x130)) = r3;
    0x0802961c msr cpsr_c, r2                                                            |     cpsr_c = r2;
    0x08029620 ldr r0, [r7, 0x78]                                                        |     r0 = *((r7 + 0x78));
    0x08029624 mov r1, r7                                                                |     r1 = r7;
    0x08029628 stmdaeq r8, {r0, r1, r3, r5, r6, r7, r8, sb, sl, fp, ip, pc}              |     __asm ("stmdaeq r8, {r0, r1, r3, r5, r6, r7, r8, sb, sl, fp, ip, pc}");
                                                                                         | label_16:
    0x0802962c ldr r2, [r7, 0x1f8]                                                       |     r2 = *((r7 + 0x1f8));
    0x08029630 ldr r3, [r2, 0x4c]                                                        |     r3 = *((r2 + 0x4c));
    0x08029634 bic r3, r3, 0x40000000                                                    |     r3 = BIT_MASK (r3, 0x40000000);
    0x08029638 str r3, [r2, 0x4c]                                                        |     *((r2 + 0x4c)) = r3;
    0x0802963c b 0x8028c28                                                               |     goto label_10;
                                                                                         | label_50:
    0x08029640 ldr r3, [r7, 0x1f8]                                                       |     r3 = *((r7 + 0x1f8));
    0x08029644 ldr r3, [r3, 0x44]                                                        |     r3 = *((r3 + 0x44));
    0x08029648 ldr r3, [r3, 0x60]                                                        |     r3 = *((r3 + 0x60));
    0x0802964c tst r3, 0x10000                                                           |     
                                                                                         |     if ((r3 & 0x10000) == 0) {
    0x08029650 beq 0x8028440                                                             |         goto label_0;
                                                                                         |     }
    0x08029654 mov r1, r2                                                                |     r1 = r2;
    0x08029658 add sp, sp, 0xa4                                                          |     
    0x0802965c pop {r4, r5, r6, r7, r8, sb, sl, fp, lr}                                  |     
    0x08029660 stmdaeq r8, {r0, r1, r2, r3, r5, r6, r7, r8, sb, sl, fp, ip, pc}          |     __asm ("stmdaeq r8, {r0, r1, r2, r3, r5, r6, r7, r8, sb, sl, fp, ip, pc}");
                                                                                         | label_37:
    0x08029664 mov r3, sp                                                                |     r3 = sp;
    0x08029668 bic r2, r3, 0x1fc0                                                        |     r2 = BIT_MASK (r3, 0x1fc0);
    0x0802966c bic r2, r2, 0x3f                                                          |     r2 = BIT_MASK (r2, 0x3f);
    0x08029670 ldr r3, [r2, 8]                                                           |     r3 = *((r2 + 8));
    0x08029674 adds r1, r8, 0x30                                                         |     r1 = r8 + 0x30;
    0x08029678 sbcslo r1, r1, r3                                                         |     __asm ("sbcslo r1, r1, r3");
                                                                                         |     if (r1 >= r8) {
    0x0802967c movlo r3, 0                                                               |         r3 = 0;
                                                                                         |     }
    0x08029680 cmp r3, 0                                                                 |     
                                                                                         |     if (r3 != 0) {
    0x08029684 bne 0x8028aec                                                             |         goto label_4;
                                                                                         |     }
    0x08029688 mrc p15, 0, r5, c3, c0, 0                                                 |     __asm ("mrc p15, 0, r5, c3, c0, 0");
    0x0802968c bic r3, r5, 0xc                                                           |     r3 = BIT_MASK (r5, 0xc);
    0x08029690 orr r3, r3, 4                                                             |     r3 |= 4;
    0x08029694 mcr p15, 0, r3, c3, c0, 0                                                 |     __asm ("mcr p15, 0, r3, c3, c0, 0");
    0x08029698 isb sy                                                                    |     __asm ("isb sy");
    0x0802969c add sb, sp, 0x70                                                          |     sb += var_70h_2;
    0x080296a0 mov r1, r8                                                                |     r1 = r8;
    0x080296a4 mov r0, sb                                                                |     r0 = sb;
    0x080296a8 mov r2, 0x30                                                              |     r2 = 0x30;
    0x080296ac stmdaeq r8, {r0, r1, r2, r3, r4, r7, r8, sb, sl, fp, ip, pc}              |     __asm ("stmdaeq r8, {r0, r1, r2, r3, r4, r7, r8, sb, sl, fp, ip, pc}");
    0x080296b0 mcr p15, 0, r5, c3, c0, 0                                                 |     __asm ("mcr p15, 0, r5, c3, c0, 0");
    0x080296b4 isb sy                                                                    |     __asm ("isb sy");
    0x080296b8 cmp r0, 0                                                                 |     
                                                                                         |     if (r0 != 0) {
    0x080296bc bne 0x8028aec                                                             |         goto label_4;
                                                                                         |     }
    0x080296c0 ldr r3, [r4, 0x10]                                                        |     r3 = *((r4 + 0x10));
    0x080296c4 ldr r6, [r3, 0x1c]                                                        |     r6 = *((r3 + 0x1c));
    0x080296c8 mov r0, r6                                                                |     r0 = r6;
    0x080296cc stmdaeq r4, {r2, r5, r7, sl, fp, sp}                                      |     __asm ("stmdaeq r4, {r2, r5, r7, sl, fp, sp}");
    0x080296d0 subs r5, r0, 0                                                            |     r5 = r0 - 0;
                                                                                         |     if (r5 != r0) {
    0x080296d4 bne 0x8028444                                                             |         goto label_1;
                                                                                         |     }
    0x080296d8 ldr r3, [r6, 0x1f8]                                                       |     r3 = *((r6 + 0x1f8));
    0x080296dc ldr r3, [r3, 0x44]                                                        |     r3 = *((r3 + 0x44));
    0x080296e0 ldr r3, [r3, 0x64]                                                        |     r3 = *((r3 + 0x64));
    0x080296e4 tst r3, 0x200                                                             |     
                                                                                         |     if ((r3 & 0x200) != 0) {
    0x080296e8 bne 0x8029a8c                                                             |         goto label_80;
                                                                                         |     }
    0x080296ec mov r0, r4                                                                |     r0 = r4;
    0x080296f0 stmdaeq r8, {r0, r1, r3, r5, r7, r8, sb, sl, fp, ip, pc}                  |     __asm ("stmdaeq r8, {r0, r1, r3, r5, r7, r8, sb, sl, fp, ip, pc}");
    0x080296f4 subs r5, r0, 0                                                            |     r5 = r0 - 0;
                                                                                         |     if (r5 == r0) {
    0x080296f8 bne 0x8029778                                                             |         
    0x080296fc mov r1, sb                                                                |         r1 = sb;
    0x08029700 mov r0, r6                                                                |         r0 = r6;
    0x08029704 stmdaeq r4, {r2, r6, r7, r8, sl, fp, sp}                                  |         __asm ("stmdaeq r4, {r2, r6, r7, r8, sl, fp, sp}");
    0x08029708 ldr r3, [r6, 0x1f8]                                                       |         r3 = *((r6 + 0x1f8));
    0x0802970c mov r7, r0                                                                |         r7 = r0;
    0x08029710 ldr r0, [r3, 0x118]                                                       |         r0 = *((r3 + 0x118));
    0x08029714 cmp r0, 0                                                                 |         
                                                                                         |         if (r0 == 0) {
    0x08029718 beq 0x8029b0c                                                             |             goto label_81;
                                                                                         |         }
    0x0802971c 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}");
    0x08029720 ldr r3, [r6, 0x1f8]                                                       |         r3 = *((r6 + 0x1f8));
    0x08029724 ldr r0, [r3, 0x118]                                                       |         r0 = *((r3 + 0x118));
    0x08029728 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}");
    0x0802972c ldr r3, [r6, 0x1f8]                                                       |         r3 = *((r6 + 0x1f8));
    0x08029730 mov r8, r0                                                                |         r8 = r0;
    0x08029734 ldr r0, [r3, 0x118]                                                       |         r0 = *((r3 + 0x118));
    0x08029738 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}");
    0x0802973c mov r0, r4                                                                |         r0 = r4;
    0x08029740 cmp r7, 0                                                                 |         
                                                                                         |         if (r7 != 0) {
    0x08029744 bne 0x8029b00                                                             |             goto label_82;
                                                                                         |         }
    0x08029748 stmdaeq r8, {r0, r1, r4, r5, r7, r8, sb, sl, fp, ip, pc}                  |         __asm ("stmdaeq r8, {r0, r1, r4, r5, r7, r8, sb, sl, fp, ip, pc}");
    0x0802974c cmp r8, 0                                                                 |         
                                                                                         |         if (r8 == 0) {
    0x08029750 movne r5, r8                                                              |             r5 = r8;
                                                                                         |         }
                                                                                         |         if (r8 != 0) {
    0x08029754 bne 0x8029778                                                             |             goto label_18;
                                                                                         |         }
                                                                                         | label_23:
    0x08029758 ldr r3, [r6, 0x1f8]                                                       |         r3 = *((r6 + 0x1f8));
    0x0802975c ldr r2, [r3, 0x44]                                                        |         r2 = *((r3 + 0x44));
    0x08029760 ldr r2, [r2, 0x64]                                                        |         r2 = *((r2 + 0x64));
    0x08029764 tst r2, 0x10                                                              |         
                                                                                         |         if ((r2 & 0x10) == 0) {
    0x08029768 beq 0x8029bbc                                                             |             goto label_83;
                                                                                         |         }
                                                                                         | label_28:
    0x0802976c ldr r3, [r3, 0x4c]                                                        |         r3 = *((r3 + 0x4c));
    0x08029770 cmp r3, 0                                                                 |         
                                                                                         |         if (r3 < 0) {
    0x08029774 blt 0x8029cc4                                                             |             goto label_84;
                                                                                         |         }
                                                                                         |     }
                                                                                         | label_18:
    0x08029778 mov r0, r6                                                                |     r0 = r6;
    0x0802977c stmdaeq r4, {r5, r7, r8, sl, fp, sp}                                      |     __asm ("stmdaeq r4, {r5, r7, r8, sl, fp, sp}");
    0x08029780 b 0x8028444                                                               |     goto label_1;
                                                                                         | label_68:
    0x08029784 add r1, r0, 0x258                                                         |     r1 = r0 + 0x258;
    0x08029788 b 0x80292d4                                                               |     goto label_12;
                                                                                         | label_67:
    0x08029794 mov r3, sp                                                                |     r3 = sp;
    0x08029798 bic r2, r3, 0x1fc0                                                        |     r2 = BIT_MASK (r3, 0x1fc0);
    0x0802979c bic r2, r2, 0x3f                                                          |     r2 = BIT_MASK (r2, 0x3f);
    0x080297a0 ldr r3, [r2, 8]                                                           |     r3 = *((r2 + 8));
    0x080297a4 adds r1, r8, 0x28                                                         |     r1 = r8 + 0x28;
    0x080297a8 sbcslo r1, r1, r3                                                         |     __asm ("sbcslo r1, r1, r3");
                                                                                         |     if (r1 >= r8) {
    0x080297ac movlo r3, 0                                                               |         r3 = 0;
                                                                                         |     }
    0x080297b0 cmp r3, 0                                                                 |     
                                                                                         |     if (r3 != 0) {
    0x080297b4 bne 0x8028aec                                                             |         goto label_4;
                                                                                         |     }
    0x080297b8 mrc p15, 0, r5, c3, c0, 0                                                 |     __asm ("mrc p15, 0, r5, c3, c0, 0");
    0x080297bc bic r3, r5, 0xc                                                           |     r3 = BIT_MASK (r5, 0xc);
    0x080297c0 orr r3, r3, 4                                                             |     r3 |= 4;
    0x080297c4 mcr p15, 0, r3, c3, c0, 0                                                 |     __asm ("mcr p15, 0, r3, c3, c0, 0");
    0x080297c8 isb sy                                                                    |     __asm ("isb sy");
    0x080297cc add sb, sp, 0x70                                                          |     sb += var_70h;
    0x080297d0 mov r1, r8                                                                |     r1 = r8;
    0x080297d4 mov r0, sb                                                                |     r0 = sb;
    0x080297d8 mov r2, 0x28                                                              |     r2 = 0x28;
    0x080297dc stmdaeq r8, {r0, r1, r2, r3, r4, r7, r8, sb, sl, fp, ip, pc}              |     __asm ("stmdaeq r8, {r0, r1, r2, r3, r4, r7, r8, sb, sl, fp, ip, pc}");
    0x080297e0 mcr p15, 0, r5, c3, c0, 0                                                 |     __asm ("mcr p15, 0, r5, c3, c0, 0");
    0x080297e4 isb sy                                                                    |     __asm ("isb sy");
    0x080297e8 cmp r0, 0                                                                 |     
                                                                                         |     if (r0 != 0) {
    0x080297ec bne 0x8028aec                                                             |         goto label_4;
                                                                                         |     }
    0x080297f0 ldr r0, [sp, 0x74]                                                        |     r0 = var_74h;
    0x080297f4 mov r2, 0                                                                 |     r2 = 0;
    0x080297f8 mov r3, 0                                                                 |     r3 = 0;
    0x080297fc strd r2, r3, [sp, 0x90]                                                   |     __asm ("strd r2, r3, [var_70h_2]");
    0x08029800 stmdaeq r8, {r0, r1, r4, r5, r6, r7, r8, sb, sl, fp, ip, pc}              |     __asm ("stmdaeq r8, {r0, r1, r4, r5, r6, r7, r8, sb, sl, fp, ip, pc}");
    0x08029804 mov r6, r0                                                                |     r6 = r0;
    0x08029808 cmp r0, 3                                                                 |     
                                                                                         |     if (r0 < 3) {
    0x0802980c bls 0x80291a0                                                             |         goto label_13;
                                                                                         |     }
    0x08029810 bic sl, r0, 3                                                             |     sl = BIT_MASK (r0, 3);
    0x08029814 ldr r3, [sl, 0x24]                                                        |     r3 = *((sl + 0x24));
    0x08029818 tst r3, 2                                                                 |     
                                                                                         |     if ((r3 & 2) != 0) {
    0x0802981c mvneq r5, 8                                                               |         r5 = ~8;
                                                                                         |     }
                                                                                         |     if ((r3 & 2) != 0) {
    0x08029820 beq 0x80298a4                                                             |         
    0x08029824 ldr r3, [r7, 0x1f8]                                                       |         r3 = *((r7 + 0x1f8));
    0x08029828 ldr r3, [r3, 0x44]                                                        |         r3 = *((r3 + 0x44));
    0x0802982c ldr r3, [r3, 0x64]                                                        |         r3 = *((r3 + 0x64));
    0x08029830 tst r3, 0x200                                                             |         
                                                                                         |         if ((r3 & 0x200) != 0) {
    0x08029834 bne 0x8029b8c                                                             |             goto label_85;
                                                                                         |         }
    0x08029838 mov r0, r4                                                                |         r0 = r4;
    0x0802983c stmdaeq r8, {r0, r1, r3, r5, r7, r8, sb, sl, fp, ip, pc}                  |         __asm ("stmdaeq r8, {r0, r1, r3, r5, r7, r8, sb, sl, fp, ip, pc}");
    0x08029840 subs r5, r0, 0                                                            |         r5 = r0 - 0;
                                                                                         |         if (r5 != r0) {
    0x08029844 bne 0x80298a4                                                             |             goto label_27;
                                                                                         |         }
    0x08029848 add r3, sp, 0x90                                                          |         r3 += var_90h;
    0x0802984c str r3, [sp, 0x10]                                                        |         var_10h = r3;
    0x08029850 ldrd r2, r3, [sp, 0x88]                                                   |         __asm ("ldrd r2, r3, [var_88h_2]");
    0x08029854 strd r2, r3, [sp, 8]                                                      |         __asm ("strd r2, r3, [var_8h]");
    0x08029858 ldrd r2, r3, [sp, 0x80]                                                   |         __asm ("ldrd r2, r3, [var_80h]");
    0x0802985c mov r1, sl                                                                |         r1 = sl;
    0x08029860 strd r2, r3, [sp]                                                         |         __asm ("strd r2, r3, [sp]");
    0x08029864 mov r0, r4                                                                |         r0 = r4;
    0x08029868 ldrd r2, r3, [sp, 0x78]                                                   |         __asm ("ldrd r2, r3, [var_54h]");
    0x0802986c stmdaeq r3, {r5, r6, r8, sb, sl, fp, ip, lr}                              |         __asm ("stmdaeq r3, {r5, r6, r8, sb, sl, fp, ip, lr}");
    0x08029870 mov r5, r0                                                                |         r5 = r0;
    0x08029874 mov r0, r4                                                                |         r0 = r4;
    0x08029878 stmdaeq r8, {r0, r1, r4, r5, r7, r8, sb, sl, fp, ip, pc}                  |         __asm ("stmdaeq r8, {r0, r1, r4, r5, r7, r8, sb, sl, fp, ip, pc}");
    0x0802987c mov r3, sp                                                                |         r3 = sp;
    0x08029880 bic r2, r3, 0x1fc0                                                        |         r2 = BIT_MASK (r3, 0x1fc0);
    0x08029884 bic r2, r2, 0x3f                                                          |         r2 = BIT_MASK (r2, 0x3f);
    0x08029888 ldr r3, [r2, 8]                                                           |         r3 = *((r2 + 8));
    0x0802988c adds r1, r8, 0x28                                                         |         r1 = r8 + 0x28;
    0x08029890 sbcslo r1, r1, r3                                                         |         __asm ("sbcslo r1, r1, r3");
                                                                                         |         if (r1 >= r8) {
    0x08029894 movlo r3, 0                                                               |             r3 = 0;
                                                                                         |         }
    0x08029898 cmp r3, 0                                                                 |         
                                                                                         |         if (r3 == 0) {
    0x0802989c beq 0x8029c24                                                             |             goto label_86;
                                                                                         |         }
                                                                                         | label_29:
    0x080298a0 mvn r5, 0xd                                                               |         r5 = ~0xd;
                                                                                         |     }
                                                                                         | label_27:
    0x080298a4 tst r6, 1                                                                 |     
                                                                                         |     if ((r6 & 1) == 0) {
    0x080298a8 beq 0x8028444                                                             |         goto label_1;
                                                                                         |     }
    0x080298ac mov r0, sl                                                                |     r0 = sl;
    0x080298b0 stmdaeq r8, {r0, r1, r2, r4, r5, r6, r7, r8, sb, sl, fp, ip, pc}          |     __asm ("stmdaeq r8, {r0, r1, r2, r4, r5, r6, r7, r8, sb, sl, fp, ip, pc}");
    0x080298b4 b 0x8028444                                                               |     goto label_1;
                                                                                         | label_64:
    0x080298b8 stmdaeq r6, {r1, r2, r3, r5, r6, sl, ip}                                  |     __asm ("stmdaeq r6, {r1, r2, r3, r5, r6, sl, ip}");
    0x080298bc stmdaeq r6, {r1, r2, r3, r5, r6, sl, ip}                                  |     __asm ("stmdaeq r6, {r1, r2, r3, r5, r6, sl, ip}");
    0x080298c0 ldrb r3, [ip]                                                             |     r3 = *(ip);
    0x080298c4 cmp r3, 0                                                                 |     
                                                                                         |     if (r3 != 0) {
    0x080298c8 bne 0x8029908                                                             |         goto label_63;
                                                                                         |     }
    0x080298cc mov r2, 9                                                                 |     r2 = 9;
    0x080298d0 movw r1, 0xc34                                                            |     r1 = 0xc34;
    0x080298d4 stmdaeq r5, {r2, r3, r4, r5, r7, r8, sb, fp, ip, sp, pc}                  |     __asm ("stmdaeq r5, {r2, r3, r4, r5, r7, r8, sb, fp, ip, sp, pc}");
    0x080298d8 stmdaeq r5, {r2, r3, r4, r5, r7, r8, sb, fp, ip, sp, pc}                  |     __asm ("stmdaeq r5, {r2, r3, r4, r5, r7, r8, sb, fp, ip, sp, pc}");
    0x080298dc mov lr, 1                                                                 |     lr = 1;
    0x080298e0 strb lr, [ip]                                                             |     
    0x080298e4 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}");
    0x080298e8 ldr r3, [r5, 0x1f8]                                                       |     r3 = *((r5 + 0x1f8));
    0x080298ec ldr r2, [r3, 0x44]                                                        |     r2 = *((r3 + 0x44));
    0x080298f0 ldr r2, [r2, 0x64]                                                        |     r2 = *((r2 + 0x64));
    0x080298f4 tst r2, 0x400                                                             |     
                                                                                         |     if ((r2 & 0x400) == 0) {
    0x080298f8 beq 0x8029908                                                             |         goto label_63;
                                                                                         |     }
    0x080298fc ldr r3, [r3, 0x220]                                                       |     r3 = *((r3 + 0x220));
    0x08029900 cmp r3, 0                                                                 |     
                                                                                         |     if (r3 != 0) {
    0x08029904 bne 0x8029030                                                             |         goto label_14;
                                                                                         |     }
                                                                                         | label_63:
    0x08029908 mov r0, r4                                                                |     r0 = r4;
    0x0802990c stmdaeq r8, {r0, r1, r3, r5, r7, r8, sb, sl, fp, ip, pc}                  |     __asm ("stmdaeq r8, {r0, r1, r3, r5, r7, r8, sb, sl, fp, ip, pc}");
    0x08029910 subs r5, r0, 0                                                            |     r5 = r0 - 0;
                                                                                         |     if (r5 != r0) {
    0x08029914 bne 0x8028444                                                             |         goto label_1;
                                                                                         |     }
    0x08029918 mov r3, sp                                                                |     r3 = sp;
    0x0802991c mov r0, r8                                                                |     r0 = r8;
    0x08029920 bic r3, r3, 0x1fc0                                                        |     r3 = BIT_MASK (r3, 0x1fc0);
    0x08029924 bic r3, r3, 0x3f                                                          |     r3 = BIT_MASK (r3, 0x3f);
    0x08029928 mrc p15, 0, ip, c3, c0, 0                                                 |     __asm ("mrc p15, 0, ip, c3, c0, 0");
    0x0802992c ldr r1, [r3, 8]                                                           |     r1 = *((r3 + 8));
    0x08029930 bic r3, ip, 0xc                                                           |     r3 = BIT_MASK (ip, 0xc);
    0x08029934 orr r3, r3, 4                                                             |     r3 |= 4;
    0x08029938 sub r1, r1, 1                                                             |     r1--;
    0x0802993c mcr p15, 0, r3, c3, c0, 0                                                 |     __asm ("mcr p15, 0, r3, c3, c0, 0");
    0x08029940 isb sy                                                                    |     __asm ("isb sy");
    0x08029944 stmdaeq r8, {r0, r1, r2, r3, r4, r5, r7, r8, sb, sl, fp, ip, pc}          |     __asm ("stmdaeq r8, {r0, r1, r2, r3, r4, r5, r7, r8, sb, sl, fp, ip, pc}");
    0x08029948 mcr p15, 0, ip, c3, c0, 0                                                 |     __asm ("mcr p15, 0, ip, c3, c0, 0");
    0x0802994c isb sy                                                                    |     __asm ("isb sy");
    0x08029950 cmp r0, 0                                                                 |     
    0x08029954 mov r7, r2                                                                |     r7 = r2;
                                                                                         |     if (r0 != 0) {
    0x08029958 mvnne r5, 0xd                                                             |         r5 = ~0xd;
                                                                                         |         goto label_87;
                                                                                         |     }
                                                                                         |     if (r0 != 0) {
                                                                                         | label_87:
    0x0802995c bne 0x8029000                                                             |         goto label_15;
                                                                                         |     }
    0x08029960 add sb, r6, 0x84                                                          |     sb = r6 + 0x84;
    0x08029964 mov r0, sb                                                                |     r0 = sb;
    0x08029968 stmdaeq r8, {r0, r1, r2, r6, r8, sl, fp, ip, pc}                          |     __asm ("stmdaeq r8, {r0, r1, r2, r6, r8, sl, fp, ip, pc}");
    0x0802996c ldr r0, [r6, 0x1c]                                                        |     r0 = *((r6 + 0x1c));
    0x08029970 mov r3, 1                                                                 |     r3 = 1;
    0x08029974 movw r1, 0x382                                                            |     r1 = 0x382;
    0x08029978 mov r2, r3                                                                |     r2 = r3;
    0x0802997c ldr ip, [r0, 0x1f8]                                                       |     ip = *((r0 + 0x1f8));
    0x08029980 ldr ip, [ip, 0x2c]                                                        |     ip = *((ip + 0x2c));
    0x08029984 str r5, [sp]                                                              |     *(sp) = r5;
    0x08029988 lsl ip, ip, 3                                                             |     
    0x0802998c str ip, [sp, 4]                                                           |     var_4h = ip;
    0x08029990 stmdaeq r0, {r2, r3, r7, r8, fp, ip, sp}                                  |     __asm ("stmdaeq r0, {r2, r3, r7, r8, fp, ip, sp}");
    0x08029994 cmn r0, 0x1000                                                            |     
    0x08029998 mov r8, r0                                                                |     r8 = r0;
                                                                                         |     if (r0 <= 0x1000) {
    0x0802999c movhi r5, r0                                                              |         r5 = r0;
                                                                                         |     }
                                                                                         |     if (r0 <= 0x1000) {
    0x080299a0 bhi 0x80299c8                                                             |         
    0x080299a4 mov r1, r6                                                                |         r1 = r6;
    0x080299a8 add r2, sp, 0x70                                                          |         r2 += var_70h;
    0x080299ac stmdaeq r2, {r2, r3, r5, r7, r8, sl, sp}                                  |         __asm ("stmdaeq r2, {r2, r3, r5, r7, r8, sl, sp}");
    0x080299b0 subs r5, r0, 0                                                            |         r5 = r0 - 0;
                                                                                         |         if (r5 == r0) {
    0x080299b4 beq 0x8029b44                                                             |             goto label_88;
                                                                                         |         }
                                                                                         | label_26:
    0x080299b8 ldr r0, [pc, 0x138]                                                       |         r0 = *(0x8029af4);
    0x080299bc mov r2, r8                                                                |         r2 = r8;
    0x080299c0 movw r1, 0x38d                                                            |         r1 = 0x38d;
    0x080299c4 stmdaeq r0, {r5, r7, sb, fp, ip, sp}                                      |         __asm ("stmdaeq r0, {r5, r7, sb, fp, ip, sp}");
                                                                                         |     }
    0x080299c8 mov r0, sb                                                                |     r0 = sb;
    0x080299cc stmdaeq r8, {r0, r1, r3, r6, r8, sl, fp, ip, pc}                          |     __asm ("stmdaeq r8, {r0, r1, r3, r6, r8, sl, fp, ip, pc}");
    0x080299d0 b 0x8029000                                                               |     goto label_15;
                                                                                         | label_79:
    0x080299d4 mrs r2, apsr                                                              |     r2 = apsr;
    0x080299d8 cpsid i                                                                   |     __asm ("cpsid i");
    0x080299dc ldr r3, [r5, 0x130]                                                       |     r3 = *((r5 + 0x130));
    0x080299e0 orr r3, r3, 2                                                             |     r3 |= 2;
    0x080299e4 str r3, [r5, 0x130]                                                       |     *((r5 + 0x130)) = r3;
    0x080299e8 msr cpsr_c, r2                                                            |     cpsr_c = r2;
    0x080299ec ldr r0, [r5, 0x118]                                                       |     r0 = *((r5 + 0x118));
    0x080299f0 cmp r0, 0                                                                 |     
                                                                                         |     if (r0 == 0) {
    0x080299f4 beq 0x802962c                                                             |         goto label_16;
                                                                                         |     }
    0x080299f8 ldr r3, [r0]                                                              |     r3 = *(r0);
    0x080299fc tst r3, 2                                                                 |     
                                                                                         |     if ((r3 & 2) != 0) {
    0x08029a00 bne 0x802962c                                                             |         goto label_16;
                                                                                         |     }
    0x08029a04 mvn r1, 0x6b                                                              |     r1 = ~0x6b;
    0x08029a08 stmdaeq r8, {r0, r1, r3, r4, r5, r6, r7, r8, sb, sl, fp, ip, pc}          |     __asm ("stmdaeq r8, {r0, r1, r3, r4, r5, r6, r7, r8, sb, sl, fp, ip, pc}");
    0x08029a0c b 0x802962c                                                               |     goto label_16;
                                                                                         | label_78:
    0x08029a10 mrs r2, apsr                                                              |     r2 = apsr;
    0x08029a14 cpsid i                                                                   |     __asm ("cpsid i");
    0x08029a18 ldr r3, [r5, 0x130]                                                       |     r3 = *((r5 + 0x130));
    0x08029a1c orr r3, r3, 2                                                             |     r3 |= 2;
    0x08029a20 str r3, [r5, 0x130]                                                       |     *((r5 + 0x130)) = r3;
    0x08029a24 msr cpsr_c, r2                                                            |     cpsr_c = r2;
    0x08029a28 ldr r3, [r5, 0x118]                                                       |     r3 = *((r5 + 0x118));
    0x08029a2c cmp r3, 0                                                                 |     
                                                                                         |     if (r3 == 0) {
    0x08029a30 beq 0x802962c                                                             |         goto label_16;
                                                                                         |     }
    0x08029a34 ldr r3, [r3]                                                              |     r3 = *(r3);
    0x08029a38 tst r3, 2                                                                 |     
                                                                                         |     if ((r3 & 2) != 0) {
    0x08029a3c bne 0x802962c                                                             |         goto label_16;
                                                                                         |     }
    0x08029a40 mov r0, r7                                                                |     r0 = r7;
    0x08029a44 stmdaeq r4, {r2, r4, r5, r6, r7, r8, sb, sl, fp, ip, lr, pc}              |     __asm ("stmdaeq r4, {r2, r4, r5, r6, r7, r8, sb, sl, fp, ip, lr, pc}");
    0x08029a48 ldr r0, [r5, 0x118]                                                       |     r0 = *((r5 + 0x118));
    0x08029a4c mvn r1, 0x6b                                                              |     r1 = ~0x6b;
    0x08029a50 stmdaeq r8, {r0, r1, r3, r4, r5, r6, r7, r8, sb, sl, fp, ip, pc}          |     __asm ("stmdaeq r8, {r0, r1, r3, r4, r5, r6, r7, r8, sb, sl, fp, ip, pc}");
    0x08029a54 b 0x802962c                                                               |     goto label_16;
                                                                                         | label_54:
    0x08029a58 mov r1, r7                                                                |     r1 = r7;
    0x08029a5c mov r0, r6                                                                |     r0 = r6;
    0x08029a60 bl 0x8027a20                                                              |     r0 = ext4_ioctl_setflags ();
    0x08029a64 mov r5, r0                                                                |     r5 = r0;
    0x08029a68 b 0x80288e0                                                               |     goto label_17;
                                                                                         | label_73:
    0x08029a6c mov r0, r7                                                                |     r0 = r7;
    0x08029a70 stmdaeq r5, {r4, sl, fp, ip, sp, pc}                                      |     __asm ("stmdaeq r5, {r4, sl, fp, ip, sp, pc}");
    0x08029a74 stmdaeq r5, {r4, sl, fp, ip, sp, pc}                                      |     __asm ("stmdaeq r5, {r4, sl, fp, ip, sp, pc}");
    0x08029a78 stmdaeq r5, {r2, r3, r4, r5, sl, fp, ip, sp, pc}                          |     __asm ("stmdaeq r5, {r2, r3, r4, r5, sl, fp, ip, sp, pc}");
    0x08029a7c stmdaeq r5, {r2, r3, r4, r5, sl, fp, ip, sp, pc}                          |     __asm ("stmdaeq r5, {r2, r3, r4, r5, sl, fp, ip, sp, pc}");
    0x08029a80 mvn r5, 0x5e                                                              |     r5 = ~0x5e;
    0x08029a84 stmdaeq r4, {r4, r7, r8, sb, fp, sp, lr}                                  |     __asm ("stmdaeq r4, {r4, r7, r8, sb, fp, sp, lr}");
    0x08029a88 b 0x8029408                                                               |     goto label_11;
                                                                                         | label_80:
    0x08029a8c mov r0, r6                                                                |     r0 = r6;
    0x08029a90 stmdaeq r5, {r4, sl, fp, ip, sp, pc}                                      |     __asm ("stmdaeq r5, {r4, sl, fp, ip, sp, pc}");
    0x08029a94 stmdaeq r5, {r4, sl, fp, ip, sp, pc}                                      |     __asm ("stmdaeq r5, {r4, sl, fp, ip, sp, pc}");
    0x08029a98 stmdaeq r5, {r2, r3, r4, r5, sl, fp, ip, sp, pc}                          |     __asm ("stmdaeq r5, {r2, r3, r4, r5, sl, fp, ip, sp, pc}");
    0x08029a9c stmdaeq r5, {r2, r3, r4, r5, sl, fp, ip, sp, pc}                          |     __asm ("stmdaeq r5, {r2, r3, r4, r5, sl, fp, ip, sp, pc}");
    0x08029aa0 mvn r5, 0x5e                                                              |     r5 = ~0x5e;
    0x08029aa4 stmdaeq r4, {r4, r7, r8, sb, fp, sp, lr}                                  |     __asm ("stmdaeq r4, {r4, r7, r8, sb, fp, sp, lr}");
    0x08029aa8 b 0x8029778                                                               |     goto label_18;
                                                                                         | label_39:
    0x08029aac cmp r3, 0x4000                                                            |     
                                                                                         |     if (r3 == 0x4000) {
    0x08029ab0 beq 0x8028544                                                             |         goto label_19;
                                                                                         |     }
    0x08029ab4 cmp r3, 0x8000                                                            |     
                                                                                         |     if (r3 != 0x8000) {
    0x08029ab8 andne r3, r8, 0xc0                                                        |         r3 = r8 & 0xc0;
                                                                                         |         goto label_89;
                                                                                         |     }
                                                                                         |     if (r3 != 0x8000) {
                                                                                         | label_89:
    0x08029abc bne 0x802853c                                                             |         goto label_20;
                                                                                         |     }
    0x08029ac0 b 0x8028534                                                               |     goto label_21;
                                                                                         | label_70:
    0x08029ac4 mov r2, sb                                                                |     r2 = sb;
    0x08029ac8 movw r1, 0x495                                                            |     r1 = 0x495;
    0x08029acc ldr r0, [pc, 0x24]                                                        |     r0 = *(0x8029af4);
    0x08029ad0 stmdaeq r0, {r5, r7, sb, fp, ip, sp}                                      |     __asm ("stmdaeq r0, {r5, r7, sb, fp, ip, sp}");
    0x08029ad4 b 0x8029000                                                               |     goto label_15;
                                                                                         |     do {
                                                                                         | label_75:
    0x08029ad8 mov r5, sb                                                                |         r5 = sb;
    0x08029adc stmdaeq r8, {r0, r1, r4, r5, r7, r8, sb, sl, fp, ip, pc}                  |         __asm ("stmdaeq r8, {r0, r1, r4, r5, r7, r8, sb, sl, fp, ip, pc}");
    0x08029ae0 b 0x8029408                                                               |         goto label_11;
                                                                                         | label_74:
    0x08029ae4 mov r0, r4                                                                |         r0 = r4;
    0x08029ae8 cmp sb, 0                                                                 |         
    0x08029aec bne 0x8029ad8                                                             |         
                                                                                         |     } while (sb != 0);
    0x08029af0 stmdaeq r8, {r0, r1, r4, r5, r7, r8, sb, sl, fp, ip, pc}                  |     __asm ("stmdaeq r8, {r0, r1, r4, r5, r7, r8, sb, sl, fp, ip, pc}");
    0x08029af4 b 0x8029528                                                               |     goto label_22;
                                                                                         |     do {
                                                                                         | label_82:
    0x08029b00 mov r5, r7                                                                |         r5 = r7;
    0x08029b04 stmdaeq r8, {r0, r1, r4, r5, r7, r8, sb, sl, fp, ip, pc}                  |         __asm ("stmdaeq r8, {r0, r1, r4, r5, r7, r8, sb, sl, fp, ip, pc}");
    0x08029b08 b 0x8029778                                                               |         goto label_18;
                                                                                         | label_81:
    0x08029b0c mov r0, r4                                                                |         r0 = r4;
    0x08029b10 cmp r7, 0                                                                 |         
    0x08029b14 bne 0x8029b00                                                             |         
                                                                                         |     } while (r7 != 0);
    0x08029b18 stmdaeq r8, {r0, r1, r4, r5, r7, r8, sb, sl, fp, ip, pc}                  |     __asm ("stmdaeq r8, {r0, r1, r4, r5, r7, r8, sb, sl, fp, ip, pc}");
    0x08029b1c b 0x8029758                                                               |     goto label_23;
                                                                                         | label_71:
    0x08029b20 pld [r0]                                                                  |     __asm ("pld [r0]");
                                                                                         |     do {
    0x08029b24 ldrex r3, [r0]                                                            |         __asm ("ldrex r3, [r0]");
    0x08029b28 orr r2, r3, 4                                                             |         r2 = r3 | 4;
    0x08029b2c strex r1, r2, [r0]                                                        |         __asm ("strex r1, r2, [r0]");
    0x08029b30 teq r1, 0                                                                 |         __asm ("teq r1, 0");
    0x08029b34 bne 0x8029b24                                                             |         
                                                                                         |     } while (r7 != 0);
    0x08029b38 tst r3, 4                                                                 |     
                                                                                         |     if ((r3 & 4) == 0) {
    0x08029b3c beq 0x8029254                                                             |         goto label_24;
                                                                                         |     }
    0x08029b40 b 0x8029250                                                               |     goto label_25;
                                                                                         | label_88:
    0x08029b44 add r5, sp, 0x40                                                          |     r5 += var_40h;
    0x08029b48 mov r1, r6                                                                |     r1 = r6;
    0x08029b4c mov r0, r5                                                                |     r0 = r5;
    0x08029b50 stmdaeq r8, {r0, r1, r6, r8, sl, fp, ip, pc}                              |     __asm ("stmdaeq r8, {r0, r1, r6, r8, sl, fp, ip, pc}");
    0x08029b54 add ip, r6, 0x60                                                          |     
    0x08029b58 ldm r5, {r0, r1, r2, r3}                                                  |     r0 = *(r5);
                                                                                         |     r1 = *((r5 + 4));
                                                                                         |     r2 = *((r5 + 8));
                                                                                         |     r3 = *((r5 + 12));
    0x08029b5c stm ip, {r0, r1, r2, r3}                                                  |     *(ip) = r0;
                                                                                         |     *((ip + 4)) = r1;
                                                                                         |     *((ip + 8)) = r2;
                                                                                         |     *((ip + 12)) = r3;
    0x08029b60 add r2, sp, 0x70                                                          |     r2 += var_70h;
    0x08029b64 mov r1, r6                                                                |     r1 = r6;
    0x08029b68 mov r0, r8                                                                |     r0 = r8;
    0x08029b6c str r7, [r6, 0x15c]                                                       |     *((r6 + 0x15c)) = r7;
    0x08029b70 stmdaeq r2, {r3, r8, sb, fp, ip}                                          |     __asm ("stmdaeq r2, {r3, r8, sb, fp, ip}");
    0x08029b74 mov r5, r0                                                                |     r5 = r0;
    0x08029b78 b 0x80299b8                                                               |     goto label_26;
                                                                                         | label_60:
    0x08029b7c mvn r5, 0x15                                                              |     r5 = ~0x15;
    0x08029b80 b 0x8028444                                                               |     goto label_1;
                                                                                         | label_85:
    0x08029b8c mov r0, r7                                                                |     r0 = r7;
    0x08029b90 stmdaeq r5, {r6, sl, fp, ip, sp, pc}                                      |     __asm ("stmdaeq r5, {r6, sl, fp, ip, sp, pc}");
    0x08029b94 stmdaeq r5, {r6, sl, fp, ip, sp, pc}                                      |     __asm ("stmdaeq r5, {r6, sl, fp, ip, sp, pc}");
    0x08029b98 stmdaeq r5, {r2, r3, r4, r5, sl, fp, ip, sp, pc}                          |     __asm ("stmdaeq r5, {r2, r3, r4, r5, sl, fp, ip, sp, pc}");
    0x08029b9c stmdaeq r5, {r2, r3, r4, r5, sl, fp, ip, sp, pc}                          |     __asm ("stmdaeq r5, {r2, r3, r4, r5, sl, fp, ip, sp, pc}");
    0x08029ba0 mvn r5, 0x5e                                                              |     r5 = ~0x5e;
    0x08029ba4 stmdaeq r4, {r4, r7, r8, sb, fp, sp, lr}                                  |     __asm ("stmdaeq r4, {r4, r7, r8, sb, fp, sp, lr}");
    0x08029ba8 b 0x80298a4                                                               |     goto label_27;
                                                                                         | label_69:
    0x08029bac mov r0, r4                                                                |     r0 = r4;
    0x08029bb0 mov r5, sb                                                                |     r5 = sb;
    0x08029bb4 stmdaeq r8, {r0, r1, r4, r5, r7, r8, sb, sl, fp, ip, pc}                  |     __asm ("stmdaeq r8, {r0, r1, r4, r5, r7, r8, sb, sl, fp, ip, pc}");
    0x08029bb8 b 0x8028444                                                               |     goto label_1;
                                                                                         | label_83:
    0x08029bbc tst r2, 0x400                                                             |     
                                                                                         |     if ((r2 & 0x400) == 0) {
    0x08029bc0 beq 0x8029778                                                             |         goto label_18;
                                                                                         |     }
    0x08029bc4 ldr r2, [r3, 0x220]                                                       |     r2 = *((r3 + 0x220));
    0x08029bc8 cmp r2, 0                                                                 |     
                                                                                         |     if (r2 != 0) {
    0x08029bcc bne 0x802976c                                                             |         goto label_28;
                                                                                         |     }
    0x08029bd0 stmdaeq r6, {r1, r2, r3, r5, r6, sl, ip}                                  |     __asm ("stmdaeq r6, {r1, r2, r3, r5, r6, sl, ip}");
    0x08029bd4 stmdaeq r6, {r1, r2, r3, r5, r6, sl, ip}                                  |     __asm ("stmdaeq r6, {r1, r2, r3, r5, r6, sl, ip}");
    0x08029bd8 ldrb r3, [r2]                                                             |     r3 = *(r2);
    0x08029bdc cmp r3, 0                                                                 |     
                                                                                         |     if (r3 != 0) {
    0x08029be0 bne 0x8029778                                                             |         goto label_18;
                                                                                         |     }
    0x08029be4 mov r1, 1                                                                 |     r1 = 1;
    0x08029be8 stmdaeq r5, {r2, r3, r4, r5, r7, r8, sb, fp, ip, sp, pc}                  |     __asm ("stmdaeq r5, {r2, r3, r4, r5, r7, r8, sb, fp, ip, sp, pc}");
    0x08029bec stmdaeq r5, {r2, r3, r4, r5, r7, r8, sb, fp, ip, sp, pc}                  |     __asm ("stmdaeq r5, {r2, r3, r4, r5, r7, r8, sb, fp, ip, sp, pc}");
    0x08029bf0 strb r1, [r2]                                                             |     *(r2) = r1;
    0x08029bf4 mov r2, 9                                                                 |     r2 = 9;
    0x08029bf8 movw r1, 0xc34                                                            |     r1 = 0xc34;
    0x08029bfc 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}");
    0x08029c00 ldr r3, [r6, 0x1f8]                                                       |     r3 = *((r6 + 0x1f8));
    0x08029c04 ldr r2, [r3, 0x44]                                                        |     r2 = *((r3 + 0x44));
    0x08029c08 ldr r2, [r2, 0x64]                                                        |     r2 = *((r2 + 0x64));
    0x08029c0c tst r2, 0x400                                                             |     
                                                                                         |     if ((r2 & 0x400) == 0) {
    0x08029c10 beq 0x8029778                                                             |         goto label_18;
                                                                                         |     }
    0x08029c14 ldr r2, [r3, 0x220]                                                       |     r2 = *((r3 + 0x220));
    0x08029c18 cmp r2, 0                                                                 |     
                                                                                         |     if (r2 == 0) {
    0x08029c1c beq 0x8029778                                                             |         goto label_18;
                                                                                         |     }
    0x08029c20 b 0x802976c                                                               |     goto label_28;
                                                                                         | label_86:
    0x08029c24 mrc p15, 0, r4, c3, c0, 0                                                 |     __asm ("mrc p15, 0, r4, c3, c0, 0");
    0x08029c28 bic r3, r4, 0xc                                                           |     r3 = BIT_MASK (r4, 0xc);
    0x08029c2c orr r3, r3, 4                                                             |     r3 |= 4;
    0x08029c30 mcr p15, 0, r3, c3, c0, 0                                                 |     __asm ("mcr p15, 0, r3, c3, c0, 0");
    0x08029c34 isb sy                                                                    |     __asm ("isb sy");
    0x08029c38 mov r2, 0x28                                                              |     r2 = 0x28;
    0x08029c3c mov r1, sb                                                                |     r1 = sb;
    0x08029c40 mov r0, r8                                                                |     r0 = r8;
    0x08029c44 stmdaeq r8, {r0, r1, r3, r4, r7, r8, sb, sl, fp, ip, pc}                  |     __asm ("stmdaeq r8, {r0, r1, r3, r4, r7, r8, sb, sl, fp, ip, pc}");
    0x08029c48 mcr p15, 0, r4, c3, c0, 0                                                 |     __asm ("mcr p15, 0, r4, c3, c0, 0");
    0x08029c4c isb sy                                                                    |     __asm ("isb sy");
    0x08029c50 cmp r0, 0                                                                 |     
                                                                                         |     if (r0 == 0) {
    0x08029c54 beq 0x80298a4                                                             |         goto label_27;
                                                                                         |     }
    0x08029c58 b 0x80298a0                                                               |     goto label_29;
                                                                                         | label_77:
    0x08029c5c tst r2, 0x400                                                             |     
                                                                                         |     if ((r2 & 0x400) == 0) {
    0x08029c60 beq 0x8029408                                                             |         goto label_11;
                                                                                         |     }
    0x08029c64 ldr r2, [r3, 0x220]                                                       |     r2 = *((r3 + 0x220));
    0x08029c68 cmp r2, 0                                                                 |     
                                                                                         |     if (r2 != 0) {
    0x08029c6c bne 0x8029548                                                             |         goto label_30;
                                                                                         |     }
    0x08029c70 stmdaeq r6, {r1, r2, r3, r5, r6, sl, ip}                                  |     __asm ("stmdaeq r6, {r1, r2, r3, r5, r6, sl, ip}");
    0x08029c74 stmdaeq r6, {r1, r2, r3, r5, r6, sl, ip}                                  |     __asm ("stmdaeq r6, {r1, r2, r3, r5, r6, sl, ip}");
    0x08029c78 ldrb r3, [ip]                                                             |     r3 = *(ip);
    0x08029c7c cmp r3, 0                                                                 |     
                                                                                         |     if (r3 != 0) {
    0x08029c80 bne 0x8029408                                                             |         goto label_11;
                                                                                         |     }
    0x08029c84 mov r2, 9                                                                 |     r2 = 9;
    0x08029c88 movw r1, 0xc34                                                            |     r1 = 0xc34;
    0x08029c8c stmdaeq r5, {r2, r3, r4, r5, r7, r8, sb, fp, ip, sp, pc}                  |     __asm ("stmdaeq r5, {r2, r3, r4, r5, r7, r8, sb, fp, ip, sp, pc}");
    0x08029c90 stmdaeq r5, {r2, r3, r4, r5, r7, r8, sb, fp, ip, sp, pc}                  |     __asm ("stmdaeq r5, {r2, r3, r4, r5, r7, r8, sb, fp, ip, sp, pc}");
    0x08029c94 mov lr, 1                                                                 |     lr = 1;
    0x08029c98 strb lr, [ip]                                                             |     
    0x08029c9c 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}");
    0x08029ca0 ldr r3, [r7, 0x1f8]                                                       |     r3 = *((r7 + 0x1f8));
    0x08029ca4 ldr r2, [r3, 0x44]                                                        |     r2 = *((r3 + 0x44));
    0x08029ca8 ldr r2, [r2, 0x64]                                                        |     r2 = *((r2 + 0x64));
    0x08029cac tst r2, 0x400                                                             |     
                                                                                         |     if ((r2 & 0x400) == 0) {
    0x08029cb0 beq 0x8029408                                                             |         goto label_11;
                                                                                         |     }
    0x08029cb4 ldr r2, [r3, 0x220]                                                       |     r2 = *((r3 + 0x220));
    0x08029cb8 cmp r2, 0                                                                 |     
                                                                                         |     if (r2 == 0) {
    0x08029cbc beq 0x8029408                                                             |         goto label_11;
                                                                                         |     }
    0x08029cc0 b 0x8029548                                                               |     goto label_30;
                                                                                         | label_84:
    0x08029cc4 ldr r1, [sp, 0x70]                                                        |     r1 = var_70h_2;
    0x08029cc8 mov r0, r6                                                                |     r0 = r6;
    0x08029ccc stmdaeq r4, {r2, r3, r4, r5, sp, pc}                                      |     __asm ("stmdaeq r4, {r2, r3, r4, r5, sp, pc}");
    0x08029cd0 mov r5, r0                                                                |     r5 = r0;
    0x08029cd4 b 0x8029778                                                               |     goto label_18;
                                                                                         | label_72:
    0x08029cfc mov r5, r7                                                                |     r5 = r7;
    0x08029d00 b 0x8028444                                                               |     goto label_1;
                                                                                         | }
    ; 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 @ 0x804e360 */
                                                 | #include <stdint.h>
                                                 |  
    ; (fcn) sym.ext4_attr_show ()                | void ext4_attr_show (int32_t arg1, int32_t arg2) {
                                                 |     int32_t var_8h;
                                                 |     r0 = arg1;
                                                 |     r1 = arg2;
    0x0804e360 push {r4, r6, r7, lr}             |     
    0x0804e364 mov r4, r2                        |     r4 = r2;
    0x0804e368 ldrsh r3, [r1, 0xa]               |     r3 = *((r1 + 0xa));
    0x0804e36c sub sp, sp, 8                     |     
    0x0804e370 cmp r3, 1                         |     
                                                 |     if (r3 == 1) {
    0x0804e374 beq 0x804e3e4                     |         goto label_1;
                                                 |     }
    0x0804e378 cmp r3, 2                         |     
                                                 |     if (r3 == 2) {
    0x0804e37c beq 0x804e3f4                     |         goto label_2;
                                                 |     }
    0x0804e380 cmp r3, 0                         |     
                                                 |     if (r3 != 0) {
    0x0804e384 ldreq ip, [r1, 0x10]              |         ip = *((r1 + 0x10));
                                                 |     }
    0x0804e388 movne ip, 0                       |     
                                                 |     while (1) {
                                                 | label_0:
    0x0804e38c ldrsh r3, [r1, 8]                 |         r3 = *((r1 + 8));
    0x0804e390 sub r3, r3, 1                     |         r3--;
    0x0804e394 cmp r3, 0x10                      |         
                                                 |         if (r3 > 0x10) {
                                                 |             /* switch table (17 cases) at 0x804e3a0 */
    0x0804e398 ldrls pc, [pc, r3, lsl 2]         |             offset_0 = r3 << 2;
                                                 |             pc = *((pc + offset_0));
                                                 |         }
    0x0804e39c b 0x804e6a0                       |         goto label_3;
                                                 | label_1:
    0x0804e3e4 ldr ip, [r1, 0x10]                |         ip = *((r1 + 0x10));
    0x0804e3e8 sub ip, ip, 0xe0                  |         
    0x0804e3ec add ip, r0, ip                    |         
    0x0804e3f0 b 0x804e38c                       |         
                                                 |     }
                                                 | label_2:
    0x0804e3f4 ldr ip, [r0, -0x9c]               |     ip = *((r0 - 0x9c));
    0x0804e3f8 ldr r3, [r1, 0x10]                |     r3 = *((r1 + 0x10));
    0x0804e3fc add ip, ip, r3                    |     
    0x0804e400 b 0x804e38c                       |     goto label_0;
                                                 |     do {
    0x0804e454 mov r0, ip                        |         r0 = ip;
    0x0804e458 add sp, sp, 8                     |         
    0x0804e45c pop {r4, r6, r7, pc}              |         
                                                 | label_3:
    0x0804e6a0 mov ip, 0                         |         
    0x0804e6a4 b 0x804e454                       |         
                                                 |     } while (1);
                                                 | }
    ; 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 @ 0x804e12c */
                                                         | #include <stdint.h>
                                                         |  
    ; (fcn) sym.ext4_attr_store ()                       | void ext4_attr_store (int32_t arg1, int32_t arg2) {
                                                         |     r0 = arg1;
                                                         |     r1 = arg2;
    0x0804e12c push {r4, r5, r6, r7, r8, sb, lr}         |     
    0x0804e130 mov r5, r0                                |     r5 = r0;
    0x0804e134 mov r6, r2                                |     r6 = r2;
    0x0804e138 ldrsh ip, [r1, 0xa]                       |     ip = *((r1 + 0xa));
    0x0804e13c sub sp, sp, 0x24                          |     
    0x0804e140 mov r7, r3                                |     r7 = r3;
    0x0804e144 cmp ip, 1                                 |     
                                                         |     if (ip == 1) {
    0x0804e148 beq 0x804e1e0                             |         goto label_1;
                                                         |     }
    0x0804e14c cmp ip, 2                                 |     
                                                         |     if (ip == 2) {
    0x0804e150 beq 0x804e1d0                             |         goto label_2;
                                                         |     }
    0x0804e154 cmp ip, 0                                 |     
                                                         |     if (ip != 0) {
    0x0804e158 ldreq r8, [r1, 0x10]                      |         r8 = *((r1 + 0x10));
                                                         |     }
    0x0804e15c movne r8, 0                               |     r8 = 0;
                                                         |     while (1) {
                                                         | label_0:
    0x0804e160 ldrsh r1, [r1, 8]                         |         r1 = *((r1 + 8));
    0x0804e164 sub r1, r1, 4                             |         r1 -= 4;
    0x0804e168 cmp r1, 8                                 |         
                                                         |         if (r1 > 8) {
                                                         |             /* switch table (9 cases) at 0x804e174 */
    0x0804e16c ldrls pc, [pc, r1, lsl 2]                 |             offset_0 = r1 << 2;
                                                         |             pc = *((pc + offset_0));
                                                         |         }
    0x0804e170 b 0x804e1f0                               |         goto label_3;
                                                         | label_2:
    0x0804e1d0 ldr r3, [r0, -0x9c]                       |         r3 = *((r0 - 0x9c));
    0x0804e1d4 ldr r2, [r1, 0x10]                        |         r2 = *((r1 + 0x10));
    0x0804e1d8 add r8, r3, r2                            |         r8 = r3 + r2;
    0x0804e1dc b 0x804e160                               |         
                                                         |     }
                                                         | label_1:
    0x0804e1e0 ldr r3, [r1, 0x10]                        |     r3 = *((r1 + 0x10));
    0x0804e1e4 sub r3, r3, 0xe0                          |     r3 -= 0xe0;
    0x0804e1e8 add r8, r0, r3                            |     r8 = r0 + r3;
    0x0804e1ec b 0x804e160                               |     goto label_0;
                                                         | label_3:
    0x0804e1f0 mov r4, 0                                 |     r4 = 0;
    0x0804e1f4 mov r0, r4                                |     r0 = r4;
    0x0804e1f8 add sp, sp, 0x24                          |     
    0x0804e1fc pop {r4, r5, r6, r7, r8, sb, pc}          |     
                                                         | }
    ; 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 @ 0x8054888 */
                                                                         | #include <stdint.h>
                                                                         |  
    ; (fcn) sym.ext4_fc_replay_link_internal ()                          | void ext4_fc_replay_link_internal (uint32_t arg1, int32_t arg2) {
                                                                         |     int32_t var_0h;
                                                                         |     int32_t var_8h;
                                                                         |     int32_t var_ch;
                                                                         |     int32_t var_10h;
                                                                         |     int32_t var_14h;
                                                                         |     int32_t var_1ch;
                                                                         |     r0 = arg1;
                                                                         |     r1 = arg2;
    0x08054888 push {r4, r5, r6, r7, lr}                                 |     
    0x0805488c mov r3, 0                                                 |     r3 = 0;
    0x08054890 mov r4, r2                                                |     r4 = r2;
    0x08054894 sub sp, sp, 0x1c                                          |     
    0x08054898 mov r2, r3                                                |     r2 = r3;
    0x0805489c movw ip, 0x513                                            |     ip = 0x513;
    0x080548a0 str r3, [sp, 8]                                           |     var_8h = r3;
    0x080548a4 str r3, [sp, 0x14]                                        |     var_14h = r3;
    0x080548a8 ldr r3, [r1, 4]                                           |     r3 = *((r1 + 4));
    0x080548ac str r3, [sp, 0xc]                                         |     var_ch = r3;
    0x080548b0 ldr r3, [r1, 0x10]                                        |     r3 = *((r1 + 0x10));
    0x080548b4 str r3, [sp, 0x10]                                        |     var_10h = r3;
    0x080548b8 ldr r1, [r1]                                              |     r1 = *(r1);
    0x080548bc ldr r3, [pc, 0x114]                                       |     r3 = *(0x80549d4);
    0x080548c0 str ip, [sp]                                              |     *(sp) = ip;
    0x080548c4 stmdaeq r2, {r2, r5, r8, fp}                              |     __asm ("stmdaeq r2, {r2, r5, r8, fp}");
    0x080548c8 cmn r0, 0x1000                                            |     
                                                                         |     if (r0 > 0x1000) {
    0x080548cc bhi 0x8054994                                             |         goto label_5;
                                                                         |     }
    0x080548d0 mov r6, r0                                                |     r6 = r0;
    0x080548d4 stmdaeq r8, {r0, r1, r4, r7, sp, pc}                      |     __asm ("stmdaeq r8, {r0, r1, r4, r7, sp, pc}");
    0x080548d8 mov r5, r0                                                |     r5 = r0;
    0x080548dc cmn r0, 0x1000                                            |     
                                                                         |     if (r0 > 0x1000) {
    0x080548e0 bhi 0x8054984                                             |         goto label_6;
                                                                         |     }
    0x080548e4 add r1, sp, 8                                             |     r1 += var_8h;
    0x080548e8 stmdaeq r8, {r0, r1, r5, r6, r7, sb, sp, pc}              |     __asm ("stmdaeq r8, {r0, r1, r5, r6, r7, sb, sp, pc}");
    0x080548ec subs r7, r0, 0                                            |     r7 = r0 - 0;
                                                                         |     if (r7 == r0) {
    0x080548f0 beq 0x80549a4                                             |         goto label_7;
                                                                         |     }
    0x080548f4 mov r1, r4                                                |     r1 = r4;
    0x080548f8 mov r2, r7                                                |     r2 = r7;
    0x080548fc mov r0, r6                                                |     r0 = r6;
    0x08054900 stmdaeq r3, {r3, r4, r6, r8, sl, sp, lr, pc}              |     __asm ("stmdaeq r3, {r3, r4, r6, r8, sl, sp, lr, pc}");
    0x08054904 cmp r0, 0                                                 |     
    0x08054908 cmnne r0, 0x11                                            |     __asm ("cmnne r0, 0x11");
    0x0805490c mov r4, r0                                                |     r4 = r0;
                                                                         |     if (r0 == 0) {
    0x08054910 movne r3, 1                                               |         r3 = 1;
                                                                         |     }
                                                                         |     if (r0 != 0) {
    0x08054914 moveq r3, 0                                               |         r3 = 0;
                                                                         |     }
                                                                         |     if (r0 != 0) {
    0x08054918 bne 0x8054970                                             |         goto label_8;
                                                                         |     }
    0x0805491c cmp r5, 0                                                 |     
                                                                         |     if (r5 == 0) {
    0x08054920 movne r4, r3                                              |         r4 = r3;
                                                                         |     }
                                                                         |     if (r5 == 0) {
    0x08054924 beq 0x8054954                                             |         goto label_9;
                                                                         |     }
                                                                         | label_1:
    0x08054928 mov r0, r5                                                |     r0 = r5;
    0x0805492c stmdaeq r8, {r0, r1, r2, r5, r6, r7, sb, sp, pc}          |     __asm ("stmdaeq r8, {r0, r1, r2, r5, r6, r7, sb, sp, pc}");
    0x08054930 mov r0, r5                                                |     r0 = r5;
    0x08054934 stmdaeq r8, {r0, r1, r4, sb, sl, fp, ip, pc}              |     __asm ("stmdaeq r8, {r0, r1, r4, sb, sl, fp, ip, pc}");
                                                                         |     do {
                                                                         | label_0:
    0x08054938 mov r0, r7                                                |         r0 = r7;
    0x0805493c stmdaeq r8, {r0, r1, r2, r5, r6, r7, sb, sp, pc}          |         __asm ("stmdaeq r8, {r0, r1, r2, r5, r6, r7, sb, sp, pc}");
    0x08054940 mov r0, r7                                                |         r0 = r7;
    0x08054944 stmdaeq r8, {r0, r1, r4, sb, sl, fp, ip, pc}              |         __asm ("stmdaeq r8, {r0, r1, r4, sb, sl, fp, ip, pc}");
                                                                         | label_3:
    0x08054948 mov r0, r4                                                |         r0 = r4;
    0x0805494c add sp, sp, 0x1c                                          |         
    0x08054950 pop {r4, r5, r6, r7, pc}                                  |         
                                                                         | label_9:
    0x08054954 cmp r6, 0                                                 |         
                                                                         |         if (r6 != 0) {
    0x08054958 moveq r4, r6                                              |             r4 = r6;
                                                                         |         }
    0x0805495c beq 0x8054938                                             |         
                                                                         |     } while (r6 == 0);
    0x08054960 mov r4, r5                                                |     r4 = r5;
                                                                         | label_2:
    0x08054964 mov r0, r6                                                |     r0 = r6;
    0x08054968 stmdaeq r8, {r0, r1, r4, r5, r7, sl, fp, ip, pc}          |     __asm ("stmdaeq r8, {r0, r1, r4, r5, r7, sl, fp, ip, pc}");
    0x0805496c b 0x8054938                                               |     goto label_0;
                                                                         | label_8:
    0x08054970 cmp r5, 0                                                 |     
                                                                         |     if (r5 != 0) {
    0x08054974 bne 0x8054928                                             |         goto label_1;
                                                                         |     }
    0x08054978 cmp r6, 0                                                 |     
                                                                         |     if (r6 != 0) {
    0x0805497c bne 0x8054964                                             |         goto label_2;
                                                                         |     }
    0x08054980 b 0x8054938                                               |     goto label_0;
                                                                         | label_6:
    0x08054984 cmp r6, 0                                                 |     
                                                                         |     if (r6 != 0) {
    0x08054988 beq 0x8054994                                             |         
    0x0805498c mov r0, r6                                                |         r0 = r6;
    0x08054990 stmdaeq r8, {r0, r1, r4, r5, r7, sl, fp, ip, pc}          |         __asm ("stmdaeq r8, {r0, r1, r4, r5, r7, sl, fp, ip, pc}");
                                                                         |     }
                                                                         | label_5:
    0x08054994 mov r4, 0                                                 |     r4 = 0;
    0x08054998 mov r0, r4                                                |     r0 = r4;
    0x0805499c add sp, sp, 0x1c                                          |     
    0x080549a0 pop {r4, r5, r6, r7, pc}                                  |     
                                                                         | label_7:
    0x080549a4 cmp r5, 0                                                 |     
                                                                         |     if (r5 == 0) {
    0x080549a8 beq 0x80549c4                                             |         goto label_10;
                                                                         |     }
    0x080549ac mov r0, r5                                                |     r0 = r5;
    0x080549b0 stmdaeq r8, {r0, r1, r2, r5, r6, r7, sb, sp, pc}          |     __asm ("stmdaeq r8, {r0, r1, r2, r5, r6, r7, sb, sp, pc}");
    0x080549b4 mov r0, r5                                                |     r0 = r5;
    0x080549b8 stmdaeq r8, {r0, r1, r4, sb, sl, fp, ip, pc}              |     __asm ("stmdaeq r8, {r0, r1, r4, sb, sl, fp, ip, pc}");
                                                                         |     do {
                                                                         | label_4:
    0x080549bc mvn r4, 0xb                                               |         r4 = ~0xb;
    0x080549c0 b 0x8054948                                               |         goto label_3;
                                                                         | label_10:
    0x080549c4 cmp r6, 0                                                 |         
    0x080549c8 beq 0x80549bc                                             |         
                                                                         |     } while (r6 == 0);
    0x080549cc mov r0, r6                                                |     r0 = r6;
    0x080549d0 stmdaeq r8, {r0, r1, r4, r5, r7, sl, fp, ip, pc}          |     __asm ("stmdaeq r8, {r0, r1, r4, r5, r7, sl, fp, ip, pc}");
    0x080549d4 b 0x80549bc                                               |     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 @ 0x8054d8c */
                                                                 | #include <stdint.h>
                                                                 |  
    ; (fcn) sym.ext4_fc_replay ()                                | void ext4_fc_replay (int32_t arg_390h, int32_t arg1, int32_t arg2) {
                                                                 |     int32_t var_8h;
                                                                 |     int32_t var_ch;
                                                                 |     int32_t var_64h;
                                                                 |     r0 = arg1;
                                                                 |     r1 = arg2;
    0x08054d8c push {r4, r5, r6, r7, r8, sb, sl, fp, lr}         |     
    0x08054d90 mov lr, r1                                        |     lr = r1;
    0x08054d94 cmp r2, 0                                         |     
    0x08054d98 ldr r1, [r0, 0x2a8]                               |     r1 = *((r0 + 0x2a8));
    0x08054d9c sub sp, sp, 0x64                                  |     
    0x08054da0 ldr ip, [r1, 0x1f8]                               |     ip = *((r1 + 0x1f8));
                                                                 |     if (r2 != 0) {
    0x08054da4 beq 0x8055498                                     |         
    0x08054da8 ldr r3, [ip, 0x398]                               |         r3 = *((ip + 0x398));
    0x08054dac cmp r3, r2                                        |         
                                                                 |         if (r3 == r2) {
    0x08054db0 strne r2, [ip, 0x398]                             |             *((ip + 0x398)) = r2;
                                                                 |         }
    0x08054db4 ldr r2, [ip, 0x390]                               |         r2 = *((ip + 0x390));
    0x08054db8 ldrhne r3, [ip, 0x78]                             |         __asm ("ldrhne r3, [ip, 0x78]");
                                                                 |         if (r3 == r2) {
    0x08054dbc orrne r3, r3, 0x20                                |             r3 |= 0x20;
                                                                 |         }
    0x08054dc0 strhne r3, [ip, 0x78]                             |         __asm ("strhne r3, [ip, 0x78]");
    0x08054dc4 cmp r2, 0                                         |         
                                                                 |         if (r2 != 0) {
    0x08054dc8 beq 0x8055480                                     |             
    0x08054dcc ldr r3, [r0, 0x19c]                               |             r3 = *((r0 + 0x19c));
    0x08054dd0 ldr r4, [lr, 0x1c]                                |             r4 = *((lr + 0x1c));
    0x08054dd4 sub r3, r3, 1                                     |             r3--;
    0x08054dd8 add fp, r4, r3                                    |             
    0x08054ddc cmp r4, fp                                        |             
                                                                 |             if (r4 >= fp) {
    0x08054de0 bhs 0x80557a0                                     |                 goto label_2;
                                                                 |             }
    0x08054de4 str fp, [sp, 0xc]                                 |             var_ch = fp;
    0x08054de8 mov fp, ip                                        |             
    0x08054dec str r1, [sp, 8]                                   |             var_8h = r1;
    0x08054df0 mov ip, r4                                        |             
    0x08054df4 cmp r2, 0                                         |             
    0x08054df8 ldr r6, [ip], 4                                   |             r6 = *(ip);
                                                                 |             ip += 4;
                                                                 |             if (r2 != 0) {
    0x08054dfc beq 0x805547c                                     |                 
    0x08054e00 uxth r3, r6                                       |                 r3 = (int16_t) r6;
    0x08054e04 sub r2, r2, 1                                     |                 r2--;
    0x08054e08 sub r3, r3, 1                                     |                 r3--;
    0x08054e0c str r2, [fp, 0x390]                               |                 *(arg_390h) = r2;
    0x08054e10 cmp r3, 8                                         |                 
                                                                 |                 if (r3 > 8) {
                                                                 |                     /* switch table (9 cases) at 0x8054e1c */
    0x08054e14 ldrls pc, [pc, r3, lsl 2]                         |                     offset_0 = r3 << 2;
                                                                 |                     pc = *((pc + offset_0));
                                                                 |                 }
    0x08054e18 b 0x8055b00                                       |                 goto label_3;
                                                                 |             }
    0x0805547c ldr r1, [sp, 8]                                   |             r1 = var_8h;
                                                                 |         }
    0x08055480 mov r0, r1                                        |         r0 = r1;
    0x08055484 bl 0x805472c                                      |         ext4_fc_set_bitmaps_and_counters ();
                                                                 | label_0:
    0x08055488 mov r5, 0                                         |         r5 = 0;
                                                                 | label_1:
    0x0805548c mov r0, r5                                        |         r0 = r5;
    0x08055490 add sp, sp, 0x64                                  |         
    0x08055494 pop {r4, r5, r6, r7, r8, sb, sl, fp, pc}          |         
                                                                 |     }
    0x08055498 str r2, [ip, 0x398]                               |     *((ip + 0x398)) = r2;
    0x0805549c ldr r7, [r0, 0x2a8]                               |     r7 = *((r0 + 0x2a8));
    0x080554a0 ldr r6, [lr, 0x1c]                                |     r6 = *((lr + 0x1c));
    0x080554a4 ldr lr, [r0, 0x19c]                               |     
    0x080554a8 ldr sb, [r7, 0x1f8]                               |     sb = *((r7 + 0x1f8));
    0x080554ac ldr r2, [sb, 0x394]                               |     r2 = *((sb + 0x394));
    0x080554b0 cmp r2, 0                                         |     
    0x080554b4 beq 0x80557b0                                     |     
                                                                 |     while (r1 == 9) {
    0x080554b8 cmp r3, r2                                        |         
                                                                 |         if (r3 != r2) {
    0x080554bc bne 0x8055ac4                                     |             goto label_4;
                                                                 |         }
    0x080554c0 sub lr, lr, 1                                     |         lr--;
    0x080554c4 add r3, r3, 1                                     |         r3++;
    0x080554c8 add sl, r6, lr                                    |         sl = r6 + lr;
    0x080554cc str r3, [sb, 0x394]                               |         *((sb + 0x394)) = r3;
    0x080554d0 cmp r6, sl                                        |         
                                                                 |         if (r6 < sl) {
    0x080554d4 bhs 0x80557a0                                     |             
    0x080554d8 mov ip, r6                                        |             
    0x080554dc ldr r4, [ip], 4                                   |             r4 = *(ip);
                                                                 |             ip += 4;
    0x080554e0 uxth r3, r4                                       |             r3 = (int16_t) r4;
    0x080554e4 sub r3, r3, 1                                     |             r3--;
    0x080554e8 cmp r3, 8                                         |             
                                                                 |             if (r3 > 8) {
                                                                 |                 /* switch table (9 cases) at 0x80554f4 */
    0x080554ec ldrls pc, [pc, r3, lsl 2]                         |                 offset_1 = r3 << 2;
                                                                 |                 pc = *((pc + offset_1));
                                                                 |             }
    0x080554f0 b 0x8055af4                                       |             goto label_5;
                                                                 |         }
                                                                 | label_2:
    0x080557a0 mov r5, 1                                         |         r5 = 1;
    0x080557a4 mov r0, r5                                        |         r0 = r5;
    0x080557a8 add sp, sp, 0x64                                  |         
    0x080557ac pop {r4, r5, r6, r7, r8, sb, sl, fp, pc}          |         
    0x080557b0 str r2, [sb, 0x390]                               |         *((sb + 0x390)) = r2;
    0x080557b4 str r2, [sb, 0x39c]                               |         *((sb + 0x39c)) = r2;
    0x080557b8 str r2, [sb, 0x3a0]                               |         *((sb + 0x3a0)) = r2;
    0x080557bc str r2, [sb, 0x3a4]                               |         *((sb + 0x3a4)) = r2;
    0x080557c0 str r2, [sb, 0x3a8]                               |         *((sb + 0x3a8)) = r2;
    0x080557c4 str r2, [sb, 0x3ac]                               |         *((sb + 0x3ac)) = r2;
    0x080557c8 str r2, [sb, 0x3b0]                               |         *((sb + 0x3b0)) = r2;
    0x080557cc ldrh r1, [r6]                                     |         r1 = *(r6);
    0x080557d0 cmp r1, 9                                         |         
    0x080557d4 beq 0x80554b8                                     |         
                                                                 |     }
    0x080557d8 b 0x8055488                                       |     goto label_0;
                                                                 | label_4:
    0x08055ac4 mvn r5, 0x74                                      |     r5 = ~0x74;
    0x08055ac8 b 0x805548c                                       |     goto label_1;
                                                                 | label_5:
    0x08055af4 ldr r3, [sb, 0x390]                               |     r3 = *((sb + 0x390));
    0x08055af8 cmp r3, 0                                         |     
                                                                 |     if (r3 != 0) {
    0x08055afc bne 0x8055488                                     |         goto label_0;
                                                                 |     }
                                                                 | label_3:
    0x08055b00 mvn r5, 0x7c                                      |     r5 = ~0x7c;
    0x08055b04 b 0x805548c                                       |     goto label_1;
                                                                 | }
    ; 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 @ 0x80573fc */
                                                         | #include <stdint.h>
                                                         |  
    ; (fcn) sym.ext4_fc_replay_check_excluded ()         | void ext4_fc_replay_check_excluded (int32_t arg1) {
                                                         |     r0 = arg1;
    0x080573fc push {r4, r5, r6, lr}                     |     
    0x08057400 ldr r1, [r0, 0x1f8]                       |     r1 = *((r0 + 0x1f8));
    0x08057404 ldr r5, [r1, 0x3b0]                       |     r5 = *((r1 + 0x3b0));
    0x08057408 cmp r5, 0                                 |     
                                                         |     if (r5 <= 0) {
    0x0805740c ble 0x8057468                             |         goto label_0;
                                                         |     }
    0x08057410 ldr r1, [r1, 0x3a4]                       |     r1 = *((r1 + 0x3a4));
    0x08057414 mov r0, 0                                 |     r0 = 0;
                                                         |     do {
    0x08057418 ldr ip, [r1, 0x10]                        |         ip = *((r1 + 0x10));
    0x0805741c add r0, r0, 1                             |         r0++;
    0x08057420 cmp ip, 0                                 |         
                                                         |         if (ip != 0) {
    0x08057424 beq 0x805745c                             |             
    0x08057428 ldr ip, [r1, 0x14]                        |             ip = *((r1 + 0x14));
    0x0805742c cmp ip, 0                                 |             
                                                         |             if (ip == 0) {
    0x08057430 beq 0x805745c                             |                 goto label_1;
                                                         |             }
    0x08057434 ldr r4, [r1, 8]                           |             r4 = *((r1 + 8));
    0x08057438 ldr lr, [r1, 0xc]                         |             
    0x0805743c cmp r2, r4                                |             
    0x08057440 sbcs r6, r3, lr                           |             __asm ("sbcs r6, r3, lr");
                                                         |             if (r2 <= r4) {
    0x08057444 blo 0x805745c                             |                 goto label_1;
                                                         |             }
    0x08057448 adds r4, ip, r4                           |             r4 = ip + r4;
    0x0805744c adc lr, lr, ip, asr 31                    |             __asm ("adc lr, lr, ip, asr 31");
    0x08057450 cmp r2, r4                                |             
    0x08057454 sbcs lr, r3, lr                           |             __asm ("sbcs lr, r3, lr");
                                                         |             if (r2 <= r4) {
    0x08057458 blo 0x8057470                             |                 goto label_2;
                                                         |             }
                                                         |         }
                                                         | label_1:
    0x0805745c add r1, r1, 0x18                          |         r1 += 0x18;
    0x08057460 cmp r0, r5                                |         
    0x08057464 bne 0x8057418                             |         
                                                         |     } while (r0 != r5);
                                                         | label_0:
    0x08057468 mov r0, 0                                 |     r0 = 0;
    0x0805746c pop {r4, r5, r6, pc}                      |     
                                                         | label_2:
    0x08057470 mov r0, 1                                 |     r0 = 1;
    0x08057474 pop {r4, r5, r6, pc}                      |     
                                                         | }
    ; 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 @ 0x8057478 */
                                                                     | #include <stdint.h>
                                                                     |  
                                                                     | #define BIT_MASK(t,v) ((t)(-((v)!= 0)))&(((t)-1)>>((sizeof(t)*CHAR_BIT)-(v)))
                                                                     |  
    ; (fcn) sym.ext4_fc_replay_cleanup ()                            | void ext4_fc_replay_cleanup (int32_t arg1, int32_t arg2) {
                                                                     |     r0 = arg1;
                                                                     |     r1 = arg2;
    0x08057478 push {r4, lr}                                         |     
    0x0805747c ldr r4, [r0, 0x1f8]                                   |     r4 = *((r0 + 0x1f8));
    0x08057480 ldrh r3, [r4, 0x78]                                   |     r3 = *((r4 + 0x78));
    0x08057484 ldr r0, [r4, 0x3a4]                                   |     r0 = *((r4 + 0x3a4));
    0x08057488 bic r3, r3, 0x20                                      |     r3 = BIT_MASK (r3, 0x20);
    0x0805748c strh r3, [r4, 0x78]                                   |     *((r4 + 0x78)) = r3;
    0x08057490 stmdaeq r8, {r0, r1, r5, r7, sl, fp, ip, pc}          |     __asm ("stmdaeq r8, {r0, r1, r5, r7, sl, fp, ip, pc}");
    0x08057494 ldr r0, [r4, 0x3b4]                                   |     r0 = *((r4 + 0x3b4));
    0x08057498 pop {r4, lr}                                          |     
    0x0805749c stmdaeq r8, {r0, r1, r5, r7, sl, fp, ip, pc}          |     __asm ("stmdaeq r8, {r0, r1, r5, r7, sl, fp, ip, pc}");
                                                                     | }
    ; 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 @ 0x800084c */
                                                                         | #include <stdint.h>
                                                                         |  
                                                                         | #define BIT_MASK(t,v) ((t)(-((v)!= 0)))&(((t)-1)>>((sizeof(t)*CHAR_BIT)-(v)))
                                                                         |  
    ; (fcn) sym.ext4_should_retry_alloc ()                               | uint32_t ext4_should_retry_alloc (int32_t arg1, int32_t arg2) {
                                                                         |     int32_t var_0h;
                                                                         |     int32_t var_ch;
                                                                         |     r0 = arg1;
                                                                         |     r1 = arg2;
    0x0800084c ldr r0, [r0, 0x1f8]                                       |     r0 = *((r0 + 0x1f8));
    0x08000850 ldr r3, [r0, 0x118]                                       |     r3 = *((r0 + 0x118));
    0x08000854 cmp r3, 0                                                 |     
                                                                         |     if (r3 == 0) {
    0x08000858 beq 0x8000910                                             |         goto label_1;
                                                                         |     }
    0x0800085c str lr, [sp, -4]!                                         |     
    0x08000860 ldr r3, [r1]                                              |     r3 = *(r1);
    0x08000864 sub sp, sp, 0xc                                           |     
    0x08000868 add r3, r3, 1                                             |     r3++;
    0x0800086c str r3, [r1]                                              |     *(r1) = r3;
    0x08000870 cmp r3, 3                                                 |     
                                                                         |     if (r3 > 3) {
    0x08000874 bgt 0x80008b0                                             |         goto label_2;
                                                                         |     }
    0x08000878 ldr r1, [r0, 0x160]                                       |     r1 = *((r0 + 0x160));
    0x0800087c cmp r1, 0                                                 |     
                                                                         |     if (r1 == 0) {
    0x08000880 beq 0x8000898                                             |         goto label_3;
                                                                         |     }
    0x08000884 ldr r0, [r0, 0x118]                                       |     r0 = *((r0 + 0x118));
    0x08000888 stmdaeq r8, {r0, r1, r2, r4, r6, sl, fp, ip, pc}          |     __asm ("stmdaeq r8, {r0, r1, r2, r4, r6, sl, fp, ip, pc}");
    0x0800088c mov r0, 1                                                 |     r0 = 1;
                                                                         |     do {
    0x08000890 add sp, sp, 0xc                                           |         
    0x08000894 pop {pc}                                                  |         
                                                                         | label_3:
    0x08000898 mov r2, 1                                                 |         r2 = 1;
    0x0800089c mov r3, 0                                                 |         r3 = 0;
    0x080008a0 str r1, [sp]                                              |         *(sp) = r1;
    0x080008a4 bl 0x8000070                                              |         ext4_has_free_clusters ();
    0x080008a8 add sp, sp, 0xc                                           |         
    0x080008ac pop {pc}                                                  |         
                                                                         | label_2:
    0x080008b0 mov r3, sp                                                |         r3 = sp;
    0x080008b4 bic r3, r3, 0x1fc0                                        |         r3 = BIT_MASK (r3, 0x1fc0);
    0x080008b8 bic r3, r3, 0x3f                                          |         r3 = BIT_MASK (r3, 0x3f);
    0x080008bc ldr r2, [r3, 4]                                           |         r2 = *((r3 + 4));
    0x080008c0 add r2, r2, 1                                             |         r2++;
    0x080008c4 str r2, [r3, 4]                                           |         *((r3 + 4)) = r2;
    0x080008c8 ldr r2, [r0, 0xd0]                                        |         r2 = *((r0 + 0xd0));
    0x080008cc ldr r1, [r0, 0xd4]                                        |         r1 = *((r0 + 0xd4));
    0x080008d0 adds r2, r2, 1                                            |         r2++;
    0x080008d4 str r2, [r0, 0xd0]                                        |         *((r0 + 0xd0)) = r2;
    0x080008d8 adc r2, r1, 0                                             |         __asm ("adc r2, r1, 0");
    0x080008dc str r2, [r0, 0xd4]                                        |         *((r0 + 0xd4)) = r2;
    0x080008e0 ldr r2, [r3, 4]                                           |         r2 = *((r3 + 4));
    0x080008e4 sub r2, r2, 1                                             |         r2--;
    0x080008e8 str r2, [r3, 4]                                           |         *((r3 + 4)) = r2;
    0x080008ec cmp r2, 0                                                 |         
                                                                         |         if (r2 == 0) {
    0x080008f0 beq 0x80008fc                                             |             goto label_4;
                                                                         |         }
                                                                         | label_0:
    0x080008f4 mov r0, 0                                                 |         r0 = 0;
    0x080008f8 b 0x8000890                                               |         
                                                                         |     } while (1);
                                                                         | label_4:
    0x080008fc ldr r3, [r3]                                              |     r3 = *(r3);
    0x08000900 tst r3, 2                                                 |     
                                                                         |     if ((r3 & 2) == 0) {
    0x08000904 beq 0x80008f4                                             |         goto label_0;
                                                                         |     }
    0x08000908 stmdaeq r8, {r0, r1, r6, sl, fp, ip, pc}                  |     __asm ("stmdaeq r8, {r0, r1, r6, sl, fp, ip, pc}");
    0x0800090c b 0x80008f4                                               |     goto label_0;
                                                                         | label_1:
    0x08000910 mov r0, 0                                                 |     r0 = 0;
    0x08000914 bx lr                                                     |     return r0;
                                                                         | }
    ; 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 @ 0x8012b88 */
                                                                 | #include <stdint.h>
                                                                 |  
    ; (fcn) sym.ext4fs_dirhash ()                                | void ext4fs_dirhash (int32_t arg2) {
                                                                 |     int32_t var_28h;
                                                                 |     int32_t var_28h_2;
                                                                 |     int32_t var_30h;
                                                                 |     int32_t var_30h_2;
                                                                 |     int32_t var_5ch;
                                                                 |     r1 = arg2;
    0x08012b88 push {r4, r5, r6, r7, r8, sb, sl, fp, lr}         |     
    0x08012b8c mov r8, r3                                        |     r8 = r3;
    0x08012b90 mov r7, r2                                        |     r7 = r2;
    0x08012b94 sub sp, sp, 0x5c                                  |     
    0x08012b98 mov ip, r1                                        |     
    0x08012b9c ldr lr, [r8, 0xc]                                 |     
    0x08012ba0 add r5, pc, 0x160                                 |     r5 = pc + 0x160;
    0x08012ba4 ldrd r4, r5, [r5]                                 |     __asm ("ldrd r4, r5, [r5]");
    0x08012ba8 cmp lr, 0                                         |     
    0x08012bac add r3, pc, 0x15c                                 |     r3 = pc + 0x15c;
    0x08012bb0 ldrd r2, r3, [r3]                                 |     __asm ("ldrd r2, r3, [r3]");
    0x08012bb4 strd r4, r5, [sp, 0x28]                           |     __asm ("strd r4, r5, [var_28h]");
    0x08012bb8 strd r2, r3, [sp, 0x30]                           |     __asm ("strd r2, r3, [var_30h]");
                                                                 |     if (lr == 0) {
    0x08012bbc beq 0x8012bdc                                     |         goto label_1;
                                                                 |     }
    0x08012bc0 sub r3, lr, 4                                     |     r3 = lr - 4;
    0x08012bc4 add r1, lr, 0xc                                   |     r1 = lr + 0xc;
                                                                 |     do {
    0x08012bc8 ldr r2, [r3, 4]!                                  |         r2 = *((r3 += 4));
    0x08012bcc cmp r2, 0                                         |         
                                                                 |         if (r2 != 0) {
    0x08012bd0 bne 0x801317c                                     |             goto label_2;
                                                                 |         }
    0x08012bd4 cmp r3, r1                                        |         
    0x08012bd8 bne 0x8012bc8                                     |         
                                                                 |     } while (r3 != r1);
                                                                 |     do {
                                                                 | label_1:
    0x08012bdc ldr r3, [r8, 8]                                   |         r3 = *((r8 + 8));
    0x08012be0 cmp r3, 5                                         |         
                                                                 |         if (r3 > 5) {
                                                                 |             /* switch table (6 cases) at 0x8012bec */
    0x08012be4 ldrls pc, [pc, r3, lsl 2]                         |             offset_0 = r3 << 2;
                                                                 |             pc = *((pc + offset_0));
                                                                 |         }
    0x08012be8 b 0x80131a8                                       |         goto label_3;
                                                                 | label_0:
    0x08012d00 add sp, sp, 0x5c                                  |         
    0x08012d04 pop {r4, r5, r6, r7, r8, sb, sl, fp, pc}          |         
                                                                 | label_2:
    0x0801317c add r4, sp, 0x28                                  |         r4 += var_28h;
    0x08013180 ldr r0, [lr]                                      |         r0 = *(lr);
    0x08013184 ldr r1, [lr, 4]                                   |         r1 = *((lr + 4));
    0x08013188 ldr r2, [lr, 8]                                   |         r2 = *((lr + 8));
    0x0801318c ldr r3, [lr, 0xc]                                 |         r3 = *((lr + 0xc));
    0x08013190 stm r4!, {r0, r1, r2, r3}                         |         *(r4!) = r0;
                                                                 |         *((r4! + 4)) = r1;
                                                                 |         *((r4! + 8)) = r2;
                                                                 |         *((r4! + 12)) = r3;
    0x08013194 b 0x8012bdc                                       |         
                                                                 |     } while (1);
                                                                 | label_3:
    0x080131a8 mov r3, 0                                         |     r3 = 0;
    0x080131ac mvn r0, 0                                         |     r0 = ~0;
    0x080131b0 str r3, [r8]                                      |     *(r8) = r3;
    0x080131b4 b 0x8012d00                                       |     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 @ 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 popen used 1 times ext4.ko