[*] Binary protection state of ext4.ko
No RELRO No Canary found NX disabled REL No RPATH No RUNPATH Symbols
[*] Function strcat tear down of ext4.ko
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/lib/modules/5.10.52-axis8/kernel/fs/ext4/ext4.ko @ 0x8027dd4 */
| #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;
| int32_t var_58h;
| int32_t var_5ch;
| int32_t var_60h;
| int32_t var_70h;
| int32_t var_74h;
| int32_t var_78h;
| int32_t var_78h_2;
| int32_t var_80h;
| int32_t var_84h;
| int32_t var_88h;
| int32_t var_88h_2;
| int32_t var_90h;
| int32_t var_90h_2;
| int32_t var_a4h;
| r0 = arg1;
| r1 = arg2;
0x08027dd4 push {r4, r5, r6, r7, r8, sb, sl, fp, lr} |
0x08027dd8 movw r3, 0x587d |
0x08027ddc movt r3, 0x8004 | r3 = 0x8004587d;
0x08027de0 ldr r6, [r0, 0x10] | r6 = *((r0 + 0x10));
0x08027de4 sub sp, sp, 0xa4 |
0x08027de8 mov r8, r2 | r8 = r2;
0x08027dec cmp r1, r3 |
0x08027df0 ldr r7, [r6, 0x14] | r7 = *((r6 + 0x14));
| if (r1 == r3) {
0x08027df4 beq 0x8028ebc | goto label_22;
| }
0x08027df8 mov r5, r0 | r5 = r0;
| if (r1 > r3) {
0x08027dfc bhi 0x8028018 | goto label_23;
| }
0x08027e00 movw r3, 0x6629 |
0x08027e04 movt r3, 0x4004 | r3 = 0x40046629;
0x08027e08 cmp r1, r3 |
| if (r1 == r3) {
0x08027e0c beq 0x8028e8c | goto label_24;
| }
| if (r1 < r3) {
0x08027e10 bls 0x8027e58 | goto label_25;
| }
0x08027e14 movw r3, 0x6614 |
0x08027e18 movt r3, 0x4010 | r3 = 0x40106614;
0x08027e1c cmp r1, r3 |
| if (r1 != r3) {
0x08027e20 beq 0x8027e48 |
| if (r1 < r3) {
0x08027e24 bls 0x8028500 | goto label_26;
| }
0x08027e28 movw r3, 0x6608 |
0x08027e2c movt r3, 0x4028 | r3 = 0x40286608;
0x08027e30 cmp r1, r3 |
| if (r1 == r3) {
0x08027e34 beq 0x8028d8c | goto label_27;
| }
0x08027e38 movw r3, 0x6685 |
0x08027e3c movt r3, 0x4080 | r3 = 0x40806685;
0x08027e40 cmp r1, r3 |
| if (r1 != r3) {
0x08027e44 bne 0x8028380 | goto label_28;
| }
| }
| label_1:
0x08027e48 mvn r4, 0x5e | r4 = ~0x5e;
| do {
| label_0:
0x08027e4c mov r0, r4 | r0 = r4;
0x08027e50 add sp, sp, 0xa4 |
0x08027e54 pop {r4, r5, r6, r7, r8, sb, sl, fp, pc} |
| label_25:
0x08027e58 movw r3, 0x6628 | r3 = 0x6628;
0x08027e5c cmp r1, r3 |
| if (r1 <= r3) {
0x08027e60 bhi 0x8027f14 |
0x08027e64 movw r3, 0x6608 | r3 = 0x6608;
0x08027e68 cmp r1, r3 |
| if (r1 >= r3) {
0x08027e6c bls 0x8027f04 |
0x08027e70 sub r1, r1, 0x6600 | r1 -= 0x6600;
0x08027e74 sub r1, r1, 9 | r1 -= 9;
0x08027e78 cmp r1, 0x1f |
| if (r1 > 0x1f) {
| /* switch table (32 cases) at 0x8027e84 */
0x08027e7c ldrls pc, [pc, r1, lsl 2] | offset_0 = r1 << 2;
| pc = *((pc + offset_0));
| }
0x08027e80 b 0x8027f04 |
| }
| label_2:
0x08027f04 mvn r4, 0x18 | r4 = ~0x18;
0x08027f08 mov r0, r4 | r0 = r4;
0x08027f0c add sp, sp, 0xa4 |
0x08027f10 pop {r4, r5, r6, r7, r8, sb, sl, fp, pc} |
| }
0x08027f14 movw r3, 0x6604 |
0x08027f18 movt r3, 0x4004 | r3 = 0x40046604;
0x08027f1c cmp r1, r3 |
| if (r1 == r3) {
0x08027f20 beq 0x8028530 | goto label_29;
| }
0x08027f24 movw r3, 0x6607 |
0x08027f28 movt r3, 0x4004 | r3 = 0x40046607;
0x08027f2c cmp r1, r3 |
| if (r1 != r3) {
0x08027f30 bne 0x8028084 | goto label_30;
| }
0x08027f34 mov r0, r7 | r0 = r7;
0x08027f38 stmdaeq r4, {r2, r4, sp} | __asm ("stmdaeq r4, {r2, r4, sp}");
0x08027f3c subs r4, r0, 0 | r4 = r0 - 0;
0x08027f40 bne 0x8027e4c |
| } while (r4 != r0);
0x08027f44 mov r3, sp | r3 = sp;
0x08027f48 mov r0, r8 | r0 = r8;
0x08027f4c bic r3, r3, 0x1fc0 | r3 = BIT_MASK (r3, 0x1fc0);
0x08027f50 bic r3, r3, 0x3f | r3 = BIT_MASK (r3, 0x3f);
0x08027f54 mrc p15, 0, ip, c3, c0, 0 | __asm ("mrc p15, 0, ip, c3, c0, 0");
0x08027f58 ldr r1, [r3, 8] | r1 = *((r3 + 8));
0x08027f5c bic r3, ip, 0xc | r3 = BIT_MASK (ip, 0xc);
0x08027f60 orr r3, r3, 4 | r3 |= 4;
0x08027f64 sub r1, r1, 1 | r1--;
0x08027f68 mcr p15, 0, r3, c3, c0, 0 | __asm ("mcr p15, 0, r3, c3, c0, 0");
0x08027f6c isb sy | __asm ("isb sy");
0x08027f70 stmdaeq r8, {r3, sb, fp, ip, sp, lr} | __asm ("stmdaeq r8, {r3, sb, fp, ip, sp, lr}");
0x08027f74 mcr p15, 0, ip, c3, c0, 0 | __asm ("mcr p15, 0, ip, c3, c0, 0");
0x08027f78 isb sy | __asm ("isb sy");
0x08027f7c cmp r0, 0 |
0x08027f80 mov r6, r2 | r6 = r2;
| if (r0 == 0) {
0x08027f84 mvnne r4, 0xd | r4 = ~0xd;
| }
| if (r0 == 0) {
0x08027f88 bne 0x802800c |
0x08027f8c ldr r3, [r7, 0x1f0] | r3 = *((r7 + 0x1f0));
0x08027f90 ldr r3, [r3, 0x44] | r3 = *((r3 + 0x44));
0x08027f94 ldr r3, [r3, 0x64] | r3 = *((r3 + 0x64));
0x08027f98 tst r3, 0x200 |
| if ((r3 & 0x200) != 0) {
0x08027f9c bne 0x8029198 | goto label_31;
| }
0x08027fa0 mov r0, r5 | r0 = r5;
0x08027fa4 stmdaeq r8, {r2, r3, sb, fp, ip, sp, lr} | __asm ("stmdaeq r8, {r2, r3, sb, fp, ip, sp, lr}");
0x08027fa8 subs r4, r0, 0 | r4 = r0 - 0;
| if (r4 != r0) {
0x08027fac bne 0x802800c | goto label_6;
| }
0x08027fb0 ldr r3, [r7, 0x1f0] | r3 = *((r7 + 0x1f0));
0x08027fb4 mov r2, r6 | r2 = r6;
0x08027fb8 mov r0, r7 | r0 = r7;
0x08027fbc ldr r1, [r3, 0x44] | r1 = *((r3 + 0x44));
0x08027fc0 mov r3, r4 | r3 = r4;
0x08027fc4 stmdaeq r4, {r3, r7, r8, fp, sp} | __asm ("stmdaeq r4, {r3, r7, r8, fp, sp}");
0x08027fc8 ldr r3, [r7, 0x1f0] | r3 = *((r7 + 0x1f0));
0x08027fcc mov r6, r0 | r6 = r0;
0x08027fd0 ldr r0, [r3, 0x118] | r0 = *((r3 + 0x118));
0x08027fd4 cmp r0, 0 |
| if (r0 != 0) {
0x08027fd8 beq 0x8027ffc |
0x08027fdc stmdaeq r8, {r2, r5, r8, fp, ip, sp, lr} | __asm ("stmdaeq r8, {r2, r5, r8, fp, ip, sp, lr}");
0x08027fe0 ldr r3, [r7, 0x1f0] | r3 = *((r7 + 0x1f0));
0x08027fe4 ldr r0, [r3, 0x118] | r0 = *((r3 + 0x118));
0x08027fe8 stmdaeq r8, {r3, r5, r8, fp, ip, sp, lr} | __asm ("stmdaeq r8, {r3, r5, r8, fp, ip, sp, lr}");
0x08027fec ldr r3, [r7, 0x1f0] | r3 = *((r7 + 0x1f0));
0x08027ff0 mov r4, r0 | r4 = r0;
0x08027ff4 ldr r0, [r3, 0x118] | r0 = *((r3 + 0x118));
0x08027ff8 stmdaeq r8, {r2, r3, r5, r8, fp, ip, sp, lr} | __asm ("stmdaeq r8, {r2, r3, r5, r8, fp, ip, sp, lr}");
| }
0x08027ffc cmp r6, 0 |
0x08028000 mov r0, r5 | r0 = r5;
| if (r6 == 0) {
0x08028004 movne r4, r6 | r4 = r6;
| }
0x08028008 stmdaeq r8, {r4, sb, fp, ip, sp, lr} | __asm ("stmdaeq r8, {r4, sb, fp, ip, sp, lr}");
| }
| label_6:
0x0802800c mov r0, r7 | r0 = r7;
0x08028010 stmdaeq r4, {r2, r3, r4, r8, sp} | __asm ("stmdaeq r4, {r2, r3, r4, r8, sp}");
0x08028014 b 0x8027e4c | goto label_0;
| label_23:
0x08028018 movw r3, 0x6616 |
0x0802801c movt r3, 0xc009 | r3 = 0xc0096616;
0x08028020 cmp r1, r3 |
| if (r1 == r3) {
0x08028024 beq 0x8027e48 | goto label_1;
| }
| if (r1 < r3) {
0x08028028 bls 0x8028300 | goto label_32;
| }
0x0802802c movw r3, 0x6619 |
0x08028030 movt r3, 0xc040 | r3 = 0xc0406619;
0x08028034 cmp r1, r3 |
| if (r1 > r3) {
0x08028038 bhi 0x80282cc | goto label_33;
| }
0x0802803c movw r3, 0x6617 |
0x08028040 movt r3, 0xc040 | r3 = 0xc0406617;
0x08028044 cmp r1, r3 |
| if (r1 > r3) {
0x08028048 bhi 0x8027e48 | goto label_1;
| }
0x0802804c movw r3, 0x662a |
0x08028050 movt r3, 0xc020 | r3 = 0xc020662a;
0x08028054 cmp r1, r3 |
| if (r1 == r3) {
0x08028058 beq 0x8028c68 | goto label_34;
| }
0x0802805c movw r3, 0x660f |
0x08028060 movt r3, 0xc028 | r3 = 0xc028660f;
0x08028064 cmp r1, r3 |
| if (r1 != r3) {
0x08028068 bne 0x8028188 | goto label_35;
| }
0x0802806c ldr r3, [r0, 0x24] | r3 = *((r0 + 0x24));
0x08028070 and r3, r3, 3 | r3 &= 3;
0x08028074 cmp r3, 3 |
| if (r3 == 3) {
0x08028078 beq 0x8028a14 | goto label_36;
| }
| label_5:
0x0802807c mvn r4, 8 | r4 = ~8;
0x08028080 b 0x8027e4c | goto label_0;
| label_30:
0x08028084 movw r3, 0x6602 |
0x08028088 movt r3, 0x4004 | r3 = 0x40046602;
0x0802808c cmp r1, r3 |
| if (r1 != r3) {
0x08028090 bne 0x8027f04 | goto label_2;
| }
0x08028094 mov r0, r6 | r0 = r6;
0x08028098 stmdaeq r8, {r2, r4, sb, fp, ip, sp, lr} | __asm ("stmdaeq r8, {r2, r4, sb, fp, ip, sp, lr}");
0x0802809c cmp r0, 0 |
| if (r0 == 0) {
0x080280a0 beq 0x8028b30 | goto label_37;
| }
0x080280a4 mov r3, sp | r3 = sp;
0x080280a8 mov r0, r8 | r0 = r8;
0x080280ac bic r3, r3, 0x1fc0 | r3 = BIT_MASK (r3, 0x1fc0);
0x080280b0 bic r3, r3, 0x3f | r3 = BIT_MASK (r3, 0x3f);
0x080280b4 mrc p15, 0, ip, c3, c0, 0 | __asm ("mrc p15, 0, ip, c3, c0, 0");
0x080280b8 ldr r1, [r3, 8] | r1 = *((r3 + 8));
0x080280bc bic r3, ip, 0xc | r3 = BIT_MASK (ip, 0xc);
0x080280c0 orr r3, r3, 4 | r3 |= 4;
0x080280c4 sub r1, r1, 1 | r1--;
0x080280c8 mcr p15, 0, r3, c3, c0, 0 | __asm ("mcr p15, 0, r3, c3, c0, 0");
0x080280cc isb sy | __asm ("isb sy");
0x080280d0 stmdaeq r8, {r3, sb, fp, ip, sp, lr} | __asm ("stmdaeq r8, {r3, sb, fp, ip, sp, lr}");
0x080280d4 mcr p15, 0, ip, c3, c0, 0 | __asm ("mcr p15, 0, ip, c3, c0, 0");
0x080280d8 isb sy | __asm ("isb sy");
0x080280dc cmp r0, 0 |
| if (r0 != 0) {
0x080280e0 bne 0x80282c4 | goto label_3;
| }
0x080280e4 mov r3, 0x2000 |
0x080280e8 movt r3, 0x8da4 | r3 = 0x-725be000;
0x080280ec and r3, r3, r2 | r3 &= r2;
0x080280f0 cmp r3, 0 |
| if (r3 != 0) {
0x080280f4 bne 0x8027e48 | goto label_1;
| }
0x080280f8 ldrh r3, [r6] | r3 = *(r6);
0x080280fc movw r7, 0xc0ff |
0x08028100 movt r7, 0x624b | r7 = 0x624bc0ff;
0x08028104 and r3, r3, 0xf000 | r3 &= 0xf000;
0x08028108 and r7, r7, r2 | r7 &= r2;
0x0802810c cmp r3, 0x4000 |
| if (r3 == 0x4000) {
0x08028110 beq 0x8028130 | goto label_38;
| }
0x08028114 cmp r3, 0x8000 |
| if (r3 == 0x8000) {
0x08028118 andne r3, r2, 0xc0 | r3 = r2 & 0xc0;
| }
0x0802811c movweq r3, 0xc0ff | __asm ("movweq r3, 0xc0ff");
0x08028120 movteq r3, 0x248 | __asm ("movteq r3, 0x248");
| if (r3 != 0x8000) {
0x08028124 andeq r3, r3, r2 | r3 &= r2;
| }
0x08028128 cmp r7, r3 |
| if (r7 != r3) {
0x0802812c bne 0x8027e48 | goto label_1;
| }
| label_38:
0x08028130 mov r0, r5 | r0 = r5;
0x08028134 stmdaeq r8, {r2, r3, sb, fp, ip, sp, lr} | __asm ("stmdaeq r8, {r2, r3, sb, fp, ip, sp, lr}");
0x08028138 subs r4, r0, 0 | r4 = r0 - 0;
| if (r4 != r0) {
0x0802813c bne 0x8027e4c | goto label_0;
| }
0x08028140 add r8, r6, 0x7c | r8 = r6 + 0x7c;
0x08028144 mov r0, r8 | r0 = r8;
0x08028148 stmdaeq r8, {r2, r6, r7, r8, sb, sl, ip, sp, lr} | __asm ("stmdaeq r8, {r2, r6, r7, r8, sb, sl, ip, sp, lr}");
0x0802814c ldr r1, [r6, 0x1e4] | r1 = *((r6 + 0x1e4));
0x08028150 stmdaeq r8, {r2, r3, r5, r7, fp, ip, sp, lr} | __asm ("stmdaeq r8, {r2, r3, r5, r7, fp, ip, sp, lr}");
0x08028154 stmdaeq r8, {r2, r3, r5, r7, fp, ip, sp, lr} | __asm ("stmdaeq r8, {r2, r3, r5, r7, fp, ip, sp, lr}");
0x08028158 stmdaeq r8, {r4, r7, r8, fp, ip, sp, lr} | __asm ("stmdaeq r8, {r4, r7, r8, fp, ip, sp, lr}");
0x0802815c mov r2, r7 | r2 = r7;
0x08028160 mov r1, r0 | r1 = r0;
0x08028164 mov r0, r6 | r0 = r6;
0x08028168 bl 0x80273c8 | r0 = ext4_ioctl_check_immutable ();
0x0802816c subs r4, r0, 0 | r4 = r0 - 0;
| if (r4 == r0) {
0x08028170 beq 0x8029184 | goto label_39;
| }
| label_14:
0x08028174 mov r0, r8 | r0 = r8;
0x08028178 stmdaeq r8, {r3, r6, r7, r8, sb, sl, ip, sp, lr} | __asm ("stmdaeq r8, {r3, r6, r7, r8, sb, sl, ip, sp, lr}");
0x0802817c mov r0, r5 | r0 = r5;
0x08028180 stmdaeq r8, {r4, sb, fp, ip, sp, lr} | __asm ("stmdaeq r8, {r4, sb, fp, ip, sp, lr}");
0x08028184 b 0x8027e4c | goto label_0;
| label_35:
0x08028188 movw r3, 0x5879 |
0x0802818c movt r3, 0xc018 | r3 = 0xc0185879;
0x08028190 cmp r1, r3 |
| if (r1 != r3) {
0x08028194 bne 0x8027f04 | goto label_2;
| }
0x08028198 ldr r3, [r7, 0x70] | r3 = *((r7 + 0x70));
0x0802819c mov r0, 0x15 | r0 = 0x15;
0x080281a0 ldr r3, [r3, 0x44] | r3 = *((r3 + 0x44));
0x080281a4 ldr r4, [r3, 0x244] | r4 = *((r3 + 0x244));
0x080281a8 stmdaeq r8, {r2, r6, r7, sb, sl, ip, sp, lr} | __asm ("stmdaeq r8, {r2, r6, r7, sb, sl, ip, sp, lr}");
0x080281ac cmp r0, 0 |
| if (r0 == 0) {
0x080281b0 beq 0x8028540 | goto label_8;
| }
0x080281b4 ldr r3, [r4, 0x34] | r3 = *((r4 + 0x34));
0x080281b8 tst r3, 0x100 |
| if ((r3 & 0x100) == 0) {
0x080281bc beq 0x8027e48 | goto label_1;
| }
0x080281c0 ldr r3, [r7, 0x1f0] | r3 = *((r7 + 0x1f0));
0x080281c4 ldr r2, [r3, 0x4c] | r2 = *((r3 + 0x4c));
0x080281c8 tst r2, 0x100 |
| if ((r2 & 0x100) == 0) {
0x080281cc beq 0x80281e4 | goto label_40;
| }
0x080281d0 ldr r3, [r3, 0x44] | r3 = *((r3 + 0x44));
0x080281d4 ldr r3, [r3, 0x5c] | r3 = *((r3 + 0x5c));
0x080281d8 tst r3, 4 |
| if ((r3 & 4) != 0) {
0x080281dc mvnne r4, 0x1d | r4 = ~0x1d;
| goto label_41;
| }
| if ((r3 & 4) != 0) {
| label_41:
0x080281e0 bne 0x8027e4c | goto label_0;
| }
| label_40:
0x080281e4 mov r3, sp | r3 = sp;
0x080281e8 mov r5, 0xe000 |
0x080281ec movt r5, 0xffff | r5 = 0x-2000;
0x080281f0 and r2, r3, r5 | r2 = r3 & r5;
0x080281f4 ldr r3, [r2, 8] | r3 = *((r2 + 8));
0x080281f8 adds r1, r8, 0x18 | r1 = r8 + 0x18;
0x080281fc sbcslo r1, r1, r3 | __asm ("sbcslo r1, r1, r3");
| if (r1 >= r8) {
0x08028200 movlo r3, 0 | r3 = 0;
| }
0x08028204 cmp r3, 0 |
| if (r3 != 0) {
0x08028208 bne 0x80282c4 | goto label_3;
| }
0x0802820c mrc p15, 0, r6, c3, c0, 0 | __asm ("mrc p15, 0, r6, c3, c0, 0");
0x08028210 bic r3, r6, 0xc | r3 = BIT_MASK (r6, 0xc);
0x08028214 orr r3, r3, 4 | r3 |= 4;
0x08028218 mcr p15, 0, r3, c3, c0, 0 | __asm ("mcr p15, 0, r3, c3, c0, 0");
0x0802821c isb sy | __asm ("isb sy");
0x08028220 mov r2, 0x18 | r2 = 0x18;
0x08028224 mov r1, r8 | r1 = r8;
0x08028228 add r0, sp, 0x70 | r0 += var_70h;
0x0802822c stmdaeq r8, {sb, fp, ip, sp, lr} | __asm ("stmdaeq r8, {sb, fp, ip, sp, lr}");
0x08028230 mcr p15, 0, r6, c3, c0, 0 | __asm ("mcr p15, 0, r6, c3, c0, 0");
0x08028234 isb sy | __asm ("isb sy");
0x08028238 cmp r0, 0 |
| if (r0 != 0) {
0x0802823c bne 0x80282c4 | goto label_3;
| }
0x08028240 ldr r2, [r4, 0x398] | r2 = *((r4 + 0x398));
0x08028244 add r1, sp, 0x70 | r1 += var_70h;
0x08028248 ldr r3, [sp, 0x80] | r3 = var_80h;
0x0802824c str r0, [sp, 0x84] | var_84h = r0;
0x08028250 mov r0, r7 | r0 = r7;
0x08028254 cmp r3, r2 |
| if (r3 >= r2) {
0x08028258 movlo r3, r2 | r3 = r2;
| }
0x0802825c str r3, [sp, 0x80] | var_80h = r3;
0x08028260 stmdaeq r3, {r2, r3, r6, r7, sl, fp, sp} | __asm ("stmdaeq r3, {r2, r3, r6, r7, sl, fp, sp}");
0x08028264 subs r4, r0, 0 | r4 = r0 - 0;
| if (r4 < r0) {
0x08028268 blt 0x8027e4c | goto label_0;
| }
0x0802826c mov r3, sp | r3 = sp;
0x08028270 and r5, r5, r3 | r5 &= r3;
0x08028274 ldr r3, [r5, 8] | r3 = *((r5 + 8));
0x08028278 adds r2, r8, 0x18 | r2 = r8 + 0x18;
0x0802827c sbcslo r2, r2, r3 | __asm ("sbcslo r2, r2, r3");
| if (r2 >= r8) {
0x08028280 movlo r3, 0 | r3 = 0;
| }
0x08028284 cmp r3, 0 |
| if (r3 != 0) {
0x08028288 bne 0x80282c4 | goto label_3;
| }
0x0802828c mrc p15, 0, r5, c3, c0, 0 | __asm ("mrc p15, 0, r5, c3, c0, 0");
0x08028290 bic r3, r5, 0xc | r3 = BIT_MASK (r5, 0xc);
0x08028294 orr r3, r3, 4 | r3 |= 4;
0x08028298 mcr p15, 0, r3, c3, c0, 0 | __asm ("mcr p15, 0, r3, c3, c0, 0");
0x0802829c isb sy | __asm ("isb sy");
0x080282a0 mov r2, 0x18 | r2 = 0x18;
| label_9:
0x080282a4 add r1, sp, 0x70 | r1 += var_70h;
0x080282a8 mov r0, r8 | r0 = r8;
0x080282ac stmdaeq r8, {r2, r3, r4, r5, r6, r7, r8, fp, ip, sp, lr} | __asm ("stmdaeq r8, {r2, r3, r4, r5, r6, r7, r8, fp, ip, sp, lr}");
0x080282b0 mov r4, r0 | r4 = r0;
0x080282b4 mcr p15, 0, r5, c3, c0, 0 | __asm ("mcr p15, 0, r5, c3, c0, 0");
0x080282b8 isb sy | __asm ("isb sy");
0x080282bc cmp r0, 0 |
| if (r0 == 0) {
0x080282c0 beq 0x8027e4c | goto label_0;
| }
| label_3:
0x080282c4 mvn r4, 0xd | r4 = ~0xd;
0x080282c8 b 0x8027e4c | goto label_0;
| label_33:
0x080282cc movw r3, 0x661a |
0x080282d0 movt r3, 0xc080 | r3 = 0xc080661a;
0x080282d4 cmp r1, r3 |
| if (r1 == r3) {
0x080282d8 beq 0x8027e48 | goto label_1;
| }
0x080282dc movw r3, 0x583b |
0x080282e0 movt r3, 0xc0c0 | r3 = 0xc0c0583b;
0x080282e4 cmp r1, r3 |
| if (r1 != r3) {
0x080282e8 bne 0x802833c | goto label_42;
| }
0x080282ec mov r1, r2 | r1 = r2;
0x080282f0 mov r0, r7 | r0 = r7;
0x080282f4 add sp, sp, 0xa4 |
0x080282f8 pop {r4, r5, r6, r7, r8, sb, sl, fp, lr} |
0x080282fc b 0x8027a78 | void (*0x8027a78)() ();
| label_32:
0x08028300 movw r3, 0x661b |
0x08028304 movt r3, 0x8010 | r3 = 0x8010661b;
0x08028308 cmp r1, r3 |
| if (r1 == r3) {
0x0802830c beq 0x8027e48 | goto label_1;
| }
| if (r1 >= r3) {
0x08028310 bls 0x8028354 |
0x08028314 movw r3, 0x581f |
0x08028318 movt r3, 0x801c | r3 = 0x801c581f;
0x0802831c cmp r1, r3 |
| if (r1 == r3) {
0x08028320 beq 0x8028f98 | goto label_43;
| }
0x08028324 movw r3, 0x6686 |
0x08028328 movt r3, 0xc004 | r3 = 0xc0046686;
0x0802832c cmp r1, r3 |
| if (r1 == r3) {
0x08028330 mvnne r4, 0x18 | r4 = ~0x18;
| }
| if (r1 != r3) {
0x08028334 mvneq r4, 0x5e | r4 = ~0x5e;
| }
0x08028338 b 0x8027e4c | goto label_0;
| label_42:
0x0802833c movw r3, 0x6617 |
0x08028340 movt r3, 0xc050 | r3 = 0xc0506617;
0x08028344 cmp r1, r3 |
| if (r1 == r3) {
0x08028348 mvnne r4, 0x18 | r4 = ~0x18;
| }
| if (r1 != r3) {
0x0802834c mvneq r4, 0x5e | r4 = ~0x5e;
| }
0x08028350 b 0x8027e4c | goto label_0;
| }
0x08028354 movw r3, 0x7601 |
0x08028358 movt r3, 0x8004 | r3 = 0x80047601;
0x0802835c cmp r1, r3 |
| if (r1 == r3) {
0x08028360 beq 0x80285c8 | goto label_44;
| }
| if (r1 < r3) {
0x08028364 bls 0x8028548 | goto label_45;
| }
0x08028368 movw r3, 0x6613 |
0x0802836c movt r3, 0x800c | r3 = 0x800c6613;
0x08028370 cmp r1, r3 |
| if (r1 == r3) {
0x08028374 mvnne r4, 0x18 | r4 = ~0x18;
| }
| if (r1 != r3) {
0x08028378 mvneq r4, 0x5e | r4 = ~0x5e;
| }
0x0802837c b 0x8027e4c | goto label_0;
| label_28:
0x08028380 movw r3, 0x5820 |
0x08028384 movt r3, 0x401c | r3 = 0x401c5820;
0x08028388 cmp r1, r3 |
| if (r1 != r3) {
0x0802838c bne 0x8027f04 | goto label_2;
| }
0x08028390 mov r3, sp | r3 = sp;
0x08028394 bic r2, r3, 0x1fc0 | r2 = BIT_MASK (r3, 0x1fc0);
0x08028398 bic r2, r2, 0x3f | r2 = BIT_MASK (r2, 0x3f);
0x0802839c ldr r3, [r2, 8] | r3 = *((r2 + 8));
0x080283a0 adds r1, r8, 0x1c | r1 = r8 + 0x1c;
0x080283a4 sbcslo r1, r1, r3 | __asm ("sbcslo r1, r1, r3");
| if (r1 >= r8) {
0x080283a8 movlo r3, 0 | r3 = 0;
| }
0x080283ac cmp r3, 0 |
| if (r3 != 0) {
0x080283b0 bne 0x80282c4 | goto label_3;
| }
0x080283b4 mrc p15, 0, r4, c3, c0, 0 | __asm ("mrc p15, 0, r4, c3, c0, 0");
0x080283b8 bic r3, r4, 0xc | r3 = BIT_MASK (r4, 0xc);
0x080283bc orr r3, r3, 4 | r3 |= 4;
0x080283c0 mcr p15, 0, r3, c3, c0, 0 | __asm ("mcr p15, 0, r3, c3, c0, 0");
0x080283c4 isb sy | __asm ("isb sy");
0x080283c8 add r7, sp, 0x54 | r7 += var_54h;
0x080283cc mov r1, r8 | r1 = r8;
0x080283d0 mov r0, r7 | r0 = r7;
0x080283d4 mov r2, 0x1c | r2 = 0x1c;
0x080283d8 stmdaeq r8, {sb, fp, ip, sp, lr} | __asm ("stmdaeq r8, {sb, fp, ip, sp, lr}");
0x080283dc mcr p15, 0, r4, c3, c0, 0 | __asm ("mcr p15, 0, r4, c3, c0, 0");
0x080283e0 isb sy | __asm ("isb sy");
0x080283e4 cmp r0, 0 |
| if (r0 != 0) {
0x080283e8 bne 0x80282c4 | goto label_3;
| }
0x080283ec mov r0, r6 | r0 = r6;
0x080283f0 stmdaeq r8, {r2, r4, sb, fp, ip, sp, lr} | __asm ("stmdaeq r8, {r2, r4, sb, fp, ip, sp, lr}");
0x080283f4 cmp r0, 0 |
| if (r0 == 0) {
0x080283f8 beq 0x8028b30 | goto label_37;
| }
0x080283fc ldr r3, [sp, 0x54] | r3 = var_54h;
0x08028400 bic r2, r3, 0x8200 | r2 = BIT_MASK (r3, 0x8200);
0x08028404 bic r2, r2, 0xf8 | r2 = BIT_MASK (r2, 0xf8);
0x08028408 cmp r2, 0 |
| if (r2 != 0) {
0x0802840c bne 0x8027e48 | goto label_1;
| }
0x08028410 ubfx r8, r3, 5, 1 | r8 = (r3 >> 5) & ((1 << 1) - 1);
0x08028414 tst r3, 8 |
0x08028418 lsl r8, r8, 3 | r8 <<= 3;
| if ((r3 & 8) == 0) {
0x0802841c orrne r8, r8, 0x10 | r8 |= 0x10;
| }
0x08028420 tst r3, 0x10 |
| if ((r3 & 0x10) == 0) {
0x08028424 orrne r8, r8, 0x20 | r8 |= 0x20;
| }
0x08028428 tst r3, 0x80 |
| if ((r3 & 0x80) == 0) {
0x0802842c orrne r8, r8, 0x40 | r8 |= 0x40;
| }
0x08028430 tst r3, 0x40 |
| if ((r3 & 0x40) == 0) {
0x08028434 orrne r8, r8, 0x80 | r8 |= 0x80;
| }
0x08028438 tst r3, 0x200 |
| if ((r3 & 0x200) == 0) {
0x0802843c orrne r8, r8, 0x20000000 | r8 |= 0x20000000;
| }
0x08028440 tst r3, 0x8000 |
0x08028444 ldrh r3, [r6] | r3 = *(r6);
| if ((r3 & 0x8000) == 0) {
0x08028448 orrne r8, r8, 0x2000000 | r8 |= 0x2000000;
| }
0x0802844c and r3, r3, 0xf000 | r3 &= 0xf000;
0x08028450 cmp r3, 0x4000 |
| if (r3 == 0x4000) {
0x08028454 beq 0x8028470 | goto label_46;
| }
0x08028458 cmp r3, 0x8000 |
0x0802845c biceq r3, r8, 0x60000000 | __asm ("biceq r3, r8, 0x60000000");
| if (r3 == 0x8000) {
0x08028460 andne r3, r8, 0xc0 | r3 = r8 & 0xc0;
| }
0x08028464 biceq r3, r3, 0x30000 | __asm ("biceq r3, r3, 0x30000");
0x08028468 cmp r3, r8 |
| if (r3 != r8) {
0x0802846c bne 0x8027e48 | goto label_1;
| }
| label_46:
0x08028470 mov r0, r5 | r0 = r5;
0x08028474 stmdaeq r8, {r2, r3, sb, fp, ip, sp, lr} | __asm ("stmdaeq r8, {r2, r3, sb, fp, ip, sp, lr}");
0x08028478 subs r4, r0, 0 | r4 = r0 - 0;
| if (r4 != r0) {
0x0802847c bne 0x8027e4c | goto label_0;
| }
0x08028480 add sb, r6, 0x7c | sb = r6 + 0x7c;
0x08028484 mov r0, sb | r0 = sb;
0x08028488 stmdaeq r8, {r2, r6, r7, r8, sb, sl, ip, sp, lr} | __asm ("stmdaeq r8, {r2, r6, r7, r8, sb, sl, ip, sp, lr}");
0x0802848c mov r0, r6 | r0 = r6;
0x08028490 add r1, sp, 0x70 | r1 += var_70h;
0x08028494 bl 0x8027334 | ext4_fill_fsxattr ();
0x08028498 mov r2, r7 | r2 = r7;
0x0802849c add r1, sp, 0x70 | r1 += var_70h;
0x080284a0 mov r0, r6 | r0 = r6;
0x080284a4 stmdaeq r8, {r3, r4, sb, fp, ip, sp, lr} | __asm ("stmdaeq r8, {r3, r4, sb, fp, ip, sp, lr}");
0x080284a8 subs r4, r0, 0 | r4 = r0 - 0;
| if (r4 == r0) {
0x080284ac bne 0x80284f4 |
0x080284b0 ldr r3, [r6, -0x6c] | r3 = *((r6 - 0x6c));
0x080284b4 mov r0, r6 | r0 = r6;
0x080284b8 ldr r1, [sp, 0x60] | r1 = var_60h;
0x080284bc bic r3, r3, 0x22000000 | r3 = BIT_MASK (r3, 0x22000000);
0x080284c0 bic r3, r3, 0xf8 | r3 = BIT_MASK (r3, 0xf8);
0x080284c4 orr r2, r3, r8 | r2 = r3 | r8;
0x080284c8 bl 0x80273c8 | r0 = ext4_ioctl_check_immutable ();
0x080284cc subs r4, r0, 0 | r4 = r0 - 0;
| if (r4 != r0) {
0x080284d0 bne 0x80284f4 | goto label_12;
| }
0x080284d4 mov r1, r2 | r1 = r2;
0x080284d8 mov r0, r6 | r0 = r6;
0x080284dc bl 0x8027424 | r0 = ext4_ioctl_setflags ();
0x080284e0 subs r4, r0, 0 | r4 = r0 - 0;
| if (r4 != r0) {
0x080284e4 bne 0x80284f4 | goto label_12;
| }
0x080284e8 ldr r3, [sp, 0x60] | r3 = var_60h;
0x080284ec cmp r3, 0 |
| if (r3 != 0) {
0x080284f0 mvnne r4, 0x5e | r4 = ~0x5e;
| goto label_12;
| }
| }
| label_12:
0x080284f4 mov r0, sb | r0 = sb;
0x080284f8 stmdaeq r8, {r3, r6, r7, r8, sb, sl, ip, sp, lr} | __asm ("stmdaeq r8, {r3, r6, r7, r8, sb, sl, ip, sp, lr}");
0x080284fc b 0x8028938 | goto label_11;
| label_26:
0x08028500 movw r3, 0x6610 |
0x08028504 movt r3, 0x4008 | r3 = 0x40086610;
0x08028508 cmp r1, r3 |
| if (r1 == r3) {
0x0802850c beq 0x8028b38 | goto label_47;
| }
0x08028510 movw r3, 0x6615 |
0x08028514 movt r3, 0x400c | r3 = 0x400c6615;
0x08028518 cmp r1, r3 |
| if (r1 == r3) {
0x0802851c beq 0x8027e48 | goto label_1;
| }
0x08028520 movw r3, 0x7602 |
0x08028524 movt r3, 0x4004 | r3 = 0x40047602;
0x08028528 cmp r1, r3 |
| if (r1 != r3) {
0x0802852c bne 0x8027f04 | goto label_2;
| }
| label_29:
0x08028530 mov r0, r6 | r0 = r6;
0x08028534 stmdaeq r8, {r2, r4, sb, fp, ip, sp, lr} | __asm ("stmdaeq r8, {r2, r4, sb, fp, ip, sp, lr}");
0x08028538 cmp r0, 0 |
| if (r0 != 0) {
0x0802853c bne 0x80289d0 | goto label_48;
| }
| label_8:
0x08028540 mvn r4, 0 | r4 = ~0;
0x08028544 b 0x8027e4c | goto label_0;
| label_45:
0x08028548 movw r3, 0x6601 |
0x0802854c movt r3, 0x8004 | r3 = 0x80046601;
0x08028550 cmp r1, r3 |
| if (r1 == r3) {
0x08028554 bne 0x80285b8 |
0x08028558 ldrh r3, [r6] | r3 = *(r6);
0x0802855c movw r2, 0xdfff | r2 = 0xdfff;
0x08028560 ldr r1, [r6, -0x6c] | r1 = *((r6 - 0x6c));
0x08028564 and r3, r3, 0xf000 | r3 &= 0xf000;
0x08028568 cmp r3, 0x8000 |
0x0802856c movtne r2, 0x725b | __asm ("movtne r2, 0x725b");
0x08028570 movteq r2, 0x525b | __asm ("movteq r2, 0x525b");
0x08028574 and r2, r2, r1 | r2 &= r1;
| label_7:
0x08028578 mov r3, sp | r3 = sp;
0x0802857c bic r3, r3, 0x1fc0 | r3 = BIT_MASK (r3, 0x1fc0);
| label_4:
0x08028580 bic r3, r3, 0x3f | r3 = BIT_MASK (r3, 0x3f);
0x08028584 mrc p15, 0, r5, c3, c0, 0 | __asm ("mrc p15, 0, r5, c3, c0, 0");
0x08028588 bic r1, r5, 0xc | r1 = BIT_MASK (r5, 0xc);
0x0802858c orr r1, r1, 4 | r1 |= 4;
0x08028590 mcr p15, 0, r1, c3, c0, 0 | __asm ("mcr p15, 0, r1, c3, c0, 0");
0x08028594 isb sy | __asm ("isb sy");
0x08028598 ldr r1, [r3, 8] | r1 = *((r3 + 8));
0x0802859c mov r0, r8 | r0 = r8;
0x080285a0 sub r1, r1, 1 | r1--;
0x080285a4 stmdaeq r8, {r2, r3, r4, sb, fp, ip, sp, lr} | __asm ("stmdaeq r8, {r2, r3, r4, sb, fp, ip, sp, lr}");
0x080285a8 mov r4, r0 | r4 = r0;
0x080285ac mcr p15, 0, r5, c3, c0, 0 | __asm ("mcr p15, 0, r5, c3, c0, 0");
0x080285b0 isb sy | __asm ("isb sy");
0x080285b4 b 0x8027e4c | goto label_0;
| }
0x080285b8 movw r3, 0x6603 |
0x080285bc movt r3, 0x8004 | r3 = 0x80046603;
0x080285c0 cmp r1, r3 |
| if (r1 != r3) {
0x080285c4 bne 0x8027f04 | goto label_2;
| }
| label_44:
0x080285c8 mov r3, sp | r3 = sp;
0x080285cc ldr r2, [r6, 0x154] | r2 = *((r6 + 0x154));
0x080285d0 bic r3, r3, 0x1fc0 | r3 = BIT_MASK (r3, 0x1fc0);
0x080285d4 b 0x8028580 | goto label_4;
| label_11:
0x08028938 mov r0, r5 | r0 = r5;
0x0802893c stmdaeq r8, {r4, sb, fp, ip, sp, lr} | __asm ("stmdaeq r8, {r4, sb, fp, ip, sp, lr}");
0x08028940 b 0x8027e4c | goto label_0;
| label_48:
0x080289d0 ldr r4, [r6, 0x14] | r4 = *((r6 + 0x14));
0x080289d4 ldr r3, [r4, 0x1f0] | r3 = *((r4 + 0x1f0));
0x080289d8 ldr r2, [r3, 0x44] | r2 = *((r3 + 0x44));
0x080289dc ldr r2, [r2, 0x64] | r2 = *((r2 + 0x64));
0x080289e0 tst r2, 0x400 |
| if ((r2 & 0x400) == 0) {
0x080289e4 beq 0x802903c | goto label_49;
| }
0x080289e8 ldr r3, [r3, 0x220] | r3 = *((r3 + 0x220));
0x080289ec cmp r3, 0 |
| if (r3 == 0) {
0x080289f0 beq 0x8028fec | goto label_50;
| }
| label_10:
0x080289f4 ldr r1, [pc, 0xaa4] | r1 = "ext4_validate_block_bitmap";
0x080289f8 mov r0, r7 | r0 = r7;
0x080289fc stmdaeq r5, {r2, r3, sb, fp, sp, pc} | __asm ("stmdaeq r5, {r2, r3, sb, fp, sp, pc}");
0x08028a00 stmdaeq r5, {r2, r3, sb, fp, sp, pc} | __asm ("stmdaeq r5, {r2, r3, sb, fp, sp, pc}");
0x08028a04 mov r2, 0x374 | r2 = 0x374;
0x08028a08 mvn r4, 0x18 | r4 = ~0x18;
0x08028a0c stmdaeq r4, {r3, r4, r5, r6, r7, r8, sb, fp, ip, sp, lr} | __asm ("stmdaeq r4, {r3, r4, r5, r6, r7, r8, sb, fp, ip, sp, lr}");
0x08028a10 b 0x8027e4c | goto label_0;
| label_36:
0x08028a14 mov r3, sp | r3 = sp;
0x08028a18 bic r2, r3, 0x1fc0 | r2 = BIT_MASK (r3, 0x1fc0);
0x08028a1c bic r2, r2, 0x3f | r2 = BIT_MASK (r2, 0x3f);
0x08028a20 ldr r3, [r2, 8] | r3 = *((r2 + 8));
0x08028a24 adds r1, r8, 0x28 | r1 = r8 + 0x28;
0x08028a28 sbcslo r1, r1, r3 | __asm ("sbcslo r1, r1, r3");
| if (r1 >= r8) {
0x08028a2c movlo r3, 0 | r3 = 0;
| }
0x08028a30 cmp r3, 0 |
| if (r3 != 0) {
0x08028a34 bne 0x80282c4 | goto label_3;
| }
0x08028a38 mrc p15, 0, r4, c3, c0, 0 | __asm ("mrc p15, 0, r4, c3, c0, 0");
0x08028a3c bic r3, r4, 0xc | r3 = BIT_MASK (r4, 0xc);
0x08028a40 orr r3, r3, 4 | r3 |= 4;
0x08028a44 mcr p15, 0, r3, c3, c0, 0 | __asm ("mcr p15, 0, r3, c3, c0, 0");
0x08028a48 isb sy | __asm ("isb sy");
0x08028a4c mov r2, 0x28 | r2 = 0x28;
0x08028a50 mov r1, r8 | r1 = r8;
0x08028a54 add r0, sp, 0x70 | r0 += var_70h;
0x08028a58 stmdaeq r8, {sb, fp, ip, sp, lr} | __asm ("stmdaeq r8, {sb, fp, ip, sp, lr}");
0x08028a5c mcr p15, 0, r4, c3, c0, 0 | __asm ("mcr p15, 0, r4, c3, c0, 0");
0x08028a60 isb sy | __asm ("isb sy");
0x08028a64 cmp r0, 0 |
| if (r0 != 0) {
0x08028a68 bne 0x80282c4 | goto label_3;
| }
0x08028a6c ldr r0, [sp, 0x74] | r0 = var_74h;
0x08028a70 mov r2, 0 | r2 = 0;
0x08028a74 mov r3, 0 | r3 = 0;
0x08028a78 strd r2, r3, [sp, 0x90] | __asm ("strd r2, r3, [var_90h]");
0x08028a7c stmdaeq r8, {r3, r5, sb, fp, ip, sp, lr} | __asm ("stmdaeq r8, {r3, r5, sb, fp, ip, sp, lr}");
0x08028a80 mov r6, r0 | r6 = r0;
0x08028a84 bics sb, r0, 3 | __asm ("bics sb, r0, 3");
| if (r0 == 0) {
0x08028a88 beq 0x802807c | goto label_5;
| }
0x08028a8c ldr r3, [sb, 0x24] | r3 = *((sb + 0x24));
0x08028a90 tst r3, 2 |
| if ((r3 & 2) != 0) {
0x08028a94 mvneq r4, 8 | r4 = ~8;
| }
| if ((r3 & 2) != 0) {
0x08028a98 beq 0x8028b1c |
0x08028a9c ldr r3, [r7, 0x1f0] | r3 = *((r7 + 0x1f0));
0x08028aa0 ldr r3, [r3, 0x44] | r3 = *((r3 + 0x44));
0x08028aa4 ldr r3, [r3, 0x64] | r3 = *((r3 + 0x64));
0x08028aa8 tst r3, 0x200 |
| if ((r3 & 0x200) != 0) {
0x08028aac bne 0x8029298 | goto label_51;
| }
0x08028ab0 mov r0, r5 | r0 = r5;
0x08028ab4 stmdaeq r8, {r2, r3, sb, fp, ip, sp, lr} | __asm ("stmdaeq r8, {r2, r3, sb, fp, ip, sp, lr}");
0x08028ab8 subs r4, r0, 0 | r4 = r0 - 0;
| if (r4 != r0) {
0x08028abc bne 0x8028b1c | goto label_18;
| }
0x08028ac0 add r3, sp, 0x90 | r3 += var_90h;
0x08028ac4 str r3, [sp, 0x10] | var_10h = r3;
0x08028ac8 ldrd r2, r3, [sp, 0x88] | __asm ("ldrd r2, r3, [var_88h]");
0x08028acc strd r2, r3, [sp, 8] | __asm ("strd r2, r3, [var_8h]");
0x08028ad0 ldrd r2, r3, [sp, 0x80] | __asm ("ldrd r2, r3, [var_80h]");
0x08028ad4 mov r1, sb | r1 = sb;
0x08028ad8 strd r2, r3, [sp] | __asm ("strd r2, r3, [sp]");
0x08028adc mov r0, r5 | r0 = r5;
0x08028ae0 ldrd r2, r3, [sp, 0x78] | __asm ("ldrd r2, r3, [var_78h]");
0x08028ae4 stmdaeq r3, {r2, r6, r7, sb, sl, ip, lr} | __asm ("stmdaeq r3, {r2, r6, r7, sb, sl, ip, lr}");
0x08028ae8 mov r4, r0 | r4 = r0;
0x08028aec mov r0, r5 | r0 = r5;
0x08028af0 stmdaeq r8, {r4, sb, fp, ip, sp, lr} | __asm ("stmdaeq r8, {r4, sb, fp, ip, sp, lr}");
0x08028af4 mov r3, sp | r3 = sp;
0x08028af8 bic r2, r3, 0x1fc0 | r2 = BIT_MASK (r3, 0x1fc0);
0x08028afc bic r2, r2, 0x3f | r2 = BIT_MASK (r2, 0x3f);
0x08028b00 ldr r3, [r2, 8] | r3 = *((r2 + 8));
0x08028b04 adds r1, r8, 0x28 | r1 = r8 + 0x28;
0x08028b08 sbcslo r1, r1, r3 | __asm ("sbcslo r1, r1, r3");
| if (r1 >= r8) {
0x08028b0c movlo r3, 0 | r3 = 0;
| }
0x08028b10 cmp r3, 0 |
| if (r3 == 0) {
0x08028b14 beq 0x8029320 | goto label_52;
| }
| label_20:
0x08028b18 mvn r4, 0xd | r4 = ~0xd;
| }
| label_18:
0x08028b1c tst r6, 1 |
| if ((r6 & 1) == 0) {
0x08028b20 beq 0x8027e4c | goto label_0;
| }
0x08028b24 mov r0, sb | r0 = sb;
0x08028b28 stmdaeq r8, {r2, r3, r5, sb, fp, ip, sp, lr} | __asm ("stmdaeq r8, {r2, r3, r5, sb, fp, ip, sp, lr}");
0x08028b2c b 0x8027e4c | goto label_0;
| label_37:
0x08028b30 mvn r4, 0xc | r4 = ~0xc;
0x08028b34 b 0x8027e4c | goto label_0;
| label_47:
0x08028b38 mov r3, sp | r3 = sp;
0x08028b3c bic r2, r3, 0x1fc0 | r2 = BIT_MASK (r3, 0x1fc0);
0x08028b40 ldr r3, [r7, 0x1f0] | r3 = *((r7 + 0x1f0));
0x08028b44 bic r2, r2, 0x3f | r2 = BIT_MASK (r2, 0x3f);
0x08028b48 ldr r6, [r3, 0x20] | r6 = *((r3 + 0x20));
0x08028b4c ldr r3, [r2, 8] | r3 = *((r2 + 8));
0x08028b50 adds r1, r8, 8 | r1 = r8 + 8;
0x08028b54 sbcslo r1, r1, r3 | __asm ("sbcslo r1, r1, r3");
| if (r1 >= r8) {
0x08028b58 movlo r3, 0 | r3 = 0;
| }
0x08028b5c cmp r3, 0 |
| if (r3 != 0) {
0x08028b60 bne 0x80282c4 | goto label_3;
| }
0x08028b64 mrc p15, 0, r4, c3, c0, 0 | __asm ("mrc p15, 0, r4, c3, c0, 0");
0x08028b68 bic r3, r4, 0xc | r3 = BIT_MASK (r4, 0xc);
0x08028b6c orr r3, r3, 4 | r3 |= 4;
0x08028b70 mcr p15, 0, r3, c3, c0, 0 | __asm ("mcr p15, 0, r3, c3, c0, 0");
0x08028b74 isb sy | __asm ("isb sy");
0x08028b78 mov r2, 8 | r2 = 8;
0x08028b7c mov r1, r8 | r1 = r8;
0x08028b80 add r0, sp, 0x70 | r0 += var_70h;
0x08028b84 stmdaeq r8, {sb, fp, ip, sp, lr} | __asm ("stmdaeq r8, {sb, fp, ip, sp, lr}");
0x08028b88 mcr p15, 0, r4, c3, c0, 0 | __asm ("mcr p15, 0, r4, c3, c0, 0");
0x08028b8c isb sy | __asm ("isb sy");
0x08028b90 cmp r0, 0 |
| if (r0 != 0) {
0x08028b94 bne 0x80282c4 | goto label_3;
| }
0x08028b98 mov r0, r7 | r0 = r7;
0x08028b9c stmdaeq r4, {r2, r4, sp} | __asm ("stmdaeq r4, {r2, r4, sp}");
0x08028ba0 subs r4, r0, 0 | r4 = r0 - 0;
| if (r4 != r0) {
0x08028ba4 bne 0x8027e4c | goto label_0;
| }
0x08028ba8 mov r0, r5 | r0 = r5;
0x08028bac stmdaeq r8, {r2, r3, sb, fp, ip, sp, lr} | __asm ("stmdaeq r8, {r2, r3, sb, fp, ip, sp, lr}");
0x08028bb0 subs r4, r0, 0 | r4 = r0 - 0;
| if (r4 != r0) {
0x08028bb4 bne 0x802800c | goto label_6;
| }
0x08028bb8 ldrd r2, r3, [sp, 0x70] | __asm ("ldrd r2, r3, [var_70h]");
0x08028bbc mov r0, r7 | r0 = r7;
0x08028bc0 stmdaeq r4, {r2, r4, r6, r7, r8, sb, fp, sp} | __asm ("stmdaeq r4, {r2, r4, r6, r7, r8, sb, fp, sp}");
0x08028bc4 ldr r3, [r7, 0x1f0] | r3 = *((r7 + 0x1f0));
0x08028bc8 mov sb, r0 | sb = r0;
0x08028bcc ldr r3, [r3, 0x118] | r3 = *((r3 + 0x118));
0x08028bd0 cmp r3, 0 |
| if (r3 == 0) {
0x08028bd4 beq 0x80291e8 | goto label_53;
| }
0x08028bd8 mov r1, 5 | r1 = 5;
0x08028bdc mov r0, r7 | r0 = r7;
0x08028be0 stmdaeq r5, {r4, r5, r7, r8, ip, lr} | __asm ("stmdaeq r5, {r4, r5, r7, r8, ip, lr}");
0x08028be4 ldr r3, [r7, 0x1f0] | r3 = *((r7 + 0x1f0));
0x08028be8 ldr r0, [r3, 0x118] | r0 = *((r3 + 0x118));
0x08028bec stmdaeq r8, {r2, r5, r8, fp, ip, sp, lr} | __asm ("stmdaeq r8, {r2, r5, r8, fp, ip, sp, lr}");
0x08028bf0 ldr r3, [r7, 0x1f0] | r3 = *((r7 + 0x1f0));
0x08028bf4 ldr r0, [r3, 0x118] | r0 = *((r3 + 0x118));
0x08028bf8 stmdaeq r8, {r3, r5, r8, fp, ip, sp, lr} | __asm ("stmdaeq r8, {r3, r5, r8, fp, ip, sp, lr}");
0x08028bfc ldr r3, [r7, 0x1f0] | r3 = *((r7 + 0x1f0));
0x08028c00 mov r8, r0 | r8 = r0;
0x08028c04 ldr r0, [r3, 0x118] | r0 = *((r3 + 0x118));
0x08028c08 stmdaeq r8, {r2, r3, r5, r8, fp, ip, sp, lr} | __asm ("stmdaeq r8, {r2, r3, r5, r8, fp, ip, sp, lr}");
0x08028c0c cmp sb, 0 |
| if (sb != 0) {
0x08028c10 bne 0x80291d8 | goto label_54;
| }
0x08028c14 mov r0, r5 | r0 = r5;
0x08028c18 stmdaeq r8, {r4, sb, fp, ip, sp, lr} | __asm ("stmdaeq r8, {r4, sb, fp, ip, sp, lr}");
0x08028c1c cmp r8, 0 |
| if (r8 != 0) {
0x08028c20 movne r4, r8 | r4 = r8;
| goto label_55;
| }
| if (r8 != 0) {
| label_55:
0x08028c24 bne 0x802800c | goto label_6;
| }
| label_16:
0x08028c28 ldr r3, [r7, 0x1f0] | r3 = *((r7 + 0x1f0));
0x08028c2c ldr r2, [r3, 0x20] | r2 = *((r3 + 0x20));
0x08028c30 cmp r2, r6 |
| if (r2 < r6) {
0x08028c34 bls 0x802800c | goto label_6;
| }
0x08028c38 ldr r2, [r3, 0x44] | r2 = *((r3 + 0x44));
0x08028c3c ldr r2, [r2, 0x64] | r2 = *((r2 + 0x64));
0x08028c40 tst r2, 0x10 |
| if ((r2 & 0x10) == 0) {
0x08028c44 beq 0x8029358 | goto label_56;
| }
| label_21:
0x08028c48 ldr r3, [r3, 0x4c] | r3 = *((r3 + 0x4c));
0x08028c4c cmp r3, 0 |
| if (r3 >= 0) {
0x08028c50 bge 0x802800c | goto label_6;
| }
0x08028c54 mov r1, r6 | r1 = r6;
0x08028c58 mov r0, r7 | r0 = r7;
0x08028c5c stmdaeq r4, {r4, r5, r7, fp, pc} | __asm ("stmdaeq r4, {r4, r5, r7, fp, pc}");
0x08028c60 mov r4, r0 | r4 = r0;
0x08028c64 b 0x802800c | goto label_6;
| label_34:
0x08028c68 add r7, sp, 0x54 | r7 += var_54h;
0x08028c6c mov r3, sp | r3 = sp;
0x08028c70 bic r2, r3, 0x1fc0 | r2 = BIT_MASK (r3, 0x1fc0);
0x08028c74 mov r3, 0 | r3 = 0;
0x08028c78 bic r2, r2, 0x3f | r2 = BIT_MASK (r2, 0x3f);
0x08028c7c str r3, [sp, 0x54] | var_54h = r3;
0x08028c80 str r3, [r7, 4] | var_58h = r3;
0x08028c84 str r3, [r7, 8] | var_5ch = r3;
0x08028c88 str r3, [r7, 0xc] | var_60h = r3;
0x08028c8c ldr r3, [r2, 8] | r3 = *((r2 + 8));
0x08028c90 adds r1, r8, 0x20 | r1 = r8 + 0x20;
0x08028c94 sbcslo r1, r1, r3 | __asm ("sbcslo r1, r1, r3");
| if (r1 >= r8) {
0x08028c98 movlo r3, 0 | r3 = 0;
| }
0x08028c9c cmp r3, 0 |
| if (r3 != 0) {
0x08028ca0 bne 0x80282c4 | goto label_3;
| }
0x08028ca4 mrc p15, 0, r4, c3, c0, 0 | __asm ("mrc p15, 0, r4, c3, c0, 0");
0x08028ca8 bic r3, r4, 0xc | r3 = BIT_MASK (r4, 0xc);
0x08028cac orr r3, r3, 4 | r3 |= 4;
0x08028cb0 mcr p15, 0, r3, c3, c0, 0 | __asm ("mcr p15, 0, r3, c3, c0, 0");
0x08028cb4 isb sy | __asm ("isb sy");
0x08028cb8 add sb, sp, 0x70 | sb += var_70h;
0x08028cbc mov r1, r8 | r1 = r8;
0x08028cc0 mov r0, sb | r0 = sb;
0x08028cc4 mov r2, 0x20 | r2 = 0x20;
0x08028cc8 stmdaeq r8, {sb, fp, ip, sp, lr} | __asm ("stmdaeq r8, {sb, fp, ip, sp, lr}");
0x08028ccc mcr p15, 0, r4, c3, c0, 0 | __asm ("mcr p15, 0, r4, c3, c0, 0");
0x08028cd0 isb sy | __asm ("isb sy");
0x08028cd4 cmp r0, 0 |
| if (r0 != 0) {
0x08028cd8 bne 0x80282c4 | goto label_3;
| }
0x08028cdc ldr r2, [sp, 0x88] | r2 = var_88h;
0x08028ce0 movw r3, 0x4924 |
0x08028ce4 movt r3, 0x492 | r3 = 0x4924924;
0x08028ce8 cmp r2, r3 |
| if (r2 > r3) {
0x08028cec bhi 0x8029290 | goto label_57;
| }
0x08028cf0 add r3, r8, 0x20 | r3 = r8 + 0x20;
0x08028cf4 str r2, [sp, 0x5c] | var_5ch = r2;
0x08028cf8 str r3, [sp, 0x60] | var_60h = r3;
0x08028cfc mov r1, r7 | r1 = r7;
0x08028d00 ldrd r2, r3, [sp, 0x78] | __asm ("ldrd r2, r3, [var_78h]");
0x08028d04 strd r2, r3, [sp] | __asm ("strd r2, r3, [sp]");
0x08028d08 ldr r3, [sp, 0x80] | r3 = var_80h;
0x08028d0c mov r0, r6 | r0 = r6;
0x08028d10 str r3, [sp, 0x54] | var_54h = r3;
0x08028d14 ldrd r2, r3, [sp, 0x70] | __asm ("ldrd r2, r3, [var_70h]");
0x08028d18 stmdaeq r0, {r2, r3, r5, r7, sb, lr, pc} | __asm ("stmdaeq r0, {r2, r3, r5, r7, sb, lr, pc}");
0x08028d1c mov r3, sp | r3 = sp;
0x08028d20 mov r4, r0 | r4 = r0;
0x08028d24 bic r2, r3, 0x1fc0 | r2 = BIT_MASK (r3, 0x1fc0);
0x08028d28 ldr r3, [sp, 0x54] | r3 = var_54h;
0x08028d2c str r3, [sp, 0x80] | var_80h = r3;
0x08028d30 bic r2, r2, 0x3f | r2 = BIT_MASK (r2, 0x3f);
0x08028d34 ldr r3, [sp, 0x58] | r3 = var_58h;
0x08028d38 str r3, [sp, 0x84] | var_84h = r3;
0x08028d3c ldr r3, [r2, 8] | r3 = *((r2 + 8));
0x08028d40 adds r1, r8, 0x20 | r1 = r8 + 0x20;
0x08028d44 sbcslo r1, r1, r3 | __asm ("sbcslo r1, r1, r3");
| if (r1 >= r8) {
0x08028d48 movlo r3, 0 | r3 = 0;
| }
0x08028d4c cmp r3, 0 |
| if (r3 != 0) {
0x08028d50 bne 0x80282c4 | goto label_3;
| }
0x08028d54 mrc p15, 0, r5, c3, c0, 0 | __asm ("mrc p15, 0, r5, c3, c0, 0");
0x08028d58 bic r3, r5, 0xc | r3 = BIT_MASK (r5, 0xc);
0x08028d5c orr r3, r3, 4 | r3 |= 4;
0x08028d60 mcr p15, 0, r3, c3, c0, 0 | __asm ("mcr p15, 0, r3, c3, c0, 0");
0x08028d64 isb sy | __asm ("isb sy");
0x08028d68 mov r2, 0x20 | r2 = 0x20;
0x08028d6c mov r1, sb | r1 = sb;
0x08028d70 mov r0, r8 | r0 = r8;
0x08028d74 stmdaeq r8, {r2, r3, r4, r5, r6, r7, r8, fp, ip, sp, lr} | __asm ("stmdaeq r8, {r2, r3, r4, r5, r6, r7, r8, fp, ip, sp, lr}");
0x08028d78 mcr p15, 0, r5, c3, c0, 0 | __asm ("mcr p15, 0, r5, c3, c0, 0");
0x08028d7c isb sy | __asm ("isb sy");
0x08028d80 cmp r0, 0 |
| if (r0 == 0) {
0x08028d84 beq 0x8027e4c | goto label_0;
| }
0x08028d88 b 0x80282c4 | goto label_3;
| label_27:
0x08028d8c mov r3, sp | r3 = sp;
0x08028d90 bic r2, r3, 0x1fc0 | r2 = BIT_MASK (r3, 0x1fc0);
0x08028d94 bic r2, r2, 0x3f | r2 = BIT_MASK (r2, 0x3f);
0x08028d98 ldr r3, [r2, 8] | r3 = *((r2 + 8));
0x08028d9c adds r1, r8, 0x30 | r1 = r8 + 0x30;
0x08028da0 sbcslo r1, r1, r3 | __asm ("sbcslo r1, r1, r3");
| if (r1 >= r8) {
0x08028da4 movlo r3, 0 | r3 = 0;
| }
0x08028da8 cmp r3, 0 |
| if (r3 != 0) {
0x08028dac bne 0x80282c4 | goto label_3;
| }
0x08028db0 mrc p15, 0, r4, c3, c0, 0 | __asm ("mrc p15, 0, r4, c3, c0, 0");
0x08028db4 bic r3, r4, 0xc | r3 = BIT_MASK (r4, 0xc);
0x08028db8 orr r3, r3, 4 | r3 |= 4;
0x08028dbc mcr p15, 0, r3, c3, c0, 0 | __asm ("mcr p15, 0, r3, c3, c0, 0");
0x08028dc0 isb sy | __asm ("isb sy");
0x08028dc4 add sb, sp, 0x70 | sb += var_70h;
0x08028dc8 mov r1, r8 | r1 = r8;
0x08028dcc mov r0, sb | r0 = sb;
0x08028dd0 mov r2, 0x30 | r2 = 0x30;
0x08028dd4 stmdaeq r8, {sb, fp, ip, sp, lr} | __asm ("stmdaeq r8, {sb, fp, ip, sp, lr}");
0x08028dd8 mcr p15, 0, r4, c3, c0, 0 | __asm ("mcr p15, 0, r4, c3, c0, 0");
0x08028ddc isb sy | __asm ("isb sy");
0x08028de0 cmp r0, 0 |
| if (r0 != 0) {
0x08028de4 bne 0x80282c4 | goto label_3;
| }
0x08028de8 ldr r3, [r5, 0x10] | r3 = *((r5 + 0x10));
0x08028dec ldr r6, [r3, 0x14] | r6 = *((r3 + 0x14));
0x08028df0 mov r0, r6 | r0 = r6;
0x08028df4 stmdaeq r4, {r2, r4, sp} | __asm ("stmdaeq r4, {r2, r4, sp}");
0x08028df8 subs r4, r0, 0 | r4 = r0 - 0;
| if (r4 != r0) {
0x08028dfc bne 0x8027e4c | goto label_0;
| }
0x08028e00 ldr r3, [r6, 0x1f0] | r3 = *((r6 + 0x1f0));
0x08028e04 ldr r3, [r3, 0x44] | r3 = *((r3 + 0x44));
0x08028e08 ldr r3, [r3, 0x64] | r3 = *((r3 + 0x64));
0x08028e0c tst r3, 0x200 |
| if ((r3 & 0x200) != 0) {
0x08028e10 bne 0x80291b8 | goto label_58;
| }
0x08028e14 mov r0, r5 | r0 = r5;
0x08028e18 stmdaeq r8, {r2, r3, sb, fp, ip, sp, lr} | __asm ("stmdaeq r8, {r2, r3, sb, fp, ip, sp, lr}");
0x08028e1c subs r4, r0, 0 | r4 = r0 - 0;
| if (r4 == r0) {
0x08028e20 bne 0x8028e80 |
0x08028e24 mov r1, sb | r1 = sb;
0x08028e28 mov r0, r6 | r0 = r6;
0x08028e2c stmdaeq r4, {r6, r8, sp} | __asm ("stmdaeq r4, {r6, r8, sp}");
0x08028e30 ldr r3, [r6, 0x1f0] | r3 = *((r6 + 0x1f0));
0x08028e34 mov r7, r0 | r7 = r0;
0x08028e38 ldr r0, [r3, 0x118] | r0 = *((r3 + 0x118));
0x08028e3c cmp r0, 0 |
| if (r0 == 0) {
0x08028e40 beq 0x802920c | goto label_59;
| }
0x08028e44 stmdaeq r8, {r2, r5, r8, fp, ip, sp, lr} | __asm ("stmdaeq r8, {r2, r5, r8, fp, ip, sp, lr}");
0x08028e48 ldr r3, [r6, 0x1f0] | r3 = *((r6 + 0x1f0));
0x08028e4c ldr r0, [r3, 0x118] | r0 = *((r3 + 0x118));
0x08028e50 stmdaeq r8, {r3, r5, r8, fp, ip, sp, lr} | __asm ("stmdaeq r8, {r3, r5, r8, fp, ip, sp, lr}");
0x08028e54 ldr r3, [r6, 0x1f0] | r3 = *((r6 + 0x1f0));
0x08028e58 mov r8, r0 | r8 = r0;
0x08028e5c ldr r0, [r3, 0x118] | r0 = *((r3 + 0x118));
0x08028e60 stmdaeq r8, {r2, r3, r5, r8, fp, ip, sp, lr} | __asm ("stmdaeq r8, {r2, r3, r5, r8, fp, ip, sp, lr}");
0x08028e64 cmp r7, 0 |
| if (r7 != 0) {
0x08028e68 bne 0x80291fc | goto label_60;
| }
0x08028e6c mov r0, r5 | r0 = r5;
0x08028e70 stmdaeq r8, {r4, sb, fp, ip, sp, lr} | __asm ("stmdaeq r8, {r4, sb, fp, ip, sp, lr}");
0x08028e74 cmp r8, 0 |
| if (r8 == 0) {
0x08028e78 movne r4, r8 | r4 = r8;
| }
| if (r8 == 0) {
0x08028e7c beq 0x802921c | goto label_61;
| }
| }
| label_15:
0x08028e80 mov r0, r6 | r0 = r6;
0x08028e84 stmdaeq r4, {r2, r3, r4, r8, sp} | __asm ("stmdaeq r4, {r2, r3, r4, r8, sp}");
0x08028e88 b 0x8027e4c | goto label_0;
| label_24:
0x08028e8c ldr r2, [r6, -0x70] | r2 = *((r6 - 0x70));
0x08028e90 ldr r3, [r6, -0x70] | r3 = *((r6 - 0x70));
0x08028e94 tst r3, 2 |
0x08028e98 ldr r3, [r6, -0x70] | r3 = *((r6 - 0x70));
0x08028e9c ubfx r2, r2, 8, 1 | r2 = (r2 >> 8) & ((1 << 1) - 1);
| if ((r3 & 2) == 0) {
0x08028ea0 orrne r2, r2, 2 | r2 |= 2;
| }
0x08028ea4 tst r3, 0x40 |
0x08028ea8 ldr r3, [r6, -0x70] | r3 = *((r6 - 0x70));
| if ((r3 & 0x40) == 0) {
0x08028eac orrne r2, r2, 4 | r2 |= 4;
| }
0x08028eb0 tst r3, 0x10 |
| if ((r3 & 0x10) == 0) {
0x08028eb4 orrne r2, r2, 8 | r2 |= 8;
| }
0x08028eb8 b 0x8028578 | goto label_7;
| label_22:
0x08028ebc mov r0, 0x15 | r0 = 0x15;
0x08028ec0 ldr r6, [r7, 0x1f0] | r6 = *((r7 + 0x1f0));
0x08028ec4 stmdaeq r8, {r2, r6, r7, sb, sl, ip, sp, lr} | __asm ("stmdaeq r8, {r2, r6, r7, sb, sl, ip, sp, lr}");
0x08028ec8 cmp r0, 0 |
| if (r0 == 0) {
0x08028ecc beq 0x8028540 | goto label_8;
| }
0x08028ed0 mov r3, sp | r3 = sp;
0x08028ed4 mov r0, r8 | r0 = r8;
0x08028ed8 bic r3, r3, 0x1fc0 | r3 = BIT_MASK (r3, 0x1fc0);
0x08028edc bic r3, r3, 0x3f | r3 = BIT_MASK (r3, 0x3f);
0x08028ee0 mrc p15, 0, ip, c3, c0, 0 | __asm ("mrc p15, 0, ip, c3, c0, 0");
0x08028ee4 ldr r1, [r3, 8] | r1 = *((r3 + 8));
0x08028ee8 bic r3, ip, 0xc | r3 = BIT_MASK (ip, 0xc);
0x08028eec orr r3, r3, 4 | r3 |= 4;
0x08028ef0 sub r1, r1, 1 | r1--;
0x08028ef4 mcr p15, 0, r3, c3, c0, 0 | __asm ("mcr p15, 0, r3, c3, c0, 0");
0x08028ef8 isb sy | __asm ("isb sy");
0x08028efc stmdaeq r8, {r3, sb, fp, ip, sp, lr} | __asm ("stmdaeq r8, {r3, sb, fp, ip, sp, lr}");
0x08028f00 mcr p15, 0, ip, c3, c0, 0 | __asm ("mcr p15, 0, ip, c3, c0, 0");
0x08028f04 isb sy | __asm ("isb sy");
0x08028f08 mov r5, r2 | r5 = r2;
0x08028f0c subs r4, r0, 0 | r4 = r0 - 0;
| if (r4 != r0) {
0x08028f10 bne 0x80282c4 | goto label_3;
| }
0x08028f14 cmp r2, 2 |
| if (r2 > 2) {
0x08028f18 bhi 0x8029290 | goto label_57;
| }
0x08028f1c ldr r3, [r6, 0x130] | r3 = *((r6 + 0x130));
0x08028f20 tst r3, 2 |
| if ((r3 & 2) != 0) {
0x08028f24 bne 0x8027e4c | goto label_0;
| }
0x08028f28 mov r3, r2 | r3 = r2;
0x08028f2c mov r0, r7 | r0 = r7;
0x08028f30 stmdaeq r5, {r2, r4, r6, r7, sb, fp, sp, pc} | __asm ("stmdaeq r5, {r2, r4, r6, r7, sb, fp, sp, pc}");
0x08028f34 stmdaeq r5, {r2, r4, r6, r7, sb, fp, sp, pc} | __asm ("stmdaeq r5, {r2, r4, r6, r7, sb, fp, sp, pc}");
0x08028f38 stmdaeq r5, {r4, r5, r6, r7, sb, fp, sp, pc} | __asm ("stmdaeq r5, {r4, r5, r6, r7, sb, fp, sp, pc}");
0x08028f3c stmdaeq r5, {r4, r5, r6, r7, sb, fp, sp, pc} | __asm ("stmdaeq r5, {r4, r5, r6, r7, sb, fp, sp, pc}");
0x08028f40 stmdaeq r4, {r3, r4, r5, r6, r7, sb, sl, fp, ip, lr} | __asm ("stmdaeq r4, {r3, r4, r5, r6, r7, sb, sl, fp, ip, lr}");
0x08028f44 cmp r5, 1 |
| if (r5 == 1) {
0x08028f48 beq 0x802913c | goto label_62;
| }
0x08028f4c cmp r5, 2 |
| if (r5 == 2) {
0x08028f50 beq 0x8029100 | goto label_63;
| }
0x08028f54 ldr r0, [r7, 0x70] | r0 = *((r7 + 0x70));
0x08028f58 stmdaeq r8, {r4, r5, sb, fp, ip, sp, lr} | __asm ("stmdaeq r8, {r4, r5, sb, fp, ip, sp, lr}");
0x08028f5c mrs r2, apsr | r2 = apsr;
0x08028f60 cpsid i | __asm ("cpsid i");
0x08028f64 ldr r3, [r6, 0x130] | r3 = *((r6 + 0x130));
0x08028f68 orr r3, r3, 2 | r3 |= 2;
0x08028f6c str r3, [r6, 0x130] | *((r6 + 0x130)) = r3;
0x08028f70 msr cpsr_c, r2 | cpsr_c = r2;
0x08028f74 ldr r0, [r7, 0x70] | r0 = *((r7 + 0x70));
0x08028f78 mov r1, r7 | r1 = r7;
0x08028f7c stmdaeq r8, {r2, r4, r5, sb, fp, ip, sp, lr} | __asm ("stmdaeq r8, {r2, r4, r5, sb, fp, ip, sp, lr}");
| label_13:
0x08028f80 ldr r2, [r7, 0x1f0] | r2 = *((r7 + 0x1f0));
0x08028f84 mov r4, 0 | r4 = 0;
0x08028f88 ldr r3, [r2, 0x4c] | r3 = *((r2 + 0x4c));
0x08028f8c bic r3, r3, 0x40000000 | r3 = BIT_MASK (r3, 0x40000000);
0x08028f90 str r3, [r2, 0x4c] | *((r2 + 0x4c)) = r3;
0x08028f94 b 0x8027e4c | goto label_0;
| label_43:
0x08028f98 add r1, sp, 0x70 | r1 += var_70h;
0x08028f9c mov r0, r6 | r0 = r6;
0x08028fa0 bl 0x8027334 | ext4_fill_fsxattr ();
0x08028fa4 mov r3, sp | r3 = sp;
0x08028fa8 bic r2, r3, 0x1fc0 | r2 = BIT_MASK (r3, 0x1fc0);
0x08028fac bic r2, r2, 0x3f | r2 = BIT_MASK (r2, 0x3f);
0x08028fb0 ldr r3, [r2, 8] | r3 = *((r2 + 8));
0x08028fb4 adds r1, r8, 0x1c | r1 = r8 + 0x1c;
0x08028fb8 sbcslo r1, r1, r3 | __asm ("sbcslo r1, r1, r3");
| if (r1 >= r8) {
0x08028fbc movlo r3, 0 | r3 = 0;
| }
0x08028fc0 cmp r3, 0 |
| if (r3 != 0) {
0x08028fc4 bne 0x80282c4 | goto label_3;
| }
0x08028fc8 mrc p15, 0, r5, c3, c0, 0 | __asm ("mrc p15, 0, r5, c3, c0, 0");
0x08028fcc bic r3, r5, 0xc | r3 = BIT_MASK (r5, 0xc);
0x08028fd0 orr r3, r3, 4 | r3 |= 4;
0x08028fd4 mcr p15, 0, r3, c3, c0, 0 | __asm ("mcr p15, 0, r3, c3, c0, 0");
0x08028fd8 isb sy | __asm ("isb sy");
0x08028fdc mov r2, 0x1c | r2 = 0x1c;
0x08028fe0 b 0x80282a4 | goto label_9;
| label_50:
0x08028fec stmdaeq r6, {r1, r2, r3, r4, r6, r8} | __asm ("stmdaeq r6, {r1, r2, r3, r4, r6, r8}");
0x08028ff0 stmdaeq r6, {r1, r2, r3, r4, r6, r8} | __asm ("stmdaeq r6, {r1, r2, r3, r4, r6, r8}");
0x08028ff4 ldrb r3, [ip] | r3 = *(ip);
0x08028ff8 cmp r3, 0 |
| if (r3 != 0) {
0x08028ffc bne 0x802903c | goto label_49;
| }
0x08029000 mov r2, 9 | r2 = 9;
0x08029004 movw r1, 0xc34 | r1 = 0xc34;
0x08029008 stmdaeq r5, {r2, r3, r4, r5, r6, r7, r8, fp, sp, pc} | __asm ("stmdaeq r5, {r2, r3, r4, r5, r6, r7, r8, fp, sp, pc}");
0x0802900c stmdaeq r5, {r2, r3, r4, r5, r6, r7, r8, fp, sp, pc} | __asm ("stmdaeq r5, {r2, r3, r4, r5, r6, r7, r8, fp, sp, pc}");
0x08029010 mov lr, 1 | lr = 1;
0x08029014 strb lr, [ip] |
0x08029018 stmdaeq r8, {r2, r8, sb, sl, ip, sp, lr} | __asm ("stmdaeq r8, {r2, r8, sb, sl, ip, sp, lr}");
0x0802901c ldr r3, [r4, 0x1f0] | r3 = *((r4 + 0x1f0));
0x08029020 ldr r2, [r3, 0x44] | r2 = *((r3 + 0x44));
0x08029024 ldr r2, [r2, 0x64] | r2 = *((r2 + 0x64));
0x08029028 tst r2, 0x400 |
| if ((r2 & 0x400) == 0) {
0x0802902c beq 0x802903c | goto label_49;
| }
0x08029030 ldr r3, [r3, 0x220] | r3 = *((r3 + 0x220));
0x08029034 cmp r3, 0 |
| if (r3 != 0) {
0x08029038 bne 0x80289f4 | goto label_10;
| }
| label_49:
0x0802903c mov r0, r5 | r0 = r5;
0x08029040 stmdaeq r8, {r2, r3, sb, fp, ip, sp, lr} | __asm ("stmdaeq r8, {r2, r3, sb, fp, ip, sp, lr}");
0x08029044 subs r4, r0, 0 | r4 = r0 - 0;
| if (r4 != r0) {
0x08029048 bne 0x8027e4c | goto label_0;
| }
0x0802904c mov r3, sp | r3 = sp;
0x08029050 mov r0, r8 | r0 = r8;
0x08029054 bic r3, r3, 0x1fc0 | r3 = BIT_MASK (r3, 0x1fc0);
0x08029058 bic r3, r3, 0x3f | r3 = BIT_MASK (r3, 0x3f);
0x0802905c mrc p15, 0, ip, c3, c0, 0 | __asm ("mrc p15, 0, ip, c3, c0, 0");
0x08029060 ldr r1, [r3, 8] | r1 = *((r3 + 8));
0x08029064 bic r3, ip, 0xc | r3 = BIT_MASK (ip, 0xc);
0x08029068 orr r3, r3, 4 | r3 |= 4;
0x0802906c sub r1, r1, 1 | r1--;
0x08029070 mcr p15, 0, r3, c3, c0, 0 | __asm ("mcr p15, 0, r3, c3, c0, 0");
0x08029074 isb sy | __asm ("isb sy");
0x08029078 stmdaeq r8, {r3, sb, fp, ip, sp, lr} | __asm ("stmdaeq r8, {r3, sb, fp, ip, sp, lr}");
0x0802907c mcr p15, 0, ip, c3, c0, 0 | __asm ("mcr p15, 0, ip, c3, c0, 0");
0x08029080 isb sy | __asm ("isb sy");
0x08029084 cmp r0, 0 |
0x08029088 mov r8, r2 | r8 = r2;
| if (r0 != 0) {
0x0802908c mvnne r4, 0xd | r4 = ~0xd;
| goto label_64;
| }
| if (r0 != 0) {
| label_64:
0x08029090 bne 0x8028938 | goto label_11;
| }
0x08029094 add sb, r6, 0x7c | sb = r6 + 0x7c;
0x08029098 mov r0, sb | r0 = sb;
0x0802909c stmdaeq r8, {r2, r6, r7, r8, sb, sl, ip, sp, lr} | __asm ("stmdaeq r8, {r2, r6, r7, r8, sb, sl, ip, sp, lr}");
0x080290a0 ldr r0, [r6, 0x14] | r0 = *((r6 + 0x14));
0x080290a4 mov r3, 1 | r3 = 1;
0x080290a8 movw r1, 0x382 | r1 = 0x382;
0x080290ac mov r2, r3 | r2 = r3;
0x080290b0 ldr ip, [r0, 0x1f0] | ip = *((r0 + 0x1f0));
0x080290b4 ldr ip, [ip, 0x2c] | ip = *((ip + 0x2c));
0x080290b8 str r4, [sp] | *(sp) = r4;
0x080290bc lsl ip, ip, 3 |
0x080290c0 str ip, [sp, 4] | var_4h = ip;
0x080290c4 stmdaeq r0, {r4, r5, r6, r7, r8, sb, sl, ip, sp} | __asm ("stmdaeq r0, {r4, r5, r6, r7, r8, sb, sl, ip, sp}");
0x080290c8 cmn r0, 0x1000 |
0x080290cc mov r7, r0 | r7 = r0;
| if (r0 > 0x1000) {
0x080290d0 movhi r4, r0 | r4 = r0;
| goto label_65;
| }
| if (r0 > 0x1000) {
| label_65:
0x080290d4 bhi 0x80284f4 | goto label_12;
| }
0x080290d8 mov r1, r6 | r1 = r6;
0x080290dc add r2, sp, 0x70 | r2 += var_70h;
0x080290e0 stmdaeq r2, {r3, r6, r7, r8, sb, sl, fp, ip} | __asm ("stmdaeq r2, {r3, r6, r7, r8, sb, sl, fp, ip}");
0x080290e4 subs r4, r0, 0 | r4 = r0 - 0;
| if (r4 == r0) {
0x080290e8 beq 0x8029250 | goto label_66;
| }
| label_17:
0x080290ec mov r2, r7 | r2 = r7;
0x080290f0 movw r1, 0x38d | r1 = 0x38d;
0x080290f4 ldr r0, [pc, 0x3a4] | r0 = "ext4_validate_block_bitmap";
0x080290f8 stmdaeq r0, {r2, r3, r8, fp, ip, sp} | __asm ("stmdaeq r0, {r2, r3, r8, fp, ip, sp}");
0x080290fc b 0x80284f4 | goto label_12;
| label_63:
0x08029100 mrs r2, apsr | r2 = apsr;
0x08029104 cpsid i | __asm ("cpsid i");
0x08029108 ldr r3, [r6, 0x130] | r3 = *((r6 + 0x130));
0x0802910c orr r3, r3, 2 | r3 |= 2;
0x08029110 str r3, [r6, 0x130] | *((r6 + 0x130)) = r3;
0x08029114 msr cpsr_c, r2 | cpsr_c = r2;
0x08029118 ldr r0, [r6, 0x118] | r0 = *((r6 + 0x118));
0x0802911c cmp r0, 0 |
| if (r0 == 0) {
0x08029120 beq 0x8028f80 | goto label_13;
| }
0x08029124 ldr r3, [r0] | r3 = *(r0);
0x08029128 tst r3, 2 |
| if ((r3 & 2) != 0) {
0x0802912c bne 0x8028f80 | goto label_13;
| }
0x08029130 mvn r1, 0x6b | r1 = ~0x6b;
0x08029134 stmdaeq r8, {r3, r4, r5, sb, fp, ip, sp, lr} | __asm ("stmdaeq r8, {r3, r4, r5, sb, fp, ip, sp, lr}");
0x08029138 b 0x8028f80 | goto label_13;
| label_62:
0x0802913c mrs r2, apsr | r2 = apsr;
0x08029140 cpsid i | __asm ("cpsid i");
0x08029144 ldr r3, [r6, 0x130] | r3 = *((r6 + 0x130));
0x08029148 orr r3, r3, 2 | r3 |= 2;
0x0802914c str r3, [r6, 0x130] | *((r6 + 0x130)) = r3;
0x08029150 msr cpsr_c, r2 | cpsr_c = r2;
0x08029154 ldr r3, [r6, 0x118] | r3 = *((r6 + 0x118));
0x08029158 cmp r3, 0 |
| if (r3 == 0) {
0x0802915c beq 0x8028f80 | goto label_13;
| }
0x08029160 ldr r3, [r3] | r3 = *(r3);
0x08029164 tst r3, 2 |
| if ((r3 & 2) != 0) {
0x08029168 bne 0x8028f80 | goto label_13;
| }
0x0802916c mov r0, r7 | r0 = r7;
0x08029170 stmdaeq r4, {r4, ip, lr, pc} | __asm ("stmdaeq r4, {r4, ip, lr, pc}");
0x08029174 ldr r0, [r6, 0x118] | r0 = *((r6 + 0x118));
0x08029178 mvn r1, 0x6b | r1 = ~0x6b;
0x0802917c stmdaeq r8, {r3, r4, r5, sb, fp, ip, sp, lr} | __asm ("stmdaeq r8, {r3, r4, r5, sb, fp, ip, sp, lr}");
0x08029180 b 0x8028f80 | goto label_13;
| label_39:
0x08029184 mov r1, r7 | r1 = r7;
0x08029188 mov r0, r6 | r0 = r6;
0x0802918c bl 0x8027424 | r0 = ext4_ioctl_setflags ();
0x08029190 mov r4, r0 | r4 = r0;
0x08029194 b 0x8028174 | goto label_14;
| label_31:
0x08029198 mov r0, r7 | r0 = r7;
0x0802919c stmdaeq r5, {r4, r6, sb, fp, sp, pc} | __asm ("stmdaeq r5, {r4, r6, sb, fp, sp, pc}");
0x080291a0 stmdaeq r5, {r4, r6, sb, fp, sp, pc} | __asm ("stmdaeq r5, {r4, r6, sb, fp, sp, pc}");
0x080291a4 stmdaeq r5, {r2, r3, r4, r5, r6, sb, fp, sp, pc} | __asm ("stmdaeq r5, {r2, r3, r4, r5, r6, sb, fp, sp, pc}");
0x080291a8 stmdaeq r5, {r2, r3, r4, r5, r6, sb, fp, sp, pc} | __asm ("stmdaeq r5, {r2, r3, r4, r5, r6, sb, fp, sp, pc}");
0x080291ac mvn r4, 0x5e | r4 = ~0x5e;
0x080291b0 stmdaeq r4, {r3, r4, r5, r6, r7, sb, sl, fp, ip, lr} | __asm ("stmdaeq r4, {r3, r4, r5, r6, r7, sb, sl, fp, ip, lr}");
0x080291b4 b 0x802800c | goto label_6;
| label_58:
0x080291b8 mov r0, r6 | r0 = r6;
0x080291bc stmdaeq r5, {r4, r6, sb, fp, sp, pc} | __asm ("stmdaeq r5, {r4, r6, sb, fp, sp, pc}");
0x080291c0 stmdaeq r5, {r4, r6, sb, fp, sp, pc} | __asm ("stmdaeq r5, {r4, r6, sb, fp, sp, pc}");
0x080291c4 stmdaeq r5, {r2, r3, r4, r5, r6, sb, fp, sp, pc} | __asm ("stmdaeq r5, {r2, r3, r4, r5, r6, sb, fp, sp, pc}");
0x080291c8 stmdaeq r5, {r2, r3, r4, r5, r6, sb, fp, sp, pc} | __asm ("stmdaeq r5, {r2, r3, r4, r5, r6, sb, fp, sp, pc}");
0x080291cc mvn r4, 0x5e | r4 = ~0x5e;
0x080291d0 stmdaeq r4, {r3, r4, r5, r6, r7, sb, sl, fp, ip, lr} | __asm ("stmdaeq r4, {r3, r4, r5, r6, r7, sb, sl, fp, ip, lr}");
0x080291d4 b 0x8028e80 | goto label_15;
| do {
| label_54:
0x080291d8 mov r0, r5 | r0 = r5;
0x080291dc mov r4, sb | r4 = sb;
0x080291e0 stmdaeq r8, {r4, sb, fp, ip, sp, lr} | __asm ("stmdaeq r8, {r4, sb, fp, ip, sp, lr}");
0x080291e4 b 0x802800c | goto label_6;
| label_53:
0x080291e8 cmp r0, 0 |
0x080291ec bne 0x80291d8 |
| } while (r0 != 0);
0x080291f0 mov r0, r5 | r0 = r5;
0x080291f4 stmdaeq r8, {r4, sb, fp, ip, sp, lr} | __asm ("stmdaeq r8, {r4, sb, fp, ip, sp, lr}");
0x080291f8 b 0x8028c28 | goto label_16;
| do {
| label_60:
0x080291fc mov r0, r5 | r0 = r5;
0x08029200 mov r4, r7 | r4 = r7;
0x08029204 stmdaeq r8, {r4, sb, fp, ip, sp, lr} | __asm ("stmdaeq r8, {r4, sb, fp, ip, sp, lr}");
0x08029208 b 0x8028e80 | goto label_15;
| label_59:
0x0802920c cmp r7, 0 |
0x08029210 bne 0x80291fc |
| } while (r7 != 0);
0x08029214 mov r0, r5 | r0 = r5;
0x08029218 stmdaeq r8, {r4, sb, fp, ip, sp, lr} | __asm ("stmdaeq r8, {r4, sb, fp, ip, sp, lr}");
| label_61:
0x0802921c ldr r3, [r6, 0x1f0] | r3 = *((r6 + 0x1f0));
0x08029220 ldr r2, [r3, 0x44] | r2 = *((r3 + 0x44));
0x08029224 ldr r2, [r2, 0x64] | r2 = *((r2 + 0x64));
0x08029228 tst r2, 0x10 |
| if ((r2 & 0x10) == 0) {
0x0802922c beq 0x80292b8 | goto label_67;
| }
| label_19:
0x08029230 ldr r3, [r3, 0x4c] | r3 = *((r3 + 0x4c));
0x08029234 cmp r3, 0 |
| if (r3 >= 0) {
0x08029238 bge 0x8028e80 | goto label_15;
| }
0x0802923c ldr r1, [sp, 0x70] | r1 = var_70h;
0x08029240 mov r0, r6 | r0 = r6;
0x08029244 stmdaeq r4, {r4, r5, r7, fp, pc} | __asm ("stmdaeq r4, {r4, r5, r7, fp, pc}");
0x08029248 mov r4, r0 | r4 = r0;
0x0802924c b 0x8028e80 | goto label_15;
| label_66:
0x08029250 add r4, sp, 0x40 | r4 += var_40h;
0x08029254 mov r1, r6 | r1 = r6;
0x08029258 mov r0, r4 | r0 = r4;
0x0802925c stmdaeq r8, {r6, r7, r8, sb, sl, ip, sp, lr} | __asm ("stmdaeq r8, {r6, r7, r8, sb, sl, ip, sp, lr}");
0x08029260 add ip, r6, 0x58 |
0x08029264 ldm r4, {r0, r1, r2, r3} | r0 = *(r4);
| r1 = *((r4 + 4));
| r2 = *((r4 + 8));
| r3 = *((r4 + 12));
0x08029268 stm ip, {r0, r1, r2, r3} | *(ip) = r0;
| *((ip + 4)) = r1;
| *((ip + 8)) = r2;
| *((ip + 12)) = r3;
0x0802926c add r2, sp, 0x70 | r2 += var_70h;
0x08029270 mov r1, r6 | r1 = r6;
0x08029274 mov r0, r7 | r0 = r7;
0x08029278 str r8, [r6, 0x154] | *((r6 + 0x154)) = r8;
0x0802927c stmdaeq r2, {r2, r5, r7, r8, sl, ip} | __asm ("stmdaeq r2, {r2, r5, r7, r8, sl, ip}");
0x08029280 mov r4, r0 | r4 = r0;
0x08029284 b 0x80290ec | goto label_17;
| label_57:
0x08029290 mvn r4, 0x15 | r4 = ~0x15;
0x08029294 b 0x8027e4c | goto label_0;
| label_51:
0x08029298 mov r0, r7 | r0 = r7;
0x0802929c stmdaeq r5, {r7, sb, fp, sp, pc} | __asm ("stmdaeq r5, {r7, sb, fp, sp, pc}");
0x080292a0 stmdaeq r5, {r7, sb, fp, sp, pc} | __asm ("stmdaeq r5, {r7, sb, fp, sp, pc}");
0x080292a4 stmdaeq r5, {r2, r3, r4, r5, r6, sb, fp, sp, pc} | __asm ("stmdaeq r5, {r2, r3, r4, r5, r6, sb, fp, sp, pc}");
0x080292a8 stmdaeq r5, {r2, r3, r4, r5, r6, sb, fp, sp, pc} | __asm ("stmdaeq r5, {r2, r3, r4, r5, r6, sb, fp, sp, pc}");
0x080292ac mvn r4, 0x5e | r4 = ~0x5e;
0x080292b0 stmdaeq r4, {r3, r4, r5, r6, r7, sb, sl, fp, ip, lr} | __asm ("stmdaeq r4, {r3, r4, r5, r6, r7, sb, sl, fp, ip, lr}");
0x080292b4 b 0x8028b1c | goto label_18;
| label_67:
0x080292b8 tst r2, 0x400 |
| if ((r2 & 0x400) == 0) {
0x080292bc beq 0x8028e80 | goto label_15;
| }
0x080292c0 ldr r2, [r3, 0x220] | r2 = *((r3 + 0x220));
0x080292c4 cmp r2, 0 |
| if (r2 != 0) {
0x080292c8 bne 0x8029230 | goto label_19;
| }
0x080292cc stmdaeq r6, {r1, r2, r3, r4, r6, r8} | __asm ("stmdaeq r6, {r1, r2, r3, r4, r6, r8}");
0x080292d0 stmdaeq r6, {r1, r2, r3, r4, r6, r8} | __asm ("stmdaeq r6, {r1, r2, r3, r4, r6, r8}");
0x080292d4 ldrb r3, [r2] | r3 = *(r2);
0x080292d8 cmp r3, 0 |
| if (r3 != 0) {
0x080292dc bne 0x8028e80 | goto label_15;
| }
0x080292e0 mov r1, 1 | r1 = 1;
0x080292e4 stmdaeq r5, {r2, r3, r4, r5, r6, r7, r8, fp, sp, pc} | __asm ("stmdaeq r5, {r2, r3, r4, r5, r6, r7, r8, fp, sp, pc}");
0x080292e8 stmdaeq r5, {r2, r3, r4, r5, r6, r7, r8, fp, sp, pc} | __asm ("stmdaeq r5, {r2, r3, r4, r5, r6, r7, r8, fp, sp, pc}");
0x080292ec strb r1, [r2] | *(r2) = r1;
0x080292f0 mov r2, 9 | r2 = 9;
0x080292f4 movw r1, 0xc34 | r1 = 0xc34;
0x080292f8 stmdaeq r8, {r2, r8, sb, sl, ip, sp, lr} | __asm ("stmdaeq r8, {r2, r8, sb, sl, ip, sp, lr}");
0x080292fc ldr r3, [r6, 0x1f0] | r3 = *((r6 + 0x1f0));
0x08029300 ldr r2, [r3, 0x44] | r2 = *((r3 + 0x44));
0x08029304 ldr r2, [r2, 0x64] | r2 = *((r2 + 0x64));
0x08029308 tst r2, 0x400 |
| if ((r2 & 0x400) == 0) {
0x0802930c beq 0x8028e80 | goto label_15;
| }
0x08029310 ldr r2, [r3, 0x220] | r2 = *((r3 + 0x220));
0x08029314 cmp r2, 0 |
| if (r2 == 0) {
0x08029318 beq 0x8028e80 | goto label_15;
| }
0x0802931c b 0x8029230 | goto label_19;
| label_52:
0x08029320 mrc p15, 0, r5, c3, c0, 0 | __asm ("mrc p15, 0, r5, c3, c0, 0");
0x08029324 bic r3, r5, 0xc | r3 = BIT_MASK (r5, 0xc);
0x08029328 orr r3, r3, 4 | r3 |= 4;
0x0802932c mcr p15, 0, r3, c3, c0, 0 | __asm ("mcr p15, 0, r3, c3, c0, 0");
0x08029330 isb sy | __asm ("isb sy");
0x08029334 mov r2, 0x28 | r2 = 0x28;
0x08029338 add r1, sp, 0x70 | r1 += var_70h;
0x0802933c mov r0, r8 | r0 = r8;
0x08029340 stmdaeq r8, {r2, r3, r4, r5, r6, r7, r8, fp, ip, sp, lr} | __asm ("stmdaeq r8, {r2, r3, r4, r5, r6, r7, r8, fp, ip, sp, lr}");
0x08029344 mcr p15, 0, r5, c3, c0, 0 | __asm ("mcr p15, 0, r5, c3, c0, 0");
0x08029348 isb sy | __asm ("isb sy");
0x0802934c cmp r0, 0 |
| if (r0 == 0) {
0x08029350 beq 0x8028b1c | goto label_18;
| }
0x08029354 b 0x8028b18 | goto label_20;
| label_56:
0x08029358 tst r2, 0x400 |
| if ((r2 & 0x400) == 0) {
0x0802935c beq 0x802800c | goto label_6;
| }
0x08029360 ldr r2, [r3, 0x220] | r2 = *((r3 + 0x220));
0x08029364 cmp r2, 0 |
| if (r2 != 0) {
0x08029368 bne 0x8028c48 | goto label_21;
| }
0x0802936c stmdaeq r6, {r1, r2, r3, r4, r6, r8} | __asm ("stmdaeq r6, {r1, r2, r3, r4, r6, r8}");
0x08029370 stmdaeq r6, {r1, r2, r3, r4, r6, r8} | __asm ("stmdaeq r6, {r1, r2, r3, r4, r6, r8}");
0x08029374 ldrb r3, [ip] | r3 = *(ip);
0x08029378 cmp r3, 0 |
| if (r3 != 0) {
0x0802937c bne 0x802800c | goto label_6;
| }
0x08029380 mov r2, 9 | r2 = 9;
0x08029384 movw r1, 0xc34 | r1 = 0xc34;
0x08029388 stmdaeq r5, {r2, r3, r4, r5, r6, r7, r8, fp, sp, pc} | __asm ("stmdaeq r5, {r2, r3, r4, r5, r6, r7, r8, fp, sp, pc}");
0x0802938c stmdaeq r5, {r2, r3, r4, r5, r6, r7, r8, fp, sp, pc} | __asm ("stmdaeq r5, {r2, r3, r4, r5, r6, r7, r8, fp, sp, pc}");
0x08029390 mov lr, 1 | lr = 1;
0x08029394 strb lr, [ip] |
0x08029398 stmdaeq r8, {r2, r8, sb, sl, ip, sp, lr} | __asm ("stmdaeq r8, {r2, r8, sb, sl, ip, sp, lr}");
0x0802939c ldr r3, [r7, 0x1f0] | r3 = *((r7 + 0x1f0));
0x080293a0 ldr r2, [r3, 0x44] | r2 = *((r3 + 0x44));
0x080293a4 ldr r2, [r2, 0x64] | r2 = *((r2 + 0x64));
0x080293a8 tst r2, 0x400 |
| if ((r2 & 0x400) == 0) {
0x080293ac beq 0x802800c | goto label_6;
| }
0x080293b0 ldr r2, [r3, 0x220] | r2 = *((r3 + 0x220));
0x080293b4 cmp r2, 0 |
| if (r2 == 0) {
0x080293b8 beq 0x802800c | goto label_6;
| }
0x080293bc b 0x8028c48 | goto label_21;
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/lib/modules/5.10.52-axis8/kernel/fs/ext4/ext4.ko @ 0x804d304 */
| #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;
0x0804d304 push {r4, r6, r7, lr} |
0x0804d308 mov r4, r2 | r4 = r2;
0x0804d30c ldrsh r3, [r1, 0xa] | r3 = *((r1 + 0xa));
0x0804d310 sub sp, sp, 8 |
0x0804d314 cmp r3, 1 |
| if (r3 == 1) {
0x0804d318 beq 0x804d388 | goto label_1;
| }
0x0804d31c cmp r3, 2 |
| if (r3 == 2) {
0x0804d320 beq 0x804d398 | goto label_2;
| }
0x0804d324 cmp r3, 0 |
| if (r3 != 0) {
0x0804d328 ldreq ip, [r1, 0x10] | ip = *((r1 + 0x10));
| }
0x0804d32c movne ip, 0 |
| while (1) {
| label_0:
0x0804d330 ldrsh r3, [r1, 8] | r3 = *((r1 + 8));
0x0804d334 sub r3, r3, 1 | r3--;
0x0804d338 cmp r3, 0x10 |
| if (r3 > 0x10) {
| /* switch table (17 cases) at 0x804d344 */
0x0804d33c ldrls pc, [pc, r3, lsl 2] | offset_0 = r3 << 2;
| pc = *((pc + offset_0));
| }
0x0804d340 b 0x804d63c | goto label_3;
| label_1:
0x0804d388 ldr ip, [r1, 0x10] | ip = *((r1 + 0x10));
0x0804d38c sub ip, ip, 0xe0 |
0x0804d390 add ip, r0, ip |
0x0804d394 b 0x804d330 |
| }
| label_2:
0x0804d398 ldr ip, [r0, -0x9c] | ip = *((r0 - 0x9c));
0x0804d39c ldr r3, [r1, 0x10] | r3 = *((r1 + 0x10));
0x0804d3a0 add ip, ip, r3 |
0x0804d3a4 b 0x804d330 | goto label_0;
| do {
0x0804d3f8 mov r0, ip | r0 = ip;
0x0804d3fc add sp, sp, 8 |
0x0804d400 pop {r4, r6, r7, pc} |
| label_3:
0x0804d63c mov ip, 0 |
0x0804d640 b 0x804d3f8 |
| } while (1);
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/lib/modules/5.10.52-axis8/kernel/fs/ext4/ext4.ko @ 0x804d0cc */
| #include <stdint.h>
|
; (fcn) sym.ext4_attr_store () | void ext4_attr_store (int32_t arg1, int32_t arg2) {
| r0 = arg1;
| r1 = arg2;
0x0804d0cc push {r4, r5, r6, r7, r8, sb, lr} |
0x0804d0d0 mov r5, r0 | r5 = r0;
0x0804d0d4 mov r6, r2 | r6 = r2;
0x0804d0d8 ldrsh ip, [r1, 0xa] | ip = *((r1 + 0xa));
0x0804d0dc sub sp, sp, 0x24 |
0x0804d0e0 mov r7, r3 | r7 = r3;
0x0804d0e4 cmp ip, 1 |
| if (ip == 1) {
0x0804d0e8 beq 0x804d194 | goto label_1;
| }
0x0804d0ec cmp ip, 2 |
| if (ip == 2) {
0x0804d0f0 beq 0x804d184 | goto label_2;
| }
0x0804d0f4 cmp ip, 0 |
| if (ip != 0) {
0x0804d0f8 ldreq r8, [r1, 0x10] | r8 = *((r1 + 0x10));
| }
0x0804d0fc movne r8, 0 | r8 = 0;
| while (1) {
| label_0:
0x0804d100 ldrsh r1, [r1, 8] | r1 = *((r1 + 8));
0x0804d104 sub r1, r1, 4 | r1 -= 4;
0x0804d108 cmp r1, 8 |
| if (r1 > 8) {
| /* switch table (9 cases) at 0x804d114 */
0x0804d10c ldrls pc, [pc, r1, lsl 2] | offset_0 = r1 << 2;
| pc = *((pc + offset_0));
| }
0x0804d110 b 0x804d138 |
0x0804d138 mov r4, 0 | r4 = 0;
0x0804d13c mov r0, r4 | r0 = r4;
0x0804d140 add sp, sp, 0x24 |
0x0804d144 pop {r4, r5, r6, r7, r8, sb, pc} |
| label_2:
0x0804d184 ldr r3, [r0, -0x9c] | r3 = *((r0 - 0x9c));
0x0804d188 ldr r2, [r1, 0x10] | r2 = *((r1 + 0x10));
0x0804d18c add r8, r3, r2 | r8 = r3 + r2;
0x0804d190 b 0x804d100 |
| }
| label_1:
0x0804d194 ldr r3, [r1, 0x10] | r3 = *((r1 + 0x10));
0x0804d198 sub r3, r3, 0xe0 | r3 -= 0xe0;
0x0804d19c add r8, r0, r3 | r8 = r0 + r3;
0x0804d1a0 b 0x804d100 | goto label_0;
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/lib/modules/5.10.52-axis8/kernel/fs/ext4/ext4.ko @ 0x80537f0 */
| #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_18h;
| r0 = arg1;
| r1 = arg2;
0x080537f0 push {r4, r5, r6, r7, r8, lr} |
0x080537f4 movw ip, 0x513 | ip = 0x513;
0x080537f8 mov r4, 0 | r4 = 0;
0x080537fc sub sp, sp, 0x18 |
0x08053800 ldr r3, [r1, 4] | r3 = *((r1 + 4));
0x08053804 mov r8, r2 | r8 = r2;
0x08053808 mov r2, r4 | r2 = r4;
0x0805380c str r3, [sp, 0xc] | var_ch = r3;
0x08053810 ldr r3, [r1, 0x10] | r3 = *((r1 + 0x10));
0x08053814 str r3, [sp, 0x10] | var_10h = r3;
0x08053818 ldr r1, [r1] | r1 = *(r1);
0x0805381c ldr r3, [pc, 0xd8] | r3 = *(0x80538f8);
0x08053820 str ip, [sp] | *(sp) = ip;
0x08053824 str r4, [sp, 8] | var_8h = r4;
0x08053828 str r4, [sp, 0x14] | var_14h = r4;
0x0805382c stmdaeq r2, {r2, r3, r4, r7, r8, sb} | __asm ("stmdaeq r2, {r2, r3, r4, r7, r8, sb}");
0x08053830 cmn r0, 0x1000 |
| if (r0 > 0x1000) {
0x08053834 bhi 0x80538d0 | goto label_3;
| }
0x08053838 mov r7, r0 | r7 = r0;
0x0805383c stmdaeq r8, {r6, r7, sb, fp, ip, sp, lr} | __asm ("stmdaeq r8, {r6, r7, sb, fp, ip, sp, lr}");
0x08053840 mov r6, r0 | r6 = r0;
0x08053844 cmn r0, 0x1000 |
| if (r0 > 0x1000) {
0x08053848 bhi 0x80538e0 | goto label_4;
| }
0x0805384c add r1, sp, 8 | r1 += var_8h;
0x08053850 stmdaeq r8, {r2, r4, r6, r7, sl, fp, ip, sp, lr} | __asm ("stmdaeq r8, {r2, r4, r6, r7, sl, fp, ip, sp, lr}");
0x08053854 subs r5, r0, 0 | r5 = r0 - 0;
| if (r5 == r0) {
0x08053858 beq 0x80538f4 | goto label_5;
| }
0x0805385c mov r2, r5 | r2 = r5;
0x08053860 mov r1, r8 | r1 = r8;
0x08053864 mov r0, r7 | r0 = r7;
0x08053868 stmdaeq r3, {r4, r8, sb, fp, ip, lr, pc} | __asm ("stmdaeq r3, {r4, r8, sb, fp, ip, lr, pc}");
0x0805386c cmp r0, 0 |
0x08053870 cmnne r0, 0x11 | __asm ("cmnne r0, 0x11");
0x08053874 mov r4, r0 | r4 = r0;
| if (r0 == 0) {
0x08053878 movne r4, r0 | r4 = r0;
| }
| if (r0 != 0) {
0x0805387c moveq r4, 0 | r4 = 0;
| }
| label_2:
0x08053880 cmp r6, 0 |
| if (r6 == 0) {
0x08053884 beq 0x80538bc | goto label_6;
| }
0x08053888 mov r0, r6 | r0 = r6;
0x0805388c stmdaeq r8, {r3, r4, r6, r7, sl, fp, ip, sp, lr} | __asm ("stmdaeq r8, {r3, r4, r6, r7, sl, fp, ip, sp, lr}");
0x08053890 mov r0, r6 | r0 = r6;
0x08053894 stmdaeq r8, {r2, r7, fp, ip, sp, lr} | __asm ("stmdaeq r8, {r2, r7, fp, ip, sp, lr}");
| do {
| label_0:
0x08053898 cmp r5, 0 |
| if (r5 != 0) {
0x0805389c beq 0x80538b0 |
0x080538a0 mov r0, r5 | r0 = r5;
0x080538a4 stmdaeq r8, {r3, r4, r6, r7, sl, fp, ip, sp, lr} | __asm ("stmdaeq r8, {r3, r4, r6, r7, sl, fp, ip, sp, lr}");
0x080538a8 mov r0, r5 | r0 = r5;
0x080538ac stmdaeq r8, {r2, r7, fp, ip, sp, lr} | __asm ("stmdaeq r8, {r2, r7, fp, ip, sp, lr}");
| }
| label_1:
0x080538b0 mov r0, r4 | r0 = r4;
0x080538b4 add sp, sp, 0x18 |
0x080538b8 pop {r4, r5, r6, r7, r8, pc} |
| label_6:
0x080538bc cmp r7, 0 |
0x080538c0 beq 0x8053898 |
| } while (r7 == 0);
0x080538c4 mov r0, r7 | r0 = r7;
0x080538c8 stmdaeq r8, {r3, r6, r8, sb, sl, ip, sp, lr} | __asm ("stmdaeq r8, {r3, r6, r8, sb, sl, ip, sp, lr}");
0x080538cc b 0x8053898 | goto label_0;
| do {
| label_3:
0x080538d0 mov r4, 0 | r4 = 0;
0x080538d4 mov r0, r4 | r0 = r4;
0x080538d8 add sp, sp, 0x18 |
0x080538dc pop {r4, r5, r6, r7, r8, pc} |
| label_4:
0x080538e0 cmp r7, 0 |
0x080538e4 beq 0x80538d0 |
| } while (r7 == 0);
0x080538e8 mov r0, r7 | r0 = r7;
0x080538ec stmdaeq r8, {r3, r6, r8, sb, sl, ip, sp, lr} | __asm ("stmdaeq r8, {r3, r6, r8, sb, sl, ip, sp, lr}");
0x080538f0 b 0x80538b0 | goto label_1;
| label_5:
0x080538f4 mvn r4, 0xb | r4 = ~0xb;
0x080538f8 b 0x8053880 | goto label_2;
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/lib/modules/5.10.52-axis8/kernel/fs/ext4/ext4.ko @ 0x8053cb0 */
| #include <stdint.h>
|
| #define BIT_MASK(t,v) ((t)(-((v)!= 0)))&(((t)-1)>>((sizeof(t)*CHAR_BIT)-(v)))
|
; (fcn) sym.ext4_fc_replay () | void ext4_fc_replay (int32_t arg1, int32_t arg2) {
| int32_t var_0h;
| int32_t var_8h;
| int32_t var_ch;
| int32_t var_14h;
| int32_t var_18h;
| int32_t var_1ch;
| int32_t var_30h;
| int32_t var_74h;
| r0 = arg1;
| r1 = arg2;
0x08053cb0 push {r4, r5, r6, r7, r8, sb, sl, fp, lr} |
0x08053cb4 cmp r2, 0 |
0x08053cb8 ldr sl, [r0, 0x2a8] | sl = *((r0 + 0x2a8));
0x08053cbc sub sp, sp, 0x74 |
0x08053cc0 ldr r7, [sl, 0x1f0] | r7 = *((sl + 0x1f0));
| if (r2 != 0) {
0x08053cc4 beq 0x8054398 |
0x08053cc8 ldr r3, [r7, 0x390] | r3 = *((r7 + 0x390));
0x08053ccc ldr sb, [r7, 0x388] | sb = *((r7 + 0x388));
0x08053cd0 cmp r3, r2 |
| if (r3 == r2) {
0x08053cd4 strne r2, [r7, 0x390] | *((r7 + 0x390)) = r2;
| }
0x08053cd8 ldrhne r3, [r7, 0x78] | __asm ("ldrhne r3, [r7, 0x78]");
| if (r3 == r2) {
0x08053cdc orrne r3, r3, 0x20 | r3 |= 0x20;
| }
0x08053ce0 strhne r3, [r7, 0x78] | __asm ("strhne r3, [r7, 0x78]");
0x08053ce4 cmp sb, 0 |
| if (sb != 0) {
0x08053ce8 beq 0x8054384 |
0x08053cec ldr r3, [r0, 0x19c] | r3 = *((r0 + 0x19c));
0x08053cf0 ldr fp, [r1, 0x1c] | fp = *((r1 + 0x1c));
0x08053cf4 sub r3, r3, 1 | r3--;
0x08053cf8 add r3, fp, r3 | r3 = fp + r3;
0x08053cfc str r3, [sp, 0xc] | var_ch = r3;
0x08053d00 cmp fp, r3 |
| if (fp >= r3) {
0x08053d04 bhs 0x80546f0 | goto label_1;
| }
0x08053d08 mov r3, sp | r3 = sp;
0x08053d0c str r7, [sp, 8] | var_8h = r7;
0x08053d10 bic r3, r3, 0x1fc0 | r3 = BIT_MASK (r3, 0x1fc0);
0x08053d14 bic r3, r3, 0x3f | r3 = BIT_MASK (r3, 0x3f);
0x08053d18 str r3, [sp, 0x14] | var_14h = r3;
0x08053d1c stmdaeq r5, {r2, r3, r4, r5, r7, fp, ip, sp, lr, pc} | __asm ("stmdaeq r5, {r2, r3, r4, r5, r7, fp, ip, sp, lr, pc}");
0x08053d20 stmdaeq r5, {r2, r3, r4, r5, r7, fp, ip, sp, lr, pc} | __asm ("stmdaeq r5, {r2, r3, r4, r5, r7, fp, ip, sp, lr, pc}");
0x08053d24 str r3, [sp, 0x1c] | var_1ch = r3;
0x08053d28 mov r3, 0x8000 |
0x08053d2c movt r3, 0xffff | r3 = 0x-8000;
0x08053d30 str r3, [sp, 0x18] | var_18h = r3;
0x08053d34 mov ip, fp |
0x08053d38 cmp sb, 0 |
0x08053d3c ldr r5, [ip], 4 | r5 = *(ip);
| ip += 4;
0x08053d40 str r5, [sp, 0x30] | var_30h = r5;
| if (sb == 0) {
0x08053d44 beq 0x8054384 | goto label_2;
| }
0x08053d48 ldr r2, [sp, 8] | r2 = var_8h;
0x08053d4c uxth r3, r5 | r3 = (int16_t) r5;
0x08053d50 sub r3, r3, 1 | r3--;
0x08053d54 sub sb, sb, 1 | sb--;
0x08053d58 str sb, [r2, 0x388] | *((r2 + 0x388)) = sb;
0x08053d5c cmp r3, 8 |
| if (r3 > 8) {
| /* switch table (9 cases) at 0x8053d68 */
0x08053d60 ldrls pc, [pc, r3, lsl 2] | offset_0 = r3 << 2;
| pc = *((pc + offset_0));
| }
0x08053d64 b 0x8054a10 | goto label_3;
| }
| label_2:
0x08054384 mov r0, sl | r0 = sl;
0x08054388 bl 0x80536a0 | ext4_fc_set_bitmaps_and_counters ();
| label_0:
0x0805438c mov r0, sb | r0 = sb;
0x08054390 add sp, sp, 0x74 |
0x08054394 pop {r4, r5, r6, r7, r8, sb, sl, fp, pc} |
| }
0x08054398 str r2, [r7, 0x390] | *((r7 + 0x390)) = r2;
0x0805439c ldr r8, [r0, 0x2a8] | r8 = *((r0 + 0x2a8));
0x080543a0 ldr r5, [r1, 0x1c] | r5 = *((r1 + 0x1c));
0x080543a4 ldr r7, [r0, 0x19c] | r7 = *((r0 + 0x19c));
0x080543a8 ldr r4, [r8, 0x1f0] | r4 = *((r8 + 0x1f0));
0x080543ac ldr r2, [r4, 0x38c] | r2 = *((r4 + 0x38c));
0x080543b0 cmp r2, 0 |
0x080543b4 beq 0x8054700 |
| while (r1 == 9) {
0x080543b8 cmp r3, r2 |
| if (r3 != r2) {
0x080543bc bne 0x80549ec | goto label_4;
| }
0x080543c0 sub r7, r7, 1 | r7--;
0x080543c4 add r3, r3, 1 | r3++;
0x080543c8 add r7, r5, r7 | r7 = r5 + r7;
0x080543cc str r3, [r4, 0x38c] | *((r4 + 0x38c)) = r3;
0x080543d0 cmp r5, r7 |
| if (r5 < r7) {
0x080543d4 bhs 0x80546f0 |
0x080543d8 mov ip, r5 |
0x080543dc ldr r6, [ip], 4 | r6 = *(ip);
| ip += 4;
0x080543e0 uxth r3, r6 | r3 = (int16_t) r6;
0x080543e4 sub r3, r3, 1 | r3--;
0x080543e8 cmp r3, 8 |
| if (r3 > 8) {
| /* switch table (9 cases) at 0x80543f4 */
0x080543ec ldrls pc, [pc, r3, lsl 2] | offset_1 = r3 << 2;
| pc = *((pc + offset_1));
| }
0x080543f0 b 0x8054a04 | goto label_5;
| }
| label_1:
0x080546f0 mov sb, 1 | sb = 1;
0x080546f4 mov r0, sb | r0 = sb;
0x080546f8 add sp, sp, 0x74 |
0x080546fc pop {r4, r5, r6, r7, r8, sb, sl, fp, pc} |
0x08054700 str r2, [r4, 0x394] | *((r4 + 0x394)) = r2;
0x08054704 str r2, [r4, 0x388] | *((r4 + 0x388)) = r2;
0x08054708 str r2, [r4, 0x398] | *((r4 + 0x398)) = r2;
0x0805470c str r2, [r4, 0x39c] | *((r4 + 0x39c)) = r2;
0x08054710 str r2, [r4, 0x3a0] | *((r4 + 0x3a0)) = r2;
0x08054714 str r2, [r4, 0x3a4] | *((r4 + 0x3a4)) = r2;
0x08054718 str r2, [r4, 0x3a8] | *((r4 + 0x3a8)) = r2;
0x0805471c ldrh r1, [r5] | r1 = *(r5);
0x08054720 cmp r1, 9 |
0x08054724 beq 0x80543b8 |
| }
| do {
0x08054728 mov sb, 0 | sb = 0;
0x0805472c mov r0, sb | r0 = sb;
0x08054730 add sp, sp, 0x74 |
0x08054734 pop {r4, r5, r6, r7, r8, sb, sl, fp, pc} |
| label_4:
0x080549ec mvn sb, 0x74 | sb = ~0x74;
0x080549f0 b 0x805438c | goto label_0;
| label_5:
0x08054a04 ldr r3, [r4, 0x388] | r3 = *((r4 + 0x388));
0x08054a08 cmp r3, 0 |
0x08054a0c bne 0x8054728 |
| } while (r3 != 0);
| label_3:
0x08054a10 mvn sb, 0x7c | sb = ~0x7c;
0x08054a14 b 0x805438c | goto label_0;
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/lib/modules/5.10.52-axis8/kernel/fs/ext4/ext4.ko @ 0x805626c */
| #include <stdint.h>
|
; (fcn) sym.ext4_fc_replay_check_excluded () | void ext4_fc_replay_check_excluded (int32_t arg1) {
| r0 = arg1;
0x0805626c push {r4, r5, r6, lr} |
0x08056270 ldr r1, [r0, 0x1f0] | r1 = *((r0 + 0x1f0));
0x08056274 ldr r5, [r1, 0x3a8] | r5 = *((r1 + 0x3a8));
0x08056278 cmp r5, 0 |
| if (r5 <= 0) {
0x0805627c ble 0x80562d8 | goto label_0;
| }
0x08056280 ldr r1, [r1, 0x39c] | r1 = *((r1 + 0x39c));
0x08056284 mov r0, 0 | r0 = 0;
| do {
0x08056288 ldr ip, [r1, 0x10] | ip = *((r1 + 0x10));
0x0805628c add r0, r0, 1 | r0++;
0x08056290 cmp ip, 0 |
| if (ip != 0) {
0x08056294 beq 0x80562cc |
0x08056298 ldr ip, [r1, 0x14] | ip = *((r1 + 0x14));
0x0805629c cmp ip, 0 |
| if (ip == 0) {
0x080562a0 beq 0x80562cc | goto label_1;
| }
0x080562a4 ldr r4, [r1, 8] | r4 = *((r1 + 8));
0x080562a8 ldr lr, [r1, 0xc] |
0x080562ac cmp r2, r4 |
0x080562b0 sbcs r6, r3, lr | __asm ("sbcs r6, r3, lr");
| if (r2 <= r4) {
0x080562b4 blo 0x80562cc | goto label_1;
| }
0x080562b8 adds r4, ip, r4 | r4 = ip + r4;
0x080562bc adc lr, lr, ip, asr 31 | __asm ("adc lr, lr, ip, asr 31");
0x080562c0 cmp r2, r4 |
0x080562c4 sbcs lr, r3, lr | __asm ("sbcs lr, r3, lr");
| if (r2 <= r4) {
0x080562c8 blo 0x80562e0 | goto label_2;
| }
| }
| label_1:
0x080562cc add r1, r1, 0x18 | r1 += 0x18;
0x080562d0 cmp r0, r5 |
0x080562d4 bne 0x8056288 |
| } while (r0 != r5);
| label_0:
0x080562d8 mov r0, 0 | r0 = 0;
0x080562dc pop {r4, r5, r6, pc} |
| label_2:
0x080562e0 mov r0, 1 | r0 = 1;
0x080562e4 pop {r4, r5, r6, pc} |
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/lib/modules/5.10.52-axis8/kernel/fs/ext4/ext4.ko @ 0x80562e8 */
| #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;
0x080562e8 push {r4, lr} |
0x080562ec ldr r4, [r0, 0x1f0] | r4 = *((r0 + 0x1f0));
0x080562f0 ldrh r3, [r4, 0x78] | r3 = *((r4 + 0x78));
0x080562f4 ldr r0, [r4, 0x39c] | r0 = *((r4 + 0x39c));
0x080562f8 bic r3, r3, 0x20 | r3 = BIT_MASK (r3, 0x20);
0x080562fc strh r3, [r4, 0x78] | *((r4 + 0x78)) = r3;
0x08056300 stmdaeq r8, {r4, r5, r8, sb, sl, ip, sp, lr} | __asm ("stmdaeq r8, {r4, r5, r8, sb, sl, ip, sp, lr}");
0x08056304 ldr r0, [r4, 0x3ac] | r0 = *((r4 + 0x3ac));
0x08056308 pop {r4, lr} |
0x0805630c stmdaeq r8, {r4, r5, r8, sb, sl, ip, sp, lr} | __asm ("stmdaeq r8, {r4, r5, r8, sb, sl, ip, sp, lr}");
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/lib/modules/5.10.52-axis8/kernel/fs/ext4/ext4.ko @ 0x8000870 */
| #include <stdint.h>
|
| #define BIT_MASK(t,v) ((t)(-((v)!= 0)))&(((t)-1)>>((sizeof(t)*CHAR_BIT)-(v)))
|
; (fcn) sym.ext4_should_retry_alloc () | void ext4_should_retry_alloc (int32_t arg1, int32_t arg2) {
| int32_t var_0h;
| int32_t var_8h;
| r0 = arg1;
| r1 = arg2;
0x08000870 push {r4, lr} |
0x08000874 ldr r0, [r0, 0x1f0] | r0 = *((r0 + 0x1f0));
0x08000878 sub sp, sp, 8 |
0x0800087c ldr r3, [r0, 0x118] | r3 = *((r0 + 0x118));
0x08000880 cmp r3, 0 |
| if (r3 == 0) {
0x08000884 beq 0x8000930 | goto label_0;
| }
0x08000888 ldr r3, [r1] | r3 = *(r1);
0x0800088c add r3, r3, 1 | r3++;
0x08000890 str r3, [r1] | *(r1) = r3;
0x08000894 cmp r3, 3 |
| if (r3 > 3) {
0x08000898 bgt 0x80008e0 | goto label_1;
| }
0x0800089c ldr r1, [r0, 0x160] | r1 = *((r0 + 0x160));
0x080008a0 cmp r1, 0 |
| if (r1 == 0) {
0x080008a4 beq 0x80008c0 | goto label_2;
| }
0x080008a8 ldr r0, [r0, 0x118] | r0 = *((r0 + 0x118));
0x080008ac mov r4, 1 | r4 = 1;
0x080008b0 stmdaeq r8, {r2, r5, r6, r7, sb, sl, ip, sp, lr} | __asm ("stmdaeq r8, {r2, r5, r6, r7, sb, sl, ip, sp, lr}");
| do {
0x080008b4 mov r0, r4 | r0 = r4;
0x080008b8 add sp, sp, 8 |
0x080008bc pop {r4, pc} |
| label_2:
0x080008c0 mov r2, 1 | r2 = 1;
0x080008c4 mov r3, 0 | r3 = 0;
0x080008c8 str r1, [sp] | *(sp) = r1;
0x080008cc bl 0x8000070 | r0 = ext4_has_free_clusters ();
0x080008d0 mov r4, r0 | r4 = r0;
0x080008d4 mov r0, r4 | r0 = r4;
0x080008d8 add sp, sp, 8 |
0x080008dc pop {r4, pc} |
| label_1:
0x080008e0 mov r3, sp | r3 = sp;
0x080008e4 bic r3, r3, 0x1fc0 | r3 = BIT_MASK (r3, 0x1fc0);
0x080008e8 bic r3, r3, 0x3f | r3 = BIT_MASK (r3, 0x3f);
0x080008ec ldr r2, [r3, 4] | r2 = *((r3 + 4));
0x080008f0 add r2, r2, 1 | r2++;
0x080008f4 str r2, [r3, 4] | *((r3 + 4)) = r2;
0x080008f8 ldr r2, [r0, 0xd0] | r2 = *((r0 + 0xd0));
0x080008fc ldr r1, [r0, 0xd4] | r1 = *((r0 + 0xd4));
0x08000900 adds r2, r2, 1 | r2++;
0x08000904 str r2, [r0, 0xd0] | *((r0 + 0xd0)) = r2;
0x08000908 adc r2, r1, 0 | __asm ("adc r2, r1, 0");
0x0800090c str r2, [r0, 0xd4] | *((r0 + 0xd4)) = r2;
0x08000910 ldr r4, [r3, 4] | r4 = *((r3 + 4));
0x08000914 sub r4, r4, 1 | r4--;
0x08000918 str r4, [r3, 4] | *((r3 + 4)) = r4;
0x0800091c cmp r4, 0 |
| if (r4 == 0) {
0x08000920 bne 0x8000930 |
0x08000924 ldr r3, [r3] | r3 = *(r3);
0x08000928 tst r3, 2 |
| if ((r3 & 2) != 0) {
0x0800092c bne 0x8000940 | goto label_3;
| }
| }
| label_0:
0x08000930 mov r4, 0 | r4 = 0;
0x08000934 mov r0, r4 | r0 = r4;
0x08000938 add sp, sp, 8 |
0x0800093c pop {r4, pc} |
| label_3:
0x08000940 stmdaeq r8, {r4, r6, r7, sb, sl, ip, sp, lr} | __asm ("stmdaeq r8, {r4, r6, r7, sb, sl, ip, sp, lr}");
0x08000944 b 0x80008b4 |
| } while (1);
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/lib/modules/5.10.52-axis8/kernel/fs/ext4/ext4.ko @ 0x80128cc */
| #include <stdint.h>
|
; (fcn) sym.ext4fs_dirhash () | void ext4fs_dirhash (int32_t arg2) {
| int32_t var_20h;
| int32_t var_28h;
| int32_t var_2ch;
| int32_t var_30h;
| int32_t var_34h;
| int32_t var_5ch;
| r1 = arg2;
0x080128cc push {r4, r5, r6, r7, r8, sb, sl, fp, lr} |
0x080128d0 mov lr, r3 | lr = r3;
0x080128d4 movw r0, 0x2301 |
0x080128d8 movt r0, 0x6745 | r0 = 0x67452301;
0x080128dc sub sp, sp, 0x5c |
0x080128e0 ldr lr, [lr, 0xc] |
0x080128e4 mov ip, r1 |
0x080128e8 mov r7, r2 | r7 = r2;
0x080128ec str r3, [sp, 0x20] | var_20h = r3;
0x080128f0 cmp lr, 0 |
0x080128f4 movw r3, 0xab89 |
0x080128f8 movt r3, 0xefcd | r3 = 0xefcdab89;
0x080128fc str r0, [sp, 0x28] | var_28h = r0;
0x08012900 str r3, [sp, 0x2c] | var_2ch = r3;
0x08012904 movw r3, 0xdcfe |
0x08012908 movt r3, 0x98ba | r3 = 0x98badcfe;
0x0801290c str r3, [sp, 0x30] | var_30h = r3;
0x08012910 movw r3, 0x5476 |
0x08012914 movt r3, 0x1032 | r3 = 0x10325476;
0x08012918 str r3, [sp, 0x34] | var_34h = r3;
| if (lr == 0) {
0x0801291c beq 0x801293c | goto label_1;
| }
0x08012920 sub r3, lr, 4 | r3 = lr - 4;
0x08012924 add r1, lr, 0xc | r1 = lr + 0xc;
| do {
0x08012928 ldr r2, [r3, 4]! | r2 = *((r3 += 4));
0x0801292c cmp r2, 0 |
| if (r2 != 0) {
0x08012930 bne 0x8012ec8 | goto label_2;
| }
0x08012934 cmp r1, r3 |
0x08012938 bne 0x8012928 |
| } while (r1 != r3);
| do {
| label_1:
0x0801293c ldr r3, [sp, 0x20] | r3 = var_20h;
0x08012940 ldr r3, [r3, 8] | r3 = *((r3 + 8));
0x08012944 cmp r3, 5 |
| if (r3 > 5) {
| /* switch table (6 cases) at 0x8012950 */
0x08012948 ldrls pc, [pc, r3, lsl 2] | offset_0 = r3 << 2;
| pc = *((pc + offset_0));
| }
0x0801294c b 0x8012ef4 | goto label_3;
| label_0:
0x08012a60 add sp, sp, 0x5c |
0x08012a64 pop {r4, r5, r6, r7, r8, sb, sl, fp, pc} |
| label_2:
0x08012ec8 add r4, sp, 0x28 | r4 += var_28h;
0x08012ecc ldr r0, [lr] | r0 = *(lr);
0x08012ed0 ldr r1, [lr, 4] | r1 = *((lr + 4));
0x08012ed4 ldr r2, [lr, 8] | r2 = *((lr + 8));
0x08012ed8 ldr r3, [lr, 0xc] | r3 = *((lr + 0xc));
0x08012edc stm r4!, {r0, r1, r2, r3} | *(r4!) = r0;
| *((r4! + 4)) = r1;
| *((r4! + 8)) = r2;
| *((r4! + 12)) = r3;
0x08012ee0 b 0x801293c |
| } while (1);
| label_3:
0x08012ef4 ldr r2, [sp, 0x20] | r2 = var_20h;
0x08012ef8 mov r3, 0 | r3 = 0;
0x08012efc mvn r0, 0 | r0 = ~0;
0x08012f00 str r3, [r2] | *(r2) = r3;
0x08012f04 b 0x8012a60 | goto label_0;
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/lib/modules/5.10.52-axis8/kernel/fs/ext4/ext4.ko @ 0x8047030 */
| #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_70h, uint32_t arg1, int32_t arg2) {
| int32_t var_0h;
| int32_t var_8h;
| int32_t var_ch;
| int32_t var_ch_2;
| int32_t var_14h;
| int32_t var_6h;
| int32_t var_4h;
| int32_t var_1ch;
| int32_t var_24h;
| int32_t var_30h;
| int32_t var_34h;
| int32_t var_4ch;
| r0 = arg1;
| r1 = arg2;
0x08047030 push {r4, r5, r6, r7, r8, sb, sl, fp, lr} |
0x08047034 cmp r0, 0 |
0x08047038 sub sp, sp, 0x4c |
0x0804703c strd r2, r3, [sp, 0xc] | __asm ("strd r2, r3, [var_ch]");
0x08047040 ldr r3, [r1, 0x1f0] | r3 = *((r1 + 0x1f0));
0x08047044 str r0, [sp, 0x1c] | var_1ch = r0;
0x08047048 str r3, [sp, 8] | var_8h = r3;
| if (arg_70h == ) {
0x0804704c beq 0x8047440 | goto label_1;
| }
0x08047050 mov r3, sp | r3 = sp;
0x08047054 ldr r8, [pc, 0xa58] | r8 = *(0x8047ab0);
0x08047058 bic r3, r3, 0x1fc0 | r3 = BIT_MASK (r3, 0x1fc0);
0x0804705c stmdaeq r5, {r4, r5, r6, r8, sb, sl, fp, lr, pc} | __asm ("stmdaeq r5, {r4, r5, r6, r8, sb, sl, fp, lr, pc}");
0x08047060 stmdaeq r5, {r4, r5, r6, r8, sb, sl, fp, lr, pc} | __asm ("stmdaeq r5, {r4, r5, r6, r8, sb, sl, fp, lr, pc}");
0x08047064 movw fp, 0xae14 |
0x08047068 movt fp, 0x147 | fp = 0x147ae14;
0x0804706c mov r5, r1 | r5 = r1;
0x08047070 bic r3, r3, 0x3f | r3 = BIT_MASK (r3, 0x3f);
0x08047074 str r3, [sp, 0x14] | var_14h = r3;
| do {
| label_2:
0x08047078 mov r1, r6 | r1 = r6;
0x0804707c add r0, sp, 0x1c | r0 += var_1ch;
0x08047080 stmdaeq r8, {r6, r7, r8, sb, fp, ip, sp, lr} | __asm ("stmdaeq r8, {r6, r7, r8, sb, fp, ip, sp, lr}");
0x08047084 subs sl, r0, 0 | sl -= var_1ch;
| if (sl == var_1ch) {
0x08047088 beq 0x8047430 | goto label_6;
| }
0x0804708c ldrb r3, [sl] | r3 = *(sl);
0x08047090 cmp r3, 0 |
0x08047094 beq 0x8047078 |
| } while (r3 == 0);
0x08047098 add r2, sp, 0x30 | r2 += var_30h;
0x0804709c mov r1, r8 | r1 = r8;
0x080470a0 mov r7, 0 | r7 = 0;
0x080470a4 str r7, [sp, 0x30] | var_30h = r7;
0x080470a8 str r7, [sp, 0x34] | var_34h = r7;
0x080470ac stmdaeq r8, {r2, r6, r7, r8, sb, fp, ip, sp, lr} | __asm ("stmdaeq r8, {r2, r6, r7, r8, sb, fp, ip, sp, lr}");
0x080470b0 sub r3, r0, 6 | r3 -= var_6h;
0x080470b4 str r7, [sp, 0x24] | var_24h = r7;
0x080470b8 mov r4, r0 | r4 = r0;
0x080470bc ldr r7, [r5, 0x1f0] | r7 = *((r5 + 0x1f0));
0x080470c0 cmp r3, 0x38 |
| if (r3 > 0x38) {
| /* switch table (57 cases) at 0x80470cc */
0x080470c4 ldrls pc, [pc, r3, lsl 2] | offset_0 = r3 << 2;
| pc = *((pc + offset_0));
| }
0x080470c8 b 0x80471d4 |
0x080471d4 ldr sb, [pc, 0x8e0] | sb = loc..LANCHOR0;
0x080471d8 mov r3, 1 | r3 = 1;
0x080471dc b 0x80471ec |
| while (r4 != r3) {
0x080471e0 ldr r3, [sb, 0xc]! | r3 = *((sb += 0xc));
0x080471e4 cmp r3, 0x2e |
| if (r3 == 0x2e) {
0x080471e8 beq 0x8047540 | goto label_7;
| }
0x080471ec cmp r4, r3 |
0x080471f0 bne 0x80471e0 |
| }
0x080471f4 ldr r2, [sb, 8] | r2 = *((sb + 8));
0x080471f8 tst r2, 0x200 |
0x080471fc bne 0x8047450 |
| while (r1 != r3) {
0x08047200 ldr r1, [sp, 0x30] | r1 = var_30h;
0x08047204 cmp r1, 0 |
| if (r1 != 0) {
0x08047208 beq 0x8047228 |
0x0804720c tst r2, 0x400 |
| if ((r2 & 0x400) == 0) {
0x08047210 beq 0x80474e8 | goto label_8;
| }
0x08047214 tst r2, 0x20 |
| if ((r2 & 0x20) == 0) {
0x08047218 beq 0x8047228 | goto label_3;
| }
| label_4:
0x0804721c ldr r3, [sp, 0x24] | r3 = var_24h;
0x08047220 cmp r3, 0 |
| if (r3 < 0) {
0x08047224 blt 0x8047518 | goto label_9;
| }
| }
| label_3:
0x08047228 tst r2, 8 |
| if ((r2 & 8) != 0) {
0x0804722c beq 0x8047258 |
0x08047230 ldr r3, [sb, 4] | r3 = *((sb + 4));
0x08047234 tst r3, 0x8000000 |
| if ((r3 & loc.imp.fs_overflowgid) != 0) {
0x08047238 bne 0x8047528 | goto label_10;
| }
0x0804723c tst r3, 0x800000 |
| if ((r3 & 0x800000) == 0) {
0x08047240 beq 0x8047518 | goto label_9;
| }
0x08047244 ldr r2, [r5, 0x1f0] | r2 = *((r5 + 0x1f0));
0x08047248 ldr r3, [r2, 0x50] | r3 = *((r2 + 0x50));
0x0804724c orr r3, r3, 8 | r3 |= 8;
0x08047250 str r3, [r2, 0x50] | *((r2 + 0x50)) = r3;
0x08047254 ldr r2, [sb, 8] | r2 = *((sb + 8));
| }
| label_5:
0x08047258 tst r2, 0x10 |
| if ((r2 & 0x10) == 0) {
0x0804725c ldrne r2, [r5, 0x1f0] | r2 = *((r5 + 0x1f0));
| }
| if ((r2 & 0x10) == 0) {
0x08047260 ldrne r3, [r2, 0x4c] | r3 = *((r2 + 0x4c));
| }
0x08047264 bicne r3, r3, 0x70 | __asm ("bicne r3, r3, 0x70");
| if ((r2 & 0x10) == 0) {
0x08047268 strne r3, [r2, 0x4c] | *((r2 + 0x4c)) = r3;
| }
| if ((r2 & 0x10) == 0) {
0x0804726c ldrne r2, [sb, 8] | r2 = *((sb + 8));
| }
0x08047270 ands r3, r2, 4 | r3 = r2 & 4;
| if (r3 != r2) {
0x08047274 bne 0x80474c8 | goto label_11;
| }
0x08047278 sub r0, r4, 4 | r0 -= var_4h;
0x0804727c cmp r0, 0x47 |
| if (r0 > 0x47) {
| /* switch table (72 cases) at 0x8047288 */
0x08047280 ldrls pc, [pc, r0, lsl 2] | offset_1 = r0 << 2;
| pc = *((pc + offset_1));
| }
0x08047284 b 0x804756c | goto label_12;
| label_6:
0x08047430 ldr r3, [r5, 0x1f0] | r3 = *((r5 + 0x1f0));
0x08047434 ldr r3, [r3, 0x4c] | r3 = *((r3 + 0x4c));
0x08047438 tst r3, 0x400000 |
| if ((r3 & 0x400000) != 0) {
0x0804743c bne 0x804748c | goto label_13;
| }
| label_1:
0x08047440 mov sb, 1 | sb = 1;
| label_0:
0x08047444 mov r0, sb | r0 = sb;
0x08047448 add sp, sp, 0x4c |
0x0804744c pop {r4, r5, r6, r7, r8, sb, sl, fp, pc} |
0x08047450 ldr r3, [r5, 0x70] | r3 = *((r5 + 0x70));
0x08047454 ldr r1, [r3, 0x20] | r1 = *((r3 + 0x20));
0x08047458 stmdaeq r5, {r3, r6, sl, fp, ip, sp, lr, pc} | __asm ("stmdaeq r5, {r3, r6, sl, fp, ip, sp, lr, pc}");
0x0804745c stmdaeq r5, {r3, r6, sl, fp, ip, sp, lr, pc} | __asm ("stmdaeq r5, {r3, r6, sl, fp, ip, sp, lr, pc}");
0x08047460 cmp r1, r3 |
0x08047464 bne 0x8047200 |
| }
0x08047468 mov r3, sl | r3 = sl;
0x0804746c mov r0, r5 | r0 = r5;
0x08047470 stmdaeq r5, {r2, r3, r5, r7, sl, fp, lr, pc} | __asm ("stmdaeq r5, {r2, r3, r5, r7, sl, fp, lr, pc}");
0x08047474 stmdaeq r5, {r2, r3, r5, r7, sl, fp, lr, pc} | __asm ("stmdaeq r5, {r2, r3, r5, r7, sl, fp, lr, pc}");
0x08047478 stmdaeq r5, {r3, r4, fp, lr, pc} | __asm ("stmdaeq r5, {r3, r4, fp, lr, pc}");
0x0804747c stmdaeq r5, {r3, r4, fp, lr, pc} | __asm ("stmdaeq r5, {r3, r4, fp, lr, pc}");
0x08047480 mov sb, 0 | sb = 0;
0x08047484 stmdaeq r4, {r3, r4, r5, r6, r7, sb, sl, fp, ip, lr} | __asm ("stmdaeq r4, {r3, r4, r5, r6, r7, sb, sl, fp, ip, lr}");
0x08047488 b 0x8047444 | goto label_0;
| label_13:
0x0804748c ldr r3, [sp, 8] | r3 = var_8h;
0x08047490 ldr r2, [r3, 0x44] | r2 = *((r3 + 0x44));
0x08047494 mov r3, 0x400 | r3 = 0x400;
0x08047498 ldr r2, [r2, 0x18] | r2 = *((r2 + 0x18));
0x0804749c lsl r3, r3, r2 | r3 <<= r2;
0x080474a0 cmp r3, 0x1000 |
| if (r3 >= 0x1000) {
0x080474a4 bhs 0x8047440 | goto label_1;
| }
0x080474a8 mov r0, r5 | r0 = r5;
0x080474ac stmdaeq r5, {r2, r4, r5, r6, r8, sb, sl, fp, lr, pc} | __asm ("stmdaeq r5, {r2, r4, r5, r6, r8, sb, sl, fp, lr, pc}");
0x080474b0 stmdaeq r5, {r2, r4, r5, r6, r8, sb, sl, fp, lr, pc} | __asm ("stmdaeq r5, {r2, r4, r5, r6, r8, sb, sl, fp, lr, pc}");
0x080474b4 stmdaeq r5, {r3, r5, r6, sl, fp, lr, pc} | __asm ("stmdaeq r5, {r3, r5, r6, sl, fp, lr, pc}");
0x080474b8 stmdaeq r5, {r3, r5, r6, sl, fp, lr, pc} | __asm ("stmdaeq r5, {r3, r5, r6, sl, fp, lr, pc}");
0x080474bc mov sb, 1 | sb = 1;
0x080474c0 stmdaeq r4, {r3, r4, r5, r6, r7, sb, sl, fp, ip, lr} | __asm ("stmdaeq r4, {r3, r4, r5, r6, r7, sb, sl, fp, ip, lr}");
0x080474c4 b 0x8047444 | goto label_0;
| label_11:
0x080474c8 mov r3, sl | r3 = sl;
0x080474cc mov r0, r5 | r0 = r5;
0x080474d0 stmdaeq r5, {r3, r4, r6, r7, sl, fp, lr, pc} | __asm ("stmdaeq r5, {r3, r4, r6, r7, sl, fp, lr, pc}");
0x080474d4 stmdaeq r5, {r3, r4, r6, r7, sl, fp, lr, pc} | __asm ("stmdaeq r5, {r3, r4, r6, r7, sl, fp, lr, pc}");
0x080474d8 stmdaeq r5, {r3, r4, fp, lr, pc} | __asm ("stmdaeq r5, {r3, r4, fp, lr, pc}");
0x080474dc stmdaeq r5, {r3, r4, fp, lr, pc} | __asm ("stmdaeq r5, {r3, r4, fp, lr, pc}");
0x080474e0 stmdaeq r4, {r3, r4, r5, r6, r7, sb, sl, fp, ip, lr} | __asm ("stmdaeq r4, {r3, r4, r5, r6, r7, sb, sl, fp, ip, lr}");
0x080474e4 b 0x8047078 | goto label_2;
| label_8:
0x080474e8 add r1, sp, 0x24 | r1 += var_24h;
0x080474ec add r0, sp, 0x30 | r0 += var_30h;
0x080474f0 stmdaeq r8, {r3, r6, r7, r8, sb, fp, ip, sp, lr} | __asm ("stmdaeq r8, {r3, r6, r7, r8, sb, fp, ip, sp, lr}");
0x080474f4 cmp r0, 0 |
| if (r0 != 0) {
0x080474f8 bne 0x8047518 | goto label_9;
| }
0x080474fc ldr r1, [sp, 0x30] | r1 = var_30h;
0x08047500 ldr r2, [sb, 8] | r2 = *((sb + 8));
0x08047504 cmp r1, 0 |
| if (r1 == 0) {
0x08047508 beq 0x8047228 | goto label_3;
| }
0x0804750c tst r2, 0x20 |
| if ((r2 & 0x20) == 0) {
0x08047510 beq 0x8047228 | goto label_3;
| }
0x08047514 b 0x804721c | goto label_4;
| label_9:
0x08047518 mov sb, 0 | sb = 0;
0x0804751c mov r0, sb | r0 = sb;
0x08047520 add sp, sp, 0x4c |
0x08047524 pop {r4, r5, r6, r7, r8, sb, sl, fp, pc} |
| label_10:
0x08047528 ldr r2, [r5, 0x1f0] | r2 = *((r5 + 0x1f0));
0x0804752c ldr r3, [r2, 0x50] | r3 = *((r2 + 0x50));
0x08047530 orr r3, r3, 1 | r3 |= 1;
0x08047534 str r3, [r2, 0x50] | *((r2 + 0x50)) = r3;
0x08047538 ldr r2, [sb, 8] | r2 = *((sb + 8));
0x0804753c b 0x8047258 | goto label_5;
| label_7:
0x08047540 mov r0, r5 | r0 = r5;
0x08047544 mov r3, sl | r3 = sl;
0x08047548 stmdaeq r5, {r2, r4, r6, r7, r8, sb, sl, fp, lr, pc} | __asm ("stmdaeq r5, {r2, r4, r6, r7, r8, sb, sl, fp, lr, pc}");
0x0804754c stmdaeq r5, {r2, r4, r6, r7, r8, sb, sl, fp, lr, pc} | __asm ("stmdaeq r5, {r2, r4, r6, r7, r8, sb, sl, fp, lr, pc}");
0x08047550 stmdaeq r5, {r3, r4, fp, lr, pc} | __asm ("stmdaeq r5, {r3, r4, fp, lr, pc}");
0x08047554 stmdaeq r5, {r3, r4, fp, lr, pc} | __asm ("stmdaeq r5, {r3, r4, fp, lr, pc}");
0x08047558 mov sb, 0 | sb = 0;
0x0804755c stmdaeq r4, {r3, r4, r5, r6, r7, sb, sl, fp, ip, lr} | __asm ("stmdaeq r4, {r3, r4, r5, r6, r7, sb, sl, fp, ip, lr}");
0x08047560 mov r0, sb | r0 = sb;
0x08047564 add sp, sp, 0x4c |
0x08047568 pop {r4, r5, r6, r7, r8, sb, sl, fp, pc} |
| label_12:
0x0804756c ands ip, r2, 0x80 |
| if (ip == r2) {
0x08047570 beq 0x8047838 | goto label_14;
| }
0x08047574 ldr r2, [sp, 0x70] | r2 = *(arg_70h);
0x08047578 cmp r2, 0 |
| if (r2 == 0) {
0x0804757c beq 0x80478a4 | goto label_15;
| }
0x08047580 ldr r2, [r7, 0x118] | r2 = *((r7 + 0x118));
0x08047584 cmp r2, 0 |
| if (r2 == 0) {
0x08047588 beq 0x8047a5c | goto label_16;
| }
0x0804758c ldr r2, [r5, 0x1f0] | r2 = *((r5 + 0x1f0));
0x08047590 ldr r1, [sb, 4] | r1 = *((sb + 4));
0x08047594 ldr r2, [r2, 0x4c] | r2 = *((r2 + 0x4c));
0x08047598 and r2, r2, 0xc00 | r2 &= 0xc00;
0x0804759c cmp r2, r1 |
| if (r2 == r1) {
0x080475a0 beq 0x8047078 | goto label_2;
| }
0x080475a4 mov r0, r5 | r0 = r5;
0x080475a8 stmdaeq r5, {r2, r4, r8, sb, sl, fp, lr, pc} | __asm ("stmdaeq r5, {r2, r4, r8, sb, sl, fp, lr, pc}");
0x080475ac stmdaeq r5, {r2, r4, r8, sb, sl, fp, lr, pc} | __asm ("stmdaeq r5, {r2, r4, r8, sb, sl, fp, lr, pc}");
0x080475b0 stmdaeq r5, {r3, r4, fp, lr, pc} | __asm ("stmdaeq r5, {r3, r4, fp, lr, pc}");
0x080475b4 stmdaeq r5, {r3, r4, fp, lr, pc} | __asm ("stmdaeq r5, {r3, r4, fp, lr, pc}");
0x080475b8 mov sb, r3 | sb = r3;
0x080475bc stmdaeq r4, {r3, r4, r5, r6, r7, sb, sl, fp, ip, lr} | __asm ("stmdaeq r4, {r3, r4, r5, r6, r7, sb, sl, fp, ip, lr}");
0x080475c0 b 0x8047444 | goto label_0;
| label_14:
0x08047838 sub r3, r4, 0x33 | r3 = r4 - 0x33;
0x0804783c cmp r3, 3 |
| if (r3 < 3) {
0x08047840 bls 0x8047958 | goto label_17;
| }
0x08047844 cmp r4, 0x1f |
| if (r4 == 0x1f) {
0x08047848 beq 0x8047944 | goto label_18;
| }
0x0804784c cmp r4, 0x20 |
| if (r4 == 0x20) {
0x08047850 beq 0x80479bc | goto label_19;
| }
0x08047854 cmp r1, 0 |
| if (r1 != 0) {
0x08047858 moveq r3, 1 | r3 = 1;
| }
| if (r1 != 0) {
0x0804785c streq r3, [sp, 0x24] | var_24h = r3;
| }
0x08047860 ands r3, r2, 2 | r3 = r2 & 2;
| if (r3 == r2) {
0x08047864 beq 0x80479ac | goto label_20;
| }
0x08047868 ldr r3, [sp, 0x24] | r3 = var_24h;
0x0804786c clz r3, r3 | r3 &= r3;
0x08047870 lsr r3, r3, 5 | r3 >>= 5;
0x08047874 str r3, [sp, 0x24] | var_24h = r3;
| do {
0x08047878 tst r2, 0x1000 |
0x0804787c ldr r2, [sb, 4] | r2 = *((sb + 4));
| if ((r2 & 0x1000) == 0) {
0x08047880 beq 0x8047a44 | goto label_21;
| }
0x08047884 cmp r3, 0 |
0x08047888 ldr r3, [r7, 0x50] | r3 = *((r7 + 0x50));
| if (r3 == 0) {
0x0804788c orrne r3, r3, r2 | r3 |= r2;
| }
0x08047890 biceq r3, r3, r2 | __asm ("biceq r3, r3, r2");
0x08047894 str r3, [r7, 0x50] | *((r7 + 0x50)) = r3;
0x08047898 b 0x8047078 | goto label_2;
| label_15:
0x080478a4 ldr r2, [r5, 0x1f0] | r2 = *((r5 + 0x1f0));
0x080478a8 ldr r3, [r2, 0x4c] | r3 = *((r2 + 0x4c));
0x080478ac bic r3, r3, 0xc00 | r3 = BIT_MASK (r3, 0xc00);
0x080478b0 str r3, [r2, 0x4c] | *((r2 + 0x4c)) = r3;
0x080478b4 ldr r2, [sb, 4] | r2 = *((sb + 4));
0x080478b8 ldr r3, [r7, 0x4c] | r3 = *((r7 + 0x4c));
0x080478bc orr r3, r3, r2 | r3 |= r2;
0x080478c0 str r3, [r7, 0x4c] | *((r7 + 0x4c)) = r3;
0x080478c4 b 0x8047078 | goto label_2;
| label_18:
0x08047944 ldr r2, [sb, 4] | r2 = *((sb + 4));
0x08047948 ldr r3, [r7, 0x4c] | r3 = *((r7 + 0x4c));
0x0804794c orr r3, r3, r2 | r3 |= r2;
0x08047950 str r3, [r7, 0x4c] | *((r7 + 0x4c)) = r3;
0x08047954 b 0x8047078 | goto label_2;
| label_17:
0x08047958 mov r0, r5 | r0 = r5;
0x0804795c stmdaeq r5, {r3, r4, r5, r8, sb, sl, fp, lr, pc} | __asm ("stmdaeq r5, {r3, r4, r5, r8, sb, sl, fp, lr, pc}");
0x08047960 stmdaeq r5, {r3, r4, r5, r8, sb, sl, fp, lr, pc} | __asm ("stmdaeq r5, {r3, r4, r5, r8, sb, sl, fp, lr, pc}");
0x08047964 stmdaeq r5, {r2, r4, r5, r7, r8, sb, fp, lr, pc} | __asm ("stmdaeq r5, {r2, r4, r5, r7, r8, sb, fp, lr, pc}");
0x08047968 stmdaeq r5, {r2, r4, r5, r7, r8, sb, fp, lr, pc} | __asm ("stmdaeq r5, {r2, r4, r5, r7, r8, sb, fp, lr, pc}");
0x0804796c mov sb, ip | sb = ip;
0x08047970 stmdaeq r4, {r3, r4, r5, r6, r7, sb, sl, fp, ip, lr} | __asm ("stmdaeq r4, {r3, r4, r5, r6, r7, sb, sl, fp, ip, lr}");
0x08047974 ldr r3, [r7, 0x50] | r3 = *((r7 + 0x50));
0x08047978 orr r3, r3, 0x20 | r3 |= 0x20;
0x0804797c str r3, [r7, 0x50] | *((r7 + 0x50)) = r3;
0x08047980 b 0x8047444 | goto label_0;
| label_20:
0x080479ac tst r2, 1 |
| if ((r2 & 1) == 0) {
0x080479b0 beq 0x8047a78 | goto label_22;
| }
0x080479b4 ldr r3, [sp, 0x24] | r3 = var_24h;
0x080479b8 b 0x8047878 |
| } while (1);
| label_19:
0x080479bc ldr r2, [sb, 4] | r2 = *((sb + 4));
0x080479c0 ldr r3, [r7, 0x4c] | r3 = *((r7 + 0x4c));
0x080479c4 bic r3, r3, r2 | r3 = BIT_MASK (r3, r2);
0x080479c8 str r3, [r7, 0x4c] | *((r7 + 0x4c)) = r3;
0x080479cc b 0x8047078 | goto label_2;
| label_21:
0x08047a44 cmp r3, 0 |
0x08047a48 ldr r3, [r7, 0x4c] | r3 = *((r7 + 0x4c));
| if (r3 == 0) {
0x08047a4c orrne r3, r3, r2 | r3 |= r2;
| }
0x08047a50 biceq r3, r3, r2 | __asm ("biceq r3, r3, r2");
0x08047a54 str r3, [r7, 0x4c] | *((r7 + 0x4c)) = r3;
0x08047a58 b 0x8047078 | goto label_2;
| label_16:
0x08047a5c mov r0, r5 | r0 = r5;
0x08047a60 stmdaeq r5, {r3, r6, r7, sb, sl, fp, lr, pc} | __asm ("stmdaeq r5, {r3, r6, r7, sb, sl, fp, lr, pc}");
0x08047a64 stmdaeq r5, {r3, r6, r7, sb, sl, fp, lr, pc} | __asm ("stmdaeq r5, {r3, r6, r7, sb, sl, fp, lr, pc}");
0x08047a68 stmdaeq r5, {r3, r5, r6, sl, fp, lr, pc} | __asm ("stmdaeq r5, {r3, r5, r6, sl, fp, lr, pc}");
0x08047a6c stmdaeq r5, {r3, r5, r6, sl, fp, lr, pc} | __asm ("stmdaeq r5, {r3, r5, r6, sl, fp, lr, pc}");
0x08047a70 stmdaeq r4, {r3, r4, r5, r6, r7, sb, sl, fp, ip, lr} | __asm ("stmdaeq r4, {r3, r4, r5, r6, r7, sb, sl, fp, ip, lr}");
0x08047a74 b 0x8047078 | goto label_2;
| label_22:
0x08047a78 mov sb, r3 | sb = r3;
0x08047a7c mov r0, r5 | r0 = r5;
0x08047a80 mov r3, sl | r3 = sl;
0x08047a84 stmdaeq r5, {r2, r4, r6, r8, sb, sl, fp, lr, pc} | __asm ("stmdaeq r5, {r2, r4, r6, r8, sb, sl, fp, lr, pc}");
0x08047a88 stmdaeq r5, {r2, r4, r6, r8, sb, sl, fp, lr, pc} | __asm ("stmdaeq r5, {r2, r4, r6, r8, sb, sl, fp, lr, pc}");
0x08047a8c stmdaeq r5, {r3, r5, r6, sl, fp, lr, pc} | __asm ("stmdaeq r5, {r3, r5, r6, sl, fp, lr, pc}");
0x08047a90 stmdaeq r5, {r3, r5, r6, sl, fp, lr, pc} | __asm ("stmdaeq r5, {r3, r5, r6, sl, fp, lr, pc}");
0x08047a94 stmdaeq r4, {r3, r4, r5, r6, r7, sb, sl, fp, ip, lr} | __asm ("stmdaeq r4, {r3, r4, r5, r6, r7, sb, sl, fp, ip, lr}");
0x08047a98 mov r3, sb | r3 = sb;
0x08047a9c mov r2, 9 | r2 = 9;
0x08047aa0 movw r1, 0x96b | r1 = 0x96b;
0x08047aa4 stmdaeq r5, {r4, r5, r6, r7, sb, sl, lr, pc} | __asm ("stmdaeq r5, {r4, r5, r6, r7, sb, sl, lr, pc}");
0x08047aa8 stmdaeq r5, {r4, r5, r6, r7, sb, sl, lr, pc} | __asm ("stmdaeq r5, {r4, r5, r6, r7, sb, sl, lr, pc}");
0x08047aac stmdaeq r8, {r2, r8, sb, sl, ip, sp, lr} | __asm ("stmdaeq r8, {r2, r8, sb, sl, ip, sp, lr}");
0x08047ab0 b 0x8047444 | goto label_0;
| }
[*] Function strcat used 1 times ext4.ko