[*] Binary protection state of ext4.ko
No RELRO No Canary found NX disabled REL No RPATH No RUNPATH Symbols
[*] Function printf tear down of ext4.ko
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/lib/modules/5.10.52-axis8/kernel/fs/ext4/ext4.ko @ 0x800e458 */
| #include <stdint.h>
|
| #define BIT_MASK(t,v) ((t)(-((v)!= 0)))&(((t)-1)>>((sizeof(t)*CHAR_BIT)-(v)))
|
; (fcn) sym.__es_insert_extent () | void es_insert_extent (int32_t arg1, int32_t arg2) {
| int32_t var_0h;
| int32_t var_4h;
| int32_t var_ch;
| r0 = arg1;
| r1 = arg2;
0x0800e458 push {r4, r5, r6, r7, r8, sb, sl, fp, lr} |
0x0800e45c add r7, r0, 0x18c | r7 = r0 + 0x18c;
0x0800e460 mov r6, r0 | r6 = r0;
0x0800e464 ldr r5, [r0, 0x18c] | r5 = *((r0 + 0x18c));
0x0800e468 sub sp, sp, 0xc |
0x0800e46c mov r8, r1 | r8 = r1;
0x0800e470 mov r4, r7 | r4 = r7;
0x0800e474 cmp r5, 0 |
| if (r5 != 0) {
0x0800e478 bne 0x800e4c4 | goto label_10;
| }
0x0800e47c b 0x800e4fc | goto label_11;
| do {
0x0800e480 ldr r1, [r5, 0x10] | r1 = *((r5 + 0x10));
0x0800e484 adds r3, r3, r1 | r3 += r1;
| if (r3 >= r3) {
0x0800e488 bhs 0x800e7f8 | goto label_12;
| }
0x0800e48c sub r3, r3, 1 | r3--;
0x0800e490 cmp r2, r3 |
| if (r2 < r3) {
0x0800e494 bls 0x800e7f8 | goto label_12;
| }
0x0800e498 mov r1, r8 | r1 = r8;
0x0800e49c mov r0, r5 | r0 = r5;
0x0800e4a0 bl 0x800d840 | r0 = ext4_es_can_be_merged ();
0x0800e4a4 cmp r0, 0 |
| if (r0 != 0) {
0x0800e4a8 bne 0x800e65c | goto label_13;
| }
0x0800e4ac ldr r4, [r4] | r4 = *(r4);
0x0800e4b0 add r4, r4, 4 | r4 += 4;
0x0800e4b4 ldr r3, [r4] | r3 = *(r4);
0x0800e4b8 cmp r3, 0 |
| if (r3 == 0) {
0x0800e4bc beq 0x800e4fc | goto label_11;
| }
| label_0:
0x0800e4c0 mov r5, r3 | r5 = r3;
| label_10:
0x0800e4c4 ldr r2, [r8, 0xc] | r2 = *((r8 + 0xc));
0x0800e4c8 ldr r3, [r5, 0xc] | r3 = *((r5 + 0xc));
0x0800e4cc cmp r2, r3 |
0x0800e4d0 bhs 0x800e480 |
| } while (r2 >= r3);
0x0800e4d4 mov r1, r5 | r1 = r5;
0x0800e4d8 mov r0, r8 | r0 = r8;
0x0800e4dc bl 0x800d840 | r0 = ext4_es_can_be_merged ();
0x0800e4e0 cmp r0, 0 |
| if (r0 != 0) {
0x0800e4e4 bne 0x800e6d0 | goto label_14;
| }
0x0800e4e8 ldr r4, [r4] | r4 = *(r4);
0x0800e4ec add r4, r4, 8 | r4 += 8;
0x0800e4f0 ldr r3, [r4] | r3 = *(r4);
0x0800e4f4 cmp r3, 0 |
| if (r3 != 0) {
0x0800e4f8 bne 0x800e4c0 | goto label_0;
| }
| label_11:
0x0800e4fc stmdaeq r6, {r4, r6, r7, r8, sb, sl, ip} | __asm ("stmdaeq r6, {r4, r6, r7, r8, sb, sl, ip}");
0x0800e500 stmdaeq r6, {r4, r6, r7, r8, sb, sl, ip} | __asm ("stmdaeq r6, {r4, r6, r7, r8, sb, sl, ip}");
0x0800e504 mov r1, 0xa20 | r1 = 0xa20;
0x0800e508 ldr fp, [r8, 0x10] | fp = *((r8 + 0x10));
0x0800e50c ldr sl, [r8, 0x18] | sl = *((r8 + 0x18));
0x0800e510 ldr r0, [r3, 4] | r0 = *((r3 + 4));
0x0800e514 ldr r3, [r8, 0xc] | r3 = *((r8 + 0xc));
0x0800e518 ldr sb, [r8, 0x1c] | sb = *((r8 + 0x1c));
0x0800e51c str r3, [sp, 4] | var_4h = r3;
0x0800e520 stmdaeq r8, {r4, r8, sb, sl, ip, sp, lr} | __asm ("stmdaeq r8, {r4, r8, sb, sl, ip, sp, lr}");
0x0800e524 subs r8, r0, 0 | r8 = r0 - 0;
| if (r8 == r0) {
0x0800e528 beq 0x800e840 | goto label_15;
| }
0x0800e52c ldr r3, [sp, 4] | r3 = var_4h;
0x0800e530 tst sb, 0x20000000 |
0x0800e534 str r3, [r8, 0xc] | *((r8 + 0xc)) = r3;
0x0800e538 mov r3, sp | r3 = sp;
0x0800e53c bic r3, r3, 0x1fc0 | r3 = BIT_MASK (r3, 0x1fc0);
0x0800e540 str fp, [r8, 0x10] | *((r8 + 0x10)) = fp;
0x0800e544 bic r3, r3, 0x3f | r3 = BIT_MASK (r3, 0x3f);
0x0800e548 str sl, [r8, 0x18] | *((r8 + 0x18)) = sl;
0x0800e54c str sb, [r8, 0x1c] | *((r8 + 0x1c)) = sb;
| if ((sb & 0x20000000) == 0) {
0x0800e550 bne 0x800e5bc |
0x0800e554 ldr r2, [r6, 0x1a0] | r2 = *((r6 + 0x1a0));
0x0800e558 cmp r2, 0 |
0x0800e55c add r2, r2, 1 | r2++;
0x0800e560 str r2, [r6, 0x1a0] | *((r6 + 0x1a0)) = r2;
0x0800e564 ldr r2, [r6, 0x14] | r2 = *((r6 + 0x14));
0x0800e568 ldr r2, [r2, 0x1f0] | r2 = *((r2 + 0x1f0));
| if (r2 == 0) {
0x0800e56c beq 0x800e7a0 | goto label_16;
| }
| label_6:
0x0800e570 ldr r1, [r3, 4] | r1 = *((r3 + 4));
0x0800e574 add r1, r1, 1 | r1++;
0x0800e578 str r1, [r3, 4] | *((r3 + 4)) = r1;
0x0800e57c add r3, r2, 0x290 | r3 = r2 + 0x290;
0x0800e580 ldr r2, [r2, 0x288] | r2 = *((r2 + 0x288));
0x0800e584 adds r2, r2, 1 | r2++;
0x0800e588 str r2, [r3, -8] | *((r3 - 8)) = r2;
0x0800e58c ldr r2, [r3, -4] | r2 = *((r3 - 4));
0x0800e590 adc r2, r2, 0 | __asm ("adc r2, r2, 0");
0x0800e594 str r2, [r3, -4] | *((r3 - 4)) = r2;
0x0800e598 mov sb, 0xe000 |
0x0800e59c movt sb, 0xffff | sb = 0x-2000;
0x0800e5a0 mov r3, sp | r3 = sp;
0x0800e5a4 and r3, r3, sb | r3 &= sb;
0x0800e5a8 ldr r2, [r3, 4] | r2 = *((r3 + 4));
0x0800e5ac sub r2, r2, 1 | r2--;
0x0800e5b0 str r2, [r3, 4] | *((r3 + 4)) = r2;
0x0800e5b4 cmp r2, 0 |
| if (r2 == 0) {
0x0800e5b8 beq 0x800e778 | goto label_17;
| }
| }
| label_3:
0x0800e5bc ldr r2, [r6, 0x19c] | r2 = *((r6 + 0x19c));
0x0800e5c0 add r2, r2, 1 | r2++;
0x0800e5c4 str r2, [r6, 0x19c] | *((r6 + 0x19c)) = r2;
0x0800e5c8 ldr r2, [r6, 0x14] | r2 = *((r6 + 0x14));
0x0800e5cc ldr r1, [r3, 4] | r1 = *((r3 + 4));
0x0800e5d0 ldr r2, [r2, 0x1f0] | r2 = *((r2 + 0x1f0));
0x0800e5d4 add r1, r1, 1 | r1++;
0x0800e5d8 str r1, [r3, 4] | *((r3 + 4)) = r1;
0x0800e5dc ldr r3, [r2, 0x280] | r3 = *((r2 + 0x280));
0x0800e5e0 ldr r1, [r2, 0x284] | r1 = *((r2 + 0x284));
0x0800e5e4 adds r3, r3, 1 | r3++;
0x0800e5e8 str r3, [r2, 0x280] | *((r2 + 0x280)) = r3;
0x0800e5ec adc r3, r1, 0 | __asm ("adc r3, r1, 0");
0x0800e5f0 str r3, [r2, 0x284] | *((r2 + 0x284)) = r3;
0x0800e5f4 mov r3, sp | r3 = sp;
0x0800e5f8 bic r3, r3, 0x1fc0 | r3 = BIT_MASK (r3, 0x1fc0);
0x0800e5fc bic r3, r3, 0x3f | r3 = BIT_MASK (r3, 0x3f);
0x0800e600 ldr r2, [r3, 4] | r2 = *((r3 + 4));
0x0800e604 sub r2, r2, 1 | r2--;
0x0800e608 str r2, [r3, 4] | *((r3 + 4)) = r2;
0x0800e60c cmp r2, 0 |
0x0800e610 beq 0x800e648 |
| while ((r3 & 2) == 0) {
| label_1:
0x0800e614 str r5, [r8] | *(r8) = r5;
0x0800e618 mov r3, 0 | r3 = 0;
0x0800e61c mov r1, r7 | r1 = r7;
0x0800e620 str r3, [r8, 4] | *((r8 + 4)) = r3;
0x0800e624 str r3, [r8, 8] | *((r8 + 8)) = r3;
0x0800e628 mov r0, r8 | r0 = r8;
0x0800e62c str r8, [r4] | *(r4) = r8;
0x0800e630 mov r5, r8 | r5 = r8;
0x0800e634 stmdaeq r8, {r2, r4, r8, sb, sl, ip, sp, lr} | __asm ("stmdaeq r8, {r2, r4, r8, sb, sl, ip, sp, lr}");
| label_2:
0x0800e638 str r5, [r6, 0x190] | *((r6 + 0x190)) = r5;
0x0800e63c mov r0, 0 | r0 = 0;
| label_9:
0x0800e640 add sp, sp, 0xc |
0x0800e644 pop {r4, r5, r6, r7, r8, sb, sl, fp, pc} |
0x0800e648 ldr r3, [r3] | r3 = *(r3);
0x0800e64c tst r3, 2 |
0x0800e650 beq 0x800e614 |
| }
0x0800e654 stmdaeq r8, {r4, r6, r7, sb, sl, ip, sp, lr} | __asm ("stmdaeq r8, {r4, r6, r7, sb, sl, ip, sp, lr}");
0x0800e658 b 0x800e614 | goto label_1;
| label_13:
0x0800e65c ldr r3, [r5, 0x10] | r3 = *((r5 + 0x10));
0x0800e660 mov r0, r5 | r0 = r5;
0x0800e664 ldr r2, [r8, 0x10] | r2 = *((r8 + 0x10));
0x0800e668 add r3, r3, r2 | r3 += r2;
0x0800e66c str r3, [r5, 0x10] | *((r5 + 0x10)) = r3;
0x0800e670 stmdaeq r8, {r2, r3, r4, r8, sb, sl, ip, sp, lr} | __asm ("stmdaeq r8, {r2, r3, r4, r8, sb, sl, ip, sp, lr}");
0x0800e674 subs r4, r0, 0 | r4 = r0 - 0;
| if (r4 == r0) {
0x0800e678 beq 0x800e638 | goto label_2;
| }
0x0800e67c mov r1, r4 | r1 = r4;
0x0800e680 mov r0, r5 | r0 = r5;
0x0800e684 bl 0x800d840 | r0 = ext4_es_can_be_merged ();
0x0800e688 cmp r0, 0 |
| if (r0 == 0) {
0x0800e68c beq 0x800e638 | goto label_2;
| }
0x0800e690 ldr r2, [r4, 0x10] | r2 = *((r4 + 0x10));
0x0800e694 mov r1, r7 | r1 = r7;
0x0800e698 ldr r3, [r5, 0x10] | r3 = *((r5 + 0x10));
0x0800e69c mov r0, r4 | r0 = r4;
0x0800e6a0 add r3, r3, r2 | r3 += r2;
0x0800e6a4 str r3, [r5, 0x10] | *((r5 + 0x10)) = r3;
0x0800e6a8 ldr r3, [r4, 0x1c] | r3 = *((r4 + 0x1c));
0x0800e6ac cmp r3, 0 |
| if (r3 >= 0) {
0x0800e6b0 ldrlt r3, [r5, 0x1c] | r3 = *((r5 + 0x1c));
| }
| if (r3 >= 0) {
0x0800e6b4 orrlt r3, r3, 0x80000000 | r3 |= 0x80000000;
| }
| if (r3 >= 0) {
0x0800e6b8 strlt r3, [r5, 0x1c] | *((r5 + 0x1c)) = r3;
| }
0x0800e6bc stmdaeq r8, {r5, r8, sb, sl, ip, sp, lr} | __asm ("stmdaeq r8, {r5, r8, sb, sl, ip, sp, lr}");
0x0800e6c0 mov r1, r4 | r1 = r4;
0x0800e6c4 mov r0, r6 | r0 = r6;
0x0800e6c8 bl 0x800de04 | ext4_es_free_extent ();
0x0800e6cc b 0x800e638 | goto label_2;
| label_14:
0x0800e6d0 ldr r3, [r8, 0xc] | r3 = *((r8 + 0xc));
0x0800e6d4 str r3, [r5, 0xc] | *((r5 + 0xc)) = r3;
0x0800e6d8 ldr r3, [r5, 0x1c] | r3 = *((r5 + 0x1c));
0x0800e6dc ldr r2, [r5, 0x10] | r2 = *((r5 + 0x10));
0x0800e6e0 ldr r1, [r8, 0x10] | r1 = *((r8 + 0x10));
0x0800e6e4 tst r3, 0x8000000 |
0x0800e6e8 add r2, r2, r1 | r2 += r1;
0x0800e6ec str r2, [r5, 0x10] | *((r5 + 0x10)) = r2;
0x0800e6f0 lsr r2, r3, 0x1b | r2 = r3 >> 0x1b;
| if ((r3 & loc.imp.fs_overflowgid) == 0) {
0x0800e6f4 beq 0x800e794 | goto label_18;
| }
| label_5:
0x0800e6f8 ldr r2, [r8, 0x1c] | r2 = *((r8 + 0x1c));
0x0800e6fc and r3, r3, 0xf8000000 | r3 &= 0xf8000000;
0x0800e700 ldr r1, [r8, 0x18] | r1 = *((r8 + 0x18));
0x0800e704 bic r2, r2, 0xf8000000 | r2 = BIT_MASK (r2, 0xf8000000);
0x0800e708 str r1, [r5, 0x18] | *((r5 + 0x18)) = r1;
0x0800e70c orr r3, r2, r3 | r3 = r2 | r3;
0x0800e710 str r3, [r5, 0x1c] | *((r5 + 0x1c)) = r3;
| label_4:
0x0800e714 mov r0, r5 | r0 = r5;
0x0800e718 stmdaeq r8, {r3, r4, r8, sb, sl, ip, sp, lr} | __asm ("stmdaeq r8, {r3, r4, r8, sb, sl, ip, sp, lr}");
0x0800e71c subs r4, r0, 0 | r4 = r0 - 0;
| if (r4 == r0) {
0x0800e720 beq 0x800e638 | goto label_2;
| }
0x0800e724 mov r1, r5 | r1 = r5;
0x0800e728 bl 0x800d840 | r0 = ext4_es_can_be_merged ();
0x0800e72c cmp r0, 0 |
| if (r0 == 0) {
0x0800e730 beq 0x800e638 | goto label_2;
| }
0x0800e734 ldr r2, [r5, 0x10] | r2 = *((r5 + 0x10));
0x0800e738 mov r0, r5 | r0 = r5;
0x0800e73c ldr r3, [r4, 0x10] | r3 = *((r4 + 0x10));
0x0800e740 mov r1, r7 | r1 = r7;
0x0800e744 add r3, r3, r2 | r3 += r2;
0x0800e748 str r3, [r4, 0x10] | *((r4 + 0x10)) = r3;
0x0800e74c ldr r3, [r5, 0x1c] | r3 = *((r5 + 0x1c));
0x0800e750 cmp r3, 0 |
| if (r3 >= 0) {
0x0800e754 ldrlt r3, [r4, 0x1c] | r3 = *((r4 + 0x1c));
| }
| if (r3 >= 0) {
0x0800e758 orrlt r3, r3, 0x80000000 | r3 |= 0x80000000;
| }
| if (r3 >= 0) {
0x0800e75c strlt r3, [r4, 0x1c] | *((r4 + 0x1c)) = r3;
| }
0x0800e760 stmdaeq r8, {r5, r8, sb, sl, ip, sp, lr} | __asm ("stmdaeq r8, {r5, r8, sb, sl, ip, sp, lr}");
0x0800e764 mov r1, r5 | r1 = r5;
0x0800e768 mov r0, r6 | r0 = r6;
0x0800e76c mov r5, r4 | r5 = r4;
0x0800e770 bl 0x800de04 | ext4_es_free_extent ();
0x0800e774 b 0x800e638 | goto label_2;
| label_17:
0x0800e778 ldr r2, [r3] | r2 = *(r3);
0x0800e77c tst r2, 2 |
| if ((r2 & 2) == 0) {
0x0800e780 beq 0x800e5bc | goto label_3;
| }
0x0800e784 stmdaeq r8, {r4, r6, r7, sb, sl, ip, sp, lr} | __asm ("stmdaeq r8, {r4, r6, r7, sb, sl, ip, sp, lr}");
0x0800e788 mov r3, sp | r3 = sp;
0x0800e78c and r3, r3, sb | r3 &= sb;
0x0800e790 b 0x800e5bc | goto label_3;
| label_18:
0x0800e794 tst r2, 2 |
| if ((r2 & 2) == 0) {
0x0800e798 beq 0x800e714 | goto label_4;
| }
0x0800e79c b 0x800e6f8 | goto label_5;
| label_16:
0x0800e7a0 ldr r0, [r6, 0x194] | r0 = *((r6 + 0x194));
0x0800e7a4 add r1, r6, 0x194 | r1 = r6 + 0x194;
0x0800e7a8 cmp r1, r0 |
| if (r1 != r0) {
0x0800e7ac bne 0x800e570 | goto label_6;
| }
0x0800e7b0 ldr r0, [r3, 4] | r0 = *((r3 + 4));
0x0800e7b4 add r0, r0, 1 | r0++;
0x0800e7b8 str r0, [r3, 4] | *((r3 + 4)) = r0;
0x0800e7bc ldr r3, [r6, 0x194] | r3 = *((r6 + 0x194));
0x0800e7c0 cmp r1, r3 |
| if (r1 == r3) {
0x0800e7c4 beq 0x800e818 | goto label_19;
| }
| label_8:
0x0800e7c8 mov sb, 0xe000 |
0x0800e7cc movt sb, 0xffff | sb = 0x-2000;
0x0800e7d0 mov r3, sp | r3 = sp;
0x0800e7d4 and r3, r3, sb | r3 &= sb;
0x0800e7d8 ldr r2, [r3, 4] | r2 = *((r3 + 4));
0x0800e7dc sub r2, r2, 1 | r2--;
0x0800e7e0 str r2, [r3, 4] | *((r3 + 4)) = r2;
0x0800e7e4 cmp r2, 0 |
0x0800e7e8 beq 0x800e7fc |
| while ((r2 & 2) == 0) {
| label_7:
0x0800e7ec ldr r2, [r6, 0x14] | r2 = *((r6 + 0x14));
0x0800e7f0 ldr r2, [r2, 0x1f0] | r2 = *((r2 + 0x1f0));
0x0800e7f4 b 0x800e570 | goto label_6;
| label_12:
0x0800e7f8 udf 0x12 | __asm ("udf 0x12");
0x0800e7fc ldr r2, [r3] | r2 = *(r3);
0x0800e800 tst r2, 2 |
0x0800e804 beq 0x800e7ec |
| }
0x0800e808 stmdaeq r8, {r4, r6, r7, sb, sl, ip, sp, lr} | __asm ("stmdaeq r8, {r4, r6, r7, sb, sl, ip, sp, lr}");
0x0800e80c mov r3, sp | r3 = sp;
0x0800e810 and r3, r3, sb | r3 &= sb;
0x0800e814 b 0x800e7ec | goto label_7;
| label_19:
0x0800e818 ldr r3, [r2, 0x250] | r3 = *((r2 + 0x250));
0x0800e81c add r0, r2, 0x24c | r0 = r2 + 0x24c;
0x0800e820 str r1, [r2, 0x250] | *((r2 + 0x250)) = r1;
0x0800e824 str r3, [r6, 0x198] | *((r6 + 0x198)) = r3;
0x0800e828 str r0, [r6, 0x194] | *((r6 + 0x194)) = r0;
0x0800e82c str r1, [r3] | *(r3) = r1;
0x0800e830 ldr r3, [r2, 0x254] | r3 = *((r2 + 0x254));
0x0800e834 add r3, r3, 1 | r3++;
0x0800e838 str r3, [r2, 0x254] | *((r2 + 0x254)) = r3;
0x0800e83c b 0x800e7c8 | goto label_8;
| label_15:
0x0800e840 mvn r0, 0xb | r0 = ~0xb;
0x0800e844 b 0x800e640 | goto label_9;
| }
; 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 @ 0x800e848 */
| #include <stdint.h>
|
| #define BIT_MASK(t,v) ((t)(-((v)!= 0)))&(((t)-1)>>((sizeof(t)*CHAR_BIT)-(v)))
|
; (fcn) sym.__es_remove_extent () | void es_remove_extent (int32_t arg_2ch, int32_t arg_30h, int32_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;
| int32_t var_1ch;
| int32_t var_24h;
| int32_t var_28h;
| int32_t var_2ch;
| int32_t var_30h;
| int32_t var_34h;
| int32_t var_38h;
| int32_t var_40h;
| int32_t var_4ch;
| int32_t var_50h;
| int32_t var_58h;
| int32_t var_5ch;
| int32_t var_60h;
| int32_t var_6ch;
| int32_t var_70h;
| int32_t var_78h;
| int32_t var_7ch;
| int32_t var_84h;
| r0 = arg1;
| r1 = arg2;
0x0800e848 push {r4, r5, r6, r7, r8, sb, sl, fp, lr} |
0x0800e84c cmp r3, 0 |
0x0800e850 mov r7, r0 | r7 = r0;
0x0800e854 sub sp, sp, 0x84 |
0x0800e858 mov sl, r1 | sl = r1;
0x0800e85c mov sb, r2 | sb = r2;
0x0800e860 add fp, r0, 0x18c |
0x0800e864 str r3, [sp, 0x1c] | var_1ch = r3;
| if (r3 == 0) {
0x0800e868 ldrne r3, [r0, 0x14] | r3 = *((r0 + 0x14));
| }
| if (r3 != 0) {
0x0800e86c ldreq r3, [sp, 0x1c] | r3 = var_1ch;
| }
0x0800e870 str fp, [sp, 0xc] | var_ch = fp;
| if (r3 == 0) {
0x0800e874 ldrne r3, [r3, 0x1f0] | r3 = *((r3 + 0x1f0));
| }
| if (r3 == 0) {
0x0800e878 ldrne r3, [r3, 0x4c] | r3 = *((r3 + 0x4c));
| }
0x0800e87c ubfxne r3, r3, 0x1b, 1 | __asm ("ubfxne r3, r3, 0x1b, 1");
0x0800e880 str r3, [sp, 0x10] | var_10h = r3;
0x0800e884 movw r3, 0xbeef |
0x0800e888 movt r3, 0xdead | r3 = 0xdeadbeef;
0x0800e88c str r3, [sp, 0x18] | var_18h = r3;
0x0800e890 add r3, r2, 1 | r3 = r2 + 1;
0x0800e894 str r3, [sp, 0x14] | var_14h = r3;
| do {
0x0800e898 ldr r0, [sp, 0xc] | r0 = var_ch;
0x0800e89c mov r1, sl | r1 = sl;
0x0800e8a0 bl 0x800dac8 | r0 = es_tree_search ();
0x0800e8a4 subs r4, r0, 0 | r4 = r0 - 0;
| if (r4 == r0) {
0x0800e8a8 beq 0x800eab4 | goto label_6;
| }
0x0800e8ac ldr r2, [r4, 0xc] | r2 = *((r4 + 0xc));
0x0800e8b0 cmp r2, sb |
| if (r2 > sb) {
0x0800e8b4 bhi 0x800eab4 | goto label_6;
| }
0x0800e8b8 ldr r3, [sp, 0x10] | r3 = var_10h;
0x0800e8bc cmp r3, 0 |
0x0800e8c0 mov r3, 0 | r3 = 0;
0x0800e8c4 str r3, [r7, 0x190] | *((r7 + 0x190)) = r3;
| if (r3 != 0) {
0x0800e8c8 bne 0x800ea40 | goto label_19;
| }
0x0800e8cc ldr r6, [r4, 0xc] | r6 = *((r4 + 0xc));
| label_1:
0x0800e8d0 cmp sl, r6 |
0x0800e8d4 ldr r5, [r4, 0x10] | r5 = *((r4 + 0x10));
0x0800e8d8 ldr ip, [r4, 0x18] | ip = *((r4 + 0x18));
| if (sl <= r6) {
0x0800e8dc subhi r2, sl, r6 | r2 = sl - r6;
| }
0x0800e8e0 ldr r0, [r4, 0x1c] | r0 = *((r4 + 0x1c));
| if (sl > r6) {
0x0800e8e4 movls r2, 0 | r2 = 0;
| }
0x0800e8e8 str r6, [sp, 0x4c] | var_4ch = r6;
0x0800e8ec adds r8, r5, r6 | r8 = r5 + r6;
0x0800e8f0 str r5, [sp, 0x50] | var_50h = r5;
0x0800e8f4 str ip, [sp, 0x58] | var_58h = ip;
0x0800e8f8 str r0, [sp, 0x5c] | var_5ch = r0;
| if (r8 >= r5) {
0x0800e8fc bhs 0x800ee1c | goto label_20;
| }
0x0800e900 sub r8, r8, 1 | r8--;
0x0800e904 cmp sb, r8 |
| if (sb >= r8) {
0x0800e908 bhs 0x800ea7c | goto label_21;
| }
0x0800e90c lsr lr, r0, 0x1b | lr = r0 >> 0x1b;
0x0800e910 cmp r2, 0 |
0x0800e914 sub r1, r8, sb | r1 = r8 - sb;
0x0800e918 and fp, lr, 1 |
| if (r2 == 0) {
0x0800e91c bne 0x800e994 |
0x0800e920 ldr r6, [sp, 0x14] | r6 = var_14h;
0x0800e924 mov r3, r8 | r3 = r8;
0x0800e928 cmp fp, 0 |
0x0800e92c str r6, [r4, 0xc] | *((r4 + 0xc)) = r6;
0x0800e930 str r1, [r4, 0x10] | *((r4 + 0x10)) = r1;
| if (fp == 0) {
0x0800e934 beq 0x800ec28 | goto label_22;
| }
| label_7:
0x0800e938 adds ip, r5, ip |
0x0800e93c and lr, r0, 0xf8000000 | lr = r0 & 0xf8000000;
0x0800e940 adc r0, r0, 0 | __asm ("adc r0, r0, 0");
0x0800e944 subs ip, ip, r1 |
0x0800e948 sbc r1, r0, 0 | __asm ("sbc r1, r0, 0");
0x0800e94c str ip, [r4, 0x18] | *((r4 + 0x18)) = ip;
0x0800e950 bic r1, r1, 0xf8000000 | r1 = BIT_MASK (r1, 0xf8000000);
0x0800e954 orr r1, r1, lr | r1 |= lr;
0x0800e958 str r1, [r4, 0x1c] | *((r4 + 0x1c)) = r1;
| label_4:
0x0800e95c ldr r1, [sp, 0x10] | r1 = var_10h;
0x0800e960 cmp r1, 0 |
| if (r1 == 0) {
0x0800e964 beq 0x800eab4 | goto label_6;
| }
0x0800e968 add r5, r5, sb | r5 += sb;
0x0800e96c add ip, sp, 0x24 |
0x0800e970 sub r3, r5, r3 | r3 = r5 - r3;
0x0800e974 mov r1, sl | r1 = sl;
0x0800e978 sub r2, r3, r2 | r2 = r3 - r2;
0x0800e97c mov r0, r7 | r0 = r7;
0x0800e980 add r3, sp, 0x40 | r3 += var_40h;
0x0800e984 str ip, [sp] | *(sp) = ip;
0x0800e988 mov r8, 0 | r8 = 0;
0x0800e98c bl 0x800dc74 | count_rsvd ();
0x0800e990 b 0x800eab8 | goto label_23;
| }
0x0800e994 ldr r3, [sp, 0x14] | r3 = var_14h;
0x0800e998 cmp fp, 0 |
0x0800e99c str r2, [r4, 0x10] | *((r4 + 0x10)) = r2;
0x0800e9a0 str r3, [sp, 0x6c] | var_6ch = r3;
0x0800e9a4 str r1, [sp, 0x70] | var_70h = r1;
| if (fp != 0) {
0x0800e9a8 bne 0x800ea24 | goto label_24;
| }
0x0800e9ac tst lr, 2 |
| if ((lr & 2) != 0) {
0x0800e9b0 bne 0x800ea24 | goto label_24;
| }
0x0800e9b4 ldr ip, [sp, 0x18] | ip = var_18h;
0x0800e9b8 mov lr, 0x7f | lr = 0x7f;
| label_0:
0x0800e9bc and r0, r0, 0xf8000000 | r0 &= 0xf8000000;
0x0800e9c0 add r1, sp, 0x60 | r1 += var_60h;
0x0800e9c4 orr r0, r0, lr | r0 |= lr;
0x0800e9c8 str r0, [sp, 0x7c] | var_7ch = r0;
0x0800e9cc mov r0, r7 | r0 = r7;
0x0800e9d0 str r2, [sp, 8] | var_8h = r2;
0x0800e9d4 str ip, [sp, 0x78] | var_78h = ip;
0x0800e9d8 bl 0x800e458 | es_insert_extent ();
0x0800e9dc ldr r2, [sp, 8] | r2 = var_8h;
0x0800e9e0 subs fp, r0, 0 |
| if (fp == r0) {
0x0800e9e4 beq 0x800eb38 | goto label_25;
| }
0x0800e9e8 cmn fp, 0xc |
0x0800e9ec str r6, [r4, 0xc] | *((r4 + 0xc)) = r6;
0x0800e9f0 str r5, [r4, 0x10] | *((r4 + 0x10)) = r5;
| if (fp != 0xc) {
0x0800e9f4 bne 0x800ea14 | goto label_26;
| }
0x0800e9f8 ldr r2, [r7, 0x14] | r2 = *((r7 + 0x14));
0x0800e9fc mov r1, 0x80 | r1 = 0x80;
0x0800ea00 ldr r0, [r2, 0x1f0] | r0 = *((r2 + 0x1f0));
0x0800ea04 sub r2, r7, 0xc0 | r2 = r7 - 0xc0;
0x0800ea08 bl 0x800e190 | r0 = es_shrink ();
0x0800ea0c cmp r0, 0 |
0x0800ea10 bne 0x800e898 |
| } while (r0 != 0);
| label_26:
0x0800ea14 mov r8, fp | r8 = fp;
0x0800ea18 mov r0, r8 | r0 = r8;
0x0800ea1c add sp, sp, 0x84 |
0x0800ea20 pop {r4, r5, r6, r7, r8, sb, sl, fp, pc} |
| label_24:
0x0800ea24 adds ip, ip, r5 |
0x0800ea28 bic lr, r0, 0xf8000000 | lr = BIT_MASK (r0, 0xf8000000);
0x0800ea2c adc lr, lr, 0 | __asm ("adc lr, lr, 0");
0x0800ea30 subs ip, ip, r1 |
0x0800ea34 sbc lr, lr, 0 | __asm ("sbc lr, lr, 0");
0x0800ea38 bic lr, lr, 0xf8000000 | lr = BIT_MASK (lr, 0xf8000000);
0x0800ea3c b 0x800e9bc | goto label_0;
| label_19:
0x0800ea40 ldr r2, [r7, 0x14] | r2 = *((r7 + 0x14));
0x0800ea44 mov r3, 0 | r3 = 0;
0x0800ea48 ldr r6, [r4, 0xc] | r6 = *((r4 + 0xc));
0x0800ea4c str r3, [sp, 0x24] | var_24h = r3;
0x0800ea50 ldr r2, [r2, 0x1f0] | r2 = *((r2 + 0x1f0));
0x0800ea54 ldr r2, [r2, 0x2c] | r2 = *((r2 + 0x2c));
0x0800ea58 cmp r2, 1 |
| if (r2 < 1) {
0x0800ea5c bls 0x800e8d0 | goto label_1;
| }
0x0800ea60 cmp r6, sl |
0x0800ea64 strb r3, [sp, 0x28] | var_28h = r3;
| if (r6 >= sl) {
0x0800ea68 strlo r4, [sp, 0x34] | var_34h = r4;
| }
| if (r6 >= sl) {
0x0800ea6c bhs 0x800eb28 | goto label_27;
| }
| label_3:
0x0800ea70 mov r3, 0 | r3 = 0;
0x0800ea74 strb r3, [sp, 0x38] | var_38h = r3;
0x0800ea78 b 0x800e8d0 | goto label_1;
| label_21:
0x0800ea7c ldr fp, [sp, 0xc] | fp = var_ch;
0x0800ea80 cmp r2, 0 |
0x0800ea84 bne 0x800ea94 |
| while (r4 != r0) {
| label_5:
0x0800ea88 ldr r8, [sp, 0x10] | r8 = var_10h;
0x0800ea8c add r6, sp, 0x24 | r6 += var_24h;
0x0800ea90 b 0x800eb00 | goto label_28;
0x0800ea94 ldr r3, [sp, 0x10] | r3 = var_10h;
0x0800ea98 str r2, [r4, 0x10] | *((r4 + 0x10)) = r2;
0x0800ea9c cmp r3, 0 |
| if (r3 != 0) {
0x0800eaa0 bne 0x800eb40 | goto label_29;
| }
0x0800eaa4 mov r0, r4 | r0 = r4;
0x0800eaa8 stmdaeq r8, {r2, r3, r4, r8, sb, sl, ip, sp, lr} | __asm ("stmdaeq r8, {r2, r3, r4, r8, sb, sl, ip, sp, lr}");
0x0800eaac subs r4, r0, 0 | r4 = r0 - 0;
0x0800eab0 bne 0x800ea88 |
| }
| label_6:
0x0800eab4 mov r8, 0 | r8 = 0;
| label_23:
0x0800eab8 mov r0, r8 | r0 = r8;
0x0800eabc add sp, sp, 0x84 |
0x0800eac0 pop {r4, r5, r6, r7, r8, sb, sl, fp, pc} |
| label_2:
0x0800eac4 mov r3, r4 | r3 = r4;
0x0800eac8 mov r0, r7 | r0 = r7;
0x0800eacc str r6, [sp] | *(sp) = r6;
0x0800ead0 bl 0x800dc74 | count_rsvd ();
| do {
0x0800ead4 mov r0, r4 | r0 = r4;
0x0800ead8 stmdaeq r8, {r2, r3, r4, r8, sb, sl, ip, sp, lr} | __asm ("stmdaeq r8, {r2, r3, r4, r8, sb, sl, ip, sp, lr}");
0x0800eadc mov r1, fp | r1 = fp;
0x0800eae0 mov r5, r0 | r5 = r0;
0x0800eae4 mov r0, r4 | r0 = r4;
0x0800eae8 stmdaeq r8, {r5, r8, sb, sl, ip, sp, lr} | __asm ("stmdaeq r8, {r5, r8, sb, sl, ip, sp, lr}");
0x0800eaec mov r1, r4 | r1 = r4;
0x0800eaf0 mov r0, r7 | r0 = r7;
0x0800eaf4 bl 0x800de04 | ext4_es_free_extent ();
0x0800eaf8 subs r4, r5, 0 | r4 = r5 - 0;
| if (r4 == r5) {
0x0800eafc beq 0x800ec9c | goto label_30;
| }
| label_28:
0x0800eb00 ldr r1, [r4, 0xc] | r1 = *((r4 + 0xc));
0x0800eb04 ldr r2, [r4, 0x10] | r2 = *((r4 + 0x10));
0x0800eb08 adds r3, r1, r2 | r3 = r1 + r2;
| if (r3 >= r1) {
0x0800eb0c bhs 0x800ee1c | goto label_20;
| }
0x0800eb10 sub r3, r3, 1 | r3--;
0x0800eb14 cmp sb, r3 |
| if (sb <= r3) {
0x0800eb18 blo 0x800ec34 | goto label_31;
| }
0x0800eb1c cmp r8, 0 |
0x0800eb20 beq 0x800ead4 |
| } while (r8 == 0);
0x0800eb24 b 0x800eac4 | goto label_2;
| label_27:
0x0800eb28 stmdaeq r8, {r3, r4, r8, sb, sl, ip, sp, lr} | __asm ("stmdaeq r8, {r3, r4, r8, sb, sl, ip, sp, lr}");
0x0800eb2c ldr r6, [r4, 0xc] | r6 = *((r4 + 0xc));
0x0800eb30 str r0, [sp, 0x34] | var_34h = r0;
0x0800eb34 b 0x800ea70 | goto label_3;
| label_25:
0x0800eb38 mov r3, r8 | r3 = r8;
0x0800eb3c b 0x800e95c | goto label_4;
| label_29:
0x0800eb40 add r0, sp, 0x24 | r0 += var_24h;
0x0800eb44 sub r2, r5, r2 | r2 = r5 - r2;
0x0800eb48 mov r1, sl | r1 = sl;
0x0800eb4c add r3, sp, 0x40 | r3 += var_40h;
0x0800eb50 str r0, [sp] | *(sp) = r0;
0x0800eb54 mov r0, r7 | r0 = r7;
0x0800eb58 bl 0x800dc74 | count_rsvd ();
0x0800eb5c mov r0, r4 | r0 = r4;
0x0800eb60 stmdaeq r8, {r2, r3, r4, r8, sb, sl, ip, sp, lr} | __asm ("stmdaeq r8, {r2, r3, r4, r8, sb, sl, ip, sp, lr}");
0x0800eb64 subs r4, r0, 0 | r4 = r0 - 0;
| if (r4 != r0) {
0x0800eb68 bne 0x800ea88 | goto label_5;
| }
| label_8:
0x0800eb6c ldr r3, [r7, 0x14] | r3 = *((r7 + 0x14));
0x0800eb70 ldr r5, [sp, 0x24] | r5 = var_24h;
0x0800eb74 ldr fp, [r3, 0x1f0] | fp = *((r3 + 0x1f0));
0x0800eb78 ldr r3, [fp, 0x2c] | r3 = *(arg_2ch);
0x0800eb7c cmp r3, 1 |
| if (r3 >= 1) {
0x0800eb80 bls 0x800ec1c |
0x0800eb84 ldrb r3, [sp, 0x38] | r3 = var_38h;
0x0800eb88 cmp r3, 0 |
| if (r3 == 0) {
0x0800eb8c addne r5, r5, 1 | r5++;
| }
| if (r3 == 0) {
0x0800eb90 strne r5, [sp, 0x24] | var_24h = r5;
| }
0x0800eb94 cmp r5, 0 |
| if (r5 == 0) {
0x0800eb98 beq 0x800ec1c | goto label_10;
| }
0x0800eb9c ldr sl, [fp, 0x30] | sl = *(arg_30h);
0x0800eba0 ldr r3, [sp, 0x30] | r3 = var_30h;
0x0800eba4 ldr r8, [sp, 0x2c] | r8 = var_2ch;
0x0800eba8 ldr r0, [sp, 0x34] | r0 = var_34h;
0x0800ebac str r3, [sp, 8] | var_8h = r3;
0x0800ebb0 lsr r6, r8, sl | r6 = r8 >> sl;
0x0800ebb4 cmp r0, 0 |
0x0800ebb8 lsr sl, r3, sl | sl = r3 >> sl;
| if (r0 == 0) {
0x0800ebbc beq 0x800ecb8 | goto label_32;
| }
| label_9:
0x0800ebc0 ldr r3, [r0, 0xc] | r3 = *((r0 + 0xc));
0x0800ebc4 ldr r2, [r0, 0x10] | r2 = *((r0 + 0x10));
0x0800ebc8 adds r3, r3, r2 | r3 += r2;
| if (r3 >= r3) {
0x0800ebcc bhs 0x800ee1c | goto label_20;
| }
0x0800ebd0 ldr r2, [fp, 0x2c] | r2 = *(arg_2ch);
0x0800ebd4 sub r3, r3, 1 | r3--;
0x0800ebd8 rsb r2, r2, 0 | r2 -= ;
0x0800ebdc and r2, r2, r8 | r2 &= r8;
0x0800ebe0 cmp r3, r2 |
| if (r3 <= r2) {
0x0800ebe4 blo 0x800ecb8 | goto label_32;
| }
0x0800ebe8 ldr r3, [r0, 0x1c] | r3 = *((r0 + 0x1c));
0x0800ebec tst r3, 0x20000000 |
0x0800ebf0 lsr r3, r3, 0x1b | r3 >>= 0x1b;
| if ((r3 & 0x20000000) == 0) {
0x0800ebf4 beq 0x800ecac | goto label_33;
| }
0x0800ebf8 tst r3, 2 |
| if ((r3 & 2) != 0) {
0x0800ebfc bne 0x800ecac | goto label_33;
| }
0x0800ec00 sub r5, r5, 1 | r5--;
0x0800ec04 cmp r4, 0 |
0x0800ec08 str r5, [sp, 0x24] | var_24h = r5;
| if (r4 == 0) {
0x0800ec0c beq 0x800ee4c | goto label_34;
| }
0x0800ec10 cmp r6, sl |
| if (r6 == sl) {
0x0800ec14 movne r8, 1 | r8 = 1;
| }
| if (r6 != sl) {
0x0800ec18 bne 0x800ecc4 | goto label_35;
| }
| }
| label_10:
0x0800ec1c ldr r3, [sp, 0x1c] | r3 = var_1ch;
0x0800ec20 str r5, [r3] | *(r3) = r5;
0x0800ec24 b 0x800eab4 | goto label_6;
| label_22:
0x0800ec28 tst lr, 2 |
| if ((lr & 2) == 0) {
0x0800ec2c beq 0x800e95c | goto label_4;
| }
0x0800ec30 b 0x800e938 | goto label_7;
| label_31:
0x0800ec34 add r6, sb, 1 | r6 = sb + 1;
0x0800ec38 mov r5, r2 | r5 = r2;
0x0800ec3c cmp r6, r1 |
| if (r6 >= r1) {
0x0800ec40 bls 0x800ec9c |
0x0800ec44 ldr r2, [sp, 0x10] | r2 = var_10h;
0x0800ec48 sub r8, r3, sb | r8 = r3 - sb;
0x0800ec4c cmp r2, 0 |
| if (r2 != 0) {
0x0800ec50 bne 0x800edfc | goto label_36;
| }
| label_12:
0x0800ec54 ldr r3, [r4, 0x1c] | r3 = *((r4 + 0x1c));
0x0800ec58 ldr r2, [r4, 0x18] | r2 = *((r4 + 0x18));
0x0800ec5c tst r3, 0x8000000 |
0x0800ec60 str r6, [r4, 0xc] | *((r4 + 0xc)) = r6;
0x0800ec64 lsr r1, r3, 0x1b | r1 = r3 >> 0x1b;
0x0800ec68 str r8, [r4, 0x10] | *((r4 + 0x10)) = r8;
| if ((r3 & loc.imp.fs_overflowgid) == 0) {
0x0800ec6c bne 0x800ec78 |
0x0800ec70 tst r1, 2 |
| if ((r1 & 2) == 0) {
0x0800ec74 beq 0x800ec9c | goto label_30;
| }
| }
0x0800ec78 adds r2, r5, r2 | r2 = r5 + r2;
0x0800ec7c and r1, r3, 0xf8000000 | r1 = r3 & 0xf8000000;
0x0800ec80 adc r3, r3, 0 | __asm ("adc r3, r3, 0");
0x0800ec84 subs r2, r2, r8 | r2 -= r8;
0x0800ec88 sbc r3, r3, 0 | __asm ("sbc r3, r3, 0");
0x0800ec8c str r2, [r4, 0x18] | *((r4 + 0x18)) = r2;
0x0800ec90 bic r3, r3, 0xf8000000 | r3 = BIT_MASK (r3, 0xf8000000);
0x0800ec94 orr r3, r3, r1 | r3 |= r1;
0x0800ec98 str r3, [r4, 0x1c] | *((r4 + 0x1c)) = r3;
| }
| label_30:
0x0800ec9c ldr r3, [sp, 0x10] | r3 = var_10h;
0x0800eca0 cmp r3, 0 |
| if (r3 == 0) {
0x0800eca4 beq 0x800eab4 | goto label_6;
| }
0x0800eca8 b 0x800eb6c | goto label_8;
| label_33:
0x0800ecac stmdaeq r8, {r3, r4, r8, sb, sl, ip, sp, lr} | __asm ("stmdaeq r8, {r3, r4, r8, sb, sl, ip, sp, lr}");
0x0800ecb0 cmp r0, 0 |
| if (r0 != 0) {
0x0800ecb4 bne 0x800ebc0 | goto label_9;
| }
| label_32:
0x0800ecb8 cmp r4, 0 |
| if (r4 == 0) {
0x0800ecbc movne r8, 0 | r8 = 0;
| }
| if (r4 == 0) {
0x0800ecc0 beq 0x800ee7c | goto label_37;
| }
| label_35:
0x0800ecc4 ldr r3, [r4, 0xc] | r3 = *((r4 + 0xc));
0x0800ecc8 ldr r1, [r4, 0x10] | r1 = *((r4 + 0x10));
0x0800eccc adds r3, r3, r1 | r3 += r1;
| if (r3 >= r3) {
0x0800ecd0 bhs 0x800ee1c | goto label_20;
| }
0x0800ecd4 sub r3, r3, 1 | r3--;
0x0800ecd8 cmp sb, r3 |
| if (sb >= r3) {
0x0800ecdc bhs 0x800ee5c | goto label_38;
| }
0x0800ece0 cmp r4, 0 |
| if (r4 == 0) {
0x0800ece4 beq 0x800ee2c | goto label_17;
| }
| label_16:
0x0800ece8 mov r0, r4 | r0 = r4;
| label_13:
0x0800ecec ldr r3, [fp, 0x2c] | r3 = *(arg_2ch);
0x0800ecf0 ldr r2, [sp, 8] | r2 = var_8h;
0x0800ecf4 sub r3, r3, 1 | r3--;
0x0800ecf8 orr r3, r3, r2 | r3 |= r2;
0x0800ecfc ldr r2, [r0, 0xc] | r2 = *((r0 + 0xc));
0x0800ed00 cmp r2, r3 |
| if (r2 > r3) {
0x0800ed04 bhi 0x800ee2c | goto label_17;
| }
0x0800ed08 ldr r3, [r0, 0x1c] | r3 = *((r0 + 0x1c));
0x0800ed0c tst r3, 0x20000000 |
0x0800ed10 lsr r3, r3, 0x1b | r3 >>= 0x1b;
| if ((r3 & 0x20000000) == 0) {
0x0800ed14 beq 0x800ee20 | goto label_39;
| }
0x0800ed18 tst r3, 2 |
| if ((r3 & 2) != 0) {
0x0800ed1c bne 0x800ee20 | goto label_39;
| }
0x0800ed20 ldr r3, [sp, 0x24] | r3 = var_24h;
0x0800ed24 cmp r6, sl |
0x0800ed28 sub r3, r3, 1 | r3--;
0x0800ed2c str r3, [sp, 0x24] | var_24h = r3;
0x0800ed30 mov r5, r3 | r5 = r3;
| if (r6 == sl) {
0x0800ed34 beq 0x800ec1c | goto label_10;
| }
0x0800ed38 cmp r8, 0 |
0x0800ed3c sub sl, sl, 1 | sl--;
| if (r8 == 0) {
0x0800ed40 addne r6, r6, 1 | r6++;
| }
| label_14:
0x0800ed44 cmp sl, r6 |
0x0800ed48 mov r5, r3 | r5 = r3;
| if (sl <= r6) {
0x0800ed4c blo 0x800ec1c | goto label_10;
| }
| label_18:
0x0800ed50 ldr r4, [r7, 0x1b0] | r4 = *((r7 + 0x1b0));
0x0800ed54 mov r5, r3 | r5 = r3;
0x0800ed58 cmp r4, 0 |
| if (r4 != 0) {
0x0800ed5c bne 0x800ed68 | goto label_40;
| }
0x0800ed60 b 0x800ec1c | goto label_10;
| do {
0x0800ed64 mov r4, r3 | r4 = r3;
| label_40:
0x0800ed68 ldr r2, [r4, 0xc] | r2 = *((r4 + 0xc));
0x0800ed6c cmp r2, r6 |
| if (r2 <= r6) {
0x0800ed70 ldrhi r3, [r4, 8] | r3 = *((r4 + 8));
| }
| if (r2 <= r6) {
0x0800ed74 bhi 0x800ed80 |
| if (r2 >= r6) {
0x0800ed78 bhs 0x800eda4 | goto label_41;
| }
0x0800ed7c ldr r3, [r4, 4] | r3 = *((r4 + 4));
| }
0x0800ed80 cmp r3, 0 |
0x0800ed84 bne 0x800ed64 |
| } while (r3 != 0);
0x0800ed88 cmp r2, r6 |
| if (r2 > r6) {
0x0800ed8c bhi 0x800eda4 | goto label_41;
| }
| if (r2 >= r6) {
0x0800ed90 bhs 0x800ec1c | goto label_10;
| }
0x0800ed94 mov r0, r4 | r0 = r4;
0x0800ed98 stmdaeq r8, {r2, r3, r4, r8, sb, sl, ip, sp, lr} | __asm ("stmdaeq r8, {r2, r3, r4, r8, sb, sl, ip, sp, lr}");
0x0800ed9c subs r4, r0, 0 | r4 = r0 - 0;
| if (r4 == r0) {
0x0800eda0 beq 0x800ec1c | goto label_10;
| }
| label_41:
0x0800eda4 stmdaeq r6, {r4, r6, r7, r8, sb, sl, ip} | __asm ("stmdaeq r6, {r4, r6, r7, r8, sb, sl, ip}");
0x0800eda8 stmdaeq r6, {r4, r6, r7, r8, sb, sl, ip} | __asm ("stmdaeq r6, {r4, r6, r7, r8, sb, sl, ip}");
0x0800edac add r7, r7, 0x1b0 | r7 += 0x1b0;
0x0800edb0 b 0x800edec | goto label_42;
| label_11:
0x0800edb4 mov r0, r4 | r0 = r4;
0x0800edb8 sub r5, r5, 1 | r5--;
0x0800edbc str r5, [sp, 0x24] | var_24h = r5;
0x0800edc0 stmdaeq r8, {r2, r3, r4, r8, sb, sl, ip, sp, lr} | __asm ("stmdaeq r8, {r2, r3, r4, r8, sb, sl, ip, sp, lr}");
0x0800edc4 mov r1, r7 | r1 = r7;
0x0800edc8 mov r6, r0 | r6 = r0;
0x0800edcc mov r0, r4 | r0 = r4;
0x0800edd0 stmdaeq r8, {r5, r8, sb, sl, ip, sp, lr} | __asm ("stmdaeq r8, {r5, r8, sb, sl, ip, sp, lr}");
0x0800edd4 ldr r0, [r8] | r0 = *(r8);
0x0800edd8 mov r1, r4 | r1 = r4;
0x0800eddc stmdaeq r8, {r2, r5, r8, sb, sl, ip, sp, lr} | __asm ("stmdaeq r8, {r2, r5, r8, sb, sl, ip, sp, lr}");
0x0800ede0 cmp r6, 0 |
| if (r6 == 0) {
0x0800ede4 beq 0x800ec1c | goto label_10;
| }
0x0800ede8 mov r4, r6 | r4 = r6;
| label_42:
0x0800edec ldr r3, [r4, 0xc] | r3 = *((r4 + 0xc));
0x0800edf0 cmp sl, r3 |
| if (sl >= r3) {
0x0800edf4 bhs 0x800edb4 | goto label_11;
| }
0x0800edf8 b 0x800ec1c | goto label_10;
| label_36:
0x0800edfc add r2, sb, r5 | r2 = sb + r5;
0x0800ee00 mov r0, r7 | r0 = r7;
0x0800ee04 sub r2, r2, r3 | r2 -= r3;
0x0800ee08 add r3, sp, 0x24 | r3 += var_24h;
0x0800ee0c str r3, [sp] | *(sp) = r3;
0x0800ee10 mov r3, r4 | r3 = r4;
0x0800ee14 bl 0x800dc74 | count_rsvd ();
0x0800ee18 b 0x800ec54 | goto label_12;
| label_20:
0x0800ee1c udf 0x12 | __asm ("udf 0x12");
| label_39:
0x0800ee20 stmdaeq r8, {r2, r3, r4, r8, sb, sl, ip, sp, lr} | __asm ("stmdaeq r8, {r2, r3, r4, r8, sb, sl, ip, sp, lr}");
0x0800ee24 cmp r0, 0 |
| if (r0 != 0) {
0x0800ee28 bne 0x800ecec | goto label_13;
| }
| label_17:
0x0800ee2c ldr r3, [sp, 0x24] | r3 = var_24h;
0x0800ee30 cmp r6, sl |
0x0800ee34 mov r5, r3 | r5 = r3;
| if (r6 == sl) {
0x0800ee38 beq 0x800ee70 | goto label_43;
| }
0x0800ee3c cmp r8, 0 |
| if (r8 == 0) {
0x0800ee40 beq 0x800ed44 | goto label_14;
| }
| label_15:
0x0800ee44 add r6, r6, 1 | r6++;
0x0800ee48 b 0x800ed44 | goto label_14;
| label_34:
0x0800ee4c cmp r6, sl |
| if (r6 == sl) {
0x0800ee50 beq 0x800ec1c | goto label_10;
| }
0x0800ee54 mov r3, r5 | r3 = r5;
0x0800ee58 b 0x800ee44 | goto label_15;
| label_38:
0x0800ee5c mov r0, r4 | r0 = r4;
0x0800ee60 stmdaeq r8, {r2, r3, r4, r8, sb, sl, ip, sp, lr} | __asm ("stmdaeq r8, {r2, r3, r4, r8, sb, sl, ip, sp, lr}");
0x0800ee64 subs r4, r0, 0 | r4 = r0 - 0;
| if (r4 != r0) {
0x0800ee68 bne 0x800ece8 | goto label_16;
| }
0x0800ee6c b 0x800ee2c | goto label_17;
| label_43:
0x0800ee70 cmp r8, 0 |
| if (r8 == 0) {
0x0800ee74 beq 0x800ed50 | goto label_18;
| }
0x0800ee78 b 0x800ec1c | goto label_10;
| label_37:
0x0800ee7c ldr r3, [sp, 0x24] | r3 = var_24h;
0x0800ee80 cmp r6, sl |
| if (r6 != sl) {
0x0800ee84 bne 0x800ed44 | goto label_14;
| }
0x0800ee88 b 0x800ed50 | goto label_18;
| }
; 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 @ 0x801ccd0 */
| #include <stdint.h>
|
| #define BIT_MASK(t,v) ((t)(-((v)!= 0)))&(((t)-1)>>((sizeof(t)*CHAR_BIT)-(v)))
|
; (fcn) sym.ext4_bmap () | void ext4_bmap (int32_t arg1) {
| int32_t var_0h;
| r0 = arg1;
0x0801ccd0 push {r4, r5, r6, r7, r8, lr} |
0x0801ccd4 mov r4, r0 | r4 = r0;
0x0801ccd8 mov r7, r2 | r7 = r2;
0x0801ccdc ldr r5, [r0] | r5 = *(r0);
0x0801cce0 sub sp, sp, 8 |
0x0801cce4 mov r6, r3 | r6 = r3;
0x0801cce8 ldr r1, [r5, -0x6c] | r1 = *((r5 - 0x6c));
0x0801ccec tst r1, 0x10000000 |
| if ((r1 & 0x10000000) != 0) {
0x0801ccf0 beq 0x801cd14 |
0x0801ccf4 movw r3, 0x1b6 | r3 = 0x1b6;
0x0801ccf8 ldrh r3, [r5, r3] | r3 = *((r5 + r3));
0x0801ccfc cmp r3, 0 |
| if (r3 == 0) {
0x0801cd00 beq 0x801cd14 | goto label_3;
| }
| label_2:
0x0801cd04 mov r0, 0 | r0 = 0;
0x0801cd08 mov r1, r0 | r1 = r0;
0x0801cd0c add sp, sp, 8 |
0x0801cd10 pop {r4, r5, r6, r7, r8, pc} |
| }
| label_3:
0x0801cd14 ldr r3, [r5, 0x14] | r3 = *((r5 + 0x14));
0x0801cd18 ldr r2, [r4, 4] | r2 = *((r4 + 4));
0x0801cd1c ldr r3, [r3, 0x1f0] | r3 = *((r3 + 0x1f0));
0x0801cd20 tst r2, 0x800000 |
0x0801cd24 bne 0x801cd60 |
| while ((r2 & loc.imp.fs_overflowgid) == 0) {
| label_0:
0x0801cd28 ldr r3, [r3, 0x118] | r3 = *((r3 + 0x118));
0x0801cd2c cmp r3, 0 |
| if (r3 != 0) {
0x0801cd30 beq 0x801cd40 |
0x0801cd34 ldr r3, [r5, -0x70] | r3 = *((r5 - 0x70));
0x0801cd38 tst r3, 1 |
| if ((r3 & 1) != 0) {
0x0801cd3c bne 0x801cd94 | goto label_4;
| }
| }
| label_1:
0x0801cd40 ldr r1, [pc, 0x98] | r1 = *(0x801cddc);
0x0801cd44 mov r2, r7 | r2 = r7;
0x0801cd48 mov r3, r6 | r3 = r6;
0x0801cd4c mov r0, r4 | r0 = r4;
0x0801cd50 str r1, [sp] | *(sp) = r1;
0x0801cd54 stmdaeq r8, {r5, r8, fp, ip, sp, lr} | __asm ("stmdaeq r8, {r5, r8, fp, ip, sp, lr}");
0x0801cd58 add sp, sp, 8 |
0x0801cd5c pop {r4, r5, r6, r7, r8, pc} |
0x0801cd60 ldr r2, [r3, 0x4c] | r2 = *((r3 + 0x4c));
0x0801cd64 tst r2, 0x8000000 |
0x0801cd68 beq 0x801cd28 |
| }
0x0801cd6c mvn r2, 0 | r2 = ~0;
0x0801cd70 mvn r3, 0x80000000 | r3 = ~0x80000000;
0x0801cd74 mov r0, r4 | r0 = r4;
0x0801cd78 strd r2, r3, [sp] | __asm ("strd r2, r3, [sp]");
0x0801cd7c mov r3, 0 | r3 = 0;
0x0801cd80 mov r2, 0 | r2 = 0;
0x0801cd84 stmdaeq r8, {r5, r6, r7, r8, sb, sl, ip, sp, lr} | __asm ("stmdaeq r8, {r5, r6, r7, r8, sb, sl, ip, sp, lr}");
0x0801cd88 ldr r3, [r5, 0x14] | r3 = *((r5 + 0x14));
0x0801cd8c ldr r3, [r3, 0x1f0] | r3 = *((r3 + 0x1f0));
0x0801cd90 b 0x801cd28 | goto label_0;
| label_4:
0x0801cd94 mrs r2, apsr | r2 = apsr;
0x0801cd98 cpsid i | __asm ("cpsid i");
0x0801cd9c ldr r3, [r5, -0x70] | r3 = *((r5 - 0x70));
0x0801cda0 bic r3, r3, 1 | r3 = BIT_MASK (r3, 1);
0x0801cda4 str r3, [r5, -0x70] | *((r5 - 0x70)) = r3;
0x0801cda8 msr cpsr_c, r2 | cpsr_c = r2;
0x0801cdac ldr r3, [r5, 0x14] | r3 = *((r5 + 0x14));
0x0801cdb0 ldr r3, [r3, 0x1f0] | r3 = *((r3 + 0x1f0));
0x0801cdb4 ldr r8, [r3, 0x118] | r8 = *((r3 + 0x118));
0x0801cdb8 mov r0, r8 | r0 = r8;
0x0801cdbc stmdaeq r8, {r2, r5, r8, fp, ip, sp, lr} | __asm ("stmdaeq r8, {r2, r5, r8, fp, ip, sp, lr}");
0x0801cdc0 mov r0, r8 | r0 = r8;
0x0801cdc4 stmdaeq r8, {r3, r5, r8, fp, ip, sp, lr} | __asm ("stmdaeq r8, {r3, r5, r8, fp, ip, sp, lr}");
0x0801cdc8 mov r5, r0 | r5 = r0;
0x0801cdcc mov r0, r8 | r0 = r8;
0x0801cdd0 stmdaeq r8, {r2, r3, r5, r8, fp, ip, sp, lr} | __asm ("stmdaeq r8, {r2, r3, r5, r8, fp, ip, sp, lr}");
0x0801cdd4 cmp r5, 0 |
| if (r5 == 0) {
0x0801cdd8 beq 0x801cd40 | goto label_1;
| }
0x0801cddc b 0x801cd04 | 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 @ 0x800f0e4 */
| #include <stdint.h>
|
| #define BIT_MASK(t,v) ((t)(-((v)!= 0)))&(((t)-1)>>((sizeof(t)*CHAR_BIT)-(v)))
|
; (fcn) sym.ext4_es_insert_extent () | void ext4_es_insert_extent (int32_t arg_78h, int32_t arg_7ch, int32_t arg_80h, int32_t arg1, int32_t arg2) {
| int32_t var_0h;
| int32_t var_4h;
| int32_t var_ch;
| int32_t var_10h;
| int32_t var_1ch;
| int32_t var_20h;
| int32_t var_28h;
| int32_t var_2ch;
| int32_t var_30h;
| int32_t var_3ch;
| int32_t var_40h;
| int32_t var_54h;
| r0 = arg1;
| r1 = arg2;
0x0800f0e4 push {r4, r5, r6, r7, r8, sb, sl, fp, lr} |
0x0800f0e8 mov r4, r0 | r4 = r0;
0x0800f0ec ldr r0, [r0, 0x14] | r0 = *(arg_78hx14);
0x0800f0f0 sub sp, sp, 0x54 |
0x0800f0f4 ldr sb, [r0, 0x1f0] | sb = *(arg_78hx1f0);
0x0800f0f8 ldr sl, [sp, 0x78] | sl = *(arg_78h);
0x0800f0fc ldr r8, [sp, 0x7c] | r8 = *(arg_7ch);
0x0800f100 ldrh r5, [sb, 0x78] | r5 = *((sb + 0x78));
0x0800f104 ubfx r5, r5, 5, 1 | r5 = (r5 >> 5) & ((1 << 1) - 1);
0x0800f108 cmp r2, 0 |
| if (r2 != 0) {
0x0800f10c orreq r5, r5, 1 | r5 |= 1;
| }
0x0800f110 cmp r5, 0 |
| if (r5 == 0) {
0x0800f114 movne r5, 0 | r5 = 0;
| }
| if (r5 != 0) {
0x0800f118 beq 0x800f128 |
| label_0:
0x0800f11c mov r0, r5 | r0 = r5;
0x0800f120 add sp, sp, 0x54 |
0x0800f124 pop {r4, r5, r6, r7, r8, sb, sl, fp, pc} |
| }
0x0800f128 add r3, r1, r2 | r3 = r1 + r2;
0x0800f12c mov r7, r1 | r7 = r1;
0x0800f130 sub fp, r3, 1 |
0x0800f134 mov r6, r2 | r6 = r2;
0x0800f138 cmp r1, fp |
0x0800f13c str r3, [sp, 0xc] | var_ch = r3;
| if (r1 > fp) {
0x0800f140 bhi 0x800f3a0 | goto label_6;
| }
0x0800f144 ldr r3, [sp, 0x80] | r3 = *(arg_80h);
0x0800f148 and r3, r3, 5 | r3 &= 5;
0x0800f14c cmp r3, 5 |
| if (r3 == 5) {
0x0800f150 beq 0x800f250 | goto label_7;
| }
| label_2:
0x0800f154 ldr r3, [sp, 0x80] | r3 = *(arg_80h);
0x0800f158 bic r8, r8, 0xf8000000 | r8 = BIT_MASK (r8, 0xf8000000);
0x0800f15c str r6, [sp, 0x20] | var_20h = r6;
0x0800f160 str sl, [sp, 0x28] | var_28h = sl;
0x0800f164 orr r8, r8, r3, lsl 27 | r8 |= (r3 << 27);
0x0800f168 mov r3, sp | r3 = sp;
0x0800f16c bic r3, r3, 0x1fc0 | r3 = BIT_MASK (r3, 0x1fc0);
0x0800f170 str r7, [sp, 0x1c] | var_1ch = r7;
0x0800f174 bic r3, r3, 0x3f | r3 = BIT_MASK (r3, 0x3f);
0x0800f178 str r8, [sp, 0x2c] | var_2ch = r8;
0x0800f17c ldr r2, [r3, 4] | r2 = *((r3 + 4));
0x0800f180 add r2, r2, 1 | r2++;
0x0800f184 str r2, [r3, 4] | *((r3 + 4)) = r2;
0x0800f188 mov r3, 0 | r3 = 0;
0x0800f18c mov r2, fp | r2 = fp;
0x0800f190 mov r1, r7 | r1 = r7;
0x0800f194 mov r0, r4 | r0 = r4;
0x0800f198 bl 0x800e848 | r0 = es_remove_extent ();
0x0800f19c subs r5, r0, 0 | r5 = r0 - 0;
| if (r5 != r0) {
0x0800f1a0 bne 0x800f20c | goto label_3;
| }
0x0800f1a4 sub r6, r4, 0xc0 | r6 = r4 - 0xc0;
0x0800f1a8 b 0x800f1c8 |
| while (r0 == 0xc) {
0x0800f1ac ldr r3, [r4, 0x14] | r3 = *((r4 + 0x14));
0x0800f1b0 mov r2, r6 | r2 = r6;
0x0800f1b4 mov r1, 0x80 | r1 = 0x80;
0x0800f1b8 ldr r0, [r3, 0x1f0] | r0 = *((r3 + 0x1f0));
0x0800f1bc bl 0x800e190 | r0 = es_shrink ();
0x0800f1c0 cmp r0, 0 |
| if (r0 == 0) {
0x0800f1c4 beq 0x800f240 | goto label_8;
| }
0x0800f1c8 add r1, sp, 0x10 | r1 += var_10h;
0x0800f1cc mov r0, r4 | r0 = r4;
0x0800f1d0 bl 0x800e458 | r0 = es_insert_extent ();
0x0800f1d4 mov r5, r0 | r5 = r0;
0x0800f1d8 cmn r0, 0xc |
0x0800f1dc beq 0x800f1ac |
| }
| label_1:
0x0800f1e0 ldr r3, [sb, 0x2c] | r3 = *((sb + 0x2c));
0x0800f1e4 cmp r3, 1 |
| if (r3 >= 1) {
0x0800f1e8 bls 0x800f20c |
0x0800f1ec ldr r3, [r4, 0x14] | r3 = *((r4 + 0x14));
0x0800f1f0 ldr r6, [r3, 0x1f0] | r6 = *((r3 + 0x1f0));
0x0800f1f4 ldr r3, [r6, 0x4c] | r3 = *((r6 + 0x4c));
0x0800f1f8 tst r3, 0x8000000 |
| if ((r3 & loc.imp.fs_overflowgid) == 0) {
0x0800f1fc beq 0x800f20c | goto label_3;
| }
0x0800f200 ldr r3, [sp, 0x80] | r3 = *(arg_80h);
0x0800f204 tst r3, 3 |
| if ((r3 & 3) != 0) {
0x0800f208 bne 0x800f288 | goto label_9;
| }
| }
| label_3:
0x0800f20c mov r3, sp | r3 = sp;
0x0800f210 bic r3, r3, 0x1fc0 | r3 = BIT_MASK (r3, 0x1fc0);
0x0800f214 bic r3, r3, 0x3f | r3 = BIT_MASK (r3, 0x3f);
0x0800f218 ldr r2, [r3, 4] | r2 = *((r3 + 4));
0x0800f21c sub r2, r2, 1 | r2--;
0x0800f220 str r2, [r3, 4] | *((r3 + 4)) = r2;
0x0800f224 cmp r2, 0 |
| if (r2 != 0) {
0x0800f228 bne 0x800f11c | goto label_0;
| }
0x0800f22c ldr r3, [r3] | r3 = *(r3);
0x0800f230 tst r3, 2 |
| if ((r3 & 2) == 0) {
0x0800f234 beq 0x800f11c | goto label_0;
| }
0x0800f238 stmdaeq r8, {r4, r6, r7, sb, sl, ip, sp, lr} | __asm ("stmdaeq r8, {r4, r6, r7, sb, sl, ip, sp, lr}");
0x0800f23c b 0x800f11c | goto label_0;
| label_8:
0x0800f240 ldr r3, [sp, 0x2c] | r3 = var_2ch;
0x0800f244 tst r3, 0x20000000 |
| if ((r3 & 0x20000000) != 0) {
0x0800f248 moveq r5, 0 | r5 = 0;
| }
0x0800f24c b 0x800f1e0 | goto label_1;
| label_7:
0x0800f250 str r2, [sp, 4] | var_4h = r2;
0x0800f254 stmdaeq r5, {r2, r3, r5, r6, r7, r8, sl, fp, ip, pc} | __asm ("stmdaeq r5, {r2, r3, r5, r6, r7, r8, sl, fp, ip, pc}");
0x0800f258 stmdaeq r5, {r2, r3, r5, r6, r7, r8, sl, fp, ip, pc} | __asm ("stmdaeq r5, {r2, r3, r5, r6, r7, r8, sl, fp, ip, pc}");
0x0800f25c str r1, [sp] | *(sp) = r1;
0x0800f260 movw r2, 0x345 | r2 = 0x345;
0x0800f264 ldr r1, [pc, 0x248] | r1 = *(0x800f4b0);
0x0800f268 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}");
0x0800f26c mov r3, r5 | r3 = r5;
0x0800f270 stmdaeq r5, {r2, r3, r4, r5, r6, r8, sl, fp, ip, pc} | __asm ("stmdaeq r5, {r2, r3, r4, r5, r6, r8, sl, fp, ip, pc}");
0x0800f274 stmdaeq r5, {r2, r3, r4, r5, r6, r8, sl, fp, ip, pc} | __asm ("stmdaeq r5, {r2, r3, r4, r5, r6, r8, sl, fp, ip, pc}");
0x0800f278 mov r2, 9 | r2 = 9;
0x0800f27c mov r1, 0x348 | r1 = 0x348;
0x0800f280 stmdaeq r8, {r2, r8, sb, sl, ip, sp, lr} | __asm ("stmdaeq r8, {r2, r8, sb, sl, ip, sp, lr}");
0x0800f284 b 0x800f154 | goto label_2;
| label_9:
0x0800f288 ldr r1, [r6, 0x30] | r1 = *((r6 + 0x30));
0x0800f28c ldr r2, [r6, 0x2c] | r2 = *((r6 + 0x2c));
0x0800f290 lsr r0, fp, r1 | r0 = fp >> r1;
0x0800f294 rsb r3, r2, 0 | r3 = r2 - ;
0x0800f298 cmp r0, r7, lsr r1 |
0x0800f29c and r8, r7, r3 | r8 = r7 & r3;
| if (r0 == r7) {
0x0800f2a0 beq 0x800f3a4 | goto label_10;
| }
0x0800f2a4 cmp r7, r8 |
| if (r7 != r8) {
0x0800f2a8 beq 0x800f300 |
0x0800f2ac sub r7, r7, 1 | r7--;
0x0800f2b0 add r3, sp, 0x30 | r3 += var_30h;
0x0800f2b4 mov r2, r8 | r2 = r8;
0x0800f2b8 str r3, [sp] | *(sp) = r3;
0x0800f2bc mov r0, r4 | r0 = r4;
0x0800f2c0 mov r3, r7 | r3 = r7;
0x0800f2c4 stmdaeq r0, {r5, fp, ip, lr, pc} | __asm ("stmdaeq r0, {r5, fp, ip, lr, pc}");
0x0800f2c8 stmdaeq r0, {r5, fp, ip, lr, pc} | __asm ("stmdaeq r0, {r5, fp, ip, lr, pc}");
0x0800f2cc bl 0x800db40 | es_find_extent_range ();
0x0800f2d0 ldr r2, [sp, 0x40] | r2 = var_40h;
0x0800f2d4 cmp r2, 0 |
| if (r2 == 0) {
0x0800f2d8 beq 0x800f300 | goto label_11;
| }
0x0800f2dc ldr r3, [sp, 0x3c] | r3 = var_3ch;
0x0800f2e0 cmp r3, r8 |
| if (r3 <= r8) {
0x0800f2e4 bhi 0x800f2f4 |
0x0800f2e8 add r2, r2, r3 | r2 += r3;
0x0800f2ec cmp r2, r8 |
| if (r2 > r8) {
0x0800f2f0 bhi 0x800f494 | goto label_12;
| }
| }
0x0800f2f4 cmp r7, r3 |
0x0800f2f8 cmphs r3, r8 | __asm ("cmphs r3, r8");
| if (r7 >= r3) {
0x0800f2fc bhs 0x800f494 | goto label_12;
| }
| }
| label_11:
0x0800f300 mov r1, r8 | r1 = r8;
0x0800f304 mov r0, r4 | r0 = r4;
0x0800f308 bl 0x800da50 | remove_pending ();
| label_5:
0x0800f30c ldr r3, [r6, 0x2c] | r3 = *((r6 + 0x2c));
0x0800f310 ldr r7, [sp, 0xc] | r7 = var_ch;
0x0800f314 rsb r2, r3, 0 | r2 = r3 - ;
0x0800f318 and r2, r2, fp | r2 &= fp;
0x0800f31c add r2, r2, r3 | r2 += r3;
0x0800f320 sub r6, r2, 1 | r6 = r2 - 1;
0x0800f324 cmp r7, r2 |
| if (r7 == r2) {
0x0800f328 beq 0x800f390 | goto label_4;
| }
0x0800f32c add r3, sp, 0x30 | r3 += var_30h;
0x0800f330 mov r2, r7 | r2 = r7;
0x0800f334 str r3, [sp] | *(sp) = r3;
0x0800f338 mov r0, r4 | r0 = r4;
0x0800f33c mov r3, r6 | r3 = r6;
0x0800f340 stmdaeq r0, {r5, fp, ip, lr, pc} | __asm ("stmdaeq r0, {r5, fp, ip, lr, pc}");
0x0800f344 stmdaeq r0, {r5, fp, ip, lr, pc} | __asm ("stmdaeq r0, {r5, fp, ip, lr, pc}");
0x0800f348 bl 0x800db40 | es_find_extent_range ();
0x0800f34c ldr r3, [sp, 0x40] | r3 = var_40h;
0x0800f350 cmp r3, 0 |
| if (r3 == 0) {
0x0800f354 beq 0x800f390 | goto label_4;
| }
0x0800f358 ldr r2, [sp, 0x3c] | r2 = var_3ch;
0x0800f35c cmp r7, r2 |
| if (r7 > r2) {
0x0800f360 blo 0x800f370 |
0x0800f364 add r3, r3, r2 | r3 += r2;
0x0800f368 cmp r7, r3 |
| if (r7 <= r3) {
0x0800f36c blo 0x800f484 | goto label_13;
| }
| }
0x0800f370 ldr r3, [sp, 0xc] | r3 = var_ch;
0x0800f374 cmp r3, r2 |
| if (r3 <= r2) {
0x0800f378 movhi r3, 0 | r3 = 0;
| }
| if (r3 > r2) {
0x0800f37c movls r3, 1 | r3 = 1;
| }
0x0800f380 cmp r6, r2 |
| if (r6 >= r2) {
0x0800f384 movlo r3, 0 | r3 = 0;
| }
0x0800f388 cmp r3, 0 |
| if (r3 != 0) {
0x0800f38c bne 0x800f484 | goto label_13;
| }
| do {
| label_4:
0x0800f390 mov r1, r6 | r1 = r6;
0x0800f394 mov r0, r4 | r0 = r4;
0x0800f398 bl 0x800da50 | remove_pending ();
0x0800f39c b 0x800f20c | goto label_3;
| label_6:
0x0800f3a0 udf 0x12 | __asm ("udf 0x12");
| label_10:
0x0800f3a4 cmp r7, r8 |
| if (r7 != r8) {
0x0800f3a8 beq 0x800f408 |
0x0800f3ac sub r7, r7, 1 | r7--;
0x0800f3b0 add r3, sp, 0x30 | r3 += var_30h;
0x0800f3b4 mov r2, r8 | r2 = r8;
0x0800f3b8 str r3, [sp] | *(sp) = r3;
0x0800f3bc mov r0, r4 | r0 = r4;
0x0800f3c0 mov r3, r7 | r3 = r7;
0x0800f3c4 stmdaeq r0, {r5, fp, ip, lr, pc} | __asm ("stmdaeq r0, {r5, fp, ip, lr, pc}");
0x0800f3c8 stmdaeq r0, {r5, fp, ip, lr, pc} | __asm ("stmdaeq r0, {r5, fp, ip, lr, pc}");
0x0800f3cc bl 0x800db40 | es_find_extent_range ();
0x0800f3d0 ldr r1, [sp, 0x40] | r1 = var_40h;
0x0800f3d4 cmp r1, 0 |
| if (r1 != 0) {
0x0800f3d8 beq 0x800f400 |
0x0800f3dc ldr r2, [sp, 0x3c] | r2 = var_3ch;
0x0800f3e0 cmp r2, r8 |
| if (r2 <= r8) {
0x0800f3e4 bhi 0x800f3f4 |
0x0800f3e8 add r1, r1, r2 | r1 += r2;
0x0800f3ec cmp r1, r8 |
| if (r1 > r8) {
0x0800f3f0 bhi 0x800f4a4 | goto label_14;
| }
| }
0x0800f3f4 cmp r2, r8 |
0x0800f3f8 cmphs r7, r2 | __asm ("cmphs r7, r2");
| if (r2 >= r8) {
0x0800f3fc bhs 0x800f4a4 | goto label_14;
| }
| }
0x0800f400 ldr r2, [r6, 0x2c] | r2 = *((r6 + 0x2c));
0x0800f404 rsb r3, r2, 0 | r3 = r2 - ;
| }
0x0800f408 ldr r7, [sp, 0xc] | r7 = var_ch;
0x0800f40c and r3, r3, fp | r3 &= fp;
0x0800f410 add r2, r3, r2 | r2 = r3 + r2;
0x0800f414 sub r6, r2, 1 | r6 = r2 - 1;
0x0800f418 cmp r7, r2 |
0x0800f41c beq 0x800f390 |
| } while (r7 == r2);
0x0800f420 add r3, sp, 0x30 | r3 += var_30h;
0x0800f424 mov r2, r7 | r2 = r7;
0x0800f428 str r3, [sp] | *(sp) = r3;
0x0800f42c mov r0, r4 | r0 = r4;
0x0800f430 mov r3, r6 | r3 = r6;
0x0800f434 stmdaeq r0, {r5, fp, ip, lr, pc} | __asm ("stmdaeq r0, {r5, fp, ip, lr, pc}");
0x0800f438 stmdaeq r0, {r5, fp, ip, lr, pc} | __asm ("stmdaeq r0, {r5, fp, ip, lr, pc}");
0x0800f43c bl 0x800db40 | es_find_extent_range ();
0x0800f440 ldr r2, [sp, 0x40] | r2 = var_40h;
0x0800f444 cmp r2, 0 |
| if (r2 == 0) {
0x0800f448 beq 0x800f390 | goto label_4;
| }
0x0800f44c ldr r3, [sp, 0x3c] | r3 = var_3ch;
0x0800f450 cmp r7, r3 |
| if (r7 > r3) {
0x0800f454 blo 0x800f464 |
0x0800f458 add r2, r2, r3 | r2 += r3;
0x0800f45c cmp r7, r2 |
| if (r7 <= r2) {
0x0800f460 blo 0x800f484 | goto label_13;
| }
| }
0x0800f464 ldr r2, [sp, 0xc] | r2 = var_ch;
0x0800f468 cmp r2, r3 |
| if (r2 <= r3) {
0x0800f46c movhi r2, 0 | r2 = 0;
| }
| if (r2 > r3) {
0x0800f470 movls r2, 1 | r2 = 1;
| }
0x0800f474 cmp r6, r3 |
| if (r6 >= r3) {
0x0800f478 movlo r2, 0 | r2 = 0;
| }
0x0800f47c cmp r2, 0 |
| if (r2 == 0) {
0x0800f480 beq 0x800f390 | goto label_4;
| }
| label_13:
0x0800f484 mov r1, r6 | r1 = r6;
0x0800f488 mov r0, r4 | r0 = r4;
0x0800f48c bl 0x800d938 | insert_pending ();
0x0800f490 b 0x800f20c | goto label_3;
| label_12:
0x0800f494 mov r1, r8 | r1 = r8;
0x0800f498 mov r0, r4 | r0 = r4;
0x0800f49c bl 0x800d938 | insert_pending ();
0x0800f4a0 b 0x800f30c | goto label_5;
| label_14:
0x0800f4a4 mov r1, r8 | r1 = r8;
0x0800f4a8 mov r0, r4 | r0 = r4;
0x0800f4ac bl 0x800d938 | insert_pending ();
0x0800f4b0 b 0x800f20c | goto label_3;
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/lib/modules/5.10.52-axis8/kernel/fs/ext4/ext4.ko @ 0x801c400 */
| #include <stdint.h>
|
; (fcn) sym.ext4_es_is_mapped () | uint32_t ext4_es_is_mapped (uint32_t arg1) {
| r0 = arg1;
0x0801c400 ldr r0, [r0, 0x1c] | r0 = *((r0 + 0x1c));
0x0801c404 tst r0, 0x8000000 |
0x0801c408 ubfxeq r0, r0, 0x1c, 1 | __asm ("ubfxeq r0, r0, 0x1c, 1");
| if ((r0 & loc.imp.fs_overflowgid) == 0) {
0x0801c40c movne r0, 1 | r0 = 1;
| }
0x0801c410 bx lr | return r0;
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/lib/modules/5.10.52-axis8/kernel/fs/ext4/ext4.ko @ 0x8049714 */
| #include <stdint.h>
|
| #define BIT_MASK(t,v) ((t)(-((v)!= 0)))&(((t)-1)>>((sizeof(t)*CHAR_BIT)-(v)))
|
; (fcn) sym.ext4_fill_super () | void ext4_fill_super (int32_t arg1, int32_t arg2) {
| int32_t var_bp_20h;
| int32_t var_0h;
| int32_t var_4h;
| int32_t var_18h;
| int32_t var_1ch;
| int32_t var_20h;
| int32_t var_28h;
| int32_t var_2ch;
| int32_t var_30h;
| int32_t var_34h;
| int32_t var_38h;
| int32_t var_78h;
| int32_t var_7ch;
| int32_t var_0h_2;
| int32_t var_80h;
| int32_t var_84h;
| int32_t var_90h;
| int32_t var_98h;
| int32_t var_a4h;
| int32_t var_38h_2;
| r0 = arg1;
| r1 = arg2;
0x08049714 push {r4, r5, r6, r7, r8, sb, sl, fp, lr} |
0x08049718 stmdaeq r8, {r2, r3, r4, r5, r8, sb, sl, ip, sp, lr} | __asm ("stmdaeq r8, {r2, r3, r4, r5, r8, sb, sl, ip, sp, lr}");
0x0804971c stmdaeq r8, {r2, r3, r4, r5, r8, sb, sl, ip, sp, lr} | __asm ("stmdaeq r8, {r2, r3, r4, r5, r8, sb, sl, ip, sp, lr}");
0x08049720 sub sp, sp, 0xa4 |
0x08049724 mov r4, r1 | r4 = r1;
0x08049728 mov r6, r0 | r6 = r0;
0x0804972c mov r1, 0xcc0 | r1 = 0xcc0;
0x08049730 mov r0, r4 | r0 = r4;
0x08049734 str r2, [sp, 0x28] | var_28h = r2;
0x08049738 stmdaeq r8, {r4, r5, r6, r7, r8, sb, fp, ip, sp, lr} | __asm ("stmdaeq r8, {r4, r5, r6, r7, r8, sb, fp, ip, sp, lr}");
0x0804973c mov r1, 0xdc0 | r1 = 0xdc0;
0x08049740 mov sb, r0 | sb = r0;
0x08049744 ldr r0, [r7, 0x28] | r0 = *((r7 + 0x28));
0x08049748 stmdaeq r8, {r4, r8, sb, sl, ip, sp, lr} | __asm ("stmdaeq r8, {r4, r8, sb, sl, ip, sp, lr}");
0x0804974c cmp r4, 0 |
0x08049750 mov r5, r0 | r5 = r0;
| if (r4 == 0) {
0x08049754 beq 0x8049eec | goto label_37;
| }
0x08049758 ldrb r3, [r4] | r3 = *(r4);
0x0804975c cmp r3, 0x73 |
0x08049760 beq 0x8049d24 |
| while (r3 != 0x62) {
| label_0:
0x08049764 movw r3, 0x4003 | r3 = 0x4003;
0x08049768 mov sl, 0 | sl = 0;
0x0804976c str r3, [sp, 0x7c] | var_7ch = r3;
0x08049770 mov r3, 1 | r3 = 1;
0x08049774 str r4, [sp, 0x20] | var_20h = r4;
0x08049778 str sl, [sp, 0x78] | var_78h = sl;
0x0804977c str r3, [sp, 0x18] | var_18h = r3;
| label_1:
0x08049780 cmp sb, 0 |
| if (sb == 0) {
0x08049784 beq 0x8049d9c | goto label_38;
| }
| label_5:
0x08049788 cmp r5, 0 |
| if (r5 == 0) {
0x0804978c beq 0x8049d9c | goto label_38;
| }
| label_2:
0x08049790 ldr r3, [sp, 0x18] | r3 = var_18h;
0x08049794 mov r2, 0 | r2 = 0;
0x08049798 str r3, [r5, 0x60] | *((r5 + 0x60)) = r3;
0x0804979c mov r1, 0x2f | r1 = 0x2f;
0x080497a0 ldr r3, [r6, 0x70] | r3 = *((r6 + 0x70));
0x080497a4 add r0, r6, 0x210 | r0 = r6 + 0x210;
0x080497a8 str r2, [r5, 0x314] | *((r5 + 0x314)) = r2;
0x080497ac mov r2, 0x10 | r2 = 0x10;
0x080497b0 str r5, [r6, 0x1f0] | *((r6 + 0x1f0)) = r5;
0x080497b4 str r2, [r5, 0xd8] | *((r5 + 0xd8)) = r2;
0x080497b8 mov r2, 0x20 | r2 = 0x20;
0x080497bc str r6, [r5, 0x110] | *((r5 + 0x110)) = r6;
0x080497c0 str r2, [r5, 0x8c] | *((r5 + 0x8c)) = r2;
0x080497c4 mov r2, 0x21 | r2 = 0x21;
0x080497c8 str sl, [r5, 0x64] | *((r5 + 0x64)) = sl;
0x080497cc ldr r3, [r3, 0x3c] | r3 = *((r3 + 0x3c));
0x080497d0 cmp r3, 0 |
| if (r3 == 0) {
0x080497d4 ldrne r3, [r3, 0x14] | r3 = *((r3 + 0x14));
| }
| if (r3 == 0) {
0x080497d8 ldrne r3, [r3, 0x24] | r3 = *((r3 + 0x24));
| }
| if (r3 == 0) {
0x080497dc strne r3, [r5, 0x1dc] | *((r5 + 0x1dc)) = r3;
| }
0x080497e0 stmdaeq r8, {r2, sl, fp, ip, sp, lr} | __asm ("stmdaeq r8, {r2, sl, fp, ip, sp, lr}");
0x080497e4 mov r1, 0x400 | r1 = 0x400;
0x080497e8 mov r0, r6 | r0 = r6;
0x080497ec stmdaeq r8, {r3, sl, fp, ip, sp, lr} | __asm ("stmdaeq r8, {r3, sl, fp, ip, sp, lr}");
0x080497f0 subs r1, r0, 0 | r1 = r0 - 0;
| if (r1 == r0) {
0x080497f4 beq 0x8049f0c | goto label_39;
| }
0x080497f8 cmp r1, 0x400 |
| if (r1 == 0x400) {
0x080497fc beq 0x8049e44 | goto label_40;
| }
0x08049800 ldr r2, [sp, 0x18] | r2 = var_18h;
0x08049804 lsr sl, r2, 0x16 | sl = r2 >> 0x16;
0x08049808 lsl r0, r2, 0xa | r0 = r2 << 0xa;
0x0804980c orrs r3, sl, 0 | r3 = sl;
0x08049810 str sl, [sp, 0x84] | var_84h = sl;
| if (r3 != sl) {
0x08049814 bne 0x804a22c | goto label_41;
| }
0x08049818 stmdaeq r8, {r3, r4, r6, r7, sb, sl, ip, sp, lr} | __asm ("stmdaeq r8, {r3, r4, r6, r7, sb, sl, ip, sp, lr}");
0x0804981c mov r3, sl | r3 = sl;
0x08049820 mov r2, r0 | r2 = r0;
0x08049824 mov fp, r1 |
0x08049828 str r0, [sp, 0x80] | var_80h = r0;
| label_3:
0x0804982c mov r1, 0 | r1 = 0;
0x08049830 mov r0, r6 | r0 = r6;
0x08049834 str r1, [sp, 4] | var_4h = r1;
0x08049838 str r1, [sp] | *(sp) = r1;
0x0804983c bl 0x8045a74 | r0 = ext4_sb_bread_gfp ();
0x08049840 mov r8, r0 | r8 = r0;
0x08049844 cmn r0, 0x1000 |
| if (r0 > 0x1000) {
0x08049848 bhi 0x8049fb4 | goto label_42;
| }
0x0804984c ldr r3, [r0, 0x1c] | r3 = *((r0 + 0x1c));
0x08049850 movw r2, 0xef53 | r2 = 0xef53;
0x08049854 add r1, r3, fp | r1 = r3 + fp;
0x08049858 str r1, [r5, 0x44] | *((r5 + 0x44)) = r1;
0x0804985c str r1, [sp, 0x1c] | var_1ch = r1;
0x08049860 ldrh r3, [r1, 0x38] | r3 = *((r1 + 0x38));
0x08049864 str r3, [r6, 0x3c] | *((r6 + 0x3c)) = r3;
0x08049868 cmp r3, r2 |
| if (r3 != r2) {
0x0804986c bne 0x8049dbc | goto label_27;
| }
0x08049870 add r3, r1, 0x180 | r3 = r1 + 0x180;
0x08049874 add r0, r5, 0x1e0 | r0 = r5 + 0x1e0;
0x08049878 ldr r1, [r6, 0x1f0] | r1 = *((r6 + 0x1f0));
0x0804987c ldrd r2, r3, [r3, -8] | __asm ("ldrd r2, r3, [r3, -8]");
0x08049880 strd r2, r3, [r0] | __asm ("strd r2, r3, [r0]");
0x08049884 ldr r3, [r1, 0x44] | r3 = *((r1 + 0x44));
0x08049888 ldr r3, [r3, 0x64] | r3 = *((r3 + 0x64));
0x0804988c and r2, r3, 0x410 | r2 = r3 & 0x410;
0x08049890 cmp r2, 0x410 |
| if (r2 == 0x410) {
0x08049894 beq 0x804a118 | goto label_43;
| }
| label_13:
0x08049898 tst r3, 0x400 |
| if ((r3 & 0x400) != 0) {
0x0804989c beq 0x80498b8 |
0x080498a0 ldr r3, [sp, 0x1c] | r3 = var_1ch;
0x080498a4 ldrb r3, [r3, 0x175] | r3 = *((r3 + 0x175));
0x080498a8 cmp r3, 1 |
0x080498ac stmdaeq r5, {r3, r4, r5, fp, ip, lr, pc} | __asm ("stmdaeq r5, {r3, r4, r5, fp, ip, lr, pc}");
0x080498b0 stmdaeq r5, {r3, r4, r5, fp, ip, lr, pc} | __asm ("stmdaeq r5, {r3, r4, r5, fp, ip, lr, pc}");
| if (r3 != 1) {
0x080498b4 bne 0x804a098 | goto label_23;
| }
| }
0x080498b8 mov r2, 0 | r2 = 0;
0x080498bc stmdaeq r5, {r2, r4, r5, r6, fp, ip, lr, pc} | __asm ("stmdaeq r5, {r2, r4, r5, r6, fp, ip, lr, pc}");
0x080498c0 stmdaeq r5, {r2, r4, r5, r6, fp, ip, lr, pc} | __asm ("stmdaeq r5, {r2, r4, r5, r6, fp, ip, lr, pc}");
0x080498c4 mov r1, r2 | r1 = r2;
0x080498c8 stmdaeq r8, {r2, r3, sl, fp, ip, sp, lr} | __asm ("stmdaeq r8, {r2, r3, sl, fp, ip, sp, lr}");
0x080498cc cmn r0, 0x1000 |
0x080498d0 str r0, [r5, 0x220] | *((r5 + 0x220)) = r0;
| if (r0 > 0x1000) {
0x080498d4 bhi 0x804a1e8 | goto label_44;
| }
0x080498d8 ldr r4, [r6, 0x1f0] | r4 = *((r6 + 0x1f0));
0x080498dc mov r3, r4 | r3 = r4;
0x080498e0 ldr r2, [r4, 0x44] | r2 = *((r4 + 0x44));
0x080498e4 ldr r1, [r2, 0x64] | r1 = *((r2 + 0x64));
0x080498e8 tst r1, 0x400 |
| if ((r1 & 0x400) != 0) {
0x080498ec bne 0x8049e7c | goto label_45;
| }
| label_28:
0x080498f0 ldr r2, [r2, 0x60] | r2 = *((r2 + 0x60));
0x080498f4 tst r2, 0x2000 |
| if ((r2 & 0x2000) == 0) {
0x080498f8 beq 0x804a188 | goto label_46;
| }
| label_8:
0x080498fc ldr r2, [sp, 0x1c] | r2 = var_1ch;
0x08049900 ldr r2, [r2, 0x270] | r2 = *((r2 + 0x270));
0x08049904 str r2, [r5, 0x224] | *((r5 + 0x224)) = r2;
| label_9:
0x08049908 ldr r2, [sp, 0x1c] | r2 = var_1ch;
0x0804990c ldr sl, [r2, 0x100] | sl = *((r2 + 0x100));
0x08049910 ldr r2, [r3, 0x4c] | r2 = *((r3 + 0x4c));
0x08049914 tst sl, 1 |
0x08049918 orr r2, r2, 0x80000000 | r2 |= 0x80000000;
0x0804991c str r2, [r3, 0x4c] | *((r3 + 0x4c)) = r2;
| if ((sl & 1) == 0) {
0x08049920 ldrne r2, [r6, 0x1f0] | r2 = *((r6 + 0x1f0));
| }
| if ((sl & 1) == 0) {
0x08049924 ldrne r3, [r2, 0x4c] | r3 = *((r2 + 0x4c));
| }
| if ((sl & 1) == 0) {
0x08049928 orrne r3, r3, 8 | r3 |= 8;
| }
| if ((sl & 1) == 0) {
0x0804992c strne r3, [r2, 0x4c] | *((r2 + 0x4c)) = r3;
| }
0x08049930 tst sl, 2 |
| if ((sl & 2) == 0) {
0x08049934 ldrne r2, [r6, 0x1f0] | r2 = *((r6 + 0x1f0));
| }
| if ((sl & 2) == 0) {
0x08049938 ldrne r3, [r2, 0x4c] | r3 = *((r2 + 0x4c));
| }
| if ((sl & 2) == 0) {
0x0804993c orrne r3, r3, 4 | r3 |= 4;
| }
| if ((sl & 2) == 0) {
0x08049940 strne r3, [r2, 0x4c] | *((r2 + 0x4c)) = r3;
| }
0x08049944 tst sl, 0x10 |
| if ((sl & 0x10) == 0) {
0x08049948 ldrne r2, [r6, 0x1f0] | r2 = *((r6 + 0x1f0));
| }
| if ((sl & 0x10) == 0) {
0x0804994c ldrne r3, [r2, 0x4c] | r3 = *((r2 + 0x4c));
| }
| if ((sl & 0x10) == 0) {
0x08049950 orrne r3, r3, 0x2000 | r3 |= 0x2000;
| }
| if ((sl & 0x10) == 0) {
0x08049954 strne r3, [r2, 0x4c] | *((r2 + 0x4c)) = r3;
| }
0x08049958 ldr r2, [r6, 0x1f0] | r2 = *((r6 + 0x1f0));
0x0804995c ldr r3, [r2, 0x4c] | r3 = *((r2 + 0x4c));
0x08049960 orr r3, r3, 0x4000 | r3 |= 0x4000;
0x08049964 str r3, [r2, 0x4c] | *((r2 + 0x4c)) = r3;
0x08049968 ldr r4, [r6, 0x1f0] | r4 = *((r6 + 0x1f0));
0x0804996c mov r3, r4 | r3 = r4;
0x08049970 ldr r2, [r4, 0x44] | r2 = *((r4 + 0x44));
0x08049974 ldr r1, [r2, 0x5c] | r1 = *((r2 + 0x5c));
0x08049978 tst r1, 0x400 |
| if ((r1 & 0x400) != 0) {
0x0804997c beq 0x8049998 |
0x08049980 ldr r3, [r4, 0x50] | r3 = *((r4 + 0x50));
0x08049984 orr r3, r3, 0x10 | r3 |= 0x10;
0x08049988 str r3, [r4, 0x50] | *((r4 + 0x50)) = r3;
0x0804998c ldr r4, [r6, 0x1f0] | r4 = *((r6 + 0x1f0));
0x08049990 mov r3, r4 | r3 = r4;
0x08049994 ldr r2, [r4, 0x44] | r2 = *((r4 + 0x44));
| }
0x08049998 ldr r2, [r2, 0x64] | r2 = *((r2 + 0x64));
0x0804999c tst r2, 0x400 |
| if ((r2 & 0x400) != 0) {
0x080499a0 beq 0x80499c0 |
0x080499a4 ldr r3, [r4, 0x220] | r3 = *((r4 + 0x220));
0x080499a8 cmp r3, 0 |
| if (r3 == 0) {
0x080499ac beq 0x804a210 | goto label_47;
| }
| label_33:
0x080499b0 ldr r3, [r4, 0x4c] | r3 = *((r4 + 0x4c));
0x080499b4 orr r3, r3, 0x800000 | r3 |= 0x800000;
0x080499b8 str r3, [r4, 0x4c] | *((r4 + 0x4c)) = r3;
0x080499bc ldr r3, [r6, 0x1f0] | r3 = *((r6 + 0x1f0));
| }
| label_19:
0x080499c0 and r1, sl, 0x60 | r1 = sl & 0x60;
0x080499c4 ldr r2, [r3, 0x4c] | r2 = *((r3 + 0x4c));
0x080499c8 cmp r1, 0x20 |
| if (r1 == 0x20) {
0x080499cc beq 0x8049fd4 | goto label_48;
| }
0x080499d0 cmp r1, 0x40 |
| if (r1 == 0x40) {
0x080499d4 beq 0x804a198 | goto label_49;
| }
0x080499d8 cmp r1, 0x60 |
| if (r1 != 0x60) {
0x080499dc orreq r2, r2, 0xc00 | r2 |= 0xc00;
| }
| if (r1 != 0x60) {
0x080499e0 streq r2, [r3, 0x4c] | *((r3 + 0x4c)) = r2;
| }
| if (r1 != 0x60) {
0x080499e4 ldreq r3, [r6, 0x1f0] | r3 = *((r6 + 0x1f0));
| }
| label_7:
0x080499e8 ldr r2, [r5, 0x44] | r2 = *((r5 + 0x44));
0x080499ec ldrh r1, [r2, 0x3c] | r1 = *((r2 + 0x3c));
0x080499f0 ldr r2, [r3, 0x4c] | r2 = *((r3 + 0x4c));
0x080499f4 cmp r1, 3 |
| if (r1 != 3) {
0x080499f8 orreq r2, r2, 0x40 | r2 |= 0x40;
| }
| if (r1 != 3) {
0x080499fc beq 0x8049a0c |
0x08049a00 cmp r1, 1 |
| if (r1 != 1) {
0x08049a04 orreq r2, r2, 0x10 | r2 |= 0x10;
| }
| if (r1 != 1) {
0x08049a08 orrne r2, r2, 0x20 | r2 |= 0x20;
| goto label_50;
| }
| }
| label_50:
0x08049a0c str r2, [r3, 0x4c] | *((r3 + 0x4c)) = r2;
0x08049a10 tst sl, 0x400 |
0x08049a14 ldr r4, [sp, 0x1c] | r4 = var_1ch;
0x08049a18 stmdaeq r8, {r2, r3, r5, r7, fp, ip, sp, lr} | __asm ("stmdaeq r8, {r2, r3, r5, r7, fp, ip, sp, lr}");
0x08049a1c stmdaeq r8, {r2, r3, r5, r7, fp, ip, sp, lr} | __asm ("stmdaeq r8, {r2, r3, r5, r7, fp, ip, sp, lr}");
0x08049a20 ldr r2, [r6, 0x1f0] | r2 = *((r6 + 0x1f0));
0x08049a24 ldr r3, [r2, 0x4c] | r3 = *((r2 + 0x4c));
0x08049a28 orr r3, r3, 0x20000000 | r3 |= 0x20000000;
0x08049a2c str r3, [r2, 0x4c] | *((r2 + 0x4c)) = r3;
| if ((sl & 0x400) == 0) {
0x08049a30 ldrne r2, [r6, 0x1f0] | r2 = *((r6 + 0x1f0));
| }
| if ((sl & 0x400) == 0) {
0x08049a34 ldrne r3, [r2, 0x4c] | r3 = *((r2 + 0x4c));
| }
| if ((sl & 0x400) == 0) {
0x08049a38 orrne r3, r3, 0x40000000 | r3 |= 0x40000000;
| }
| if ((sl & 0x400) == 0) {
0x08049a3c strne r3, [r2, 0x4c] | *((r2 + 0x4c)) = r3;
| }
0x08049a40 ldrh r1, [r4, 0x50] | r1 = *((r4 + 0x50));
0x08049a44 stmdaeq r8, {r2, r5, r7, fp, ip, sp, lr} | __asm ("stmdaeq r8, {r2, r5, r7, fp, ip, sp, lr}");
0x08049a48 str r0, [r5, 0x70] | *((r5 + 0x70)) = r0;
0x08049a4c stmdaeq r8, {r2, r3, r5, r7, fp, ip, sp, lr} | __asm ("stmdaeq r8, {r2, r3, r5, r7, fp, ip, sp, lr}");
0x08049a50 stmdaeq r8, {r2, r3, r5, r7, fp, ip, sp, lr} | __asm ("stmdaeq r8, {r2, r3, r5, r7, fp, ip, sp, lr}");
0x08049a54 ldrh r1, [r4, 0x52] | r1 = *((r4 + 0x52));
0x08049a58 stmdaeq r5, {r3, r6, sl, fp, ip, sp, lr, pc} | __asm ("stmdaeq r5, {r3, r6, sl, fp, ip, sp, lr, pc}");
0x08049a5c stmdaeq r5, {r3, r6, sl, fp, ip, sp, lr, pc} | __asm ("stmdaeq r5, {r3, r6, sl, fp, ip, sp, lr, pc}");
0x08049a60 stmdaeq r8, {r3, r5, r7, fp, ip, sp, lr} | __asm ("stmdaeq r8, {r3, r5, r7, fp, ip, sp, lr}");
0x08049a64 tst sl, 0x100 |
0x08049a68 str r0, [r5, 0x74] | *((r5 + 0x74)) = r0;
0x08049a6c mov r3, 0x1f4 | r3 = 0x1f4;
0x08049a70 str r3, [r5, 0x134] | *((r5 + 0x134)) = r3;
0x08049a74 mov r3, 0 | r3 = 0;
0x08049a78 str r3, [r5, 0x13c] | *((r5 + 0x13c)) = r3;
| if ((sl & 0x100) != 0) {
0x08049a7c ldreq r2, [r6, 0x1f0] | r2 = *((r6 + 0x1f0));
| }
0x08049a80 movw r3, 0x3a98 |
0x08049a84 str r3, [r5, 0x138] | *((r5 + 0x138)) = r3;
| if ((sl & 0x100) != 0) {
0x08049a88 ldreq r3, [r2, 0x4c] | r3 = *((r2 + 0x4c));
| }
| if ((sl & 0x100) != 0) {
0x08049a8c orreq r3, r3, 0x20000 | r3 |= 0x20000;
| }
| if ((sl & 0x100) != 0) {
0x08049a90 streq r3, [r2, 0x4c] | *((r2 + 0x4c)) = r3;
| }
0x08049a94 ldr r3, [r6, 0x70] | r3 = *((r6 + 0x70));
0x08049a98 ldr r3, [r3, 0x20] | r3 = *(0x3ab8);
0x08049a9c cmp r3, r4 |
| if (r3 != r4) {
0x08049aa0 beq 0x8049ab8 |
0x08049aa4 tst sl, 0x800 |
| if ((sl & 0x800) != 0) {
0x08049aa8 ldreq r2, [r6, 0x1f0] | r2 = *((r6 + 0x1f0));
| }
| if ((sl & 0x800) != 0) {
0x08049aac ldreq r3, [r2, 0x4c] | r3 = *((r2 + 0x4c));
| }
| if ((sl & 0x800) != 0) {
0x08049ab0 orreq r3, r3, 0x8000000 | r3 |= 0x8000000;
| }
| if ((sl & 0x800) == 0) {
0x08049ab4 streq r3, [r2, 0x4c] | *((r2 + 0x4c)) = r3;
| goto label_51;
| }
| }
| label_51:
0x08049ab8 mov r3, 0xa | r3 = 0xa;
0x08049abc str r3, [r5, 0x214] | *((r5 + 0x214)) = r3;
0x08049ac0 ldr r3, [sp, 0x1c] | r3 = var_1ch;
0x08049ac4 ldr r3, [r3, 0x18] | r3 = *((r3 + 0x18));
0x08049ac8 str r3, [sp, 0x2c] | var_2ch = r3;
0x08049acc cmp r3, 6 |
| if (r3 <= 6) {
0x08049ad0 movhi r0, r6 | r0 = r6;
| }
0x08049ad4 stmdaeq r5, {r2, r5, r6, r7, fp, ip, lr, pc} | __asm ("stmdaeq r5, {r2, r5, r6, r7, fp, ip, lr, pc}");
0x08049ad8 stmdaeq r5, {r2, r5, r6, r7, fp, ip, lr, pc} | __asm ("stmdaeq r5, {r2, r5, r6, r7, fp, ip, lr, pc}");
| if (r3 > 6) {
0x08049adc bhi 0x8049f9c | goto label_12;
| }
0x08049ae0 ldr r3, [sp, 0x1c] | r3 = var_1ch;
0x08049ae4 ldr r3, [r3, 0x1c] | r3 = *((r3 + 0x1c));
0x08049ae8 cmp r3, 0x14 |
| if (r3 > 0x14) {
0x08049aec bhi 0x804a1d8 | goto label_52;
| }
0x08049af0 ldr r2, [sp, 0x2c] | r2 = var_2ch;
0x08049af4 mov r3, 0x400 | r3 = 0x400;
0x08049af8 cmp r2, 2 |
0x08049afc lsl r3, r3, r2 | r3 <<= r2;
0x08049b00 str r3, [sp, 0x30] | var_30h = r3;
| if (r2 != 2) {
0x08049b04 ldreq r2, [r6, 0x1f0] | r2 = *((r6 + 0x1f0));
| }
| if (r2 != 2) {
0x08049b08 ldreq r3, [r2, 0x4c] | r3 = *((r2 + 0x4c));
| }
| if (r2 != 2) {
0x08049b0c orreq r3, r3, 0x400000 | r3 |= 0x400000;
| }
| if (r2 != 2) {
0x08049b10 streq r3, [r2, 0x4c] | *((r2 + 0x4c)) = r3;
| }
0x08049b14 ldr r3, [sp, 0x1c] | r3 = var_1ch;
0x08049b18 ldr r3, [r3, 0x4c] | r3 = *((r3 + 0x4c));
0x08049b1c cmp r3, 0 |
| if (r3 != 0) {
0x08049b20 bne 0x8049f38 | goto label_53;
| }
0x08049b24 mov sl, 0x80 | sl = 0x80;
0x08049b28 mov fp, 0xb |
0x08049b2c strd sl, fp, [r5, 0x84] | __asm ("strd sl, fp, [r5, 0x84]");
| label_20:
0x08049b30 ldr r0, [r5, 0x44] | r0 = *((r5 + 0x44));
0x08049b34 ldrb r3, [r0, 0x200] | r3 = *((r0 + 0x200));
0x08049b38 cmp r3, 0 |
| if (r3 != 0) {
0x08049b3c bne 0x804a0b4 | goto label_54;
| }
0x08049b40 add r3, sp, 0x7c | r3 += var_7ch;
0x08049b44 add sl, sp, 0x78 | sl += var_78h;
0x08049b48 mov fp, r3 |
| label_11:
0x08049b4c ldr r1, [r5, 0x4c] | r1 = *((r5 + 0x4c));
0x08049b50 mov r2, sl | r2 = sl;
0x08049b54 str r1, [r5, 0x58] | *((r5 + 0x58)) = r1;
0x08049b58 mov ip, 0 |
0x08049b5c ldr r0, [sp, 0x20] | r0 = var_20h;
0x08049b60 mov r3, fp | r3 = fp;
0x08049b64 mov r1, r6 | r1 = r6;
0x08049b68 str ip, [sp] | *(sp) = ip;
0x08049b6c bl 0x8047030 | r0 = parse_options ();
0x08049b70 subs sl, r0, 0 | sl = r0 - 0;
| if (sl == r0) {
0x08049b74 beq 0x8049dcc | goto label_55;
| }
0x08049b78 ldr r2, [r6, 0x1f0] | r2 = *((r6 + 0x1f0));
0x08049b7c ldr r3, [r2, 0x4c] | r3 = *((r2 + 0x4c));
0x08049b80 and r1, r3, 0xc00 | r1 = r3 & 0xc00;
0x08049b84 cmp r1, 0x400 |
| if (r1 == 0x400) {
0x08049b88 beq 0x804a354 | goto label_56;
| }
0x08049b8c ldr r3, [r6, 0x38] | r3 = *((r6 + 0x38));
0x08049b90 orr r3, r3, 1 | r3 |= 1;
0x08049b94 str r3, [r6, 0x38] | *((r6 + 0x38)) = r3;
0x08049b98 ldr r3, [r2, 0x4c] | r3 = *((r2 + 0x4c));
| label_24:
0x08049b9c ubfx r1, r3, 0xf, 1 | r1 = (r3 >> 0xf) & ((1 << 1) - 1);
0x08049ba0 ldr r3, [r6, 0x34] | r3 = *((r6 + 0x34));
0x08049ba4 bic r3, r3, 0x10000 | r3 = BIT_MASK (r3, 0x10000);
0x08049ba8 orr r3, r3, r1, lsl 16 | r3 |= (r1 << 16);
0x08049bac str r3, [r6, 0x34] | *((r6 + 0x34)) = r3;
0x08049bb0 ldr r3, [sp, 0x1c] | r3 = var_1ch;
0x08049bb4 ldr r3, [r3, 0x4c] | r3 = *((r3 + 0x4c));
0x08049bb8 cmp r3, 0 |
| if (r3 == 0) {
0x08049bbc bne 0x8049c00 |
0x08049bc0 ldr r3, [r2, 0x44] | r3 = *((r2 + 0x44));
0x08049bc4 ldr r2, [r3, 0x5c] | r2 = *((r3 + 0x5c));
0x08049bc8 cmp r2, 0 |
| if (r2 == 0) {
0x08049bcc bne 0x8049be8 |
0x08049bd0 ldr r2, [r3, 0x64] | r2 = *((r3 + 0x64));
0x08049bd4 cmp r2, 0 |
| if (r2 != 0) {
0x08049bd8 bne 0x8049be8 | goto label_57;
| }
0x08049bdc ldr r3, [r3, 0x60] | r3 = *((r3 + 0x60));
0x08049be0 cmp r3, 0 |
| if (r3 == 0) {
0x08049be4 beq 0x8049c00 | goto label_58;
| }
| }
| label_57:
0x08049be8 stmdaeq r5, {r4, r7, sb, fp, ip, lr, pc} | __asm ("stmdaeq r5, {r4, r7, sb, fp, ip, lr, pc}");
0x08049bec stmdaeq r5, {r4, r7, sb, fp, ip, lr, pc} | __asm ("stmdaeq r5, {r4, r7, sb, fp, ip, lr, pc}");
0x08049bf0 stmdaeq r5, {r3, r5, r6, sl, fp, lr, pc} | __asm ("stmdaeq r5, {r3, r5, r6, sl, fp, lr, pc}");
0x08049bf4 stmdaeq r5, {r3, r5, r6, sl, fp, lr, pc} | __asm ("stmdaeq r5, {r3, r5, r6, sl, fp, lr, pc}");
0x08049bf8 mov r0, r6 | r0 = r6;
0x08049bfc 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}");
| }
| label_58:
0x08049c00 ldr r3, [sp, 0x1c] | r3 = var_1ch;
0x08049c04 ldr r3, [r3, 0x48] | r3 = *((r3 + 0x48));
0x08049c08 cmp r3, 1 |
| if (r3 == 1) {
0x08049c0c beq 0x804a3c4 | goto label_59;
| }
| label_25:
0x08049c10 ldr r3, [r6, 0x70] | r3 = *((r6 + 0x70));
0x08049c14 ldr r3, [r3, 0x20] | r3 = *((r3 + 0x20));
0x08049c18 cmp r3, r4 |
| if (r3 == r4) {
0x08049c1c beq 0x804a300 | goto label_60;
| }
| label_22:
0x08049c20 ldr r1, [r6, 0x34] | r1 = *((r6 + 0x34));
0x08049c24 mov r0, r6 | r0 = r6;
0x08049c28 and r1, r1, 1 | r1 &= 1;
0x08049c2c bl 0x8047ac0 | r0 = ext4_feature_set_ok ();
0x08049c30 subs sl, r0, 0 | sl = r0 - 0;
| if (sl == r0) {
0x08049c34 beq 0x8049dcc | goto label_55;
| }
0x08049c38 ldr r3, [r5, 0x44] | r3 = *((r5 + 0x44));
0x08049c3c ldr r2, [sp, 0x30] | r2 = var_30h;
0x08049c40 ldrh r3, [r3, 0xce] | r3 = *((r3 + 0xce));
0x08049c44 cmp r3, r2, asr 2 |
| if (r3 <= r2) {
0x08049c48 movgt r0, r6 | r0 = r6;
| }
0x08049c4c stmdaeq r5, {r2, r4, r7, r8, sb, fp, ip, lr, pc} | __asm ("stmdaeq r5, {r2, r4, r7, r8, sb, fp, ip, lr, pc}");
0x08049c50 stmdaeq r5, {r2, r4, r7, r8, sb, fp, ip, lr, pc} | __asm ("stmdaeq r5, {r2, r4, r7, r8, sb, fp, ip, lr, pc}");
| if (r3 > r2) {
0x08049c54 bgt 0x8049f9c | goto label_12;
| }
0x08049c58 ldr r4, [r6, 0x1f0] | r4 = *((r6 + 0x1f0));
0x08049c5c ldr r2, [r4, 0x44] | r2 = *((r4 + 0x44));
0x08049c60 ldr r3, [r2, 0x60] | r3 = *((r2 + 0x60));
0x08049c64 tst r3, 0x10000 |
| if ((r3 & 0x10000) != 0) {
0x08049c68 beq 0x8049c88 |
0x08049c6c ldr r3, [sp, 0x1c] | r3 = var_1ch;
0x08049c70 ldrb r3, [r3, 0x176] | r3 = *((r3 + 0x176));
0x08049c74 cmp r3, 0 |
| if (r3 == 0) {
0x08049c78 movne r0, r6 | r0 = r6;
| }
0x08049c7c stmdaeq r5, {r3, r6, r7, r8, sb, fp, ip, lr, pc} | __asm ("stmdaeq r5, {r3, r6, r7, r8, sb, fp, ip, lr, pc}");
0x08049c80 stmdaeq r5, {r3, r6, r7, r8, sb, fp, ip, lr, pc} | __asm ("stmdaeq r5, {r3, r6, r7, r8, sb, fp, ip, lr, pc}");
| if (r3 != 0) {
0x08049c84 bne 0x8049f9c | goto label_12;
| }
| }
0x08049c88 ldr r3, [r6, 0x10] | r3 = *((r6 + 0x10));
0x08049c8c ldr r1, [sp, 0x30] | r1 = var_30h;
0x08049c90 cmp r3, r1 |
| if (r3 == r1) {
0x08049c94 beq 0x804a4b0 | goto label_61;
| }
0x08049c98 cmp r8, 0 |
| if (r8 != 0) {
0x08049c9c beq 0x8049ca8 |
0x08049ca0 mov r0, r8 | r0 = r8;
0x08049ca4 stmdaeq r8, {r2, r3, r4, r6, r8, sb, sl, ip, sp, lr} | __asm ("stmdaeq r8, {r2, r3, r4, r6, r8, sb, sl, ip, sp, lr}");
| }
0x08049ca8 ldr r1, [sp, 0x30] | r1 = var_30h;
0x08049cac mov r0, r6 | r0 = r6;
0x08049cb0 stmdaeq r8, {r4, sl, fp, ip, sp, lr} | __asm ("stmdaeq r8, {r4, sl, fp, ip, sp, lr}");
0x08049cb4 cmp r0, 0 |
| if (r0 != 0) {
0x08049cb8 bne 0x804a430 | goto label_62;
| }
0x08049cbc mvn r4, 0x15 | r4 = ~0x15;
0x08049cc0 ldr r3, [sp, 0x30] | r3 = var_30h;
0x08049cc4 mov r0, r6 | r0 = r6;
0x08049cc8 stmdaeq r5, {r3, r5, r6, r7, r8, sb, fp, ip, lr, pc} | __asm ("stmdaeq r5, {r3, r5, r6, r7, r8, sb, fp, ip, lr, pc}");
0x08049ccc stmdaeq r5, {r3, r5, r6, r7, r8, sb, fp, ip, lr, pc} | __asm ("stmdaeq r5, {r3, r5, r6, r7, r8, sb, fp, ip, lr, pc}");
0x08049cd0 stmdaeq r5, {r3, r4, fp, lr, pc} | __asm ("stmdaeq r5, {r3, r4, fp, lr, pc}");
0x08049cd4 stmdaeq r5, {r3, r4, fp, lr, pc} | __asm ("stmdaeq r5, {r3, r4, fp, lr, pc}");
0x08049cd8 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}");
| label_34:
0x08049cdc ldr r0, [r5, 0x220] | r0 = *((r5 + 0x220));
0x08049ce0 cmp r0, 0 |
| if (r0 != 0) {
0x08049ce4 beq 0x8049cf0 |
0x08049ce8 add r1, r0, 0x40 | r1 = r0 + 0x40;
0x08049cec stmdaeq r8, {r3, r4, r5, r7, r8, sb, fp, ip, sp, lr} | __asm ("stmdaeq r8, {r3, r4, r5, r7, r8, sb, fp, ip, sp, lr}");
| }
0x08049cf0 ldr r0, [r5, 0x140] | r0 = *((r5 + 0x140));
0x08049cf4 cmp r0, 0 |
| if (r0 == 0) {
0x08049cf8 movne sl, 0 | sl = 0;
| }
| if (r0 != 0) {
0x08049cfc bne 0x8049e00 | goto label_63;
| }
0x08049d00 str r0, [r6, 0x1f0] | *((r6 + 0x1f0)) = r0;
0x08049d04 mov sl, r4 | sl = r4;
0x08049d08 ldr r0, [r5, 0xd8] | r0 = *((r5 + 0xd8));
0x08049d0c stmdaeq r8, {r4, r5, r8, sb, sl, ip, sp, lr} | __asm ("stmdaeq r8, {r4, r5, r8, sb, sl, ip, sp, lr}");
0x08049d10 mov r0, r5 | r0 = r5;
0x08049d14 stmdaeq r8, {r4, r5, r8, sb, sl, ip, sp, lr} | __asm ("stmdaeq r8, {r4, r5, r8, sb, sl, ip, sp, lr}");
0x08049d18 mov r0, sb | r0 = sb;
0x08049d1c stmdaeq r8, {r4, r5, r8, sb, sl, ip, sp, lr} | __asm ("stmdaeq r8, {r4, r5, r8, sb, sl, ip, sp, lr}");
0x08049d20 b 0x8049e38 | goto label_64;
0x08049d24 ldrb r3, [r4, 1] | r3 = *((r4 + 1));
0x08049d28 cmp r3, 0x62 |
0x08049d2c bne 0x8049764 |
| }
0x08049d30 ldrb r2, [r4, 2] | r2 = *((r4 + 2));
0x08049d34 subs r2, r2, 0x3d | r2 -= 0x3d;
| if (r2 != r2) {
0x08049d38 bne 0x8049764 | goto label_0;
| }
0x08049d3c add r0, r4, 3 | r0 = r4 + 3;
0x08049d40 add r1, sp, 0x90 | r1 += var_90h;
0x08049d44 mov sl, r2 | sl = r2;
0x08049d48 str r0, [sp, 0x90] | var_90h = r0;
0x08049d4c stmdaeq r8, {r2, r4, sl, fp, ip, sp, lr} | __asm ("stmdaeq r8, {r2, r4, sl, fp, ip, sp, lr}");
0x08049d50 ldr r3, [sp, 0x90] | r3 = var_90h;
0x08049d54 str r3, [sp, 0x20] | var_20h = r3;
0x08049d58 str r0, [sp, 0x18] | var_18h = r0;
0x08049d5c ldrb r3, [r3] | r3 = *(r3);
0x08049d60 cmp r3, 0 |
0x08049d64 cmpne r3, 0x2c | __asm ("cmpne r3, 0x2c");
| if (r3 != 0) {
0x08049d68 bne 0x804cffc | goto label_65;
| }
0x08049d6c cmp r3, 0x2c |
0x08049d70 mov r0, 0 | r0 = 0;
0x08049d74 movw r1, 0x4003 | r1 = 0x4003;
0x08049d78 strd r0, r1, [sp, 0x78] | __asm ("strd r0, r1, [var_7ch]");
| if (r3 != 0x2c) {
0x08049d7c ldreq r3, [sp, 0x20] | r3 = var_20h;
| }
| if (r3 != 0x2c) {
0x08049d80 addeq r3, r3, 1 | r3++;
| }
| if (r3 != 0x2c) {
0x08049d84 streq r3, [sp, 0x20] | var_20h = r3;
| }
0x08049d88 ldr r3, [sp, 0x20] | r3 = var_20h;
0x08049d8c cmp r3, 0 |
| if (r3 != 0) {
0x08049d90 bne 0x8049780 | goto label_1;
| }
0x08049d94 cmp r5, 0 |
| if (r5 != 0) {
0x08049d98 bne 0x8049790 | goto label_2;
| }
| label_38:
0x08049d9c mov r0, r5 | r0 = r5;
0x08049da0 mvn sl, 0xb | sl = ~0xb;
0x08049da4 stmdaeq r8, {r4, r5, r8, sb, sl, ip, sp, lr} | __asm ("stmdaeq r8, {r4, r5, r8, sb, sl, ip, sp, lr}");
0x08049da8 mov r0, sb | r0 = sb;
0x08049dac stmdaeq r8, {r4, r5, r8, sb, sl, ip, sp, lr} | __asm ("stmdaeq r8, {r4, r5, r8, sb, sl, ip, sp, lr}");
0x08049db0 mov r0, sl | r0 = sl;
0x08049db4 add sp, sp, 0xa4 |
0x08049db8 pop {r4, r5, r6, r7, r8, sb, sl, fp, pc} |
| label_27:
0x08049dbc ldr sl, [sp, 0x28] | sl = var_28h;
0x08049dc0 cmp sl, 0 |
| if (sl == 0) {
0x08049dc4 beq 0x8049e5c | goto label_66;
| }
| label_10:
0x08049dc8 mov sl, 0 | sl = 0;
| label_55:
0x08049dcc mvn r4, 0x15 | r4 = ~0x15;
| do {
| label_4:
0x08049dd0 ldr r0, [r5, 0x220] | r0 = *((r5 + 0x220));
0x08049dd4 cmp r0, 0 |
| if (r0 != 0) {
0x08049dd8 beq 0x8049de4 |
0x08049ddc add r1, r0, 0x40 | r1 = r0 + 0x40;
0x08049de0 stmdaeq r8, {r3, r4, r5, r7, r8, sb, fp, ip, sp, lr} | __asm ("stmdaeq r8, {r3, r4, r5, r7, r8, sb, fp, ip, sp, lr}");
| }
| label_18:
0x08049de4 cmp r8, 0 |
| if (r8 != 0) {
0x08049de8 beq 0x8049df4 |
0x08049dec mov r0, r8 | r0 = r8;
0x08049df0 stmdaeq r8, {r2, r3, r4, r6, r8, sb, sl, ip, sp, lr} | __asm ("stmdaeq r8, {r2, r3, r4, r6, r8, sb, sl, ip, sp, lr}");
| }
0x08049df4 ldr r0, [r5, 0x140] | r0 = *((r5 + 0x140));
0x08049df8 cmp r0, 0 |
| if (r0 != 0) {
0x08049dfc beq 0x8049e10 |
| label_63:
0x08049e00 mov r1, 0x83 | r1 = 0x83;
0x08049e04 stmdaeq r8, {r2, r3, r5, r7, r8, sb, fp, ip, sp, lr} | __asm ("stmdaeq r8, {r2, r3, r5, r7, r8, sb, fp, ip, sp, lr}");
0x08049e08 mov r3, 0 | r3 = 0;
0x08049e0c str r3, [r5, 0x140] | *((r5 + 0x140)) = r3;
| }
0x08049e10 cmp sl, 0 |
0x08049e14 ldr r0, [r5, 0xd8] | r0 = *((r5 + 0xd8));
| if (sl != 0) {
0x08049e18 moveq sl, r4 | sl = r4;
| }
0x08049e1c mov r3, 0 | r3 = 0;
0x08049e20 str r3, [r6, 0x1f0] | *((r6 + 0x1f0)) = r3;
| label_6:
0x08049e24 stmdaeq r8, {r4, r5, r8, sb, sl, ip, sp, lr} | __asm ("stmdaeq r8, {r4, r5, r8, sb, sl, ip, sp, lr}");
0x08049e28 mov r0, r5 | r0 = r5;
0x08049e2c stmdaeq r8, {r4, r5, r8, sb, sl, ip, sp, lr} | __asm ("stmdaeq r8, {r4, r5, r8, sb, sl, ip, sp, lr}");
0x08049e30 mov r0, sb | r0 = sb;
0x08049e34 stmdaeq r8, {r4, r5, r8, sb, sl, ip, sp, lr} | __asm ("stmdaeq r8, {r4, r5, r8, sb, sl, ip, sp, lr}");
| label_64:
0x08049e38 mov r0, sl | r0 = sl;
0x08049e3c add sp, sp, 0xa4 |
0x08049e40 pop {r4, r5, r6, r7, r8, sb, sl, fp, pc} |
| label_40:
0x08049e44 ldr r2, [sp, 0x18] | r2 = var_18h;
0x08049e48 mov r3, 0 | r3 = 0;
0x08049e4c str sl, [sp, 0x84] | var_84h = sl;
0x08049e50 mov fp, r3 |
0x08049e54 str r2, [sp, 0x80] | var_80h = r2;
0x08049e58 b 0x804982c | goto label_3;
| label_66:
0x08049e5c mov r0, r6 | r0 = r6;
0x08049e60 stmdaeq r5, {r4, r5, r6, r7, sb, fp, sp, lr, pc} | __asm ("stmdaeq r5, {r4, r5, r6, r7, sb, fp, sp, lr, pc}");
0x08049e64 stmdaeq r5, {r4, r5, r6, r7, sb, fp, sp, lr, pc} | __asm ("stmdaeq r5, {r4, r5, r6, r7, sb, fp, sp, lr, pc}");
0x08049e68 stmdaeq r5, {r3, r4, fp, lr, pc} | __asm ("stmdaeq r5, {r3, r4, fp, lr, pc}");
0x08049e6c stmdaeq r5, {r3, r4, fp, lr, pc} | __asm ("stmdaeq r5, {r3, r4, fp, lr, pc}");
0x08049e70 mvn r4, 0x15 | r4 = ~0x15;
0x08049e74 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}");
0x08049e78 b 0x8049dd0 |
| } while (1);
| label_45:
0x08049e7c ldr r3, [r4, 0x220] | r3 = *((r4 + 0x220));
0x08049e80 cmp r3, 0 |
| if (r3 == 0) {
0x08049e84 beq 0x804a1a8 | goto label_67;
| }
| label_30:
0x08049e88 ldr r2, [r3] | r2 = *(r3);
0x08049e8c cmp r2, 4 |
0x08049e90 ldr r2, [sp, 0x1c] | r2 = var_1ch;
0x08049e94 ldr r4, [r2, 0x3fc] | r4 = *((r2 + 0x3fc));
| if (r2 != 4) {
0x08049e98 bne 0x804a1d4 | goto label_68;
| }
0x08049e9c ldr r1, [sp, 0x1c] | r1 = var_1ch;
0x08049ea0 add r0, sp, 0x90 | r0 += var_90h;
0x08049ea4 mov r2, 0x3fc | r2 = 0x3fc;
0x08049ea8 str r3, [sp, 0x90] | var_90h = r3;
0x08049eac mvn r3, 0 | r3 = ~0;
0x08049eb0 str r3, [sp, 0x98] | var_98h = r3;
0x08049eb4 stmdaeq r8, {r2, r3, r8, sb, sl, ip, sp, lr} | __asm ("stmdaeq r8, {r2, r3, r8, sb, sl, ip, sp, lr}");
0x08049eb8 subs sl, r0, 0 | sl -= var_90h;
| if (sl != var_90h) {
0x08049ebc bne 0x804a1d4 | goto label_68;
| }
0x08049ec0 ldr r3, [sp, 0x98] | r3 = var_98h;
0x08049ec4 cmp r4, r3 |
| if (r4 == r3) {
0x08049ec8 beq 0x8049fe4 | goto label_69;
| }
0x08049ecc mov r0, r6 | r0 = r6;
0x08049ed0 stmdaeq r5, {r3, r4, r7, fp, ip, lr, pc} | __asm ("stmdaeq r5, {r3, r4, r7, fp, ip, lr, pc}");
0x08049ed4 stmdaeq r5, {r3, r4, r7, fp, ip, lr, pc} | __asm ("stmdaeq r5, {r3, r4, r7, fp, ip, lr, pc}");
0x08049ed8 stmdaeq r5, {r3, r4, fp, lr, pc} | __asm ("stmdaeq r5, {r3, r4, fp, lr, pc}");
0x08049edc stmdaeq r5, {r3, r4, fp, lr, pc} | __asm ("stmdaeq r5, {r3, r4, fp, lr, pc}");
0x08049ee0 mvn r4, 0x49 | r4 = ~0x49;
0x08049ee4 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}");
0x08049ee8 b 0x8049dd0 | goto label_4;
| label_37:
0x08049eec movw r3, 0x4003 | r3 = 0x4003;
0x08049ef0 mov sl, r4 | sl = r4;
0x08049ef4 str r3, [sp, 0x7c] | var_7ch = r3;
0x08049ef8 mov r3, 1 | r3 = 1;
0x08049efc str r4, [sp, 0x78] | var_78h = r4;
0x08049f00 str r4, [sp, 0x20] | var_20h = r4;
0x08049f04 str r3, [sp, 0x18] | var_18h = r3;
0x08049f08 b 0x8049788 | goto label_5;
| label_39:
0x08049f0c mvn sl, 0x15 | sl = ~0x15;
0x08049f10 mov r0, r6 | r0 = r6;
0x08049f14 stmdaeq r5, {r6, r7, r8, sb, sl, ip, lr, pc} | __asm ("stmdaeq r5, {r6, r7, r8, sb, sl, ip, lr, pc}");
0x08049f18 stmdaeq r5, {r6, r7, r8, sb, sl, ip, lr, pc} | __asm ("stmdaeq r5, {r6, r7, r8, sb, sl, ip, lr, pc}");
0x08049f1c stmdaeq r5, {r3, r4, fp, lr, pc} | __asm ("stmdaeq r5, {r3, r4, fp, lr, pc}");
0x08049f20 stmdaeq r5, {r3, r4, fp, lr, pc} | __asm ("stmdaeq r5, {r3, r4, fp, lr, pc}");
0x08049f24 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}");
| do {
0x08049f28 mov r3, 0 | r3 = 0;
0x08049f2c ldr r0, [r5, 0xd8] | r0 = *((r5 + 0xd8));
0x08049f30 str r3, [r6, 0x1f0] | *((r6 + 0x1f0)) = r3;
0x08049f34 b 0x8049e24 | goto label_6;
| label_53:
0x08049f38 ldr r2, [sp, 0x1c] | r2 = var_1ch;
0x08049f3c ldrh r3, [r2, 0x58] | r3 = *((r2 + 0x58));
0x08049f40 str r3, [r5, 0x84] | *((r5 + 0x84)) = r3;
0x08049f44 ldr r2, [r2, 0x54] | r2 = *((r2 + 0x54));
0x08049f48 str r2, [r5, 0x88] | *((r5 + 0x88)) = r2;
0x08049f4c cmp r2, 0xa |
| if (r2 <= 0xa) {
0x08049f50 ble 0x804a104 | goto label_70;
| }
0x08049f54 cmp r3, 0x7f |
| if (r3 > 0x7f) {
0x08049f58 ble 0x8049f74 |
0x08049f5c ldr r1, [sp, 0x30] | r1 = var_30h;
0x08049f60 sub r2, r3, 1 | r2 = r3 - 1;
0x08049f64 and r2, r2, r3 | r2 &= r3;
0x08049f68 cmp r3, r1 |
0x08049f6c cmple r2, 0 | __asm ("cmple r2, 0");
| if (r3 == r1) {
0x08049f70 beq 0x804a244 | goto label_71;
| }
| }
0x08049f74 mov r0, r6 | r0 = r6;
0x08049f78 stmdaeq r5, {r3, r4, r5, r8, fp, ip, lr, pc} | __asm ("stmdaeq r5, {r3, r4, r5, r8, fp, ip, lr, pc}");
0x08049f7c stmdaeq r5, {r3, r4, r5, r8, fp, ip, lr, pc} | __asm ("stmdaeq r5, {r3, r4, r5, r8, fp, ip, lr, pc}");
0x08049f80 stmdaeq r5, {r3, r4, fp, lr, pc} | __asm ("stmdaeq r5, {r3, r4, fp, lr, pc}");
0x08049f84 stmdaeq r5, {r3, r4, fp, lr, pc} | __asm ("stmdaeq r5, {r3, r4, fp, lr, pc}");
0x08049f88 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}");
0x08049f8c ldr r3, [sp, 0x30] | r3 = var_30h;
0x08049f90 stmdaeq r5, {r2, r4, r6, r8, fp, ip, lr, pc} | __asm ("stmdaeq r5, {r2, r4, r6, r8, fp, ip, lr, pc}");
0x08049f94 stmdaeq r5, {r2, r4, r6, r8, fp, ip, lr, pc} | __asm ("stmdaeq r5, {r2, r4, r6, r8, fp, ip, lr, pc}");
0x08049f98 mov r0, r6 | r0 = r6;
| label_12:
0x08049f9c stmdaeq r5, {r3, r4, fp, lr, pc} | __asm ("stmdaeq r5, {r3, r4, fp, lr, pc}");
0x08049fa0 stmdaeq r5, {r3, r4, fp, lr, pc} | __asm ("stmdaeq r5, {r3, r4, fp, lr, pc}");
0x08049fa4 mov sl, 0 | sl = 0;
0x08049fa8 mvn r4, 0x15 | r4 = ~0x15;
0x08049fac 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}");
0x08049fb0 b 0x8049dd0 | goto label_4;
| label_42:
0x08049fb4 mov sl, r0 | sl = r0;
0x08049fb8 stmdaeq r5, {r3, r4, r6, r7, r8, sb, sl, ip, lr, pc} | __asm ("stmdaeq r5, {r3, r4, r6, r7, r8, sb, sl, ip, lr, pc}");
0x08049fbc stmdaeq r5, {r3, r4, r6, r7, r8, sb, sl, ip, lr, pc} | __asm ("stmdaeq r5, {r3, r4, r6, r7, r8, sb, sl, ip, lr, pc}");
0x08049fc0 mov r0, r6 | r0 = r6;
0x08049fc4 stmdaeq r5, {r3, r4, fp, lr, pc} | __asm ("stmdaeq r5, {r3, r4, fp, lr, pc}");
0x08049fc8 stmdaeq r5, {r3, r4, fp, lr, pc} | __asm ("stmdaeq r5, {r3, r4, fp, lr, pc}");
0x08049fcc 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}");
0x08049fd0 b 0x8049f28 |
| } while (1);
| label_48:
0x08049fd4 orr r2, r2, 0x400 | r2 |= 0x400;
0x08049fd8 str r2, [r3, 0x4c] | *((r3 + 0x4c)) = r2;
0x08049fdc ldr r3, [r6, 0x1f0] | r3 = *((r6 + 0x1f0));
0x08049fe0 b 0x80499e8 | goto label_7;
| label_69:
0x08049fe4 ldr r4, [r6, 0x1f0] | r4 = *((r6 + 0x1f0));
0x08049fe8 mov r3, r4 | r3 = r4;
0x08049fec ldr r1, [r4, 0x44] | r1 = *((r4 + 0x44));
0x08049ff0 ldr r2, [r1, 0x60] | r2 = *((r1 + 0x60));
0x08049ff4 tst r2, 0x2000 |
| if ((r2 & 0x2000) != 0) {
0x08049ff8 bne 0x80498fc | goto label_8;
| }
0x08049ffc ldr r3, [r1, 0x64] | r3 = *((r1 + 0x64));
0x0804a000 tst r3, 0x400 |
| if ((r3 & 0x400) == 0) {
0x0804a004 beq 0x804a188 | goto label_46;
| }
| label_17:
0x0804a008 ldr r3, [r4, 0x220] | r3 = *((r4 + 0x220));
0x0804a00c cmp r3, 0 |
| if (r3 == 0) {
0x0804a010 beq 0x804a140 | goto label_72;
| }
| label_14:
0x0804a014 ldr r2, [r4, 0x44] | r2 = *((r4 + 0x44));
| label_15:
0x0804a018 ldr r3, [r4, 0x220] | r3 = *((r4 + 0x220));
0x0804a01c cmp r3, 0 |
| if (r3 == 0) {
0x0804a020 beq 0x804a184 | goto label_73;
| }
| label_16:
0x0804a024 ldr r3, [r5, 0x220] | r3 = *((r5 + 0x220));
0x0804a028 ldr r2, [sp, 0x1c] | r2 = var_1ch;
0x0804a02c add r1, r2, 0x68 | r1 = r2 + 0x68;
0x0804a030 ldr r2, [r3] | r2 = *(r3);
0x0804a034 cmp r2, 4 |
| if (r2 != 4) {
0x0804a038 bne 0x804a1d4 | goto label_68;
| }
0x0804a03c add r0, sp, 0x90 | r0 += var_90h;
0x0804a040 mov r2, 0x10 | r2 = 0x10;
0x0804a044 str r3, [sp, 0x90] | var_90h = r3;
0x0804a048 mvn r3, 0 | r3 = ~0;
0x0804a04c str r3, [sp, 0x98] | var_98h = r3;
0x0804a050 stmdaeq r8, {r2, r3, r8, sb, sl, ip, sp, lr} | __asm ("stmdaeq r8, {r2, r3, r8, sb, sl, ip, sp, lr}");
0x0804a054 cmp r0, 0 |
| if (r0 != 0) {
0x0804a058 bne 0x804a1d4 | goto label_68;
| }
0x0804a05c ldr r2, [sp, 0x98] | r2 = var_98h;
0x0804a060 ldr r3, [r6, 0x1f0] | r3 = *((r6 + 0x1f0));
0x0804a064 str r2, [r5, 0x224] | *((r5 + 0x224)) = r2;
0x0804a068 b 0x8049908 | goto label_9;
| label_21:
0x0804a06c ldr r3, [sp, 0x28] | r3 = var_28h;
0x0804a070 cmp r3, 0 |
| if (r3 == 0) {
0x0804a074 beq 0x804a090 | goto label_74;
| }
0x0804a078 ldr r1, [r6, 0x34] | r1 = *((r6 + 0x34));
0x0804a07c mov r0, r6 | r0 = r6;
0x0804a080 and r1, r1, 1 | r1 &= 1;
0x0804a084 bl 0x8047ac0 | r0 = ext4_feature_set_ok ();
0x0804a088 cmp r0, 0 |
| if (r0 != 0) {
0x0804a08c bne 0x8049dc8 | goto label_10;
| }
| label_74:
0x0804a090 stmdaeq r5, {r2, r3, r4, r6, r8, sb, fp, ip, lr, pc} | __asm ("stmdaeq r5, {r2, r3, r4, r6, r8, sb, fp, ip, lr, pc}");
0x0804a094 stmdaeq r5, {r2, r3, r4, r6, r8, sb, fp, ip, lr, pc} | __asm ("stmdaeq r5, {r2, r3, r4, r6, r8, sb, fp, ip, lr, pc}");
| label_23:
0x0804a098 mov r0, r6 | r0 = r6;
0x0804a09c stmdaeq r5, {r3, r4, fp, lr, pc} | __asm ("stmdaeq r5, {r3, r4, fp, lr, pc}");
0x0804a0a0 stmdaeq r5, {r3, r4, fp, lr, pc} | __asm ("stmdaeq r5, {r3, r4, fp, lr, pc}");
0x0804a0a4 mov sl, 0 | sl = 0;
0x0804a0a8 mvn r4, 0x15 | r4 = ~0x15;
0x0804a0ac 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}");
0x0804a0b0 b 0x8049dd0 | goto label_4;
| label_54:
0x0804a0b4 add r0, r0, 0x200 | r0 += 0x200;
0x0804a0b8 mov r2, 0xcc0 | r2 = 0xcc0;
0x0804a0bc mov r1, 0x40 | r1 = 0x40;
0x0804a0c0 stmdaeq r8, {r3, r4, sl, fp, ip, sp, lr} | __asm ("stmdaeq r8, {r3, r4, sl, fp, ip, sp, lr}");
0x0804a0c4 subs r3, r0, 0 | r3 = r0 - 0;
0x0804a0c8 str r3, [sp, 0x34] | var_34h = r3;
| if (r3 == r0) {
0x0804a0cc beq 0x8049dc8 | goto label_10;
| }
0x0804a0d0 add sl, sp, 0x78 | sl += var_78h;
0x0804a0d4 add r3, sp, 0x7c | r3 += var_7ch;
0x0804a0d8 mov ip, 0 |
0x0804a0dc mov r2, sl | r2 = sl;
0x0804a0e0 mov r1, r6 | r1 = r6;
0x0804a0e4 str ip, [sp] | *(sp) = ip;
0x0804a0e8 mov fp, r3 |
0x0804a0ec bl 0x8047030 | r0 = parse_options ();
0x0804a0f0 cmp r0, 0 |
| if (r0 == 0) {
0x0804a0f4 beq 0x804a410 | goto label_75;
| }
| label_26:
0x0804a0f8 ldr r0, [sp, 0x34] | r0 = var_34h;
0x0804a0fc stmdaeq r8, {r4, r5, r8, sb, sl, ip, sp, lr} | __asm ("stmdaeq r8, {r4, r5, r8, sb, sl, ip, sp, lr}");
0x0804a100 b 0x8049b4c | goto label_11;
| label_70:
0x0804a104 mov r3, r2 | r3 = r2;
0x0804a108 mov r0, r6 | r0 = r6;
0x0804a10c stmdaeq r5, {r5, r8, fp, ip, lr, pc} | __asm ("stmdaeq r5, {r5, r8, fp, ip, lr, pc}");
0x0804a110 stmdaeq r5, {r5, r8, fp, ip, lr, pc} | __asm ("stmdaeq r5, {r5, r8, fp, ip, lr, pc}");
0x0804a114 b 0x8049f9c | goto label_12;
| label_43:
0x0804a118 ldr r1, [pc, 0xe8c] | r1 = .bss;
0x0804a11c mov r0, r6 | r0 = r6;
0x0804a120 stmdaeq r5, {r2, r4, r5, r6, r7, r8, sb, sl, ip, lr, pc} | __asm ("stmdaeq r5, {r2, r4, r5, r6, r7, r8, sb, sl, ip, lr, pc}");
0x0804a124 stmdaeq r5, {r2, r4, r5, r6, r7, r8, sb, sl, ip, lr, pc} | __asm ("stmdaeq r5, {r2, r4, r5, r6, r7, r8, sb, sl, ip, lr, pc}");
0x0804a128 movw r2, 0x1001 | r2 = 0x1001;
0x0804a12c 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}");
0x0804a130 ldr r3, [r6, 0x1f0] | r3 = *((r6 + 0x1f0));
0x0804a134 ldr r3, [r3, 0x44] | r3 = *((r3 + 0x44));
0x0804a138 ldr r3, [r3, 0x64] | r3 = *((r3 + 0x64));
0x0804a13c b 0x8049898 | goto label_13;
| label_72:
0x0804a140 stmdaeq r6, {r1, r2, r5, r6, r8} | __asm ("stmdaeq r6, {r1, r2, r5, r6, r8}");
0x0804a144 stmdaeq r6, {r1, r2, r5, r6, r8} | __asm ("stmdaeq r6, {r1, r2, r5, r6, r8}");
0x0804a148 ldrb r3, [ip] | r3 = *(ip);
0x0804a14c cmp r3, 0 |
| if (r3 != 0) {
0x0804a150 bne 0x804a014 | goto label_14;
| }
0x0804a154 mov r2, 9 | r2 = 9;
0x0804a158 movw r1, 0xc34 | r1 = 0xc34;
0x0804a15c stmdaeq r5, {r6, r8, sb, sl, lr, pc} | __asm ("stmdaeq r5, {r6, r8, sb, sl, lr, pc}");
0x0804a160 stmdaeq r5, {r6, r8, sb, sl, lr, pc} | __asm ("stmdaeq r5, {r6, r8, sb, sl, lr, pc}");
0x0804a164 mov lr, 1 | lr = 1;
0x0804a168 strb lr, [ip] |
0x0804a16c stmdaeq r8, {r2, r8, sb, sl, ip, sp, lr} | __asm ("stmdaeq r8, {r2, r8, sb, sl, ip, sp, lr}");
0x0804a170 ldr r4, [r6, 0x1f0] | r4 = *((r6 + 0x1f0));
0x0804a174 ldr r2, [r4, 0x44] | r2 = *((r4 + 0x44));
0x0804a178 ldr r3, [r2, 0x64] | r3 = *((r2 + 0x64));
0x0804a17c tst r3, 0x400 |
| if ((r3 & 0x400) != 0) {
0x0804a180 bne 0x804a018 | goto label_15;
| }
| label_73:
0x0804a184 ldr r2, [r2, 0x60] | r2 = *((r2 + 0x60));
| label_46:
0x0804a188 tst r2, 0x400 |
| if ((r2 & 0x400) == 0) {
0x0804a18c moveq r3, r4 | r3 = r4;
| goto label_76;
| }
| if ((r2 & 0x400) == 0) {
| label_76:
0x0804a190 beq 0x8049908 | goto label_9;
| }
0x0804a194 b 0x804a024 | goto label_16;
| label_49:
0x0804a198 orr r2, r2, 0x800 | r2 |= 0x800;
0x0804a19c str r2, [r3, 0x4c] | *((r3 + 0x4c)) = r2;
0x0804a1a0 ldr r3, [r6, 0x1f0] | r3 = *((r6 + 0x1f0));
0x0804a1a4 b 0x80499e8 | goto label_7;
| label_67:
0x0804a1a8 stmdaeq r6, {r1, r2, r5, r6, r8} | __asm ("stmdaeq r6, {r1, r2, r5, r6, r8}");
0x0804a1ac stmdaeq r6, {r1, r2, r5, r6, r8} | __asm ("stmdaeq r6, {r1, r2, r5, r6, r8}");
0x0804a1b0 ldrb r2, [ip] | r2 = *(ip);
0x0804a1b4 cmp r2, 0 |
| if (r2 == 0) {
0x0804a1b8 beq 0x804ab9c | goto label_77;
| }
| label_29:
0x0804a1bc ldr r3, [r4, 0x44] | r3 = *((r4 + 0x44));
0x0804a1c0 ldr r3, [r3, 0x60] | r3 = *((r3 + 0x60));
0x0804a1c4 tst r3, 0x2000 |
0x0804a1c8 mov r3, r4 | r3 = r4;
| if ((r3 & 0x2000) != 0) {
0x0804a1cc bne 0x80498fc | goto label_8;
| }
0x0804a1d0 b 0x804a008 | goto label_17;
| label_68:
0x0804a1d4 udf 0x12 | __asm ("udf 0x12");
| label_52:
0x0804a1d8 stmdaeq r5, {r8, fp, ip, lr, pc} | __asm ("stmdaeq r5, {r8, fp, ip, lr, pc}");
0x0804a1dc stmdaeq r5, {r8, fp, ip, lr, pc} | __asm ("stmdaeq r5, {r8, fp, ip, lr, pc}");
0x0804a1e0 mov r0, r6 | r0 = r6;
0x0804a1e4 b 0x8049f9c | goto label_12;
| label_44:
0x0804a1e8 mov r0, r6 | r0 = r6;
0x0804a1ec stmdaeq r5, {r2, r3, r4, r5, r6, fp, ip, lr, pc} | __asm ("stmdaeq r5, {r2, r3, r4, r5, r6, fp, ip, lr, pc}");
0x0804a1f0 stmdaeq r5, {r2, r3, r4, r5, r6, fp, ip, lr, pc} | __asm ("stmdaeq r5, {r2, r3, r4, r5, r6, fp, ip, lr, pc}");
0x0804a1f4 stmdaeq r5, {r3, r4, fp, lr, pc} | __asm ("stmdaeq r5, {r3, r4, fp, lr, pc}");
0x0804a1f8 stmdaeq r5, {r3, r4, fp, lr, pc} | __asm ("stmdaeq r5, {r3, r4, fp, lr, pc}");
0x0804a1fc mov sl, 0 | sl = 0;
0x0804a200 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}");
0x0804a204 ldr r4, [r5, 0x220] | r4 = *((r5 + 0x220));
0x0804a208 str sl, [r5, 0x220] | *((r5 + 0x220)) = sl;
0x0804a20c b 0x8049de4 | goto label_18;
| label_47:
0x0804a210 stmdaeq r6, {r1, r2, r5, r6, r8} | __asm ("stmdaeq r6, {r1, r2, r5, r6, r8}");
0x0804a214 stmdaeq r6, {r1, r2, r5, r6, r8} | __asm ("stmdaeq r6, {r1, r2, r5, r6, r8}");
0x0804a218 ldrb r3, [ip] | r3 = *(ip);
0x0804a21c cmp r3, 0 |
| if (r3 == 0) {
0x0804a220 beq 0x804ac00 | goto label_78;
| }
| label_32:
0x0804a224 mov r3, r4 | r3 = r4;
0x0804a228 b 0x80499c0 | goto label_19;
| label_41:
0x0804a22c mov r4, r1 | r4 = r1;
0x0804a230 mov r1, sl | r1 = sl;
0x0804a234 stmdaeq r8, {r2, r3, r4, r6, r7, sb, sl, ip, sp, lr} | __asm ("stmdaeq r8, {r2, r3, r4, r6, r7, sb, sl, ip, sp, lr}");
0x0804a238 mov fp, r1 |
0x0804a23c strd r2, r3, [sp, 0x80] | __asm ("strd r2, r3, [var_84h]");
0x0804a240 b 0x804982c | goto label_3;
| label_71:
0x0804a244 cmp r3, 0x8f |
| if (r3 > 0x8f) {
0x0804a248 movls r2, 0xca00 | r2 = 0xca00;
| }
| if (r3 <= 0x8f) {
0x0804a24c movhi r2, 1 | r2 = 1;
| }
0x0804a250 movtls r2, 0x3b9a | __asm ("movtls r2, 0x3b9a");
0x0804a254 str r2, [r6, 0x1f4] | *((r6 + 0x1f4)) = r2;
0x0804a258 add r2, r6, 0x200 | r2 = r6 + 0x200;
| if (r3 <= 0x8f) {
0x0804a25c mvnhi r0, 0x80000000 | r0 = ~0x80000000;
| }
| if (r3 <= 0x8f) {
0x0804a260 movhi r1, 3 | r1 = 3;
| }
| if (r3 > 0x8f) {
0x0804a264 mvnls r0, 0x80000000 | r0 = ~0x80000000;
| }
| if (r3 > 0x8f) {
0x0804a268 movls r1, 0 | r1 = 0;
| }
0x0804a26c cmp r3, 0x80 |
0x0804a270 strd r0, r1, [r2] | __asm ("strd r0, r1, [r2]");
0x0804a274 mov r0, 0x80000000 | r0 = 0x80000000;
0x0804a278 mvn r1, 0 | r1 = ~0;
0x0804a27c strd r0, r1, [r2, -8] | __asm ("strd r0, r1, [r2, -8]");
| if (r3 == 0x80) {
0x0804a280 beq 0x8049b30 | goto label_20;
| }
0x0804a284 ldr r2, [r6, 0x1f0] | r2 = *((r6 + 0x1f0));
0x0804a288 mov r1, 0x20 | r1 = 0x20;
0x0804a28c str r1, [r5, 0x144] | *((r5 + 0x144)) = r1;
0x0804a290 ldr r2, [r2, 0x44] | r2 = *((r2 + 0x44));
0x0804a294 ldr r2, [r2, 0x64] | r2 = *((r2 + 0x64));
0x0804a298 tst r2, 0x40 |
| if ((r2 & 0x40) == 0) {
0x0804a29c beq 0x8049b30 | goto label_20;
| }
0x0804a2a0 ldr r1, [sp, 0x1c] | r1 = var_1ch;
0x0804a2a4 sub r2, r3, 0x80 | r2 = r3 - 0x80;
0x0804a2a8 movw r3, 0x15e | r3 = 0x15e;
0x0804a2ac ldrh r3, [r1, r3] | r3 = *((r1 + r3));
0x0804a2b0 cmp r2, r3 |
| if (r2 >= r3) {
0x0804a2b4 movlo r0, r6 | r0 = r6;
| }
0x0804a2b8 stmdaeq r5, {r2, r5, r6, r8, fp, ip, lr, pc} | __asm ("stmdaeq r5, {r2, r5, r6, r8, fp, ip, lr, pc}");
0x0804a2bc stmdaeq r5, {r2, r5, r6, r8, fp, ip, lr, pc} | __asm ("stmdaeq r5, {r2, r5, r6, r8, fp, ip, lr, pc}");
| if (r2 <= r3) {
0x0804a2c0 blo 0x8049f9c | goto label_12;
| }
0x0804a2c4 cmp r3, 0x20 |
| if (r3 < 0x20) {
0x0804a2c8 movhs r1, r3 | r1 = r3;
| }
0x0804a2cc ldr r3, [sp, 0x1c] | r3 = var_1ch;
| if (r3 >= 0x20) {
0x0804a2d0 movlo r1, 0x20 | r1 = 0x20;
| }
0x0804a2d4 str r1, [r5, 0x144] | *((r5 + 0x144)) = r1;
0x0804a2d8 add r3, r3, 0x15c | r3 += 0x15c;
0x0804a2dc ldrh r3, [r3] | r3 = *(r3);
0x0804a2e0 cmp r2, r3 |
| if (r2 >= r3) {
0x0804a2e4 movlo r0, r6 | r0 = r6;
| }
0x0804a2e8 stmdaeq r5, {r7, r8, fp, ip, lr, pc} | __asm ("stmdaeq r5, {r7, r8, fp, ip, lr, pc}");
0x0804a2ec stmdaeq r5, {r7, r8, fp, ip, lr, pc} | __asm ("stmdaeq r5, {r7, r8, fp, ip, lr, pc}");
| if (r2 <= r3) {
0x0804a2f0 blo 0x8049f9c | goto label_12;
| }
0x0804a2f4 cmp r3, r1 |
| if (r3 <= r1) {
0x0804a2f8 strhi r3, [r5, 0x144] | *((r5 + 0x144)) = r3;
| }
0x0804a2fc b 0x8049b30 | goto label_20;
| label_60:
0x0804a300 ldr r3, [r6, 0x1f0] | r3 = *((r6 + 0x1f0));
0x0804a304 ldr r3, [r3, 0x44] | r3 = *((r3 + 0x44));
0x0804a308 ldr r2, [r3, 0x60] | r2 = *((r3 + 0x60));
0x0804a30c bics r2, r2, 0x16 | __asm ("bics r2, r2, 0x16");
| if (r3 != r1) {
0x0804a310 bne 0x804a06c | goto label_21;
| }
0x0804a314 ldr r2, [r3, 0x5c] | r2 = *((r3 + 0x5c));
0x0804a318 tst r2, 4 |
| if ((r2 & 4) == 0) {
0x0804a31c beq 0x804a06c | goto label_21;
| }
0x0804a320 ldr r2, [r6, 0x34] | r2 = *((r6 + 0x34));
0x0804a324 tst r2, 1 |
| if ((r2 & 1) != 0) {
0x0804a328 bne 0x804a338 | goto label_79;
| }
0x0804a32c ldr r3, [r3, 0x64] | r3 = *((r3 + 0x64));
0x0804a330 bics r3, r3, 7 | __asm ("bics r3, r3, 7");
| if ((r2 & 1) != 0) {
0x0804a334 bne 0x804a06c | goto label_21;
| }
| label_79:
0x0804a338 mov r0, r6 | r0 = r6;
0x0804a33c stmdaeq r5, {r3, r5, r8, sb, fp, ip, lr, pc} | __asm ("stmdaeq r5, {r3, r5, r8, sb, fp, ip, lr, pc}");
0x0804a340 stmdaeq r5, {r3, r5, r8, sb, fp, ip, lr, pc} | __asm ("stmdaeq r5, {r3, r5, r8, sb, fp, ip, lr, pc}");
0x0804a344 stmdaeq r5, {r2, r4, r5, r7, r8, sb, fp, lr, pc} | __asm ("stmdaeq r5, {r2, r4, r5, r7, r8, sb, fp, lr, pc}");
0x0804a348 stmdaeq r5, {r2, r4, r5, r7, r8, sb, fp, lr, pc} | __asm ("stmdaeq r5, {r2, r4, r5, r7, r8, sb, fp, lr, pc}");
0x0804a34c 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}");
0x0804a350 b 0x8049c20 | goto label_22;
| label_56:
0x0804a354 stmdaeq r6, {r1, r2, r5, r6, r8} | __asm ("stmdaeq r6, {r1, r2, r5, r6, r8}");
0x0804a358 stmdaeq r6, {r1, r2, r5, r6, r8} | __asm ("stmdaeq r6, {r1, r2, r5, r6, r8}");
0x0804a35c ldrb r0, [r1, 3] | r0 = *((r1 + 3));
0x0804a360 cmp r0, 0 |
| if (r0 == 0) {
0x0804a364 beq 0x804cfdc | goto label_80;
| }
| label_36:
0x0804a368 bic r3, r3, 0x400000 | r3 = BIT_MASK (r3, 0x400000);
0x0804a36c str r3, [r2, 0x4c] | *((r2 + 0x4c)) = r3;
0x0804a370 ldr r2, [r6, 0x1f0] | r2 = *((r6 + 0x1f0));
0x0804a374 ldr r3, [r2, 0x50] | r3 = *((r2 + 0x50));
0x0804a378 bic r3, r3, 0x10 | r3 = BIT_MASK (r3, 0x10);
0x0804a37c str r3, [r2, 0x50] | *((r2 + 0x50)) = r3;
0x0804a380 ldr r2, [r6, 0x1f0] | r2 = *((r6 + 0x1f0));
0x0804a384 ldr r3, [r2, 0x50] | r3 = *((r2 + 0x50));
0x0804a388 tst r3, 1 |
0x0804a38c stmdaeq r5, {r5, r6, r8, sl, ip, lr, pc} | __asm ("stmdaeq r5, {r5, r6, r8, sl, ip, lr, pc}");
0x0804a390 stmdaeq r5, {r5, r6, r8, sl, ip, lr, pc} | __asm ("stmdaeq r5, {r5, r6, r8, sl, ip, lr, pc}");
| if ((r3 & 1) != 0) {
0x0804a394 bne 0x804a098 | goto label_23;
| }
0x0804a398 ldr r3, [r2, 0x44] | r3 = *((r2 + 0x44));
0x0804a39c ldr r3, [r3, 0x60] | r3 = *((r3 + 0x60));
0x0804a3a0 tst r3, 0x10000 |
| if ((r3 & 0x10000) != 0) {
0x0804a3a4 bne 0x804abe0 | goto label_81;
| }
| label_31:
0x0804a3a8 ldr r3, [r2, 0x4c] | r3 = *((r2 + 0x4c));
0x0804a3ac tst r3, 0x8000000 |
0x0804a3b0 bicne r3, r3, 0x8000000 | __asm ("bicne r3, r3, 0x8000000");
| if ((r3 & loc.imp.fs_overflowgid) == 0) {
0x0804a3b4 strne r3, [r2, 0x4c] | *((r2 + 0x4c)) = r3;
| }
| if ((r3 & loc.imp.fs_overflowgid) == 0) {
0x0804a3b8 ldrne r2, [r6, 0x1f0] | r2 = *((r6 + 0x1f0));
| }
| if ((r3 & loc.imp.fs_overflowgid) == 0) {
0x0804a3bc ldrne r3, [r2, 0x4c] | r3 = *((r2 + 0x4c));
| }
0x0804a3c0 b 0x8049b9c | goto label_24;
| label_59:
0x0804a3c4 ldr r2, [r6, 0x1f0] | r2 = *((r6 + 0x1f0));
0x0804a3c8 ldr r3, [r2, 0x50] | r3 = *((r2 + 0x50));
0x0804a3cc orr r3, r3, 4 | r3 |= 4;
0x0804a3d0 str r3, [r2, 0x50] | *((r2 + 0x50)) = r3;
0x0804a3d4 ldr r3, [r6, 0x1f0] | r3 = *((r6 + 0x1f0));
0x0804a3d8 ldr r3, [r3, 0x44] | r3 = *((r3 + 0x44));
0x0804a3dc ldr r3, [r3, 0x60] | r3 = *((r3 + 0x60));
0x0804a3e0 ands sl, r3, 0x80 | sl = r3 & 0x80;
| if (sl != r3) {
0x0804a3e4 bne 0x804ac44 | goto label_82;
| }
0x0804a3e8 tst r3, 0x400 |
| if ((r3 & 0x400) == 0) {
0x0804a3ec beq 0x8049c10 | goto label_25;
| }
0x0804a3f0 mov r0, r6 | r0 = r6;
0x0804a3f4 stmdaeq r5, {r2, r3, r4, r5, r6, r7, sb, fp, ip, lr, pc} | __asm ("stmdaeq r5, {r2, r3, r4, r5, r6, r7, sb, fp, ip, lr, pc}");
0x0804a3f8 stmdaeq r5, {r2, r3, r4, r5, r6, r7, sb, fp, ip, lr, pc} | __asm ("stmdaeq r5, {r2, r3, r4, r5, r6, r7, sb, fp, ip, lr, pc}");
0x0804a3fc stmdaeq r5, {r3, r4, fp, lr, pc} | __asm ("stmdaeq r5, {r3, r4, fp, lr, pc}");
0x0804a400 stmdaeq r5, {r3, r4, fp, lr, pc} | __asm ("stmdaeq r5, {r3, r4, fp, lr, pc}");
0x0804a404 mvn r4, 0x15 | r4 = ~0x15;
0x0804a408 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}");
0x0804a40c b 0x8049dd0 | goto label_4;
| label_75:
0x0804a410 ldr r3, [sp, 0x34] | r3 = var_34h;
0x0804a414 mov r0, r6 | r0 = r6;
0x0804a418 stmdaeq r5, {r2, r3, r4, r7, r8, fp, ip, lr, pc} | __asm ("stmdaeq r5, {r2, r3, r4, r7, r8, fp, ip, lr, pc}");
0x0804a41c stmdaeq r5, {r2, r3, r4, r7, r8, fp, ip, lr, pc} | __asm ("stmdaeq r5, {r2, r3, r4, r7, r8, fp, ip, lr, pc}");
0x0804a420 stmdaeq r5, {r3, r5, r6, sl, fp, lr, pc} | __asm ("stmdaeq r5, {r3, r5, r6, sl, fp, lr, pc}");
0x0804a424 stmdaeq r5, {r3, r5, r6, sl, fp, lr, pc} | __asm ("stmdaeq r5, {r3, r5, r6, sl, fp, lr, pc}");
0x0804a428 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}");
0x0804a42c b 0x804a0f8 | goto label_26;
| label_62:
0x0804a430 ldr r3, [sp, 0x18] | r3 = var_18h;
0x0804a434 lsr r8, r3, 0x16 | r8 = r3 >> 0x16;
0x0804a438 lsl r0, r3, 0xa | r0 = r3 << 0xa;
0x0804a43c str r8, [sp, 0x84] | var_84h = r8;
0x0804a440 orrs r3, r8, 0 | r3 = r8;
0x0804a444 str r0, [sp, 0x80] | var_80h = r0;
| if (r3 != r8) {
0x0804a448 bne 0x804ad40 | goto label_83;
| }
0x0804a44c ldr r1, [sp, 0x30] | r1 = var_30h;
0x0804a450 sub r4, r1, 1 | r4 = r1 - 1;
0x0804a454 and r4, r4, r0 | r4 &= r0;
0x0804a458 stmdaeq r8, {r2, r4, r5, r6, r7, sb, sl, ip, sp, lr} | __asm ("stmdaeq r8, {r2, r4, r5, r6, r7, sb, sl, ip, sp, lr}");
0x0804a45c mov r3, r8 | r3 = r8;
0x0804a460 mov r2, r0 | r2 = r0;
0x0804a464 str r0, [sp, 0x80] | var_80h = r0;
| label_35:
0x0804a468 mov sl, 0 | sl = 0;
0x0804a46c mov r0, r6 | r0 = r6;
0x0804a470 str sl, [sp, 4] | var_4h = sl;
0x0804a474 str sl, [sp] | *(sp) = sl;
0x0804a478 bl 0x8045a74 | r0 = ext4_sb_bread_gfp ();
0x0804a47c mov r8, r0 | r8 = r0;
0x0804a480 cmn r0, 0x1000 |
| if (r0 > 0x1000) {
0x0804a484 bhi 0x804acc8 | goto label_84;
| }
0x0804a488 ldr r3, [r0, 0x1c] | r3 = *((r0 + 0x1c));
0x0804a48c add r2, r3, r4 | r2 = r3 + r4;
0x0804a490 str r2, [r5, 0x44] | *((r5 + 0x44)) = r2;
0x0804a494 str r2, [sp, 0x1c] | var_1ch = r2;
0x0804a498 movw r3, 0xef53 | r3 = 0xef53;
0x0804a49c ldrh r2, [r2, 0x38] | r2 = var_38h_2;
0x0804a4a0 cmp r2, r3 |
| if (r2 != r3) {
0x0804a4a4 bne 0x804ac50 | void (*0x804ac50)() ();
| }
| label_61:
0x0804a4b0 ldr r3, [r2, 0x64] | r3 = *((r2 + 0x64));
0x0804a4b4 ldrb sl, [r6, 0xc] | sl = *((r6 + 0xc));
0x0804a4b8 ands r1, r3, 8 | r1 = r3 & 8;
| if (r1 != r3) {
0x0804a4bc streq r1, [sp, 0x38] | var_38h = r1;
| }
| if (r1 != r3) {
0x0804a4c0 subeq r3, sl, 9 | r3 = sl - 9;
| }
0x0804a4c4 str r1, [sp, 0x18] | var_18h = r1;
| if (r1 != r3) {
0x0804a4c8 mvneq r2, 0 | r2 = ~0;
| }
| if (r1 == r3) {
0x0804a4cc mvnne r0, 0 | r0 = ~0;
| }
| if (r1 != r3) {
0x0804a4d0 lsreq r3, r2, r3 | r3 = r2 >> r3;
| }
0x0804a4d4 movwne r1, 0xffff | __asm ("movwne r1, 0xffff");
0x0804a4d8 sub r2, sl, 2 | r2 = sl - 2;
0x0804a4dc strdne r0, r1, [sp, 0x34] | __asm ("strdne r0, r1, [var_34h]");
0x0804a4e0 mov r0, 3 | r0 = 3;
0x0804a4e4 mvn r1, 5 | r1 = ~5;
| if (r1 != r3) {
0x0804a4e8 streq r3, [sp, 0x34] | var_34h = r3;
| }
0x0804a4ec mov r3, 1 | r3 = 1;
0x0804a4f0 smlabb fp, r0, sl, r1 | __asm ("smlabb fp, r0, sl, r1");
0x0804a4f4 lsl r0, r2, r3 | r0 = r2 << r3;
0x0804a4f8 lsl r2, r3, r2 | r2 = r3 << r2;
0x0804a4fc str fp, [sp, 0x20] | var_20h = fp;
0x0804a500 lsl ip, r3, r0 |
0x0804a504 ldr fp, [sp, 0x34] | fp = var_34h;
0x0804a508 add lr, ip, r2, lsl r3 | lr = ip + (r2 << r3);
0x0804a50c sub r1, sl, 0x22 | r1 = sl - 0x22;
0x0804a510 add lr, lr, 3 | lr += 3;
0x0804a514 subs fp, fp, lr |
0x0804a518 str fp, [sp, 0x34] | var_34h = fp;
0x0804a51c ldr fp, [sp, 0x38] | fp = var_38h;
0x0804a520 lsl r1, r3, r1 | r1 = r3 << r1;
0x0804a524 sbc lr, fp, lr, asr 31 | __asm ("sbc lr, fp, lr, asr 31");
0x0804a528 str lr, [sp, 0x38] | var_38h = lr;
0x0804a52c rsb lr, sl, 0x22 | lr = 0x22 - sl;
0x0804a530 adds r2, r2, 0xc | r2 += 0xc;
0x0804a534 ldr fp, [sp, 0x20] | fp = var_20h;
0x0804a538 orr r1, r1, r3, lsr lr | r1 |= (r3 >> lr);
0x0804a53c sub lr, sl, 0x20 | lr = sl - 0x20;
0x0804a540 adc r1, r1, 0 | __asm ("adc r1, r1, 0");
0x0804a544 adds r2, ip, r2 | r2 = ip + r2;
0x0804a548 sub ip, r0, 0x20 |
0x0804a54c rsb r0, r0, 0x20 | r0 = 0x20 - r0;
0x0804a550 lsl ip, r3, ip |
0x0804a554 orr ip, ip, r3, lsr r0 |
0x0804a558 rsb r0, fp, 0x20 | r0 = 0x20 - fp;
0x0804a55c adc ip, ip, r1 | __asm ("adc ip, ip, r1");
0x0804a560 sub r1, fp, 0x20 | r1 = fp - 0x20;
0x0804a564 lsl r1, r3, r1 | r1 = r3 << r1;
0x0804a568 orr r1, r1, r3, lsr r0 | r1 |= (r3 >> r0);
0x0804a56c movw r0, 0xfff | r0 = 0xfff;
0x0804a570 lsl r3, r3, fp | r3 <<= fp;
0x0804a574 adds r3, r3, r2 | r3 += r2;
0x0804a578 adc ip, ip, r1 | __asm ("adc ip, ip, r1");
0x0804a57c mov r1, 0xf000 |
0x0804a580 movt r1, 0xffff | r1 = 0x-1000;
0x0804a584 lsl r2, ip, sl | r2 = ip << sl;
0x0804a588 rsb ip, sl, 0x20 |
0x0804a58c orr r2, r2, r3, lsl lr | r2 |= (r3 << lr);
0x0804a590 orr r2, r2, r3, lsr ip | r2 |= (r3 >> ip);
0x0804a594 lsl r3, r3, sl | r3 <<= sl;
0x0804a598 cmp r1, r3 |
0x0804a59c sbcs fp, r0, r2 | __asm ("sbcs fp, r0, r2");
| if (r1 >= r3) {
0x0804a5a0 movlt r3, r1 | r3 = r1;
| }
0x0804a5a4 ldr r1, [sp, 0x38] | r1 = var_38h;
| if (r1 >= r3) {
0x0804a5a8 movlt r2, r0 | r2 = r0;
| }
0x0804a5ac ldr r0, [sp, 0x34] | r0 = var_34h;
0x0804a5b0 lsl r1, r1, sl | r1 <<= sl;
0x0804a5b4 orr r1, r1, r0, lsl lr | r1 |= (r0 << lr);
0x0804a5b8 orr r1, r1, r0, lsr ip | r1 |= (r0 >> ip);
0x0804a5bc lsl r0, r0, sl | r0 <<= sl;
0x0804a5c0 cmp r0, r3 |
0x0804a5c4 sbcs fp, r1, r2 | __asm ("sbcs fp, r1, r2");
| if (r0 >= r3) {
0x0804a5c8 movlt r2, r1 | r2 = r1;
| }
0x0804a5cc ldr r1, [sp, 0x18] | r1 = var_18h;
| if (r0 >= r3) {
0x0804a5d0 movlt r3, r0 | r3 = r0;
| }
0x0804a5d4 str r3, [r5, 0x38] | *((r5 + 0x38)) = r3;
0x0804a5d8 cmp r1, 0 |
0x0804a5dc str r2, [r5, 0x3c] | *((r5 + 0x3c)) = r2;
| if (r1 != 0) {
0x0804a5e0 subeq r3, sl, 9 | r3 = sl - 9;
| }
| if (r1 != 0) {
0x0804a5e4 mvneq r2, 0 | r2 = ~0;
| }
| if (r1 == 0) {
0x0804a5e8 movne r2, 0xf000 | r2 = 0xf000;
| }
| if (r1 != 0) {
0x0804a5ec lsreq r2, r2, r3 | r2 >>= r3;
| }
0x0804a5f0 mvn r3, 0 | r3 = ~0;
0x0804a5f4 lsl r0, r3, lr | r0 = r3 << lr;
0x0804a5f8 movtne r2, 0xffff | __asm ("movtne r2, 0xffff");
| if (r1 != 0) {
0x0804a5fc lsleq r1, r2, lr | r1 = r2 << lr;
| }
0x0804a600 movwne r1, 0xfff | __asm ("movwne r1, 0xfff");
| if (r1 != 0) {
0x0804a604 orreq r1, r1, r2, lsr ip | r1 |= (r2 >> ip);
| }
0x0804a608 orr r0, r0, r3, lsr ip | r0 |= (r3 >> ip);
| if (r1 != 0) {
0x0804a60c lsleq r2, r2, sl | r2 <<= sl;
| }
0x0804a610 lsl r3, r3, sl | r3 <<= sl;
0x0804a614 cmp r2, r3 |
0x0804a618 sbcs ip, r1, r0 | __asm ("sbcs ip, r1, r0");
| if (r2 >= r3) {
0x0804a61c movlt r3, r2 | r3 = r2;
| }
0x0804a620 str r3, [r6, 0x18] | *((r6 + 0x18)) = r3;
0x0804a624 ldr r3, [sp, 0x1c] | r3 = var_1ch;
| if (r2 >= r3) {
0x0804a628 movlt r0, r1 | r0 = r1;
| }
0x0804a62c str r0, [r6, 0x1c] | *((r6 + 0x1c)) = r0;
0x0804a630 ldrh r3, [r3, 0xfe] | r3 = *((r3 + 0xfe));
0x0804a634 str r3, [r5] | *(r5) = r3;
0x0804a638 ldr r2, [r4, 0x44] | r2 = *((r4 + 0x44));
0x0804a63c ldr r2, [r2, 0x60] | r2 = *((r2 + 0x60));
0x0804a640 tst r2, 0x80 |
| if ((r2 & 0x80) != 0) {
0x0804a644 beq 0x804a670 |
0x0804a648 sub r2, r3, 0x40 | r2 = r3 - 0x40;
0x0804a64c cmp r2, 0x3c0 |
| if (r2 <= 0x3c0) {
0x0804a650 bhi 0x804a660 |
0x0804a654 sub r2, r3, 1 | r2 = r3 - 1;
0x0804a658 tst r2, r3 |
| if ((r2 & r3) == 0) {
0x0804a65c beq 0x804a678 | goto label_85;
| }
| }
0x0804a660 stmdaeq r5, {r2, r3, r4, r5, sl, fp, ip, lr, pc} | __asm ("stmdaeq r5, {r2, r3, r4, r5, sl, fp, ip, lr, pc}");
0x0804a664 stmdaeq r5, {r2, r3, r4, r5, sl, fp, ip, lr, pc} | __asm ("stmdaeq r5, {r2, r3, r4, r5, sl, fp, ip, lr, pc}");
0x0804a668 mov r0, r6 | r0 = r6;
0x0804a66c b 0x8049f9c | goto label_12;
| }
0x0804a670 mov r3, 0x20 | r3 = 0x20;
0x0804a674 str r3, [r5] | *(r5) = r3;
| label_85:
0x0804a678 ldr r2, [sp, 0x1c] | r2 = var_1ch;
0x0804a67c ldr fp, [sp, 0x30] | fp = var_30h;
0x0804a680 ldr r3, [r2, 0x20] | r3 = *((r2 + 0x20));
0x0804a684 mov r0, fp | r0 = fp;
0x0804a688 str r3, [r5, 8] | *((r5 + 8)) = r3;
0x0804a68c ldr sl, [r2, 0x28] | sl = *((r2 + 0x28));
0x0804a690 str sl, [r5, 0x10] | *((r5 + 0x10)) = sl;
0x0804a694 ldr r1, [r4, 0x84] | r1 = *((r4 + 0x84));
0x0804a698 stmdaeq r8, {r2, r3, r4, r5, r6, r8, sb, sl, ip, sp, lr} | __asm ("stmdaeq r8, {r2, r3, r4, r5, r6, r8, sb, sl, ip, sp, lr}");
0x0804a69c cmp r0, 0 |
0x0804a6a0 str r0, [r5, 4] | *((r5 + 4)) = r0;
| if (r0 == 0) {
0x0804a6a4 beq 0x8049dbc | goto label_27;
| }
0x0804a6a8 cmp sl, r0 |
| if (sl <= r0) {
0x0804a6ac blo 0x804ac70 | goto label_86;
| }
0x0804a6b0 lsl r3, fp, 3 | r3 = fp << 3;
0x0804a6b4 mov fp, r3 |
0x0804a6b8 cmp sl, r3 |
| if (sl > r3) {
0x0804a6bc bhi 0x804ac70 | goto label_86;
| }
0x0804a6c0 mov r1, r0 | r1 = r0;
0x0804a6c4 mov r0, sl | r0 = sl;
0x0804a6c8 stmdaeq r8, {r2, r4, r5, r6, r7, sb, sl, ip, sp, lr} | __asm ("stmdaeq r8, {r2, r4, r5, r6, r7, sb, sl, ip, sp, lr}");
0x0804a6cc str r0, [r5, 0x14] | *((r5 + 0x14)) = r0;
0x0804a6d0 ldr r0, [sp, 0x30] | r0 = var_30h;
0x0804a6d4 ldr r1, [r4] | r1 = *(r4);
0x0804a6d8 stmdaeq r8, {r2, r4, r5, r6, r7, sb, sl, ip, sp, lr} | __asm ("stmdaeq r8, {r2, r4, r5, r6, r7, sb, sl, ip, sp, lr}");
0x0804a6dc ldr r3, [r6, 0x10] | r3 = *((r6 + 0x10));
0x0804a6e0 ldr r2, [sp, 0x1c] | r2 = var_1ch;
0x0804a6e4 cmp r3, 3 |
0x0804a6e8 str r0, [r5, 0x1c] | *((r5 + 0x1c)) = r0;
0x0804a6ec str r8, [r5, 0x40] | *((r5 + 0x40)) = r8;
| if (r3 <= 3) {
0x0804a6f0 lsrhi r3, r3, 2 | r3 >>= 2;
| }
0x0804a6f4 clzhi r3, r3 | __asm ("clzhi r3, r3");
| if (r3 > 3) {
0x0804a6f8 movls r3, 0 | r3 = 0;
| }
0x0804a6fc ldrh r2, [r2, 0x3a] | r2 = *((r2 + 0x3a));
0x0804a700 rsbhi r3, r3, 0x20 | __asm ("rsbhi r3, r3, 0x20");
0x0804a704 strh r2, [r5, 0x78] | *((r5 + 0x78)) = r2;
0x0804a708 sub r3, r3, 1 | r3--;
0x0804a70c str r3, [r5, 0x7c] | *((r5 + 0x7c)) = r3;
0x0804a710 ldr r2, [sp, 0x1c] | r2 = var_1ch;
0x0804a714 ldr r3, [r4, 0x1c] | r3 = *((r4 + 0x1c));
0x0804a718 cmp r3, 0 |
0x0804a71c clzne r3, r3 | __asm ("clzne r3, r3");
0x0804a720 rsbne r3, r3, 0x20 | __asm ("rsbne r3, r3, 0x20");
0x0804a724 sub r3, r3, 1 | r3--;
0x0804a728 str r3, [r5, 0x80] | *((r5 + 0x80)) = r3;
0x0804a72c ldr r3, [r2, 0xec] | r3 = *((r2 + 0xec));
0x0804a730 str r3, [r5, 0x94] | *((r5 + 0x94)) = r3;
0x0804a734 ldr r3, [r2, 0xf0] | r3 = *((r2 + 0xf0));
0x0804a738 str r3, [r5, 0x98] | *((r5 + 0x98)) = r3;
0x0804a73c ldr r3, [r2, 0xf4] | r3 = *((r2 + 0xf4));
0x0804a740 str r3, [r5, 0x9c] | *((r5 + 0x9c)) = r3;
0x0804a744 ldr r3, [r2, 0xf8] | r3 = *((r2 + 0xf8));
0x0804a748 str r3, [r5, 0xa0] | *((r5 + 0xa0)) = r3;
0x0804a74c ldrb r3, [r2, 0xfc] | r3 = *((r2 + 0xfc));
0x0804a750 str r3, [r5, 0xa4] | *((r5 + 0xa4)) = r3;
0x0804a754 ldr r3, [r4, 0x44] | r3 = *((r4 + 0x44));
0x0804a758 ldr r3, [r3, 0x5c] | r3 = *((r3 + 0x5c));
0x0804a75c tst r3, 0x20 |
| if ((r3 & 0x20) == 0) {
0x0804a760 beq 0x804a798 | goto label_87;
| }
0x0804a764 ldr r3, [r2, 0x160] | r3 = *((r2 + 0x160));
0x0804a768 tst r3, 2 |
| if ((r3 & 2) != 0) {
0x0804a76c bne 0x804a790 | void (*0x804a790)() ();
| }
| label_87:
0x0804a798 ldr r3, [r4, 0x44] | r3 = *((r4 + 0x44));
0x0804a79c mov r1, 0x400 | r1 = 0x400;
0x0804a7a0 ldr r2, [r3, 0x64] | r2 = *((r3 + 0x64));
0x0804a7a4 ldr r3, [sp, 0x1c] | r3 = var_1ch;
0x0804a7a8 ands r2, r2, 0x200 | r2 &= 0x200;
0x0804a7ac ldr r3, [r3, 0x1c] | r3 = *((r3 + 0x1c));
0x0804a7b0 lsl sl, r1, r3 | sl = r1 << r3;
| if (r2 == r2) {
0x0804a7b4 beq 0x804ac84 | void (*0x804ac84)() ();
| }
| label_77:
0x0804ab9c mov r2, 9 | r2 = 9;
0x0804aba0 movw r1, 0xc34 | r1 = 0xc34;
0x0804aba4 stmdaeq r5, {r6, r8, sb, sl, lr, pc} | __asm ("stmdaeq r5, {r6, r8, sb, sl, lr, pc}");
0x0804aba8 stmdaeq r5, {r6, r8, sb, sl, lr, pc} | __asm ("stmdaeq r5, {r6, r8, sb, sl, lr, pc}");
0x0804abac mov lr, 1 | lr = 1;
0x0804abb0 strb lr, [ip] |
0x0804abb4 stmdaeq r8, {r2, r8, sb, sl, ip, sp, lr} | __asm ("stmdaeq r8, {r2, r8, sb, sl, ip, sp, lr}");
0x0804abb8 ldr r4, [r6, 0x1f0] | r4 = *((r6 + 0x1f0));
0x0804abbc mov r3, r4 | r3 = r4;
0x0804abc0 ldr r2, [r4, 0x44] | r2 = *((r4 + 0x44));
0x0804abc4 ldr r1, [r2, 0x64] | r1 = *((r2 + 0x64));
0x0804abc8 tst r1, 0x400 |
| if ((r1 & 0x400) == 0) {
0x0804abcc beq 0x80498f0 | goto label_28;
| }
0x0804abd0 ldr r3, [r4, 0x220] | r3 = *((r4 + 0x220));
0x0804abd4 cmp r3, 0 |
| if (r3 == 0) {
0x0804abd8 beq 0x804a1bc | goto label_29;
| }
0x0804abdc b 0x8049e88 | goto label_30;
| label_81:
0x0804abe0 mov r0, r6 | r0 = r6;
0x0804abe4 stmdaeq r5, {r3, r6, sb, fp, ip, lr, pc} | __asm ("stmdaeq r5, {r3, r6, sb, fp, ip, lr, pc}");
0x0804abe8 stmdaeq r5, {r3, r6, sb, fp, ip, lr, pc} | __asm ("stmdaeq r5, {r3, r6, sb, fp, ip, lr, pc}");
0x0804abec stmdaeq r5, {r3, r5, r6, sl, fp, lr, pc} | __asm ("stmdaeq r5, {r3, r5, r6, sl, fp, lr, pc}");
0x0804abf0 stmdaeq r5, {r3, r5, r6, sl, fp, lr, pc} | __asm ("stmdaeq r5, {r3, r5, r6, sl, fp, lr, pc}");
0x0804abf4 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}");
0x0804abf8 ldr r2, [r6, 0x1f0] | r2 = *((r6 + 0x1f0));
0x0804abfc b 0x804a3a8 | goto label_31;
| label_78:
0x0804ac00 mov r2, 9 | r2 = 9;
0x0804ac04 movw r1, 0xc34 | r1 = 0xc34;
0x0804ac08 stmdaeq r5, {r6, r8, sb, sl, lr, pc} | __asm ("stmdaeq r5, {r6, r8, sb, sl, lr, pc}");
0x0804ac0c stmdaeq r5, {r6, r8, sb, sl, lr, pc} | __asm ("stmdaeq r5, {r6, r8, sb, sl, lr, pc}");
0x0804ac10 mov lr, 1 | lr = 1;
0x0804ac14 strb lr, [ip] |
0x0804ac18 stmdaeq r8, {r2, r8, sb, sl, ip, sp, lr} | __asm ("stmdaeq r8, {r2, r8, sb, sl, ip, sp, lr}");
0x0804ac1c ldr r4, [r6, 0x1f0] | r4 = *((r6 + 0x1f0));
0x0804ac20 mov r3, r4 | r3 = r4;
0x0804ac24 ldr r2, [r4, 0x44] | r2 = *((r4 + 0x44));
0x0804ac28 ldr r2, [r2, 0x64] | r2 = *((r2 + 0x64));
0x0804ac2c tst r2, 0x400 |
| if ((r2 & 0x400) == 0) {
0x0804ac30 beq 0x80499c0 | goto label_19;
| }
0x0804ac34 ldr r3, [r4, 0x220] | r3 = *((r4 + 0x220));
0x0804ac38 cmp r3, 0 |
| if (r3 == 0) {
0x0804ac3c beq 0x804a224 | goto label_32;
| }
0x0804ac40 b 0x80499b0 | goto label_33;
| label_82:
0x0804ac44 stmdaeq r5, {r4, r6, r7, sb, fp, ip, lr, pc} | __asm ("stmdaeq r5, {r4, r6, r7, sb, fp, ip, lr, pc}");
0x0804ac48 stmdaeq r5, {r4, r6, r7, sb, fp, ip, lr, pc} | __asm ("stmdaeq r5, {r4, r6, r7, sb, fp, ip, lr, pc}");
0x0804ac4c b 0x804a098 | goto label_23;
| label_86:
0x0804ac70 stmdaeq r5, {r2, r3, r4, r6, sl, fp, ip, lr, pc} | __asm ("stmdaeq r5, {r2, r3, r4, r6, sl, fp, ip, lr, pc}");
0x0804ac74 stmdaeq r5, {r2, r3, r4, r6, sl, fp, ip, lr, pc} | __asm ("stmdaeq r5, {r2, r3, r4, r6, sl, fp, ip, lr, pc}");
0x0804ac78 mov r3, sl | r3 = sl;
0x0804ac7c mov r0, r6 | r0 = r6;
0x0804ac80 b 0x8049f9c | goto label_12;
| label_84:
0x0804acc8 mov r4, r0 | r4 = r0;
0x0804accc stmdaeq r5, {r2, r3, r4, r5, r6, r7, r8, sb, fp, ip, lr, pc} | __asm ("stmdaeq r5, {r2, r3, r4, r5, r6, r7, r8, sb, fp, ip, lr, pc}");
0x0804acd0 stmdaeq r5, {r2, r3, r4, r5, r6, r7, r8, sb, fp, ip, lr, pc} | __asm ("stmdaeq r5, {r2, r3, r4, r5, r6, r7, r8, sb, fp, ip, lr, pc}");
0x0804acd4 mov r0, r6 | r0 = r6;
0x0804acd8 stmdaeq r5, {r3, r4, fp, lr, pc} | __asm ("stmdaeq r5, {r3, r4, fp, lr, pc}");
0x0804acdc stmdaeq r5, {r3, r4, fp, lr, pc} | __asm ("stmdaeq r5, {r3, r4, fp, lr, pc}");
0x0804ace0 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}");
0x0804ace4 b 0x8049cdc | goto label_34;
| label_83:
0x0804ad40 ldr r1, [sp, 0x30] | r1 = var_30h;
0x0804ad44 add r0, sp, 0x80 | r0 += var_80h;
0x0804ad48 bl 0x8043dc0 | r0 = div64_32 ();
0x0804ad4c mov r4, r0 | r4 = r0;
0x0804ad50 ldrd r2, r3, [sp, 0x80] | __asm ("ldrd r2, r3, [var_84h]");
0x0804ad54 b 0x804a468 | goto label_35;
| label_80:
0x0804cfdc stmdaeq r5, {r3, r6, r7, r8, fp, ip, lr, pc} | __asm ("stmdaeq r5, {r3, r6, r7, r8, fp, ip, lr, pc}");
0x0804cfe0 stmdaeq r5, {r3, r6, r7, r8, fp, ip, lr, pc} | __asm ("stmdaeq r5, {r3, r6, r7, r8, fp, ip, lr, pc}");
0x0804cfe4 mov r3, 1 | r3 = 1;
0x0804cfe8 strb r3, [r1, 3] | *((r1 + 3)) = r3;
0x0804cfec stmdaeq r8, {r6, r8, sb, sl, ip, sp, lr} | __asm ("stmdaeq r8, {r6, r8, sb, sl, ip, sp, lr}");
0x0804cff0 ldr r2, [r6, 0x1f0] | r2 = *((r6 + 0x1f0));
0x0804cff4 ldr r3, [r2, 0x4c] | r3 = *((r2 + 0x4c));
0x0804cff8 b 0x804a368 | goto label_36;
| label_65:
0x0804cffc mov r1, r4 | r1 = r4;
0x0804d000 stmdaeq r5, {r2, r4, r7, r8, sb, sl, ip, lr, pc} | __asm ("stmdaeq r5, {r2, r4, r7, r8, sb, sl, ip, lr, pc}");
0x0804d004 stmdaeq r5, {r2, r4, r7, r8, sb, sl, ip, lr, pc} | __asm ("stmdaeq r5, {r2, r4, r7, r8, sb, sl, ip, lr, pc}");
0x0804d008 stmdaeq r8, {r6, r8, sb, sl, ip, sp, lr} | __asm ("stmdaeq r8, {r6, r8, sb, sl, ip, sp, lr}");
0x0804d00c b 0x8049764 | 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 @ 0x80346bc */
| #include <stdint.h>
|
| #define BIT_MASK(t,v) ((t)(-((v)!= 0)))&(((t)-1)>>((sizeof(t)*CHAR_BIT)-(v)))
|
; (fcn) sym.ext4_ind_migrate () | void ext4_ind_migrate (int32_t arg1) {
| int32_t var_0h;
| int32_t var_4h;
| int32_t var_8h;
| r0 = arg1;
0x080346bc push {r4, r5, r6, r7, r8, sb, sl, lr} |
0x080346c0 ldr r3, [r0, 0x14] | r3 = *((r0 + 0x14));
0x080346c4 sub sp, sp, 8 |
0x080346c8 ldr r5, [r3, 0x1f0] | r5 = *((r3 + 0x1f0));
0x080346cc ldr sb, [r5, 0x44] | sb = *((r5 + 0x44));
0x080346d0 ldr r3, [sb, 0x60] | r3 = *((sb + 0x60));
0x080346d4 tst r3, 0x40 |
| if ((r3 & 0x40) == 0) {
0x080346d8 beq 0x8034880 | goto label_5;
| }
0x080346dc ldr r3, [r0, -0x6c] | r3 = *((r0 - 0x6c));
0x080346e0 mov r4, r0 | r4 = r0;
0x080346e4 tst r3, 0x80000 |
| if ((r3 & 0x80000) == 0) {
0x080346e8 beq 0x8034880 | goto label_5;
| }
0x080346ec ldr r6, [sb, 0x64] | r6 = *((sb + 0x64));
0x080346f0 ands r6, r6, 0x200 | r6 &= 0x200;
| if (r6 != r6) {
0x080346f4 bne 0x8034888 | goto label_6;
| }
0x080346f8 ldr r3, [r5, 0x4c] | r3 = *((r5 + 0x4c));
0x080346fc tst r3, 0x8000000 |
| if ((r3 & loc.imp.fs_overflowgid) != 0) {
0x08034700 bne 0x803486c | goto label_7;
| }
| label_2:
0x08034704 add r5, r5, 0x2e8 | r5 += 0x2e8;
0x08034708 mov r0, r5 | r0 = r5;
0x0803470c stmdaeq r8, {r3, r4, r6, r7, r8, fp, ip, sp, lr} | __asm ("stmdaeq r8, {r3, r4, r6, r7, r8, fp, ip, sp, lr}");
0x08034710 ldr r0, [r4, 0x14] | r0 = *((r4 + 0x14));
0x08034714 mov r1, 0 | r1 = 0;
0x08034718 mov r3, 1 | r3 = 1;
0x0803471c ldr r2, [r0, 0x1f0] | r2 = *((r0 + 0x1f0));
0x08034720 ldr r2, [r2, 0x2c] | r2 = *((r2 + 0x2c));
0x08034724 str r1, [sp] | *(sp) = r1;
0x08034728 movw r1, 0x271 | r1 = 0x271;
0x0803472c lsl r2, r2, 3 | r2 <<= 3;
0x08034730 str r2, [sp, 4] | var_4h = r2;
0x08034734 mov r2, 8 | r2 = 8;
0x08034738 stmdaeq r0, {r4, r5, r6, r7, r8, sb, sl, ip, sp} | __asm ("stmdaeq r0, {r4, r5, r6, r7, r8, sb, sl, ip, sp}");
0x0803473c cmn r0, 0x1000 |
0x08034740 mov r8, r0 | r8 = r0;
| if (r0 <= 0x1000) {
0x08034744 movhi r7, r0 | r7 = r0;
| }
| if (r0 > 0x1000) {
0x08034748 bhi 0x8034838 | goto label_8;
| }
0x0803474c sub sl, r4, 0x20 | sl = r4 - 0x20;
0x08034750 mov r0, sl | r0 = sl;
0x08034754 stmdaeq r8, {r2, r6, r7, r8, sb, sl, ip, sp, lr} | __asm ("stmdaeq r8, {r2, r6, r7, r8, sb, sl, ip, sp, lr}");
0x08034758 mov r0, r4 | r0 = r4;
0x0803475c stmdaeq r0, {r5, r6, r7, sl, fp, ip, lr} | __asm ("stmdaeq r0, {r5, r6, r7, sl, fp, ip, lr}");
0x08034760 subs r7, r0, 0 | r7 = r0 - 0;
| if (r7 != r0) {
0x08034764 bne 0x8034820 | goto label_1;
| }
0x08034768 ldr r3, [sb, 0x60] | r3 = *((sb + 0x60));
0x0803476c tst r3, 0x80 |
| if ((r3 & 0x80) != 0) {
0x08034770 bne 0x803484c | goto label_9;
| }
| label_0:
0x08034774 ldrh r3, [r4, -0xba] | r3 = *((r4 - 0xba));
0x08034778 cmp r3, 0 |
| if (r3 != 0) {
0x0803477c bne 0x8034864 | goto label_10;
| }
0x08034780 ldrh r2, [r4, -0xbe] | r2 = *((r4 - 0xbe));
0x08034784 cmp r2, 1 |
| if (r2 > 1) {
0x08034788 bhi 0x8034864 | goto label_10;
| }
0x0803478c cmp r2, 0 |
| if (r2 == 0) {
0x08034790 beq 0x8034874 | goto label_11;
| }
0x08034794 ldr r6, [r4, -0xb4] | r6 = *((r4 - 0xb4));
0x08034798 ldrh r3, [r4, -0xb0] | r3 = *((r4 - 0xb0));
0x0803479c sub r2, r6, 1 | r2 = r6 - 1;
0x080347a0 add sb, r2, r3 | sb = r2 + r3;
0x080347a4 cmp sb, 0xb |
| if (sb > 0xb) {
0x080347a8 bhi 0x8034864 | goto label_10;
| }
0x080347ac ldr r7, [r4, -0xac] | r7 = *((r4 - 0xac));
| label_3:
0x080347b0 mrs r2, apsr | r2 = apsr;
0x080347b4 cpsid i | __asm ("cpsid i");
0x080347b8 ldr r3, [r4, -0x6c] | r3 = *((r4 - 0x6c));
0x080347bc bic r3, r3, 0x80000 | r3 = BIT_MASK (r3, 0x80000);
0x080347c0 str r3, [r4, -0x6c] | *((r4 - 0x6c)) = r3;
0x080347c4 msr cpsr_c, r2 | cpsr_c = r2;
0x080347c8 mov r2, 0x3c | r2 = 0x3c;
0x080347cc sub r0, r4, 0xc0 | r0 = r4 - 0xc0;
0x080347d0 mov r1, 0 | r1 = 0;
0x080347d4 stmdaeq r8, {r3, r5, r6, r7, sb, sl, ip, sp, lr} | __asm ("stmdaeq r8, {r3, r5, r6, r7, sb, sl, ip, sp, lr}");
0x080347d8 cmp r6, sb |
| if (r6 > sb) {
0x080347dc bhi 0x8034808 | goto label_12;
| }
0x080347e0 add r2, sb, 1 | r2 = sb + 1;
0x080347e4 mov r3, r7 | r3 = r7;
0x080347e8 add r2, r2, r7 | r2 += r7;
0x080347ec sub r2, r2, r6 | r2 -= r6;
0x080347f0 add r6, r4, r6, lsl 2 | r6 = r4 + (r6 << 2);
0x080347f4 sub r6, r6, 0xc4 | r6 -= 0xc4;
| do {
0x080347f8 str r3, [r6, 4]! | *((r6 += 4)) = r3;
0x080347fc add r3, r3, 1 | r3++;
0x08034800 cmp r3, r2 |
0x08034804 bne 0x80347f8 |
| } while (r3 != r2);
| label_12:
0x08034808 ldr r2, [pc, 0x80] | r2 = *(0x803488c);
0x0803480c mov r1, r4 | r1 = r4;
0x08034810 mov r0, r8 | r0 = r8;
0x08034814 mov r3, 0x294 | r3 = 0x294;
0x08034818 stmdaeq r2, {r3, r5, r6, r7, r8, sp} | __asm ("stmdaeq r2, {r3, r5, r6, r7, r8, sp}");
0x0803481c mov r7, r0 | r7 = r0;
| label_1:
0x08034820 ldr r0, [pc, 0x68] | r0 = *(0x803488c);
0x08034824 mov r2, r8 | r2 = r8;
0x08034828 mov r1, 0x298 | r1 = 0x298;
0x0803482c stmdaeq r0, {r2, r3, r8, fp, ip, sp} | __asm ("stmdaeq r0, {r2, r3, r8, fp, ip, sp}");
0x08034830 mov r0, sl | r0 = sl;
0x08034834 stmdaeq r8, {r3, r6, r7, r8, sb, sl, ip, sp, lr} | __asm ("stmdaeq r8, {r3, r6, r7, r8, sb, sl, ip, sp, lr}");
| label_8:
0x08034838 mov r0, r5 | r0 = r5;
0x0803483c stmdaeq r8, {r2, r3, r4, r6, r7, r8, fp, ip, sp, lr} | __asm ("stmdaeq r8, {r2, r3, r4, r6, r7, r8, fp, ip, sp, lr}");
| label_4:
0x08034840 mov r0, r7 | r0 = r7;
0x08034844 add sp, sp, 8 |
0x08034848 pop {r4, r5, r6, r7, r8, sb, sl, pc} |
| label_9:
0x0803484c ldr r2, [sb, 4] | r2 = *((sb + 4));
0x08034850 mvn r1, 0 | r1 = ~0;
0x08034854 ldr r3, [sb, 0x150] | r3 = *((sb + 0x150));
0x08034858 cmp r1, r2 |
0x0803485c sbcs r3, r7, r3 | __asm ("sbcs r3, r7, r3");
| if (r1 >= r2) {
0x08034860 bhs 0x8034774 | goto label_0;
| }
| label_10:
0x08034864 mvn r7, 0x5e | r7 = ~0x5e;
0x08034868 b 0x8034820 | goto label_1;
| label_7:
0x0803486c stmdaeq r1, {r2, r4, sb, sl, fp, ip, sp, lr, pc} | __asm ("stmdaeq r1, {r2, r4, sb, sl, fp, ip, sp, lr, pc}");
0x08034870 b 0x8034704 | goto label_2;
| label_11:
0x08034874 mov sb, r2 | sb = r2;
0x08034878 mov r7, r2 | r7 = r2;
0x0803487c b 0x80347b0 | goto label_3;
| label_5:
0x08034880 mvn r7, 0x15 | r7 = ~0x15;
0x08034884 b 0x8034840 | goto label_4;
| label_6:
0x08034888 mvn r7, 0x5e | r7 = ~0x5e;
0x0803488c b 0x8034840 | goto label_4;
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/lib/modules/5.10.52-axis8/kernel/fs/ext4/ext4.ko @ 0x800375c */
| #include <stdint.h>
|
; (fcn) sym.ext4_inode_journal_mode () | uint32_t ext4_inode_journal_mode (int32_t arg1) {
| r0 = arg1;
0x0800375c ldr r3, [r0, 0x14] | r3 = *((r0 + 0x14));
0x08003760 ldr r2, [r3, 0x1f0] | r2 = *((r3 + 0x1f0));
0x08003764 ldr r3, [r2, 0x118] | r3 = *((r2 + 0x118));
0x08003768 cmp r3, 0 |
| if (r3 != 0) {
0x0800376c beq 0x80037c8 |
0x08003770 ldrh r3, [r0] | r3 = *(r0);
0x08003774 and r3, r3, 0xf000 | r3 &= 0xf000;
0x08003778 cmp r3, 0x8000 |
| if (r3 != 0x8000) {
0x0800377c beq 0x8003788 |
0x08003780 mov r0, 1 | r0 = 1;
0x08003784 bx lr | return r0;
| }
0x08003788 ldr r3, [r0, -0x6c] | r3 = *((r0 - 0x6c));
0x0800378c tst r3, 0x200000 |
| if ((r3 & 0x200000) != 0) {
0x08003790 bne 0x80037d0 | goto label_0;
| }
0x08003794 ldr r2, [r2, 0x4c] | r2 = *((r2 + 0x4c));
0x08003798 and r3, r2, 0xc00 | r3 = r2 & 0xc00;
0x0800379c cmp r3, 0x400 |
| if (r3 == 0x400) {
0x080037a0 beq 0x80037d0 | goto label_0;
| }
0x080037a4 ldr r1, [r0, -0x6c] | r1 = *((r0 - 0x6c));
0x080037a8 tst r1, 0x4000 |
| if ((r1 & 0x4000) != 0) {
0x080037ac beq 0x80037b8 |
0x080037b0 tst r2, 0x8000000 |
| if ((r2 & loc.imp.fs_overflowgid) == 0) {
0x080037b4 beq 0x80037d0 | goto label_0;
| }
| }
0x080037b8 cmp r3, 0x800 |
| if (r3 == 0x800) {
0x080037bc beq 0x80037e4 | goto label_1;
| }
0x080037c0 cmp r3, 0xc00 |
| if (r3 != 0xc00) {
0x080037c4 bne 0x80037ec | goto label_2;
| }
| }
0x080037c8 mov r0, 4 | r0 = 4;
0x080037cc bx lr | return r0;
| label_0:
0x080037d0 ldr r3, [r0, 0xc] | r3 = *((r0 + 0xc));
0x080037d4 tst r3, 0x4000 |
| if ((r3 & 0x4000) != 0) {
0x080037d8 moveq r0, 1 | r0 = 1;
| }
| if ((r3 & 0x4000) == 0) {
0x080037dc movne r0, 2 | r0 = 2;
| }
0x080037e0 bx lr | return r0;
| label_1:
0x080037e4 mov r0, 2 | r0 = 2;
0x080037e8 bx lr | return r0;
| label_2:
0x080037ec udf 0x12 | __asm ("udf 0x12");
| }
; 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 @ 0x801e600 */
| #include <stdint.h>
|
| #define BIT_MASK(t,v) ((t)(-((v)!= 0)))&(((t)-1)>>((sizeof(t)*CHAR_BIT)-(v)))
|
; (fcn) sym.ext4_map_blocks () | void ext4_map_blocks (int32_t arg1, int32_t arg2) {
| int32_t var_bp_0h;
| int32_t var_0h;
| int32_t var_4h;
| int32_t var_8h;
| int32_t var_14h;
| int32_t var_18h;
| int32_t var_24h;
| int32_t var_28h;
| int32_t var_30h;
| int32_t var_34h;
| int32_t var_3ch;
| r0 = arg1;
| r1 = arg2;
0x0801e600 push {r4, r5, r6, r7, r8, sb, sl, fp, lr} |
0x0801e604 mov r4, r2 | r4 = r2;
0x0801e608 mov r7, r3 | r7 = r3;
0x0801e60c mov r2, 0 | r2 = 0;
0x0801e610 mov r6, r1 | r6 = r1;
0x0801e614 ldr r3, [r4, 0xc] | r3 = *((r4 + 0xc));
0x0801e618 sub sp, sp, 0x3c |
0x0801e61c ldr r1, [r4, 8] | r1 = *((r4 + 8));
0x0801e620 mov r8, r0 | r8 = r0;
0x0801e624 cmp r3, r2 |
0x0801e628 str r2, [r4, 0x10] | *((r4 + 0x10)) = r2;
| if (r3 >= r2) {
0x0801e62c mvnlt r3, 0x80000000 | r3 = ~0x80000000;
| }
| if (r3 >= r2) {
0x0801e630 strlt r3, [r4, 0xc] | *((r4 + 0xc)) = r3;
| }
0x0801e634 cmn r1, 1 |
| if (r1 == 1) {
0x0801e638 beq 0x801ea8c | goto label_20;
| }
0x0801e63c ldr r3, [r6, 0x14] | r3 = *((r6 + 0x14));
0x0801e640 ldr r3, [r3, 0x1f0] | r3 = *((r3 + 0x1f0));
0x0801e644 ldrh r2, [r3, 0x78] | r2 = *((r3 + 0x78));
0x0801e648 ands r2, r2, 0x20 | r2 &= 0x20;
| if (r2 == r2) {
0x0801e64c bne 0x801e6c0 |
0x0801e650 add r3, sp, 0x18 | r3 += var_18h;
0x0801e654 mov r0, r6 | r0 = r6;
0x0801e658 stmdaeq r0, {r2, r4, r7, r8, sl, ip, sp, lr, pc} | __asm ("stmdaeq r0, {r2, r4, r7, r8, sl, ip, sp, lr, pc}");
0x0801e65c cmp r0, 0 |
| if (r0 == 0) {
0x0801e660 beq 0x801e6c0 | goto label_21;
| }
0x0801e664 ldrd r2, r3, [sp, 0x30] | __asm ("ldrd r2, r3, [var_34h]");
0x0801e668 tst r3, 0x8000000 |
0x0801e66c lsr r1, r3, 0x1b | r1 = r3 >> 0x1b;
| if ((r3 & loc.imp.fs_overflowgid) != 0) {
0x0801e670 bne 0x801ea04 | goto label_22;
| }
0x0801e674 tst r1, 2 |
| if ((r1 & 2) != 0) {
0x0801e678 bne 0x801eaac | goto label_23;
| }
0x0801e67c tst r1, 0xc |
| if ((r1 & 0xc) == 0) {
0x0801e680 beq 0x801ebe4 | goto label_24;
| }
0x0801e684 ldrd r2, r3, [sp, 0x24] | __asm ("ldrd r2, r3, [var_24h]");
0x0801e688 add r3, r3, r2 | r3 += r2;
0x0801e68c ldr r2, [r4, 8] | r2 = *((r4 + 8));
0x0801e690 sub r3, r3, r2 | r3 -= r2;
0x0801e694 ldr r2, [r4, 0xc] | r2 = *((r4 + 0xc));
0x0801e698 cmp r2, r3 |
| if (r2 < r3) {
0x0801e69c movhs r2, r3 | r2 = r3;
| }
0x0801e6a0 mov r3, 0 | r3 = 0;
0x0801e6a4 str r2, [r4, 0xc] | *((r4 + 0xc)) = r2;
0x0801e6a8 ands r5, r7, 1 | r5 = r7 & 1;
0x0801e6ac mov r2, 0 | r2 = 0;
0x0801e6b0 strd r2, r3, [r4] | __asm ("strd r2, r3, [r4]");
| if (r5 == r7) {
0x0801e6b4 beq 0x801e90c | goto label_7;
| }
| label_0:
0x0801e6b8 ldr r3, [r4, 0x10] | r3 = *((r4 + 0x10));
0x0801e6bc b 0x801e75c | goto label_8;
| }
| label_21:
0x0801e6c0 sub sb, r6, 0x20 | sb = r6 - 0x20;
0x0801e6c4 mov r0, sb | r0 = sb;
0x0801e6c8 stmdaeq r8, {r3, r4, r6, r8, sb, sl, ip, sp, lr} | __asm ("stmdaeq r8, {r3, r4, r6, r8, sb, sl, ip, sp, lr}");
0x0801e6cc ldr r3, [r6, -0x6c] | r3 = *((r6 - 0x6c));
0x0801e6d0 mov r2, r4 | r2 = r4;
0x0801e6d4 mov r1, r6 | r1 = r6;
0x0801e6d8 mov r0, r8 | r0 = r8;
0x0801e6dc ubfx r3, r3, 0x13, 1 | r3 = (r3 >> 0x13) & ((1 << 1) - 1);
0x0801e6e0 cmp r3, 0 |
| if (r3 != 0) {
0x0801e6e4 bne 0x801e8e8 | goto label_25;
| }
0x0801e6e8 stmdaeq r1, {r2, r8, ip, sp, lr} | __asm ("stmdaeq r1, {r2, r8, ip, sp, lr}");
0x0801e6ec mov r5, r0 | r5 = r0;
| do {
0x0801e6f0 cmp r5, 0 |
| if (r5 > 0) {
0x0801e6f4 ble 0x801e738 |
0x0801e6f8 ldr r3, [r4, 0xc] | r3 = *((r4 + 0xc));
0x0801e6fc mov r2, r5 | r2 = r5;
0x0801e700 cmp r3, r5 |
| if (r3 != r5) {
0x0801e704 bne 0x801eb20 | goto label_26;
| }
| label_14:
0x0801e708 ldr r3, [r4, 0x10] | r3 = *((r4 + 0x10));
0x0801e70c tst r3, 0x800 |
| if ((r3 & 0x800) != 0) {
0x0801e710 moveq r3, 1 | r3 = 1;
| }
| if ((r3 & 0x800) != 0) {
0x0801e714 bne 0x801e92c | goto label_27;
| }
| label_1:
0x0801e718 str r3, [sp, 8] | var_8h = r3;
0x0801e71c mov r0, r6 | r0 = r6;
0x0801e720 ldrd sl, fp, [r4] | __asm ("ldrd sl, fp, [r4]");
0x0801e724 ldr r1, [r4, 8] | r1 = *((r4 + 8));
0x0801e728 strd sl, fp, [sp] | __asm ("strd sl, fp, [sp]");
0x0801e72c stmdaeq r0, {r2, r5, r6, r7, ip, sp, lr, pc} | __asm ("stmdaeq r0, {r2, r5, r6, r7, ip, sp, lr, pc}");
0x0801e730 cmp r0, 0 |
| if (r0 < 0) {
0x0801e734 movlt r5, r0 | r5 = r0;
| goto label_28;
| }
| }
| label_28:
0x0801e738 mov r0, sb | r0 = sb;
0x0801e73c stmdaeq r8, {r2, r4, r6, r8, sb, sl, ip, sp, lr} | __asm ("stmdaeq r8, {r2, r4, r6, r8, sb, sl, ip, sp, lr}");
| label_6:
0x0801e740 cmp r5, 0 |
| if (r5 <= 0) {
0x0801e744 ble 0x801e918 | goto label_29;
| }
0x0801e748 ldr r3, [r4, 0x10] | r3 = *((r4 + 0x10));
0x0801e74c tst r3, 0x10 |
| if ((r3 & 0x10) != 0) {
0x0801e750 bne 0x801ea54 | goto label_30;
| }
0x0801e754 tst r7, 1 |
| if ((r7 & 1) == 0) {
0x0801e758 beq 0x801e90c | goto label_7;
| }
| label_8:
0x0801e75c sub sb, r6, 0x20 | sb = r6 - 0x20;
0x0801e760 bic r3, r3, 0xa30 | r3 = BIT_MASK (r3, 0xa30);
0x0801e764 mov r0, sb | r0 = sb;
0x0801e768 str r3, [r4, 0x10] | *((r4 + 0x10)) = r3;
0x0801e76c stmdaeq r8, {r2, r6, r7, r8, sb, sl, ip, sp, lr} | __asm ("stmdaeq r8, {r2, r6, r7, r8, sb, sl, ip, sp, lr}");
0x0801e770 ldr r3, [r6, -0x6c] | r3 = *((r6 - 0x6c));
0x0801e774 mov r2, r4 | r2 = r4;
0x0801e778 mov r1, r6 | r1 = r6;
0x0801e77c tst r3, 0x80000 |
0x0801e780 mov r0, r8 | r0 = r8;
0x0801e784 mov r3, r7 | r3 = r7;
| if ((r3 & 0x80000) == 0) {
0x0801e788 beq 0x801e8f8 | goto label_31;
| }
0x0801e78c stmdaeq r0, {r2, r3, r6, r7, sb, sl, ip, pc} | __asm ("stmdaeq r0, {r2, r3, r6, r7, sb, sl, ip, pc}");
0x0801e790 subs r5, r0, 0 | r5 = r0 - 0;
| if (r5 <= r0) {
0x0801e794 ble 0x801e904 | goto label_9;
| }
| label_2:
0x0801e798 ldr r2, [r4, 0xc] | r2 = *((r4 + 0xc));
0x0801e79c cmp r2, r5 |
| if (r2 != r5) {
0x0801e7a0 bne 0x801eb68 | goto label_32;
| }
| label_15:
0x0801e7a4 ands r3, r7, 0x200 | r3 = r7 & 0x200;
0x0801e7a8 ldr r1, [r4, 8] | r1 = *((r4 + 8));
0x0801e7ac str r3, [sp, 0x14] | var_14h = r3;
| if (r3 != r7) {
0x0801e7b0 beq 0x801e7c4 |
0x0801e7b4 ldr r3, [r4, 0x10] | r3 = *((r4 + 0x10));
0x0801e7b8 and r3, r3, 0x30 | r3 &= 0x30;
0x0801e7bc cmp r3, 0x30 |
| if (r3 == 0x30) {
0x0801e7c0 beq 0x801ead0 | goto label_33;
| }
| }
| label_11:
0x0801e7c4 tst r7, 8 |
| if ((r7 & 8) != 0) {
0x0801e7c8 bne 0x801e9d8 | goto label_34;
| }
| label_5:
0x0801e7cc ldr r3, [r4, 0x10] | r3 = *((r4 + 0x10));
0x0801e7d0 tst r3, 0x800 |
| if ((r3 & 0x800) != 0) {
0x0801e7d4 bne 0x801e994 | goto label_35;
| }
0x0801e7d8 ldr r2, [r4, 0xc] | r2 = *((r4 + 0xc));
0x0801e7dc mov r3, 1 | r3 = 1;
| label_3:
0x0801e7e0 str r3, [sp, 8] | var_8h = r3;
0x0801e7e4 mov r0, r6 | r0 = r6;
0x0801e7e8 ldrd sl, fp, [r4] | __asm ("ldrd sl, fp, [r4]");
0x0801e7ec strd sl, fp, [sp] | __asm ("strd sl, fp, [sp]");
0x0801e7f0 stmdaeq r0, {r2, r5, r6, r7, ip, sp, lr, pc} | __asm ("stmdaeq r0, {r2, r5, r6, r7, ip, sp, lr, pc}");
0x0801e7f4 cmp r0, 0 |
| if (r0 < 0) {
0x0801e7f8 blt 0x801eaa4 | goto label_36;
| }
| label_4:
0x0801e7fc mov r0, sb | r0 = sb;
0x0801e800 stmdaeq r8, {r3, r6, r7, r8, sb, sl, ip, sp, lr} | __asm ("stmdaeq r8, {r3, r6, r7, r8, sb, sl, ip, sp, lr}");
| label_12:
0x0801e804 ldr r3, [r4, 0x10] | r3 = *((r4 + 0x10));
0x0801e808 tst r3, 0x10 |
| if ((r3 & 0x10) == 0) {
0x0801e80c beq 0x801e90c | goto label_7;
| }
0x0801e810 mov r2, r4 | r2 = r4;
0x0801e814 mov r0, r6 | r0 = r6;
0x0801e818 movw r1, 0x2cd | r1 = 0x2cd;
0x0801e81c bl 0x801cbb0 | r0 = check_block_validity_constprop_0 ();
0x0801e820 cmp r0, 0 |
| if (r0 != 0) {
0x0801e824 bne 0x801ea9c | goto label_37;
| }
0x0801e828 ldr r3, [r4, 0x10] | r3 = *((r4 + 0x10));
0x0801e82c and r3, r3, 0x820 | r3 &= 0x820;
0x0801e830 cmp r3, 0x20 |
| if (r3 == 0x20) {
0x0801e834 bne 0x801e8c4 |
0x0801e838 ldr r3, [sp, 0x14] | r3 = var_14h;
0x0801e83c cmp r3, 0 |
| if (r3 != 0) {
0x0801e840 bne 0x801e8c4 | goto label_17;
| }
0x0801e844 ldr r3, [r6, 0xc] | r3 = *((r6 + 0xc));
0x0801e848 tst r3, 0x20 |
| if ((r3 & 0x20) != 0) {
0x0801e84c bne 0x801ebac | goto label_38;
| }
| label_16:
0x0801e850 mov r0, r6 | r0 = r6;
0x0801e854 stmdaeq r0, {r2, r3, r4, r6, r8, sb, sl, ip, sp} | __asm ("stmdaeq r0, {r2, r3, r4, r6, r8, sb, sl, ip, sp}");
0x0801e858 tst r0, 2 |
| if ((r0 & 2) == 0) {
0x0801e85c beq 0x801e8c4 | goto label_17;
| }
0x0801e860 ldrb ip, [r6, 0x6a] | ip = *((r6 + 0x6a));
0x0801e864 tst r7, 0x400 |
0x0801e868 ldr r1, [r4, 8] | r1 = *((r4 + 8));
0x0801e86c ldr r2, [r4, 0xc] | r2 = *((r4 + 0xc));
0x0801e870 sub r0, ip, 0x20 | r0 = ip - 0x20;
0x0801e874 rsb lr, ip, 0x20 | lr = 0x20 - ip;
0x0801e878 lsl r3, r1, r0 | r3 = r1 << r0;
0x0801e87c lsl r0, r2, r0 | r0 = r2 << r0;
0x0801e880 orr r3, r3, r1, lsr lr | r3 |= (r1 >> lr);
0x0801e884 orr r0, r0, r2, lsr lr | r0 |= (r2 >> lr);
0x0801e888 lsl lr, r1, ip | lr = r1 << ip;
0x0801e88c lsl ip, r2, ip |
| if ((r7 & 0x400) == 0) {
0x0801e890 beq 0x801ebbc | goto label_39;
| }
0x0801e894 cmp r8, 0x1000 |
| if (r8 <= 0x1000) {
0x0801e898 blo 0x801e8cc | goto label_18;
| }
0x0801e89c str r0, [sp, 4] | var_4h = r0;
0x0801e8a0 mov r2, lr | r2 = lr;
0x0801e8a4 str ip, [sp] | *(sp) = ip;
0x0801e8a8 mov r0, r8 | r0 = r8;
0x0801e8ac ldr r1, [r6, 0x168] | r1 = *((r6 + 0x168));
0x0801e8b0 stmdaeq r8, {r3, r6, r8, fp, ip, sp, lr} | __asm ("stmdaeq r8, {r3, r6, r8, fp, ip, sp, lr}");
0x0801e8b4 mov r3, r0 | r3 = r0;
| label_19:
0x0801e8b8 cmp r3, 0 |
| if (r3 == 0) {
0x0801e8bc movne r5, r3 | r5 = r3;
| }
| if (r3 != 0) {
0x0801e8c0 bne 0x801e90c | goto label_7;
| }
| }
| label_17:
0x0801e8c4 ldr r2, [r4, 0xc] | r2 = *((r4 + 0xc));
0x0801e8c8 ldr r1, [r4, 8] | r1 = *((r4 + 8));
| label_18:
0x0801e8cc add r3, r1, r2 | r3 = r1 + r2;
0x0801e8d0 mov r0, r8 | r0 = r8;
0x0801e8d4 mov r2, r1 | r2 = r1;
0x0801e8d8 sub r3, r3, 1 | r3--;
0x0801e8dc mov r1, r6 | r1 = r6;
0x0801e8e0 stmdaeq r5, {r7, fp, ip, lr} | __asm ("stmdaeq r5, {r7, fp, ip, lr}");
0x0801e8e4 b 0x801e90c | goto label_7;
| label_25:
0x0801e8e8 mov r3, 0 | r3 = 0;
0x0801e8ec stmdaeq r0, {r2, r3, r6, r7, sb, sl, ip, pc} | __asm ("stmdaeq r0, {r2, r3, r6, r7, sb, sl, ip, pc}");
0x0801e8f0 mov r5, r0 | r5 = r0;
0x0801e8f4 b 0x801e6f0 |
| } while (1);
| label_31:
0x0801e8f8 stmdaeq r1, {r2, r8, ip, sp, lr} | __asm ("stmdaeq r1, {r2, r8, ip, sp, lr}");
0x0801e8fc subs r5, r0, 0 | r5 = r0 - 0;
| if (r5 > r0) {
0x0801e900 bgt 0x801e96c | goto label_40;
| }
| label_9:
0x0801e904 mov r0, sb | r0 = sb;
0x0801e908 stmdaeq r8, {r3, r6, r7, r8, sb, sl, ip, sp, lr} | __asm ("stmdaeq r8, {r3, r6, r7, r8, sb, sl, ip, sp, lr}");
| label_7:
0x0801e90c mov r0, r5 | r0 = r5;
0x0801e910 add sp, sp, 0x3c |
0x0801e914 pop {r4, r5, r6, r7, r8, sb, sl, fp, pc} |
| label_29:
0x0801e918 tst r7, 1 |
| if ((r7 & 1) != 0) {
0x0801e91c bne 0x801e6b8 | goto label_0;
| }
0x0801e920 mov r0, r5 | r0 = r5;
0x0801e924 add sp, sp, 0x3c |
0x0801e928 pop {r4, r5, r6, r7, r8, sb, sl, fp, pc} |
| label_27:
0x0801e92c tst r7, 4 |
| if ((r7 & 4) != 0) {
0x0801e930 bne 0x801e964 | goto label_41;
| }
0x0801e934 ldr ip, [r4, 8] | ip = *((r4 + 8));
0x0801e938 mov r0, r6 | r0 = r6;
0x0801e93c stmdaeq r1, {r2, r4, r5, r6, r7, r8, sb, lr, pc} | __asm ("stmdaeq r1, {r2, r4, r5, r6, r7, r8, sb, lr, pc}");
0x0801e940 stmdaeq r1, {r2, r4, r5, r6, r7, r8, sb, lr, pc} | __asm ("stmdaeq r1, {r2, r4, r5, r6, r7, r8, sb, lr, pc}");
0x0801e944 sub r3, ip, 1 | r3 = ip - 1;
0x0801e948 add r3, r3, r2 | r3 += r2;
0x0801e94c mov r2, ip | r2 = ip;
0x0801e950 stmdaeq r0, {r5, r8, sb, sl, fp, sp, lr, pc} | __asm ("stmdaeq r0, {r5, r8, sb, sl, fp, sp, lr, pc}");
0x0801e954 cmp r0, 0 |
0x0801e958 ldr r2, [r4, 0xc] | r2 = *((r4 + 0xc));
| if (r0 != 0) {
0x0801e95c movne r3, 6 | r3 = 6;
| goto label_42;
| }
| if (r0 != 0) {
| label_42:
0x0801e960 bne 0x801e718 | goto label_1;
| }
| label_41:
0x0801e964 mov r3, 2 | r3 = 2;
0x0801e968 b 0x801e718 | goto label_1;
| label_40:
0x0801e96c ldr r3, [r4, 0x10] | r3 = *((r4 + 0x10));
0x0801e970 tst r3, 0x20 |
| if ((r3 & 0x20) != 0) {
0x0801e974 bne 0x801eb04 | goto label_43;
| }
| label_13:
0x0801e978 tst r7, 4 |
| if ((r7 & 4) == 0) {
0x0801e97c beq 0x801e798 | goto label_2;
| }
0x0801e980 mov r1, r5 | r1 = r5;
0x0801e984 mov r0, r6 | r0 = r6;
0x0801e988 mov r2, 1 | r2 = 1;
0x0801e98c stmdaeq r1, {r2, r4, r6, r7, r8, sb, sp, lr, pc} | __asm ("stmdaeq r1, {r2, r4, r6, r7, r8, sb, sp, lr, pc}");
0x0801e990 b 0x801e798 | goto label_2;
| label_35:
0x0801e994 ldr r2, [r4, 0xc] | r2 = *((r4 + 0xc));
0x0801e998 tst r7, 4 |
| if ((r7 & 4) != 0) {
0x0801e99c bne 0x801e9d0 | goto label_44;
| }
0x0801e9a0 add r3, r1, r2 | r3 = r1 + r2;
0x0801e9a4 mov r0, r6 | r0 = r6;
0x0801e9a8 mov r2, r1 | r2 = r1;
0x0801e9ac sub r3, r3, 1 | r3--;
0x0801e9b0 stmdaeq r1, {r2, r4, r5, r6, r7, r8, sb, lr, pc} | __asm ("stmdaeq r1, {r2, r4, r5, r6, r7, r8, sb, lr, pc}");
0x0801e9b4 stmdaeq r1, {r2, r4, r5, r6, r7, r8, sb, lr, pc} | __asm ("stmdaeq r1, {r2, r4, r5, r6, r7, r8, sb, lr, pc}");
0x0801e9b8 stmdaeq r0, {r5, r8, sb, sl, fp, sp, lr, pc} | __asm ("stmdaeq r0, {r5, r8, sb, sl, fp, sp, lr, pc}");
0x0801e9bc cmp r0, 0 |
0x0801e9c0 ldr r2, [r4, 0xc] | r2 = *((r4 + 0xc));
0x0801e9c4 ldr r1, [r4, 8] | r1 = *((r4 + 8));
| if (r0 != 0) {
0x0801e9c8 movne r3, 6 | r3 = 6;
| goto label_45;
| }
| if (r0 != 0) {
| label_45:
0x0801e9cc bne 0x801e7e0 | goto label_3;
| }
| label_44:
0x0801e9d0 mov r3, 2 | r3 = 2;
0x0801e9d4 b 0x801e7e0 | goto label_3;
| label_34:
0x0801e9d8 add r3, sp, 0x18 | r3 += var_18h;
0x0801e9dc mov r0, r6 | r0 = r6;
0x0801e9e0 mov r2, 0 | r2 = 0;
0x0801e9e4 stmdaeq r0, {r2, r4, r7, r8, sl, ip, sp, lr, pc} | __asm ("stmdaeq r0, {r2, r4, r7, r8, sl, ip, sp, lr, pc}");
0x0801e9e8 cmp r0, 0 |
| if (r0 == 0) {
0x0801e9ec beq 0x801e9fc | goto label_46;
| }
0x0801e9f0 ldr r3, [sp, 0x34] | r3 = var_34h;
0x0801e9f4 tst r3, 0x8000000 |
| if ((r3 & loc.imp.fs_overflowgid) != 0) {
0x0801e9f8 bne 0x801e7fc | goto label_4;
| }
| label_46:
0x0801e9fc ldr r1, [r4, 8] | r1 = *((r4 + 8));
0x0801ea00 b 0x801e7cc | goto label_5;
| label_22:
0x0801ea04 ldr r1, [sp, 0x24] | r1 = var_24h;
0x0801ea08 bic r3, r3, 0xf8000000 | r3 = BIT_MASK (r3, 0xf8000000);
0x0801ea0c ldr r0, [r4, 8] | r0 = *((r4 + 8));
0x0801ea10 mov ip, 0x10 |
0x0801ea14 subs r2, r2, r1 | r2 -= r1;
0x0801ea18 sbc r3, r3, 0 | __asm ("sbc r3, r3, 0");
0x0801ea1c adds r2, r2, r0 | r2 += r0;
0x0801ea20 adc r3, r3, 0 | __asm ("adc r3, r3, 0");
| label_10:
0x0801ea24 ldr r5, [sp, 0x28] | r5 = var_28h;
0x0801ea28 strd r2, r3, [r4] | __asm ("strd r2, r3, [r4]");
0x0801ea2c add r5, r1, r5 | r5 = r1 + r5;
0x0801ea30 ldr r3, [r4, 0xc] | r3 = *((r4 + 0xc));
0x0801ea34 sub r5, r5, r0 | r5 -= r0;
0x0801ea38 cmp r5, r3 |
| if (r5 < r3) {
0x0801ea3c movhs r5, r3 | r5 = r3;
| }
0x0801ea40 ldr r3, [r4, 0x10] | r3 = *((r4 + 0x10));
0x0801ea44 str r5, [r4, 0xc] | *((r4 + 0xc)) = r5;
0x0801ea48 orr r3, r3, ip | r3 |= ip;
0x0801ea4c str r3, [r4, 0x10] | *((r4 + 0x10)) = r3;
0x0801ea50 b 0x801e740 | goto label_6;
| label_30:
0x0801ea54 mov r2, r4 | r2 = r4;
0x0801ea58 mov r0, r6 | r0 = r6;
0x0801ea5c movw r1, 0x251 | r1 = 0x251;
0x0801ea60 bl 0x801cbb0 | r0 = check_block_validity_constprop_0 ();
0x0801ea64 cmp r0, 0 |
| if (r0 != 0) {
0x0801ea68 bne 0x801ea9c | goto label_37;
| }
0x0801ea6c tst r7, 1 |
| if ((r7 & 1) == 0) {
0x0801ea70 beq 0x801e90c | goto label_7;
| }
0x0801ea74 ldr r3, [r4, 0x10] | r3 = *((r4 + 0x10));
0x0801ea78 tst r3, 0x10 |
| if ((r3 & 0x10) == 0) {
0x0801ea7c beq 0x801e75c | goto label_8;
| }
0x0801ea80 tst r7, 0x100 |
| if ((r7 & 0x100) != 0) {
0x0801ea84 bne 0x801e75c | goto label_8;
| }
0x0801ea88 b 0x801e90c | goto label_7;
| label_20:
0x0801ea8c mvn r5, 0x74 | r5 = ~0x74;
0x0801ea90 mov r0, r5 | r0 = r5;
0x0801ea94 add sp, sp, 0x3c |
0x0801ea98 pop {r4, r5, r6, r7, r8, sb, sl, fp, pc} |
| label_37:
0x0801ea9c mov r5, r0 | r5 = r0;
0x0801eaa0 b 0x801e90c | goto label_7;
| label_36:
0x0801eaa4 mov r5, r0 | r5 = r0;
0x0801eaa8 b 0x801e904 | goto label_9;
| label_23:
0x0801eaac ldr r1, [sp, 0x24] | r1 = var_24h;
0x0801eab0 bic r3, r3, 0xf8000000 | r3 = BIT_MASK (r3, 0xf8000000);
0x0801eab4 ldr r0, [r4, 8] | r0 = *((r4 + 8));
0x0801eab8 mov ip, 0x800 |
0x0801eabc subs r2, r2, r1 | r2 -= r1;
0x0801eac0 sbc r3, r3, 0 | __asm ("sbc r3, r3, 0");
0x0801eac4 adds r2, r2, r0 | r2 += r0;
0x0801eac8 adc r3, r3, 0 | __asm ("adc r3, r3, 0");
0x0801eacc b 0x801ea24 | goto label_10;
| label_33:
0x0801ead0 ldr r3, [r4, 0xc] | r3 = *((r4 + 0xc));
0x0801ead4 mov r0, r6 | r0 = r6;
0x0801ead8 str r3, [sp] | *(sp) = r3;
0x0801eadc ldrd r2, r3, [r4] | __asm ("ldrd r2, r3, [r4]");
0x0801eae0 stmdaeq r1, {r2, r4, r5, r6, r8, sl, sp, lr, pc} | __asm ("stmdaeq r1, {r2, r4, r5, r6, r8, sl, sp, lr, pc}");
0x0801eae4 subs fp, r0, 0 |
| if (fp == r0) {
0x0801eae8 ldreq r1, [r4, 8] | r1 = *((r4 + 8));
| goto label_47;
| }
| if (fp == r0) {
| label_47:
0x0801eaec beq 0x801e7c4 | goto label_11;
| }
0x0801eaf0 mov r0, sb | r0 = sb;
0x0801eaf4 stmdaeq r8, {r3, r6, r7, r8, sb, sl, ip, sp, lr} | __asm ("stmdaeq r8, {r3, r6, r7, r8, sb, sl, ip, sp, lr}");
0x0801eaf8 subs r5, fp, 0 | r5 -= var_bp_0h;
| if (r5 > var_bp_0h) {
0x0801eafc bgt 0x801e804 | goto label_12;
| }
0x0801eb00 b 0x801e90c | goto label_7;
| label_43:
0x0801eb04 mrs r2, apsr | r2 = apsr;
0x0801eb08 cpsid i | __asm ("cpsid i");
0x0801eb0c ldr r3, [r6, -0x70] | r3 = *((r6 - 0x70));
0x0801eb10 bic r3, r3, 0x20 | r3 = BIT_MASK (r3, 0x20);
0x0801eb14 str r3, [r6, -0x70] | *((r6 - 0x70)) = r3;
0x0801eb18 msr cpsr_c, r2 | cpsr_c = r2;
0x0801eb1c b 0x801e978 | goto label_13;
| label_26:
0x0801eb20 str r3, [sp, 8] | var_8h = r3;
0x0801eb24 movw r2, 0x23a | r2 = 0x23a;
0x0801eb28 str r5, [sp, 4] | var_4h = r5;
0x0801eb2c ldr r1, [pc, 0xb4] | r1 = $d;
0x0801eb30 ldr r3, [r6, 0x20] | r3 = *((r6 + 0x20));
0x0801eb34 str r3, [sp] | *(sp) = r3;
0x0801eb38 stmdaeq r5, {r2, r3, r4, r6, r8, sl, sp, pc} | __asm ("stmdaeq r5, {r2, r3, r4, r6, r8, sl, sp, pc}");
0x0801eb3c stmdaeq r5, {r2, r3, r4, r6, r8, sl, sp, pc} | __asm ("stmdaeq r5, {r2, r3, r4, r6, r8, sl, sp, pc}");
0x0801eb40 ldr r0, [r6, 0x14] | r0 = *((r6 + 0x14));
0x0801eb44 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}");
0x0801eb48 mov r2, 9 | r2 = 9;
0x0801eb4c mov r3, 0 | r3 = 0;
0x0801eb50 movw r1, 0x23e | r1 = 0x23e;
0x0801eb54 stmdaeq r5, {r4, r5, r6, r7, sl, sp, pc} | __asm ("stmdaeq r5, {r4, r5, r6, r7, sl, sp, pc}");
0x0801eb58 stmdaeq r5, {r4, r5, r6, r7, sl, sp, pc} | __asm ("stmdaeq r5, {r4, r5, r6, r7, sl, sp, pc}");
0x0801eb5c stmdaeq r8, {r2, r8, sb, sl, ip, sp, lr} | __asm ("stmdaeq r8, {r2, r8, sb, sl, ip, sp, lr}");
0x0801eb60 ldr r2, [r4, 0xc] | r2 = *((r4 + 0xc));
0x0801eb64 b 0x801e708 | goto label_14;
| label_32:
0x0801eb68 str r2, [sp, 8] | var_8h = r2;
0x0801eb6c movw r2, 0x299 | r2 = 0x299;
0x0801eb70 str r5, [sp, 4] | var_4h = r5;
0x0801eb74 ldr r1, [pc, 0x6c] | r1 = $d;
0x0801eb78 ldr r3, [r6, 0x20] | r3 = *((r6 + 0x20));
0x0801eb7c str r3, [sp] | *(sp) = r3;
0x0801eb80 stmdaeq r5, {r2, r3, r4, r6, r8, sl, sp, pc} | __asm ("stmdaeq r5, {r2, r3, r4, r6, r8, sl, sp, pc}");
0x0801eb84 stmdaeq r5, {r2, r3, r4, r6, r8, sl, sp, pc} | __asm ("stmdaeq r5, {r2, r3, r4, r6, r8, sl, sp, pc}");
0x0801eb88 ldr r0, [r6, 0x14] | r0 = *((r6 + 0x14));
0x0801eb8c 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}");
0x0801eb90 stmdaeq r5, {r4, r5, r6, r7, sl, sp, pc} | __asm ("stmdaeq r5, {r4, r5, r6, r7, sl, sp, pc}");
0x0801eb94 stmdaeq r5, {r4, r5, r6, r7, sl, sp, pc} | __asm ("stmdaeq r5, {r4, r5, r6, r7, sl, sp, pc}");
0x0801eb98 mov r3, 0 | r3 = 0;
0x0801eb9c mov r2, 9 | r2 = 9;
0x0801eba0 movw r1, 0x29d | r1 = 0x29d;
0x0801eba4 stmdaeq r8, {r2, r8, sb, sl, ip, sp, lr} | __asm ("stmdaeq r8, {r2, r8, sb, sl, ip, sp, lr}");
0x0801eba8 b 0x801e7a4 | goto label_15;
| label_38:
0x0801ebac ldr r3, [r6, -0x6c] | r3 = *((r6 - 0x6c));
0x0801ebb0 tst r3, 0x200000 |
| if ((r3 & 0x200000) != 0) {
0x0801ebb4 bne 0x801e850 | goto label_16;
| }
0x0801ebb8 b 0x801e8c4 | goto label_17;
| label_39:
0x0801ebbc cmp r8, 0x1000 |
| if (r8 <= 0x1000) {
0x0801ebc0 blo 0x801e8cc | goto label_18;
| }
0x0801ebc4 str r0, [sp, 4] | var_4h = r0;
0x0801ebc8 mov r2, lr | r2 = lr;
0x0801ebcc str ip, [sp] | *(sp) = ip;
0x0801ebd0 mov r0, r8 | r0 = r8;
0x0801ebd4 ldr r1, [r6, 0x168] | r1 = *((r6 + 0x168));
0x0801ebd8 stmdaeq r8, {r2, r3, r6, r8, fp, ip, sp, lr} | __asm ("stmdaeq r8, {r2, r3, r6, r8, fp, ip, sp, lr}");
0x0801ebdc mov r3, r0 | r3 = r0;
0x0801ebe0 b 0x801e8b8 | goto label_19;
| label_24:
0x0801ebe4 udf 0x12 | __asm ("udf 0x12");
| }
; 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 @ 0x8026b64 */
| #include <stdint.h>
|
| #define BIT_MASK(t,v) ((t)(-((v)!= 0)))&(((t)-1)>>((sizeof(t)*CHAR_BIT)-(v)))
|
; (fcn) sym.ext4_page_mkwrite () | void ext4_page_mkwrite (int32_t arg_0h, int32_t arg_4h, int32_t arg_18h, int32_t arg1) {
| int32_t var_0h;
| int32_t var_4h;
| int32_t var_8h;
| int32_t var_ch;
| int32_t var_10h;
| int32_t var_14h;
| int32_t var_1ch;
| int32_t var_24h;
| r0 = arg1;
0x08026b64 push {r4, r5, r6, r7, r8, sb, sl, fp, lr} |
0x08026b68 ldr sl, [r0] | sl = *(r0);
0x08026b6c sub sp, sp, 0x24 |
0x08026b70 ldr r8, [r0, 0x24] | r8 = *(arg_0hx24);
0x08026b74 ldr r3, [sl, 0x50] | r3 = *((sl + 0x50));
0x08026b78 ldr r4, [r3, 0x10] | r4 = *((r3 + 0x10));
0x08026b7c ldr r5, [r4, 0xc] | r5 = *((r4 + 0xc));
0x08026b80 ldr r3, [r4, 0x18] | r3 = *((r4 + 0x18));
0x08026b84 str r3, [sp, 0xc] | var_ch = r3;
0x08026b88 ands r5, r5, 8 | r5 &= 8;
0x08026b8c mov r3, 0 | r3 = 0;
0x08026b90 str r3, [sp, 0x1c] | var_1ch = r3;
| if (r5 != r5) {
0x08026b94 bne 0x80271e0 | goto label_23;
| }
0x08026b98 mov r3, sp | r3 = sp;
0x08026b9c mov sb, r0 | sb = r0;
0x08026ba0 bic r3, r3, 0x1fc0 | r3 = BIT_MASK (r3, 0x1fc0);
0x08026ba4 ldr r0, [r4, 0x14] | r0 = *((r4 + 0x14));
0x08026ba8 bic r3, r3, 0x3f | r3 = BIT_MASK (r3, 0x3f);
0x08026bac ldr r2, [r3, 4] | r2 = *((r3 + 4));
0x08026bb0 add r2, r2, 1 | r2++;
0x08026bb4 str r2, [r3, 4] | *((r3 + 4)) = r2;
0x08026bb8 ldr r3, [r0, 0x198] | r3 = *((r0 + 0x198));
0x08026bbc cmp r3, 0 |
| if (r3 != 0) {
0x08026bc0 bne 0x80271f0 | goto label_24;
| }
0x08026bc4 mrs r1, apsr | r1 = apsr;
0x08026bc8 cpsid i | __asm ("cpsid i");
0x08026bcc ldr r2, [r0, 0x1b0] | r2 = *((r0 + 0x1b0));
0x08026bd0 ldr r3, [r2] | r3 = *(r2);
0x08026bd4 add r3, r3, 1 | r3++;
0x08026bd8 str r3, [r2] | *(r2) = r3;
0x08026bdc msr cpsr_c, r1 | cpsr_c = r1;
| label_15:
0x08026be0 mov r3, sp | r3 = sp;
0x08026be4 bic r3, r3, 0x1fc0 | r3 = BIT_MASK (r3, 0x1fc0);
0x08026be8 bic r3, r3, 0x3f | r3 = BIT_MASK (r3, 0x3f);
0x08026bec ldr r2, [r3, 4] | r2 = *((r3 + 4));
0x08026bf0 sub r2, r2, 1 | r2--;
0x08026bf4 str r2, [r3, 4] | *((r3 + 4)) = r2;
0x08026bf8 cmp r2, 0 |
| if (r2 == 0) {
0x08026bfc beq 0x8026e04 | goto label_25;
| }
| label_1:
0x08026c00 ldr r0, [sl, 0x50] | r0 = *((sl + 0x50));
0x08026c04 stmdaeq r8, {r5, r6, r7, r8, fp, ip, sp, lr} | __asm ("stmdaeq r8, {r5, r6, r7, r8, fp, ip, sp, lr}");
0x08026c08 sub r3, r4, 0x10 | r3 = r4 - 0x10;
0x08026c0c mov r0, r3 | r0 = r3;
0x08026c10 str r3, [sp, 8] | var_8h = r3;
0x08026c14 stmdaeq r8, {r3, r4, r6, r8, sb, sl, ip, sp, lr} | __asm ("stmdaeq r8, {r3, r4, r6, r8, sb, sl, ip, sp, lr}");
0x08026c18 mov r0, r4 | r0 = r4;
0x08026c1c stmdaeq r1, {r3, r4, r7, sb, lr, pc} | __asm ("stmdaeq r1, {r3, r4, r7, sb, lr, pc}");
0x08026c20 subs r3, r0, 0 | r3 = r0 - 0;
| if (r3 != r0) {
0x08026c24 beq 0x8026cb0 |
| label_19:
0x08026c28 add r0, r3, 0xe | r0 = r3 + 0xe;
0x08026c2c cmp r0, 0xe |
| if (r0 < 0xe) {
0x08026c30 bls 0x80272c0 | goto label_26;
| }
| label_3:
0x08026c34 mov r5, 2 | r5 = 2;
| label_9:
0x08026c38 ldr r0, [sp, 8] | r0 = var_8h;
0x08026c3c stmdaeq r8, {r2, r4, r6, r8, sb, sl, ip, sp, lr} | __asm ("stmdaeq r8, {r2, r4, r6, r8, sb, sl, ip, sp, lr}");
0x08026c40 mov r3, sp | r3 = sp;
0x08026c44 bic r3, r3, 0x1fc0 | r3 = BIT_MASK (r3, 0x1fc0);
0x08026c48 ldr r0, [r4, 0x14] | r0 = *((r4 + 0x14));
0x08026c4c bic r3, r3, 0x3f | r3 = BIT_MASK (r3, 0x3f);
0x08026c50 ldr r2, [r3, 4] | r2 = *((r3 + 4));
0x08026c54 add r2, r2, 1 | r2++;
0x08026c58 str r2, [r3, 4] | *((r3 + 4)) = r2;
0x08026c5c ldr r3, [r0, 0x198] | r3 = *((r0 + 0x198));
0x08026c60 cmp r3, 0 |
| if (r3 != 0) {
0x08026c64 bne 0x8027200 | goto label_27;
| }
0x08026c68 mrs r1, apsr | r1 = apsr;
0x08026c6c cpsid i | __asm ("cpsid i");
0x08026c70 ldr r2, [r0, 0x1b0] | r2 = *((r0 + 0x1b0));
0x08026c74 ldr r3, [r2] | r3 = *(r2);
0x08026c78 sub r3, r3, 1 | r3--;
0x08026c7c str r3, [r2] | *(r2) = r3;
0x08026c80 msr cpsr_c, r1 | cpsr_c = r1;
| label_16:
0x08026c84 mov r3, sp | r3 = sp;
0x08026c88 bic r3, r3, 0x1fc0 | r3 = BIT_MASK (r3, 0x1fc0);
0x08026c8c bic r3, r3, 0x3f | r3 = BIT_MASK (r3, 0x3f);
0x08026c90 ldr r2, [r3, 4] | r2 = *((r3 + 4));
0x08026c94 sub r2, r2, 1 | r2--;
0x08026c98 str r2, [r3, 4] | *((r3 + 4)) = r2;
0x08026c9c cmp r2, 0 |
| if (r2 == 0) {
0x08026ca0 beq 0x8026e18 | goto label_28;
| }
| label_2:
0x08026ca4 mov r0, r5 | r0 = r5;
0x08026ca8 add sp, sp, 0x24 |
0x08026cac pop {r4, r5, r6, r7, r8, sb, sl, fp, pc} |
| }
0x08026cb0 mov r0, r4 | r0 = r4;
0x08026cb4 stmdaeq r0, {r2, r3, r4, r6, r8, sb, sl, ip, sp} | __asm ("stmdaeq r0, {r2, r3, r4, r6, r8, sb, sl, ip, sp}");
0x08026cb8 tst r0, 1 |
| if ((r0 & 1) != 0) {
0x08026cbc bne 0x8026e6c | goto label_21;
| }
0x08026cc0 ldr r0, [r4, 0x14] | r0 = *((r4 + 0x14));
0x08026cc4 ldr r3, [r0, 0x1f0] | r3 = *((r0 + 0x1f0));
0x08026cc8 ldr r3, [r3, 0x4c] | r3 = *((r3 + 0x4c));
0x08026ccc tst r3, 0x8000000 |
| if ((r3 & loc.imp.fs_overflowgid) != 0) {
0x08026cd0 beq 0x8026ce0 |
0x08026cd4 bl 0x801c95c | r0 = ext4_nonda_switch ();
0x08026cd8 cmp r0, 0 |
| if (r0 == 0) {
0x08026cdc beq 0x8027240 | goto label_29;
| }
| }
0x08026ce0 ldr r3, [r8, 4] | r3 = *((r8 + 4));
0x08026ce4 tst r3, 1 |
| if ((r3 & 1) == 0) {
0x08026ce8 subne r3, r3, 1 | r3--;
| }
| if ((r3 & 1) != 0) {
0x08026cec moveq r3, r8 | r3 = r8;
| }
0x08026cf0 ldr r2, [r3] | r2 = *(r3);
0x08026cf4 tst r2, 1 |
| if ((r2 & 1) == 0) {
0x08026cf8 beq 0x8027088 | goto label_30;
| }
| label_8:
0x08026cfc mov r0, r8 | r0 = r8;
0x08026d00 stmdaeq r8, {r3, r4, r5, r8, fp, ip, sp, lr} | __asm ("stmdaeq r8, {r3, r4, r5, r8, fp, ip, sp, lr}");
| label_7:
0x08026d04 mov r3, sp | r3 = sp;
0x08026d08 bic r3, r3, 0x1fc0 | r3 = BIT_MASK (r3, 0x1fc0);
0x08026d0c bic r3, r3, 0x3f | r3 = BIT_MASK (r3, 0x3f);
0x08026d10 ldr r2, [r3, 4] | r2 = *((r3 + 4));
0x08026d14 add r2, r2, 1 | r2++;
0x08026d18 str r2, [r3, 4] | *((r3 + 4)) = r2;
0x08026d1c ldr r7, [r4, 0x30] | r7 = *((r4 + 0x30));
0x08026d20 ldr r6, [r4, 0x34] | r6 = *((r4 + 0x34));
0x08026d24 ldr r2, [r3, 4] | r2 = *((r3 + 4));
0x08026d28 sub r2, r2, 1 | r2--;
0x08026d2c str r2, [r3, 4] | *((r3 + 4)) = r2;
0x08026d30 cmp r2, 0 |
| if (r2 == 0) {
0x08026d34 beq 0x8027228 | goto label_31;
| }
| label_17:
0x08026d38 ldr r3, [r8, 0xc] | r3 = *((r8 + 0xc));
0x08026d3c ldr r2, [sp, 0xc] | r2 = var_ch;
0x08026d40 cmp r3, r2 |
| if (r3 != r2) {
0x08026d44 bne 0x80270f0 | goto label_32;
| }
0x08026d48 ldr r3, [r8, 0x10] | r3 = *((r8 + 0x10));
0x08026d4c mov r1, 0 | r1 = 0;
0x08026d50 lsl r2, r3, 0xc | r2 = r3 << 0xc;
0x08026d54 cmp r7, r2 |
0x08026d58 lsr r2, r3, 0x14 | r2 = r3 >> 0x14;
0x08026d5c sbcs r2, r6, r2 | __asm ("sbcs r2, r6, r2");
| if (r7 < r2) {
0x08026d60 blt 0x80270f0 | goto label_32;
| }
0x08026d64 lsr r2, r7, 0xc | r2 = r7 >> 0xc;
0x08026d68 orr r2, r2, r6, lsl 20 | r2 |= (r6 << 20);
0x08026d6c asr r6, r6, 0xc | r6 >>= 0xc;
0x08026d70 cmp r6, r1 |
0x08026d74 cmpeq r2, r3 | __asm ("cmpeq r2, r3");
0x08026d78 ldr r3, [r8] | r3 = *(r8);
0x08026d7c ubfxeq r7, r7, 0, 0xc | __asm ("ubfxeq r7, r7, 0, 0xc");
| if (r6 == r1) {
0x08026d80 movne r7, 0x1000 | r7 = 0x1000;
| }
0x08026d84 tst r3, 0x2000 |
| if ((r3 & 0x2000) == 0) {
0x08026d88 beq 0x8026e34 | goto label_33;
| }
0x08026d8c ldr r2, [r8] | r2 = *(r8);
0x08026d90 mvn r2, r2, lsr 13 | r2 = ~r2;
0x08026d94 ands r2, r2, 1 | r2 &= 1;
| if (r2 != r2) {
0x08026d98 bne 0x802723c | goto label_34;
| }
0x08026d9c ldr r6, [r8, 0x14] | r6 = *((r8 + 0x14));
0x08026da0 mov r1, r6 | r1 = r6;
0x08026da4 ldr ip, [r6, 0x18] | ip = *((r6 + 0x18));
0x08026da8 b 0x8026db8 |
| while (r3 == 0) {
0x08026dac ldr r3, [lr] | r3 = *(lr);
0x08026db0 tst r3, 0x10 |
| if ((r3 & 0x10) == 0) {
0x08026db4 beq 0x8026e34 | goto label_33;
| }
0x08026db8 mov r0, r2 | r0 = r2;
0x08026dbc mov lr, r1 | lr = r1;
| label_0:
0x08026dc0 clz r3, r2 | r3 &= r2;
0x08026dc4 lsr r3, r3, 5 | r3 >>= 5;
0x08026dc8 cmp r6, r1 |
| if (r6 == r1) {
0x08026dcc orrne r3, r3, 1 | r3 |= 1;
| }
0x08026dd0 cmp r3, 0 |
| if (r3 == 0) {
0x08026dd4 beq 0x80272dc | goto label_35;
| }
0x08026dd8 adds r2, r2, ip | r2 += ip;
0x08026ddc ldr r1, [r1, 4] | r1 = *((r1 + 4));
| if (r2 != r2) {
0x08026de0 moveq r3, 1 | r3 = 1;
| }
| if (r2 == r2) {
0x08026de4 movne r3, 0 | r3 = 0;
| }
0x08026de8 cmp r7, r0 |
| if (r7 > r0) {
0x08026dec orrls r3, r3, 1 | r3 |= 1;
| }
0x08026df0 add r0, r0, ip | r0 += ip;
0x08026df4 cmp r3, 0 |
0x08026df8 beq 0x8026dac |
| }
0x08026dfc mov lr, r1 | lr = r1;
0x08026e00 b 0x8026dc0 | goto label_0;
| label_25:
0x08026e04 ldr r3, [r3] | r3 = *(r3);
0x08026e08 tst r3, 2 |
| if ((r3 & 2) == 0) {
0x08026e0c beq 0x8026c00 | goto label_1;
| }
0x08026e10 stmdaeq r8, {r4, r6, r7, sb, sl, ip, sp, lr} | __asm ("stmdaeq r8, {r4, r6, r7, sb, sl, ip, sp, lr}");
0x08026e14 b 0x8026c00 | goto label_1;
| label_28:
0x08026e18 ldr r3, [r3] | r3 = *(r3);
0x08026e1c tst r3, 2 |
| if ((r3 & 2) == 0) {
0x08026e20 beq 0x8026ca4 | goto label_2;
| }
0x08026e24 stmdaeq r8, {r4, r6, r7, sb, sl, ip, sp, lr} | __asm ("stmdaeq r8, {r4, r6, r7, sb, sl, ip, sp, lr}");
0x08026e28 mov r0, r5 | r0 = r5;
0x08026e2c add sp, sp, 0x24 |
0x08026e30 pop {r4, r5, r6, r7, r8, sb, sl, fp, pc} |
| label_33:
0x08026e34 mov r0, r8 | r0 = r8;
0x08026e38 stmdaeq r8, {r3, r4, r6, r7, fp, ip, sp, lr} | __asm ("stmdaeq r8, {r3, r4, r6, r7, fp, ip, sp, lr}");
0x08026e3c ldr r3, [r4, 0x14] | r3 = *((r4 + 0x14));
0x08026e40 ldr r3, [r3, 0x1f0] | r3 = *((r3 + 0x1f0));
0x08026e44 ldr r3, [r3, 0x4c] | r3 = *((r3 + 0x4c));
0x08026e48 tst r3, 0x400000 |
| if ((r3 & 0x400000) != 0) {
0x08026e4c beq 0x8026e60 |
0x08026e50 ldrh r3, [r4] | r3 = *(r4);
0x08026e54 and r3, r3, 0xf000 | r3 &= 0xf000;
0x08026e58 cmp r3, 0x8000 |
| if (r3 == 0x8000) {
0x08026e5c beq 0x8027280 | goto label_36;
| }
| }
| label_20:
0x08026e60 stmdaeq r1, {r3, r4, r5, r6, r7, sl, fp, sp, lr, pc} | __asm ("stmdaeq r1, {r3, r4, r5, r6, r7, sl, fp, sp, lr, pc}");
0x08026e64 stmdaeq r1, {r3, r4, r5, r6, r7, sl, fp, sp, lr, pc} | __asm ("stmdaeq r1, {r3, r4, r5, r6, r7, sl, fp, sp, lr, pc}");
0x08026e68 str r3, [sp, 0x10] | var_10h = r3;
| label_21:
0x08026e6c mov r3, sp | r3 = sp;
0x08026e70 mov r7, sb | r7 = sb;
0x08026e74 bic fp, r3, 0x1fc0 | fp = BIT_MASK (r3, 0x1fc0);
0x08026e78 str r5, [sp, 0x14] | var_14h = r5;
0x08026e7c bic fp, fp, 0x3f | fp = BIT_MASK (fp, 0x3f);
| label_4:
0x08026e80 mov r0, r4 | r0 = r4;
0x08026e84 stmdaeq r2, {r4, r5, r6, r7, sl, ip} | __asm ("stmdaeq r2, {r4, r5, r6, r7, sl, ip}");
0x08026e88 mov r3, r0 | r3 = r0;
0x08026e8c ldr r0, [r4, 0x14] | r0 = *((r4 + 0x14));
0x08026e90 mov ip, 0 |
0x08026e94 mov r2, 2 | r2 = 2;
0x08026e98 ldr r1, [r0, 0x1f0] | r1 = *((r0 + 0x1f0));
0x08026e9c ldr r1, [r1, 0x2c] | r1 = *((r1 + 0x2c));
0x08026ea0 str ip, [sp] | *(sp) = ip;
0x08026ea4 lsl r1, r1, 3 | r1 <<= 3;
0x08026ea8 str r1, [sp, 4] | var_4h = r1;
0x08026eac movw r1, 0x17fa | r1 = 0x17fa;
0x08026eb0 stmdaeq r0, {r4, r5, r6, r7, r8, sb, sl, ip, sp} | __asm ("stmdaeq r0, {r4, r5, r6, r7, r8, sb, sl, ip, sp}");
0x08026eb4 mov r6, r0 | r6 = r0;
0x08026eb8 cmn r0, 0x1000 |
| if (r0 > 0x1000) {
0x08026ebc bhi 0x8026c34 | goto label_3;
| }
0x08026ec0 mov r0, r4 | r0 = r4;
0x08026ec4 stmdaeq r0, {r2, r3, r4, r6, r8, sb, sl, ip, sp} | __asm ("stmdaeq r0, {r2, r3, r4, r6, r8, sb, sl, ip, sp}");
0x08026ec8 tst r0, 1 |
| if ((r0 & 1) != 0) {
0x08026ecc bne 0x8026f14 | goto label_37;
| }
0x08026ed0 ldr r2, [sp, 0x10] | r2 = var_10h;
0x08026ed4 mov r1, r7 | r1 = r7;
0x08026ed8 mov r0, sl | r0 = sl;
0x08026edc stmdaeq r8, {r2, r5, r6, r7, r8, fp, ip, sp, lr} | __asm ("stmdaeq r8, {r2, r5, r6, r7, r8, fp, ip, sp, lr}");
0x08026ee0 mov r5, r0 | r5 = r0;
| label_11:
0x08026ee4 ldr r0, [pc, 0x408] | r0 = *(0x80272f0);
0x08026ee8 mov r2, r6 | r2 = r6;
0x08026eec movw r1, 0x1826 | r1 = 0x1826;
0x08026ef0 stmdaeq r0, {r2, r3, r8, fp, ip, sp} | __asm ("stmdaeq r0, {r2, r3, r8, fp, ip, sp}");
0x08026ef4 cmn r5, 0x1c |
| if (r5 != 0x1c) {
0x08026ef8 bne 0x80272ec | goto label_38;
| }
0x08026efc ldr r0, [r4, 0x14] | r0 = *((r4 + 0x14));
0x08026f00 add r1, sp, 0x1c | r1 += var_1ch;
0x08026f04 stmdaeq r0, {r4, r5, r6, fp} | __asm ("stmdaeq r0, {r4, r5, r6, fp}");
0x08026f08 cmp r0, 0 |
| if (r0 != 0) {
0x08026f0c bne 0x8026e80 | goto label_4;
| }
0x08026f10 b 0x8026c34 | goto label_3;
| label_37:
0x08026f14 ldr r3, [r8, 4] | r3 = *((r8 + 4));
0x08026f18 tst r3, 1 |
| if ((r3 & 1) == 0) {
0x08026f1c subne r3, r3, 1 | r3--;
| }
| if ((r3 & 1) != 0) {
0x08026f20 moveq r3, r8 | r3 = r8;
| }
0x08026f24 ldr r2, [r3] | r2 = *(r3);
0x08026f28 tst r2, 1 |
| if ((r2 & 1) != 0) {
0x08026f2c bne 0x802707c | goto label_39;
| }
0x08026f30 pld [r3] | __asm ("pld [r3]");
| do {
0x08026f34 ldrex r2, [r3] | __asm ("ldrex r2, [r3]");
0x08026f38 orr r1, r2, 1 | r1 = r2 | 1;
0x08026f3c strex r0, r1, [r3] | __asm ("strex r0, r1, [r3]");
0x08026f40 teq r0, 0 | __asm ("teq r0, 0");
0x08026f44 bne 0x8026f34 |
| } while ((r2 & 1) != 0);
0x08026f48 tst r2, 1 |
| if ((r2 & 1) != 0) {
0x08026f4c bne 0x802707c | goto label_39;
| }
| label_6:
0x08026f50 ldr r3, [fp, 4] | r3 = *(arg_4h);
0x08026f54 add r3, r3, 1 | r3++;
0x08026f58 str r3, [fp, 4] | *(arg_4h) = r3;
0x08026f5c ldr sb, [r4, 0x30] | sb = *((r4 + 0x30));
0x08026f60 ldr r5, [r4, 0x34] | r5 = *((r4 + 0x34));
0x08026f64 ldr r2, [fp, 4] | r2 = *(arg_4h);
0x08026f68 sub r2, r2, 1 | r2--;
0x08026f6c str r2, [fp, 4] | *(arg_4h) = r2;
0x08026f70 cmp r2, 0 |
| if (r2 == 0) {
0x08026f74 beq 0x80270d0 | goto label_40;
| }
| label_10:
0x08026f78 ldr r2, [r8, 0xc] | r2 = *((r8 + 0xc));
0x08026f7c ldr r3, [sp, 0xc] | r3 = var_ch;
0x08026f80 cmp r2, r3 |
| if (r2 != r3) {
0x08026f84 bne 0x80272d4 | goto label_41;
| }
0x08026f88 ldr r2, [r8, 0x10] | r2 = *((r8 + 0x10));
0x08026f8c mov ip, 0 |
0x08026f90 lsl r0, r2, 0xc | r0 = r2 << 0xc;
0x08026f94 cmp sb, r0 |
0x08026f98 lsr r0, r2, 0x14 | r0 = r2 >> 0x14;
0x08026f9c sbcs r0, r5, r0 | __asm ("sbcs r0, r5, r0");
| if (sb < r0) {
0x08026fa0 blt 0x80272d4 | goto label_41;
| }
0x08026fa4 lsr r0, sb, 0xc | r0 = sb >> 0xc;
0x08026fa8 asr r3, r5, 0xc | r3 = r5 >> 0xc;
0x08026fac orr r0, r0, r5, lsl 20 | r0 |= (r5 << 20);
0x08026fb0 cmp r3, ip |
0x08026fb4 cmpeq r0, r2 | __asm ("cmpeq r0, r2");
0x08026fb8 mov r0, r8 | r0 = r8;
0x08026fbc stmdaeq r1, {r3, r4, r5, r6, r7, sl, fp, sp, lr, pc} | __asm ("stmdaeq r1, {r3, r4, r5, r6, r7, sl, fp, sp, lr, pc}");
0x08026fc0 stmdaeq r1, {r3, r4, r5, r6, r7, sl, fp, sp, lr, pc} | __asm ("stmdaeq r1, {r3, r4, r5, r6, r7, sl, fp, sp, lr, pc}");
0x08026fc4 ubfxeq sb, sb, 0, 0xc | __asm ("ubfxeq sb, sb, 0, 0xc");
| if (r3 == ip) {
0x08026fc8 movne sb, 0x1000 | sb = 0x1000;
| }
0x08026fcc str r3, [sp, 4] | var_4h = r3;
0x08026fd0 mov r2, 0 | r2 = 0;
0x08026fd4 str sb, [sp] | *(sp) = sb;
0x08026fd8 mov r3, 0 | r3 = 0;
0x08026fdc stmdaeq r8, {r5, r6, r7, fp, ip, sp, lr} | __asm ("stmdaeq r8, {r5, r6, r7, fp, ip, sp, lr}");
0x08026fe0 subs r5, r0, 0 | r5 = r0 - 0;
| if (r5 != r0) {
0x08026fe4 bne 0x80270e4 | goto label_42;
| }
0x08026fe8 mov r7, sb | r7 = sb;
0x08026fec ldr sb, [r8] | sb = *(r8);
0x08026ff0 ldr r5, [sp, 0x14] | r5 = var_14h;
0x08026ff4 mvn sb, sb, lsr 13 | sb = ~sb;
0x08026ff8 ands sb, sb, 1 | sb &= 1;
| if (sb != sb) {
0x08026ffc bne 0x802723c | goto label_34;
| }
0x08027000 ldr r3, [r8, 0x14] | r3 = *((r8 + 0x14));
0x08027004 str r5, [sp, 0xc] | var_ch = r5;
0x08027008 mov r5, r6 | r5 = r6;
0x0802700c mov sl, r3 | sl = r3;
0x08027010 ldr fp, [r3, 0x18] | fp = *((r3 + 0x18));
0x08027014 mov r6, fp | r6 = fp;
0x08027018 mov fp, r3 |
0x0802701c b 0x8027030 |
| while (r3 == 0) {
0x08027020 mov r0, r5 | r0 = r5;
0x08027024 stmdaeq r1, {r2, r3, r4, r5, sl, fp, ip, sp, lr, pc} | __asm ("stmdaeq r1, {r2, r3, r4, r5, sl, fp, ip, sp, lr, pc}");
0x08027028 cmp r0, 0 |
| if (r0 != 0) {
0x0802702c bne 0x80270ac | goto label_43;
| }
0x08027030 mov r0, sb | r0 = sb;
0x08027034 mov r1, sl | r1 = sl;
| label_5:
0x08027038 clz r3, sb | r3 &= sb;
0x0802703c lsr r3, r3, 5 | r3 >>= 5;
0x08027040 cmp fp, sl |
| if (fp == sl) {
0x08027044 orrne r3, r3, 1 | r3 |= 1;
| }
0x08027048 cmp r3, 0 |
| if (r3 == 0) {
0x0802704c beq 0x8027100 | goto label_44;
| }
0x08027050 adds sb, sb, r6 | sb += r6;
0x08027054 ldr sl, [sl, 4] | sl = *((sl + 4));
| if (sb != sb) {
0x08027058 moveq r3, 1 | r3 = 1;
| }
| if (sb == sb) {
0x0802705c movne r3, 0 | r3 = 0;
| }
0x08027060 cmp r7, r0 |
| if (r7 > r0) {
0x08027064 orrls r3, r3, 1 | r3 |= 1;
| }
0x08027068 add r0, r0, r6 | r0 += r6;
0x0802706c cmp r3, 0 |
0x08027070 beq 0x8027020 |
| }
0x08027074 mov r1, sl | r1 = sl;
0x08027078 b 0x8027038 | goto label_5;
| label_39:
0x0802707c mov r0, r8 | r0 = r8;
0x08027080 stmdaeq r8, {r3, r4, r5, r8, fp, ip, sp, lr} | __asm ("stmdaeq r8, {r3, r4, r5, r8, fp, ip, sp, lr}");
0x08027084 b 0x8026f50 | goto label_6;
| label_30:
0x08027088 pld [r3] | __asm ("pld [r3]");
| do {
0x0802708c ldrex r2, [r3] | __asm ("ldrex r2, [r3]");
0x08027090 orr r1, r2, 1 | r1 = r2 | 1;
0x08027094 strex r0, r1, [r3] | __asm ("strex r0, r1, [r3]");
0x08027098 teq r0, 0 | __asm ("teq r0, 0");
0x0802709c bne 0x802708c |
| } while (r3 != 0);
0x080270a0 tst r2, 1 |
| if ((r2 & 1) == 0) {
0x080270a4 beq 0x8026d04 | goto label_7;
| }
0x080270a8 b 0x8026cfc | goto label_8;
| label_43:
0x080270ac mov r6, r5 | r6 = r5;
| label_12:
0x080270b0 mov r5, 2 | r5 = 2;
| label_22:
0x080270b4 mov r0, r8 | r0 = r8;
0x080270b8 stmdaeq r8, {r3, r4, r6, r7, fp, ip, sp, lr} | __asm ("stmdaeq r8, {r3, r4, r6, r7, fp, ip, sp, lr}");
0x080270bc mov r2, r6 | r2 = r6;
0x080270c0 movw r1, 0x1831 | r1 = 0x1831;
0x080270c4 ldr r0, [pc, 0x228] | r0 = *(0x80272f0);
0x080270c8 stmdaeq r0, {r2, r3, r8, fp, ip, sp} | __asm ("stmdaeq r0, {r2, r3, r8, fp, ip, sp}");
0x080270cc b 0x8026c38 | goto label_9;
| label_40:
0x080270d0 ldr r2, [fp] | r2 = *(fp);
0x080270d4 tst r2, 2 |
| if ((r2 & 2) == 0) {
0x080270d8 beq 0x8026f78 | goto label_10;
| }
0x080270dc stmdaeq r8, {r4, r6, r7, sb, sl, ip, sp, lr} | __asm ("stmdaeq r8, {r4, r6, r7, sb, sl, ip, sp, lr}");
0x080270e0 b 0x8026f78 | goto label_10;
| label_42:
0x080270e4 mov r0, r8 | r0 = r8;
0x080270e8 stmdaeq r8, {r3, r4, r6, r7, fp, ip, sp, lr} | __asm ("stmdaeq r8, {r3, r4, r6, r7, fp, ip, sp, lr}");
0x080270ec b 0x8026ee4 | goto label_11;
| label_32:
0x080270f0 mov r0, r8 | r0 = r8;
0x080270f4 mov r5, 0x100 | r5 = 0x100;
0x080270f8 stmdaeq r8, {r3, r4, r6, r7, fp, ip, sp, lr} | __asm ("stmdaeq r8, {r3, r4, r6, r7, fp, ip, sp, lr}");
0x080270fc b 0x8026c38 | goto label_9;
| label_44:
0x08027100 ldr r3, [r8] | r3 = *(r8);
0x08027104 mov r6, r5 | r6 = r5;
0x08027108 ldr r5, [sp, 0xc] | r5 = var_ch;
0x0802710c tst r3, 0x2000 |
| if ((r3 & 0x2000) == 0) {
0x08027110 beq 0x802723c | goto label_34;
| }
0x08027114 ldr fp, [r8, 0x14] | fp = *((r8 + 0x14));
0x08027118 mov sb, fp | sb = fp;
0x0802711c ldr sl, [fp, 0x18] | sl = *(arg_18h);
0x08027120 b 0x8027134 | goto label_45;
| label_13:
0x08027124 mov r0, r6 | r0 = r6;
0x08027128 bl 0x801cb08 | r0 = write_end_fn ();
0x0802712c cmp r0, 0 |
| if (r0 != 0) {
0x08027130 bne 0x80270b0 | goto label_12;
| }
| label_45:
0x08027134 mov r2, r5 | r2 = r5;
0x08027138 mov r1, sb | r1 = sb;
| label_14:
0x0802713c clz r3, r5 | r3 &= r5;
0x08027140 lsr r3, r3, 5 | r3 >>= 5;
0x08027144 cmp sb, fp |
| if (sb == fp) {
0x08027148 orrne r3, r3, 1 | r3 |= 1;
| }
0x0802714c cmp r3, 0 |
| if (r3 == 0) {
0x08027150 beq 0x8027180 | goto label_46;
| }
0x08027154 adds r5, r5, sl | r5 += sl;
0x08027158 ldr sb, [sb, 4] | sb = *((sb + 4));
| if (r5 != r5) {
0x0802715c moveq r3, 1 | r3 = 1;
| }
| if (r5 == r5) {
0x08027160 movne r3, 0 | r3 = 0;
| }
0x08027164 cmp r7, r2 |
| if (r7 > r2) {
0x08027168 orrls r3, r3, 1 | r3 |= 1;
| }
0x0802716c add r2, r2, sl | r2 += sl;
0x08027170 cmp r3, 0 |
| if (r3 == 0) {
0x08027174 beq 0x8027124 | goto label_13;
| }
0x08027178 mov r1, sb | r1 = sb;
0x0802717c b 0x802713c | goto label_14;
| label_46:
0x08027180 ldr r0, [r8, 0x10] | r0 = *((r8 + 0x10));
0x08027184 cmp r6, 0x1000 |
| if (r6 <= 0x1000) {
0x08027188 blo 0x80271b0 | goto label_47;
| }
0x0802718c ldr r1, [r4, 0x168] | r1 = *((r4 + 0x168));
0x08027190 lsl r2, r0, 0xc | r2 = r0 << 0xc;
0x08027194 str r3, [sp, 4] | var_4h = r3;
0x08027198 lsr r3, r0, 0x14 | r3 = r0 >> 0x14;
0x0802719c str r7, [sp] | *(sp) = r7;
0x080271a0 mov r0, r6 | r0 = r6;
0x080271a4 stmdaeq r8, {r2, r3, r6, r8, fp, ip, sp, lr} | __asm ("stmdaeq r8, {r2, r3, r6, r8, fp, ip, sp, lr}");
0x080271a8 cmp r0, 0 |
| if (r0 != 0) {
0x080271ac bne 0x80270b0 | goto label_12;
| }
| label_47:
0x080271b0 mrs r2, apsr | r2 = apsr;
0x080271b4 cpsid i | __asm ("cpsid i");
0x080271b8 ldr r3, [r4, -0x70] | r3 = *((r4 - 0x70));
0x080271bc orr r3, r3, 1 | r3 |= 1;
0x080271c0 str r3, [r4, -0x70] | *((r4 - 0x70)) = r3;
0x080271c4 msr cpsr_c, r2 | cpsr_c = r2;
0x080271c8 ldr r0, [pc, 0x124] | r0 = *(0x80272f0);
0x080271cc mov r2, r6 | r2 = r6;
0x080271d0 movw r1, 0x1826 | r1 = 0x1826;
0x080271d4 mov r5, 0x200 | r5 = 0x200;
0x080271d8 stmdaeq r0, {r2, r3, r8, fp, ip, sp} | __asm ("stmdaeq r0, {r2, r3, r8, fp, ip, sp}");
0x080271dc b 0x8026c38 | goto label_9;
| label_23:
0x080271e0 mov r5, 2 | r5 = 2;
0x080271e4 mov r0, r5 | r0 = r5;
0x080271e8 add sp, sp, 0x24 |
0x080271ec pop {r4, r5, r6, r7, r8, sb, sl, fp, pc} |
| label_24:
0x080271f0 mov r1, r5 | r1 = r5;
0x080271f4 add r0, r0, 0x198 | r0 += 0x198;
0x080271f8 stmdaeq r8, {r2, r3, r4, r5, fp, ip, sp, lr} | __asm ("stmdaeq r8, {r2, r3, r4, r5, fp, ip, sp, lr}");
0x080271fc b 0x8026be0 | goto label_15;
| label_27:
0x08027200 mrs r1, apsr | r1 = apsr;
0x08027204 cpsid i | __asm ("cpsid i");
0x08027208 ldr r2, [r0, 0x1b0] | r2 = *((r0 + 0x1b0));
0x0802720c ldr r3, [r2] | r3 = *(r2);
0x08027210 sub r3, r3, 1 | r3--;
0x08027214 str r3, [r2] | *(r2) = r3;
0x08027218 msr cpsr_c, r1 | cpsr_c = r1;
0x0802721c add r0, r0, 0x1b4 | r0 += 0x1b4;
0x08027220 stmdaeq r8, {r6, fp, ip, sp, lr} | __asm ("stmdaeq r8, {r6, fp, ip, sp, lr}");
0x08027224 b 0x8026c84 | goto label_16;
| label_31:
0x08027228 ldr r3, [r3] | r3 = *(r3);
0x0802722c tst r3, 2 |
| if ((r3 & 2) == 0) {
0x08027230 beq 0x8026d38 | goto label_17;
| }
0x08027234 stmdaeq r8, {r4, r6, r7, sb, sl, ip, sp, lr} | __asm ("stmdaeq r8, {r4, r6, r7, sb, sl, ip, sp, lr}");
0x08027238 b 0x8026d38 | goto label_17;
| label_34:
0x0802723c udf 0x12 | __asm ("udf 0x12");
| label_29:
0x08027240 stmdaeq r1, {r2, r5, r6, r7, r8, sl, fp, lr, pc} | __asm ("stmdaeq r1, {r2, r5, r6, r7, r8, sl, fp, lr, pc}");
0x08027244 stmdaeq r1, {r2, r5, r6, r7, r8, sl, fp, lr, pc} | __asm ("stmdaeq r1, {r2, r5, r6, r7, r8, sl, fp, lr, pc}");
0x08027248 b 0x8027260 | goto label_48;
| label_18:
0x0802724c ldr r0, [r4, 0x14] | r0 = *((r4 + 0x14));
0x08027250 add r1, sp, 0x1c | r1 += var_1ch;
0x08027254 stmdaeq r0, {r4, r5, r6, fp} | __asm ("stmdaeq r0, {r4, r5, r6, fp}");
0x08027258 cmp r0, 0 |
| if (r0 == 0) {
0x0802725c beq 0x8026c34 | goto label_3;
| }
| label_48:
0x08027260 mov r2, r5 | r2 = r5;
0x08027264 mov r1, sb | r1 = sb;
0x08027268 mov r0, sl | r0 = sl;
0x0802726c stmdaeq r8, {r2, r5, r6, r7, r8, fp, ip, sp, lr} | __asm ("stmdaeq r8, {r2, r5, r6, r7, r8, fp, ip, sp, lr}");
0x08027270 cmn r0, 0x1c |
| if (r0 == 0x1c) {
0x08027274 beq 0x802724c | goto label_18;
| }
0x08027278 mov r3, r0 | r3 = r0;
0x0802727c b 0x8026c28 | goto label_19;
| label_36:
0x08027280 ldr r3, [r4, -0x6c] | r3 = *((r4 - 0x6c));
0x08027284 tst r3, 0x80000 |
| if ((r3 & 0x80000) == 0) {
0x08027288 beq 0x8026e60 | goto label_20;
| }
0x0802728c mov r0, r4 | r0 = r4;
0x08027290 stmdaeq r0, {r2, r3, r4, r6, r8, sb, sl, ip, sp} | __asm ("stmdaeq r0, {r2, r3, r4, r6, r8, sb, sl, ip, sp}");
0x08027294 tst r0, 1 |
| if ((r0 & 1) != 0) {
0x08027298 bne 0x8026e60 | goto label_20;
| }
0x0802729c ldr r3, [r4, 0x14] | r3 = *((r4 + 0x14));
0x080272a0 ldr r3, [r3, 0x1f0] | r3 = *((r3 + 0x1f0));
0x080272a4 ldr r3, [r3, 0x4c] | r3 = *((r3 + 0x4c));
0x080272a8 tst r3, 0x8000000 |
| if ((r3 & loc.imp.fs_overflowgid) == 0) {
0x080272ac beq 0x8026e60 | goto label_20;
| }
0x080272b0 stmdaeq r1, {r3, r5, r6, ip, sp, lr, pc} | __asm ("stmdaeq r1, {r3, r5, r6, ip, sp, lr, pc}");
0x080272b4 stmdaeq r1, {r3, r5, r6, ip, sp, lr, pc} | __asm ("stmdaeq r1, {r3, r5, r6, ip, sp, lr, pc}");
0x080272b8 str r3, [sp, 0x10] | var_10h = r3;
0x080272bc b 0x8026e6c | goto label_21;
| label_26:
0x080272c0 stmdaeq r5, {r3, r4, r5, r6, sb, sl, ip, sp, lr} | __asm ("stmdaeq r5, {r3, r4, r5, r6, sb, sl, ip, sp, lr}");
0x080272c4 stmdaeq r5, {r3, r4, r5, r6, sb, sl, ip, sp, lr} | __asm ("stmdaeq r5, {r3, r4, r5, r6, sb, sl, ip, sp, lr}");
0x080272c8 add r3, r3, r0, lsl 2 | r3 += (r0 << 2);
0x080272cc ldr r5, [r3, 0x3fc] | r5 = *((r3 + 0x3fc));
0x080272d0 b 0x8026c38 | goto label_9;
| label_41:
0x080272d4 mov r5, 0x100 | r5 = 0x100;
0x080272d8 b 0x80270b4 | goto label_22;
| label_35:
0x080272dc mov r0, r8 | r0 = r8;
0x080272e0 mov r5, 0x200 | r5 = 0x200;
0x080272e4 stmdaeq r8, {r2, r3, r5, r7, r8, fp, ip, sp, lr} | __asm ("stmdaeq r8, {r2, r3, r5, r7, r8, fp, ip, sp, lr}");
0x080272e8 b 0x8026c38 | goto label_9;
| label_38:
0x080272ec mov r3, r5 | r3 = r5;
0x080272f0 b 0x8026c28 | goto label_19;
| }
; 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 @ 0x801fe2c */
| #include <stdint.h>
|
; (fcn) sym.ext4_set_aops () | void ext4_set_aops (uint32_t arg1) {
| r0 = arg1;
0x0801fe2c push {r4, lr} |
0x0801fe30 mov r4, r0 | r4 = r0;
0x0801fe34 stmdaeq r0, {r2, r3, r4, r6, r8, sb, sl, ip, sp} | __asm ("stmdaeq r0, {r2, r3, r4, r6, r8, sb, sl, ip, sp}");
0x0801fe38 sub r3, r0, 2 | r3 = r0 - 2;
0x0801fe3c bics r3, r3, 2 | __asm ("bics r3, r3, 2");
| if (? != ?) {
0x0801fe40 beq 0x801fe5c |
0x0801fe44 cmp r0, 1 |
| if (r0 != 1) {
0x0801fe48 bne 0x801fe80 | goto label_0;
| }
0x0801fe4c ldr r3, [r4, 0x18] | r3 = *((r4 + 0x18));
0x0801fe50 ldr r2, [pc, 0x2c] | r2 = $d;
0x0801fe54 str r2, [r3, 0x38] | *((r3 + 0x38)) = r2;
0x0801fe58 pop {r4, pc} |
| }
0x0801fe5c ldr r3, [r4, 0x14] | r3 = *((r4 + 0x14));
0x0801fe60 ldr r2, [r4, 0x18] | r2 = *((r4 + 0x18));
0x0801fe64 ldr r3, [r3, 0x1f0] | r3 = *((r3 + 0x1f0));
0x0801fe68 ldr r3, [r3, 0x4c] | r3 = *((r3 + 0x4c));
0x0801fe6c tst r3, 0x8000000 |
| if ((r3 & loc.imp.fs_overflowgid) == 0) {
0x0801fe70 ldrne r3, [pc, 0x10] | r3 = loc..LANCHOR0;
| }
| if ((r3 & loc.imp.fs_overflowgid) != 0) {
0x0801fe74 ldreq r3, [pc, 0x10] | r3 = loc..LANCHOR0;
| }
0x0801fe78 str r3, [r2, 0x38] | *((r2 + 0x38)) = r3;
0x0801fe7c pop {r4, pc} |
| label_0:
0x0801fe80 udf 0x12 | __asm ("udf 0x12");
| }
; 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 @ 0x8019c58 */
| #include <stdint.h>
|
| #define BIT_MASK(t,v) ((t)(-((v)!= 0)))&(((t)-1)>>((sizeof(t)*CHAR_BIT)-(v)))
|
; (fcn) sym.ext4_try_to_write_inline_data () | void ext4_try_to_write_inline_data (int32_t arg_60h, int32_t arg_64h, int32_t arg_68h, int32_t arg1, int32_t arg2) {
| int32_t var_0h;
| int32_t var_4h;
| int32_t var_8h;
| int32_t var_ch;
| int32_t var_10h;
| int32_t var_14h;
| int32_t var_1ch;
| int32_t var_20h;
| int32_t var_2ch;
| int32_t var_3ch;
| r0 = arg1;
| r1 = arg2;
0x08019c58 push {r4, r5, r6, r7, r8, sb, sl, fp, lr} |
0x08019c5c mov r6, r0 | r6 = r0;
0x08019c60 mov r4, r1 | r4 = r1;
0x08019c64 sub sp, sp, 0x3c |
0x08019c68 ldr r7, [sp, 0x60] | r7 = *(arg_60h);
0x08019c6c adds r7, r7, r2 | r7 += r2;
0x08019c70 adc r5, r3, 0 | __asm ("adc r5, r3, 0");
0x08019c74 add r3, r1, 0x1b4 | r3 = r1 + 0x1b4;
0x08019c78 ldrh r0, [r3] | r0 = *(r3);
0x08019c7c cmp r0, 0 |
| if (r0 != 0) {
0x08019c80 moveq r3, r0 | r3 = r0;
| }
| if (r0 != 0) {
0x08019c84 beq 0x8019c94 |
0x08019c88 mov r0, r1 | r0 = r1;
0x08019c8c bl 0x801891c | r0 = ext4_get_max_inline_size_part_0 ();
0x08019c90 asr r3, r0, 0x1f | r3 = r0 >> 0x1f;
| }
0x08019c94 cmp r0, r7 |
0x08019c98 sbcs r3, r3, r5 | __asm ("sbcs r3, r3, r5");
| if (r0 >= r7) {
0x08019c9c bge 0x8019f64 | goto label_20;
| }
| label_6:
0x08019ca0 ldr r3, [r4, -0x6c] | r3 = *((r4 - 0x6c));
0x08019ca4 mov r2, 0 | r2 = 0;
0x08019ca8 str r2, [sp, 0x1c] | var_1ch = r2;
0x08019cac tst r3, 0x10000000 |
0x08019cb0 bne 0x8019cdc |
| while (r3 == r2) {
0x08019cb4 mrs r2, apsr | r2 = apsr;
0x08019cb8 cpsid i | __asm ("cpsid i");
0x08019cbc ldr r3, [r4, -0x70] | r3 = *((r4 - 0x70));
0x08019cc0 bic r3, r3, 0x80 | r3 = BIT_MASK (r3, 0x80);
0x08019cc4 str r3, [r4, -0x70] | *((r4 - 0x70)) = r3;
0x08019cc8 msr cpsr_c, r2 | cpsr_c = r2;
0x08019ccc mov r5, 0 | r5 = 0;
| label_0:
0x08019cd0 mov r0, r5 | r0 = r5;
0x08019cd4 add sp, sp, 0x3c |
0x08019cd8 pop {r4, r5, r6, r7, r8, sb, sl, fp, pc} |
0x08019cdc movw r7, 0x1b6 | r7 = 0x1b6;
0x08019ce0 ldrh r3, [r4, r7] | r3 = *((r4 + r7));
0x08019ce4 cmp r3, r2 |
0x08019ce8 beq 0x8019cb4 |
| }
0x08019cec mov r0, r4 | r0 = r4;
0x08019cf0 stmdaeq r2, {r4, r5, r6, r7, sl, ip} | __asm ("stmdaeq r2, {r4, r5, r6, r7, sl, ip}");
0x08019cf4 add r1, sp, 0x2c | r1 += var_2ch;
0x08019cf8 mov sb, r0 | sb = r0;
0x08019cfc mov r0, r4 | r0 = r4;
0x08019d00 stmdaeq r2, {r3, r5, r6, r7, r8} | __asm ("stmdaeq r2, {r3, r5, r6, r7, r8}");
0x08019d04 subs r5, r0, 0 | r5 = r0 - 0;
| if (r5 != r0) {
0x08019d08 bne 0x8019cd0 | goto label_0;
| }
0x08019d0c stmdaeq r1, {r3, r4, r5, r6, r7, sl, fp, sp, lr, pc} | __asm ("stmdaeq r1, {r3, r4, r5, r6, r7, sl, fp, sp, lr, pc}");
0x08019d10 stmdaeq r1, {r3, r4, r5, r6, r7, sl, fp, sp, lr, pc} | __asm ("stmdaeq r1, {r3, r4, r5, r6, r7, sl, fp, sp, lr, pc}");
0x08019d14 add r3, r4, r7 | r3 = r4 + r7;
0x08019d18 str r3, [sp, 8] | var_8h = r3;
| label_1:
0x08019d1c ldr r0, [r4, 0x14] | r0 = *((r4 + 0x14));
0x08019d20 mov r3, sb | r3 = sb;
0x08019d24 mov r7, 0 | r7 = 0;
0x08019d28 mov r2, 2 | r2 = 2;
0x08019d2c ldr r1, [r0, 0x1f0] | r1 = *((r0 + 0x1f0));
0x08019d30 ldr r1, [r1, 0x2c] | r1 = *((r1 + 0x2c));
0x08019d34 str r7, [sp] | *(sp) = r7;
0x08019d38 lsl r1, r1, 3 | r1 <<= 3;
0x08019d3c str r1, [sp, 4] | var_4h = r1;
0x08019d40 mov r1, 0x228 | r1 = 0x228;
0x08019d44 stmdaeq r0, {r4, r5, r6, r7, r8, sb, sl, ip, sp} | __asm ("stmdaeq r0, {r4, r5, r6, r7, r8, sb, sl, ip, sp}");
0x08019d48 mov r8, r0 | r8 = r0;
0x08019d4c cmn r0, 0x1000 |
| if (r0 > 0x1000) {
0x08019d50 bhi 0x801a198 | goto label_21;
| }
0x08019d54 ldr r3, [sp, 0x64] | r3 = *(arg_64h);
0x08019d58 mov r1, r7 | r1 = r7;
0x08019d5c mov r0, r6 | r0 = r6;
0x08019d60 orr r3, r3, 2 | r3 |= 2;
0x08019d64 str r3, [sp, 0x64] | *(arg_64h) = r3;
0x08019d68 mov r2, r3 | r2 = r3;
0x08019d6c stmdaeq r8, {r2, r3, r4, r6, r7, fp, ip, sp, lr} | __asm ("stmdaeq r8, {r2, r3, r4, r6, r7, fp, ip, sp, lr}");
0x08019d70 subs r7, r0, 0 | r7 = r0 - 0;
| if (r7 == r0) {
0x08019d74 beq 0x801a2d4 | goto label_22;
| }
0x08019d78 sub sl, r4, 0x68 | sl = r4 - 0x68;
0x08019d7c mov r0, sl | r0 = sl;
0x08019d80 stmdaeq r8, {r2, r6, r7, r8, sb, sl, ip, sp, lr} | __asm ("stmdaeq r8, {r2, r6, r7, r8, sb, sl, ip, sp, lr}");
0x08019d84 ldr r3, [r4, -0x70] | r3 = *((r4 - 0x70));
0x08019d88 ubfx r3, r3, 3, 1 | r3 = (r3 >> 3) & ((1 << 1) - 1);
0x08019d8c str r3, [sp, 0xc] | var_ch = r3;
0x08019d90 mrs r2, apsr | r2 = apsr;
0x08019d94 cpsid i | __asm ("cpsid i");
0x08019d98 ldr r3, [r4, -0x70] | r3 = *((r4 - 0x70));
0x08019d9c orr r3, r3, 8 | r3 |= 8;
0x08019da0 str r3, [r4, -0x70] | *((r4 - 0x70)) = r3;
0x08019da4 msr cpsr_c, r2 | cpsr_c = r2;
0x08019da8 ldr r3, [r4, -0x6c] | r3 = *((r4 - 0x6c));
0x08019dac tst r3, 0x10000000 |
| if ((r3 & 0x10000000) == 0) {
0x08019db0 beq 0x801a120 | goto label_11;
| }
0x08019db4 ldr r3, [sp, 8] | r3 = var_8h;
0x08019db8 ldrh r3, [r3] | r3 = *(r3);
0x08019dbc cmp r3, 0 |
| if (r3 == 0) {
0x08019dc0 beq 0x801a120 | goto label_11;
| }
0x08019dc4 add r3, r4, 0x1b8 | r3 = r4 + 0x1b8;
0x08019dc8 ldrh r3, [r3] | r3 = *(r3);
0x08019dcc str r3, [sp, 0x14] | var_14h = r3;
0x08019dd0 ldr r3, [r7, 4] | r3 = *((r7 + 4));
0x08019dd4 tst r3, 1 |
| if ((r3 & 1) == 0) {
0x08019dd8 subne r3, r3, 1 | r3--;
| }
| if ((r3 & 1) != 0) {
0x08019ddc moveq r3, r7 | r3 = r7;
| }
0x08019de0 ldr r3, [r3] | r3 = *(r3);
0x08019de4 tst r3, 4 |
| if ((r3 & 4) == 0) {
0x08019de8 beq 0x801a240 | goto label_23;
| }
| label_10:
0x08019dec mov r1, r4 | r1 = r4;
0x08019df0 mov r0, r8 | r0 = r8;
0x08019df4 bl 0x8018da4 | r0 = ext4_destroy_inline_data_nolock ();
0x08019df8 cmp r0, 0 |
| if (r0 != 0) {
0x08019dfc bne 0x801a254 | goto label_24;
| }
0x08019e00 ldr r3, [r4, 0x14] | r3 = *((r4 + 0x14));
0x08019e04 ldr r3, [r3, 0x1f0] | r3 = *((r3 + 0x1f0));
0x08019e08 ldr r3, [r3, 0x4c] | r3 = *((r3 + 0x4c));
0x08019e0c tst r3, 0x400000 |
| if ((r3 & 0x400000) == 0) {
0x08019e10 beq 0x801a210 | goto label_25;
| }
0x08019e14 ldrh r3, [r4] | r3 = *(r4);
0x08019e18 and r3, r3, 0xf000 | r3 &= 0xf000;
0x08019e1c cmp r3, 0x8000 |
| if (r3 != 0x8000) {
0x08019e20 bne 0x801a210 | goto label_25;
| }
0x08019e24 ldr r3, [r4, -0x6c] | r3 = *((r4 - 0x6c));
0x08019e28 tst r3, 0x80000 |
| if ((r3 & 0x80000) == 0) {
0x08019e2c beq 0x801a210 | goto label_25;
| }
0x08019e30 mov r0, r4 | r0 = r4;
0x08019e34 stmdaeq r0, {r2, r3, r4, r6, r8, sb, sl, ip, sp} | __asm ("stmdaeq r0, {r2, r3, r4, r6, r8, sb, sl, ip, sp}");
0x08019e38 tst r0, 1 |
| if ((r0 & 1) != 0) {
0x08019e3c bne 0x801a210 | goto label_25;
| }
0x08019e40 ldr r3, [r4, 0x14] | r3 = *((r4 + 0x14));
0x08019e44 ldr r3, [r3, 0x1f0] | r3 = *((r3 + 0x1f0));
0x08019e48 ldr r3, [r3, 0x4c] | r3 = *((r3 + 0x4c));
0x08019e4c tst r3, 0x8000000 |
| if ((r3 & loc.imp.fs_overflowgid) == 0) {
0x08019e50 beq 0x801a210 | goto label_25;
| }
0x08019e54 ldr r3, [sp, 0x14] | r3 = var_14h;
0x08019e58 mov r0, r7 | r0 = r7;
0x08019e5c str r3, [sp] | *(sp) = r3;
0x08019e60 mov r2, 0 | r2 = 0;
0x08019e64 stmdaeq r1, {r3, r5, r6, ip, sp, lr, pc} | __asm ("stmdaeq r1, {r3, r5, r6, ip, sp, lr, pc}");
0x08019e68 stmdaeq r1, {r3, r5, r6, ip, sp, lr, pc} | __asm ("stmdaeq r1, {r3, r5, r6, ip, sp, lr, pc}");
0x08019e6c str r3, [sp, 4] | var_4h = r3;
0x08019e70 mov r3, 0 | r3 = 0;
0x08019e74 stmdaeq r8, {r5, r6, r7, fp, ip, sp, lr} | __asm ("stmdaeq r8, {r5, r6, r7, fp, ip, sp, lr}");
0x08019e78 str r0, [sp, 0x10] | var_10h = r0;
| label_8:
0x08019e7c ldr r3, [sp, 0x10] | r3 = var_10h;
0x08019e80 cmp r3, 0 |
| if (r3 == 0) {
0x08019e84 beq 0x801a0c0 | goto label_26;
| }
| label_19:
0x08019e88 mov r0, r7 | r0 = r7;
0x08019e8c stmdaeq r8, {r3, r4, r6, r7, fp, ip, sp, lr} | __asm ("stmdaeq r8, {r3, r4, r6, r7, fp, ip, sp, lr}");
0x08019e90 ldr r3, [r7, 4] | r3 = *((r7 + 4));
0x08019e94 tst r3, 1 |
| if ((r3 & 1) == 0) {
0x08019e98 subne r7, r3, 1 | r7 = r3 - 1;
| }
0x08019e9c add r3, r7, 0x1c | r3 = r7 + 0x1c;
0x08019ea0 pld [r3] | __asm ("pld [r3]");
| do {
0x08019ea4 ldrex r2, [r3] | __asm ("ldrex r2, [r3]");
0x08019ea8 sub r2, r2, 1 | r2--;
0x08019eac strex r1, r2, [r3] | __asm ("strex r1, r2, [r3]");
0x08019eb0 teq r1, 0 | __asm ("teq r1, 0");
0x08019eb4 bne 0x8019ea4 |
| } while ((r3 & 1) != 0);
0x08019eb8 cmp r2, 0 |
| if (r2 == 0) {
0x08019ebc beq 0x801a2c8 | goto label_27;
| }
| label_17:
0x08019ec0 mov r1, r4 | r1 = r4;
0x08019ec4 mov r0, r8 | r0 = r8;
0x08019ec8 stmdaeq r3, {r2, r4, r5, r6, sb, fp, ip, sp, pc} | __asm ("stmdaeq r3, {r2, r4, r5, r6, sb, fp, ip, sp, pc}");
0x08019ecc ldr r3, [sp, 0xc] | r3 = var_ch;
0x08019ed0 cmp r3, 0 |
| if (r3 == 0) {
0x08019ed4 beq 0x801a2ac | goto label_28;
| }
| label_16:
0x08019ed8 mov r0, sl | r0 = sl;
0x08019edc sub r7, r4, 0x10 | r7 = r4 - 0x10;
0x08019ee0 stmdaeq r8, {r3, r6, r7, r8, sb, sl, ip, sp, lr} | __asm ("stmdaeq r8, {r3, r6, r7, r8, sb, sl, ip, sp, lr}");
0x08019ee4 mov r1, 0x260 | r1 = 0x260;
0x08019ee8 mov r2, r8 | r2 = r8;
0x08019eec ldr r0, [pc, 0x440] | r0 = *(0x801a330);
0x08019ef0 stmdaeq r0, {r2, r3, r8, fp, ip, sp} | __asm ("stmdaeq r0, {r2, r3, r8, fp, ip, sp}");
0x08019ef4 mov r0, r7 | r0 = r7;
0x08019ef8 stmdaeq r8, {r2, r6, r7, r8, sb, sl, ip, sp, lr} | __asm ("stmdaeq r8, {r2, r6, r7, r8, sb, sl, ip, sp, lr}");
0x08019efc ldr r0, [r4, 0x18] | r0 = *((r4 + 0x18));
0x08019f00 ldrd r2, r3, [r4, 0x30] | __asm ("ldrd r2, r3, [r4, 0x30]");
0x08019f04 stmdaeq r8, {r5, r6, fp, ip, sp, lr} | __asm ("stmdaeq r8, {r5, r6, fp, ip, sp, lr}");
0x08019f08 mov r0, r4 | r0 = r4;
0x08019f0c stmdaeq r2, {r3, r4, r5, r6, lr} | __asm ("stmdaeq r2, {r3, r4, r5, r6, lr}");
0x08019f10 mov r0, r7 | r0 = r7;
0x08019f14 stmdaeq r8, {r3, r6, r7, r8, sb, sl, ip, sp, lr} | __asm ("stmdaeq r8, {r3, r6, r7, r8, sb, sl, ip, sp, lr}");
0x08019f18 ldr r3, [r4, 0x24] | r3 = *((r4 + 0x24));
0x08019f1c cmp r3, 0 |
| if (r3 != 0) {
0x08019f20 bne 0x801a29c | goto label_29;
| }
| label_15:
0x08019f24 ldr r3, [sp, 0x10] | r3 = var_10h;
0x08019f28 cmn r3, 0x1c |
| if (r3 != 0x1c) {
0x08019f2c bne 0x8019f44 | goto label_30;
| }
0x08019f30 ldr r0, [r4, 0x14] | r0 = *((r4 + 0x14));
0x08019f34 add r1, sp, 0x1c | r1 += var_1ch;
0x08019f38 stmdaeq r0, {r4, r5, r6, fp} | __asm ("stmdaeq r0, {r4, r5, r6, fp}");
0x08019f3c cmp r0, 0 |
| if (r0 != 0) {
0x08019f40 bne 0x8019d1c | goto label_1;
| }
| label_30:
0x08019f44 ldr r5, [sp, 0x10] | r5 = var_10h;
| label_4:
0x08019f48 ldr r0, [sp, 0x2c] | r0 = var_2ch;
0x08019f4c cmp r0, 0 |
| if (r0 == 0) {
0x08019f50 beq 0x8019cd0 | goto label_0;
| }
0x08019f54 stmdaeq r8, {r2, r3, r4, r6, r8, sb, sl, ip, sp, lr} | __asm ("stmdaeq r8, {r2, r3, r4, r6, r8, sb, sl, ip, sp, lr}");
| label_2:
0x08019f58 mov r0, r5 | r0 = r5;
0x08019f5c add sp, sp, 0x3c |
0x08019f60 pop {r4, r5, r6, r7, r8, sb, sl, fp, pc} |
| label_20:
0x08019f64 add r1, sp, 0x20 | r1 += var_20h;
0x08019f68 mov r0, r4 | r0 = r4;
0x08019f6c stmdaeq r2, {r3, r5, r6, r7, r8} | __asm ("stmdaeq r2, {r3, r5, r6, r7, r8}");
0x08019f70 subs r5, r0, 0 | r5 = r0 - 0;
| if (r5 != r0) {
0x08019f74 bne 0x8019cd0 | goto label_0;
| }
0x08019f78 ldr r0, [r4, 0x14] | r0 = *((r4 + 0x14));
0x08019f7c mov r3, 1 | r3 = 1;
0x08019f80 movw r1, 0x29b | r1 = 0x29b;
0x08019f84 mov r2, r3 | r2 = r3;
0x08019f88 ldr ip, [r0, 0x1f0] | ip = *((r0 + 0x1f0));
0x08019f8c ldr ip, [ip, 0x2c] | ip = *((ip + 0x2c));
0x08019f90 str r5, [sp] | *(sp) = r5;
0x08019f94 lsl ip, ip, 3 |
0x08019f98 str ip, [sp, 4] | var_4h = ip;
0x08019f9c stmdaeq r0, {r4, r5, r6, r7, r8, sb, sl, ip, sp} | __asm ("stmdaeq r0, {r4, r5, r6, r7, r8, sb, sl, ip, sp}");
0x08019fa0 cmn r0, 0x1000 |
0x08019fa4 mov r8, r0 | r8 = r0;
| if (r0 <= 0x1000) {
0x08019fa8 movhi r5, r0 | r5 = r0;
| }
| if (r0 <= 0x1000) {
0x08019fac bhi 0x801a080 |
0x08019fb0 mov r2, r7 | r2 = r7;
0x08019fb4 mov r1, r4 | r1 = r4;
0x08019fb8 bl 0x80198b0 | r0 = ext4_prepare_inline_data ();
0x08019fbc mov r5, r0 | r5 = r0;
0x08019fc0 cmp r0, 0 |
0x08019fc4 cmnne r0, 0x1c | __asm ("cmnne r0, 0x1c");
| if (r0 != 0) {
0x08019fc8 bne 0x801a094 | goto label_31;
| }
0x08019fcc cmn r0, 0x1c |
| if (r0 == 0x1c) {
0x08019fd0 beq 0x801a1a0 | goto label_32;
| }
0x08019fd4 ldr r3, [sp, 0x20] | r3 = var_20h;
0x08019fd8 mov r2, r8 | r2 = r8;
0x08019fdc ldr r0, [pc, 0x354] | r0 = "ext4_validate_block_bitmap";
0x08019fe0 movw r1, 0x2ad | r1 = 0x2ad;
0x08019fe4 stmdaeq r0, {r5, r6, r8, sb, fp, ip, sp} | __asm ("stmdaeq r0, {r5, r6, r8, sb, fp, ip, sp}");
0x08019fe8 subs r5, r0, 0 | r5 = r0 - 0;
| if (r5 != r0) {
0x08019fec bne 0x801a094 | goto label_31;
| }
0x08019ff0 ldr r3, [sp, 0x64] | r3 = *(arg_64h);
0x08019ff4 mov r0, r6 | r0 = r6;
0x08019ff8 mov r1, r5 | r1 = r5;
0x08019ffc orr r2, r3, 2 | r2 = r3 | 2;
0x0801a000 stmdaeq r8, {r2, r3, r4, r6, r7, fp, ip, sp, lr} | __asm ("stmdaeq r8, {r2, r3, r4, r6, r7, fp, ip, sp, lr}");
0x0801a004 subs r6, r0, 0 | r6 = r0 - 0;
| if (r6 == r0) {
0x0801a008 beq 0x801a188 | goto label_33;
| }
0x0801a00c ldr r3, [sp, 0x68] | r3 = *(arg_68h);
0x0801a010 sub sb, r4, 0x68 | sb = r4 - 0x68;
0x0801a014 mov r0, sb | r0 = sb;
0x0801a018 str r6, [r3] | *(r3) = r6;
0x0801a01c stmdaeq r8, {r3, r4, r6, r8, sb, sl, ip, sp, lr} | __asm ("stmdaeq r8, {r3, r4, r6, r8, sb, sl, ip, sp, lr}");
0x0801a020 ldr r7, [r4, -0x6c] | r7 = *((r4 - 0x6c));
0x0801a024 ubfx r7, r7, 0x1c, 1 | r7 = (r7 >> 0x1c) & ((1 << 1) - 1);
0x0801a028 cmp r7, 0 |
| if (r7 == 0) {
0x0801a02c beq 0x801a1c4 | goto label_34;
| }
0x0801a030 movw r3, 0x1b6 | r3 = 0x1b6;
0x0801a034 ldrh r3, [r4, r3] | r3 = *((r4 + r3));
0x0801a038 cmp r3, 0 |
| if (r3 == 0) {
0x0801a03c beq 0x801a1c4 | goto label_34;
| }
0x0801a040 ldr r3, [r6, 4] | r3 = *((r6 + 4));
0x0801a044 tst r3, 1 |
| if ((r3 & 1) == 0) {
0x0801a048 subne r3, r3, 1 | r3--;
| }
| if ((r3 & 1) != 0) {
0x0801a04c moveq r3, r6 | r3 = r6;
| }
0x0801a050 ldr r5, [r3] | r5 = *(r3);
0x0801a054 ubfx r5, r5, 2, 1 | r5 = (r5 >> 2) & ((1 << 1) - 1);
0x0801a058 cmp r5, 0 |
| if (r5 != 0) {
0x0801a05c bne 0x801a290 | goto label_35;
| }
0x0801a060 mov r0, r4 | r0 = r4;
0x0801a064 mov r1, r6 | r1 = r6;
0x0801a068 bl 0x8018f94 | r0 = ext4_read_inline_page ();
0x0801a06c subs r5, r0, 0 | r5 = r0 - 0;
| if (r5 < r0) {
0x0801a070 blt 0x801a2dc | goto label_36;
| }
0x0801a074 mov r0, sb | r0 = sb;
0x0801a078 mov r5, r7 | r5 = r7;
0x0801a07c stmdaeq r8, {r2, r4, r6, r8, sb, sl, ip, sp, lr} | __asm ("stmdaeq r8, {r2, r4, r6, r8, sb, sl, ip, sp, lr}");
| }
| label_3:
0x0801a080 ldr r0, [sp, 0x20] | r0 = var_20h;
0x0801a084 cmp r0, 0 |
| if (r0 == 0) {
0x0801a088 beq 0x8019cd0 | goto label_0;
| }
0x0801a08c stmdaeq r8, {r2, r3, r4, r6, r8, sb, sl, ip, sp, lr} | __asm ("stmdaeq r8, {r2, r3, r4, r6, r8, sb, sl, ip, sp, lr}");
0x0801a090 b 0x8019f58 | goto label_2;
| label_31:
0x0801a094 cmp r8, 0 |
0x0801a098 cmpne r5, 1 | __asm ("cmpne r5, 1");
| if (r8 == 0) {
0x0801a09c movne r4, 1 | r4 = 1;
| }
| if (r8 != 0) {
0x0801a0a0 moveq r4, 0 | r4 = 0;
| }
| label_7:
0x0801a0a4 cmp r4, 0 |
| if (r4 == 0) {
0x0801a0a8 beq 0x801a080 | goto label_3;
| }
| label_5:
0x0801a0ac mov r2, r8 | r2 = r8;
0x0801a0b0 movw r1, 0x2d1 | r1 = 0x2d1;
0x0801a0b4 ldr r0, [pc, 0x27c] | r0 = "ext4_validate_block_bitmap";
0x0801a0b8 stmdaeq r0, {r2, r3, r8, fp, ip, sp} | __asm ("stmdaeq r0, {r2, r3, r8, fp, ip, sp}");
0x0801a0bc b 0x801a080 | goto label_3;
| label_26:
0x0801a0c0 mov r0, r4 | r0 = r4;
0x0801a0c4 stmdaeq r0, {r2, r3, r4, r6, r8, sb, sl, ip, sp} | __asm ("stmdaeq r0, {r2, r3, r4, r6, r8, sb, sl, ip, sp}");
0x0801a0c8 tst r0, 1 |
| if ((r0 & 1) != 0) {
0x0801a0cc beq 0x801a10c |
0x0801a0d0 ldr r3, [r7] | r3 = *(r7);
0x0801a0d4 tst r3, 0x2000 |
| if ((r3 & 0x2000) == 0) {
0x0801a0d8 beq 0x801a328 | goto label_37;
| }
0x0801a0dc ldr r3, [sp, 0x10] | r3 = var_10h;
0x0801a0e0 mov r0, r8 | r0 = r8;
0x0801a0e4 ldr r1, [r7, 0x14] | r1 = *((r7 + 0x14));
0x0801a0e8 stmdaeq r1, {r2, r3, r4, r5, sl, fp, ip, sp, lr, pc} | __asm ("stmdaeq r1, {r2, r3, r4, r5, sl, fp, ip, sp, lr, pc}");
0x0801a0ec stmdaeq r1, {r2, r3, r4, r5, sl, fp, ip, sp, lr, pc} | __asm ("stmdaeq r1, {r2, r3, r4, r5, sl, fp, ip, sp, lr, pc}");
0x0801a0f0 mov r2, r3 | r2 = r3;
0x0801a0f4 str r3, [sp] | *(sp) = r3;
0x0801a0f8 str ip, [sp, 4] | var_4h = ip;
0x0801a0fc ldr r3, [sp, 0x14] | r3 = var_14h;
0x0801a100 stmdaeq r1, {r4, r6, r8, sb, fp, ip, sp, lr, pc} | __asm ("stmdaeq r1, {r4, r6, r8, sb, fp, ip, sp, lr, pc}");
0x0801a104 cmp r0, 0 |
| if (r0 != 0) {
0x0801a108 bne 0x801a32c | goto label_38;
| }
| }
0x0801a10c mov r5, 0 | r5 = 0;
0x0801a110 ldr r2, [sp, 0x14] | r2 = var_14h;
0x0801a114 mov r0, r7 | r0 = r7;
0x0801a118 mov r1, 0 | r1 = 0;
0x0801a11c stmdaeq r8, {r2, r5, r6, r7, fp, ip, sp, lr} | __asm ("stmdaeq r8, {r2, r5, r6, r7, fp, ip, sp, lr}");
| label_11:
0x0801a120 mov r0, r7 | r0 = r7;
0x0801a124 stmdaeq r8, {r3, r4, r6, r7, fp, ip, sp, lr} | __asm ("stmdaeq r8, {r3, r4, r6, r7, fp, ip, sp, lr}");
0x0801a128 ldr r3, [r7, 4] | r3 = *((r7 + 4));
0x0801a12c tst r3, 1 |
| if ((r3 & 1) != 0) {
0x0801a130 bne 0x801a288 | goto label_39;
| }
| label_14:
0x0801a134 add r3, r7, 0x1c | r3 = r7 + 0x1c;
0x0801a138 pld [r3] | __asm ("pld [r3]");
| do {
0x0801a13c ldrex r2, [r3] | __asm ("ldrex r2, [r3]");
0x0801a140 sub r2, r2, 1 | r2--;
0x0801a144 strex r1, r2, [r3] | __asm ("strex r1, r2, [r3]");
0x0801a148 teq r1, 0 | __asm ("teq r1, 0");
0x0801a14c bne 0x801a13c |
| } while ((r3 & 1) != 0);
0x0801a150 cmp r2, 0 |
| if (r2 == 0) {
0x0801a154 beq 0x801a234 | goto label_40;
| }
| label_9:
0x0801a158 ldr r3, [sp, 0xc] | r3 = var_ch;
0x0801a15c cmp r3, 0 |
| if (r3 == 0) {
0x0801a160 beq 0x801a25c | goto label_41;
| }
| label_12:
0x0801a164 mov r0, sl | r0 = sl;
0x0801a168 stmdaeq r8, {r3, r6, r7, r8, sb, sl, ip, sp, lr} | __asm ("stmdaeq r8, {r3, r6, r7, r8, sb, sl, ip, sp, lr}");
| label_18:
0x0801a16c cmp r8, 0 |
| if (r8 == 0) {
0x0801a170 beq 0x8019f48 | goto label_4;
| }
0x0801a174 mov r2, r8 | r2 = r8;
0x0801a178 movw r1, 0x27a | r1 = 0x27a;
0x0801a17c ldr r0, [pc, 0x1b0] | r0 = *(0x801a330);
0x0801a180 stmdaeq r0, {r2, r3, r8, fp, ip, sp} | __asm ("stmdaeq r0, {r2, r3, r8, fp, ip, sp}");
0x0801a184 b 0x8019f48 | goto label_4;
| label_33:
0x0801a188 cmp r8, 0 |
0x0801a18c mvn r5, 0xb | r5 = ~0xb;
| if (r8 == 0) {
0x0801a190 beq 0x801a080 | goto label_3;
| }
0x0801a194 b 0x801a0ac | goto label_5;
| label_21:
0x0801a198 mov r5, r0 | r5 = r0;
0x0801a19c b 0x8019f48 | goto label_4;
| label_32:
0x0801a1a0 ldr r0, [pc, 0x190] | r0 = "ext4_validate_block_bitmap";
0x0801a1a4 mov r2, r8 | r2 = r8;
0x0801a1a8 mov r1, 0x2a8 | r1 = 0x2a8;
0x0801a1ac stmdaeq r0, {r2, r3, r8, fp, ip, sp} | __asm ("stmdaeq r0, {r2, r3, r8, fp, ip, sp}");
0x0801a1b0 ldr r0, [sp, 0x20] | r0 = var_20h;
0x0801a1b4 cmp r0, 0 |
| if (r0 == 0) {
0x0801a1b8 beq 0x8019ca0 | goto label_6;
| }
0x0801a1bc stmdaeq r8, {r2, r3, r4, r6, r8, sb, sl, ip, sp, lr} | __asm ("stmdaeq r8, {r2, r3, r4, r6, r8, sb, sl, ip, sp, lr}");
0x0801a1c0 b 0x8019ca0 | goto label_6;
| label_34:
0x0801a1c4 mov r0, r6 | r0 = r6;
0x0801a1c8 stmdaeq r8, {r3, r4, r6, r7, fp, ip, sp, lr} | __asm ("stmdaeq r8, {r3, r4, r6, r7, fp, ip, sp, lr}");
0x0801a1cc ldr r3, [r6, 4] | r3 = *((r6 + 4));
0x0801a1d0 tst r3, 1 |
| if ((r3 & 1) == 0) {
0x0801a1d4 subne r6, r3, 1 | r6 = r3 - 1;
| }
0x0801a1d8 add r3, r6, 0x1c | r3 = r6 + 0x1c;
0x0801a1dc pld [r3] | __asm ("pld [r3]");
| do {
0x0801a1e0 ldrex r2, [r3] | __asm ("ldrex r2, [r3]");
0x0801a1e4 sub r2, r2, 1 | r2--;
0x0801a1e8 strex r1, r2, [r3] | __asm ("strex r1, r2, [r3]");
0x0801a1ec teq r1, 0 | __asm ("teq r1, 0");
0x0801a1f0 bne 0x801a1e0 |
| } while ((r3 & 1) != 0);
0x0801a1f4 subs r4, r8, 0 | r4 = r8 - 0;
| if (r4 == r8) {
0x0801a1f8 movne r4, 1 | r4 = 1;
| }
0x0801a1fc cmp r2, 0 |
| if (r2 == 0) {
0x0801a200 beq 0x801a278 | goto label_42;
| }
| label_13:
0x0801a204 mov r0, sb | r0 = sb;
0x0801a208 stmdaeq r8, {r2, r4, r6, r8, sb, sl, ip, sp, lr} | __asm ("stmdaeq r8, {r2, r4, r6, r8, sb, sl, ip, sp, lr}");
0x0801a20c b 0x801a0a4 | goto label_7;
| label_25:
0x0801a210 ldr r3, [sp, 0x14] | r3 = var_14h;
0x0801a214 mov r0, r7 | r0 = r7;
0x0801a218 str r3, [sp] | *(sp) = r3;
0x0801a21c mov r2, 0 | r2 = 0;
0x0801a220 str fp, [sp, 4] | var_4h = fp;
0x0801a224 mov r3, 0 | r3 = 0;
0x0801a228 stmdaeq r8, {r5, r6, r7, fp, ip, sp, lr} | __asm ("stmdaeq r8, {r5, r6, r7, fp, ip, sp, lr}");
0x0801a22c str r0, [sp, 0x10] | var_10h = r0;
0x0801a230 b 0x8019e7c | goto label_8;
| label_40:
0x0801a234 mov r0, r7 | r0 = r7;
0x0801a238 stmdaeq r8, {r3, r5, r6, r7, fp, ip, sp, lr} | __asm ("stmdaeq r8, {r3, r5, r6, r7, fp, ip, sp, lr}");
0x0801a23c b 0x801a158 | goto label_9;
| label_23:
0x0801a240 mov r1, r7 | r1 = r7;
0x0801a244 mov r0, r4 | r0 = r4;
0x0801a248 bl 0x8018f94 | r0 = ext4_read_inline_page ();
0x0801a24c cmp r0, 0 |
| if (r0 >= 0) {
0x0801a250 bge 0x8019dec | goto label_10;
| }
| label_24:
0x0801a254 mov r5, r0 | r5 = r0;
0x0801a258 b 0x801a120 | goto label_11;
| label_41:
0x0801a25c mrs r2, apsr | r2 = apsr;
0x0801a260 cpsid i | __asm ("cpsid i");
0x0801a264 ldr r3, [r4, -0x70] | r3 = *((r4 - 0x70));
0x0801a268 bic r3, r3, 8 | r3 = BIT_MASK (r3, 8);
0x0801a26c str r3, [r4, -0x70] | *((r4 - 0x70)) = r3;
0x0801a270 msr cpsr_c, r2 | cpsr_c = r2;
0x0801a274 b 0x801a164 | goto label_12;
| label_42:
0x0801a278 mov r0, r6 | r0 = r6;
0x0801a27c mov r5, r2 | r5 = r2;
0x0801a280 stmdaeq r8, {r3, r5, r6, r7, fp, ip, sp, lr} | __asm ("stmdaeq r8, {r3, r5, r6, r7, fp, ip, sp, lr}");
0x0801a284 b 0x801a204 | goto label_13;
| label_39:
0x0801a288 sub r7, r3, 1 | r7 = r3 - 1;
0x0801a28c b 0x801a134 | goto label_14;
| label_35:
0x0801a290 mov r0, sb | r0 = sb;
0x0801a294 stmdaeq r8, {r2, r4, r6, r8, sb, sl, ip, sp, lr} | __asm ("stmdaeq r8, {r2, r4, r6, r8, sb, sl, ip, sp, lr}");
0x0801a298 b 0x801a080 | goto label_3;
| label_29:
0x0801a29c mov r1, r4 | r1 = r4;
0x0801a2a0 mov r0, 0 | r0 = 0;
0x0801a2a4 stmdaeq r3, {r2, r4, r6, r7, sb, ip, lr, pc} | __asm ("stmdaeq r3, {r2, r4, r6, r7, sb, ip, lr, pc}");
0x0801a2a8 b 0x8019f24 | goto label_15;
| label_28:
0x0801a2ac mrs r2, apsr | r2 = apsr;
0x0801a2b0 cpsid i | __asm ("cpsid i");
0x0801a2b4 ldr r3, [r4, -0x70] | r3 = *((r4 - 0x70));
0x0801a2b8 bic r3, r3, 8 | r3 = BIT_MASK (r3, 8);
0x0801a2bc str r3, [r4, -0x70] | *((r4 - 0x70)) = r3;
0x0801a2c0 msr cpsr_c, r2 | cpsr_c = r2;
0x0801a2c4 b 0x8019ed8 | goto label_16;
| label_27:
0x0801a2c8 mov r0, r7 | r0 = r7;
0x0801a2cc stmdaeq r8, {r3, r5, r6, r7, fp, ip, sp, lr} | __asm ("stmdaeq r8, {r3, r5, r6, r7, fp, ip, sp, lr}");
0x0801a2d0 b 0x8019ec0 | goto label_17;
| label_22:
0x0801a2d4 mvn r5, 0xb | r5 = ~0xb;
0x0801a2d8 b 0x801a16c | goto label_18;
| label_36:
0x0801a2dc mov r0, r6 | r0 = r6;
0x0801a2e0 stmdaeq r8, {r3, r4, r6, r7, fp, ip, sp, lr} | __asm ("stmdaeq r8, {r3, r4, r6, r7, fp, ip, sp, lr}");
0x0801a2e4 ldr r3, [r6, 4] | r3 = *((r6 + 4));
0x0801a2e8 tst r3, 1 |
| if ((r3 & 1) == 0) {
0x0801a2ec subne r6, r3, 1 | r6 = r3 - 1;
| }
0x0801a2f0 add r3, r6, 0x1c | r3 = r6 + 0x1c;
0x0801a2f4 pld [r3] | __asm ("pld [r3]");
| do {
0x0801a2f8 ldrex r2, [r3] | __asm ("ldrex r2, [r3]");
0x0801a2fc sub r2, r2, 1 | r2--;
0x0801a300 strex r1, r2, [r3] | __asm ("strex r1, r2, [r3]");
0x0801a304 teq r1, 0 | __asm ("teq r1, 0");
0x0801a308 bne 0x801a2f8 |
| } while ((r3 & 1) != 0);
0x0801a30c subs r4, r8, 0 | r4 = r8 - 0;
| if (r4 == r8) {
0x0801a310 movne r4, 1 | r4 = 1;
| }
0x0801a314 cmp r2, 0 |
| if (r2 != 0) {
0x0801a318 bne 0x801a204 | goto label_13;
| }
0x0801a31c mov r0, r6 | r0 = r6;
0x0801a320 stmdaeq r8, {r3, r5, r6, r7, fp, ip, sp, lr} | __asm ("stmdaeq r8, {r3, r5, r6, r7, fp, ip, sp, lr}");
0x0801a324 b 0x801a204 | goto label_13;
| label_37:
0x0801a328 udf 0x12 | __asm ("udf 0x12");
| label_38:
0x0801a32c str r0, [sp, 0x10] | var_10h = r0;
0x0801a330 b 0x8019e88 | goto label_19;
| }
; 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 @ 0x8024434 */
| #include <stdint.h>
|
; (fcn) sym.ext4_write_begin () | void ext4_write_begin (int32_t arg_70h, int32_t arg_74h, int32_t arg_78h, int32_t arg2) {
| int32_t var_0h;
| int32_t var_4h;
| int32_t var_8h;
| int32_t var_10h;
| int32_t var_14h;
| int32_t var_18h;
| int32_t var_1ch;
| int32_t var_20h;
| int32_t var_24h;
| int32_t var_28h;
| int32_t var_2ch;
| int32_t var_30h;
| int32_t var_34h;
| int32_t var_38h;
| int32_t var_3ch;
| int32_t var_44h;
| int32_t var_4ch;
| r1 = arg2;
0x08024434 push {r4, r5, r6, r7, r8, sb, sl, fp, lr} |
0x08024438 mov fp, r3 |
0x0802443c mov r3, 0 | r3 = 0;
0x08024440 sub sp, sp, 0x4c |
0x08024444 ldr r4, [r1] | r4 = *(r1);
0x08024448 str r3, [sp, 0x44] | var_44h = r3;
0x0802444c ldr r3, [r4, 0x14] | r3 = *((r4 + 0x14));
0x08024450 str r1, [sp, 0x10] | var_10h = r1;
0x08024454 ldr r3, [r3, 0x1f0] | r3 = *((r3 + 0x1f0));
0x08024458 ldr r5, [r3, 0x130] | r5 = *((r3 + 0x130));
0x0802445c ubfx r5, r5, 1, 1 | r5 = (r5 >> 1) & ((1 << 1) - 1);
0x08024460 cmp r5, 0 |
| if (r5 != 0) {
0x08024464 bne 0x80248a4 | goto label_10;
| }
0x08024468 mov r0, r4 | r0 = r4;
0x0802446c mov sl, r2 | sl = r2;
0x08024470 stmdaeq r2, {r4, r5, r6, r7, sl, ip} | __asm ("stmdaeq r2, {r4, r5, r6, r7, sl, ip}");
0x08024474 add r3, r0, 1 | r3 = r0 + 1;
0x08024478 str r3, [sp, 0x14] | var_14h = r3;
0x0802447c ldr r3, [r4, -0x70] | r3 = *((r4 - 0x70));
0x08024480 ldr r2, [sp, 0x70] | r2 = *(arg_70h);
0x08024484 tst r3, 0x80 |
0x08024488 lsr r3, sl, 0xc | r3 = sl >> 0xc;
0x0802448c orr r3, r3, fp, lsl 20 | r3 |= (fp << 20);
0x08024490 str r3, [sp, 0x24] | var_24h = r3;
0x08024494 ubfx r3, sl, 0, 0xc | r3 = (sl >> 0) & ((1 << 0xc) - 1);
0x08024498 str r3, [sp, 0x28] | var_28h = r3;
0x0802449c add r3, r2, r3 | r3 = r2 + r3;
0x080244a0 str r3, [sp, 0x2c] | var_2ch = r3;
| if ((r3 & 0x80) != 0) {
0x080244a4 bne 0x8024854 | goto label_11;
| }
| label_7:
0x080244a8 stmdaeq r1, {r3, r4, r5, r6, r7, sl, fp, sp, lr, pc} | __asm ("stmdaeq r1, {r3, r4, r5, r6, r7, sl, fp, sp, lr, pc}");
0x080244ac stmdaeq r1, {r3, r4, r5, r6, r7, sl, fp, sp, lr, pc} | __asm ("stmdaeq r1, {r3, r4, r5, r6, r7, sl, fp, sp, lr, pc}");
0x080244b0 str r3, [sp, 0x1c] | var_1ch = r3;
0x080244b4 mov r3, 0xf000 |
0x080244b8 movt r3, 0xffff | r3 = 0x-1000;
0x080244bc str r3, [sp, 0x18] | var_18h = r3;
0x080244c0 stmdaeq r1, {r3, r5, r6, ip, sp, lr, pc} | __asm ("stmdaeq r1, {r3, r5, r6, ip, sp, lr, pc}");
0x080244c4 stmdaeq r1, {r3, r5, r6, ip, sp, lr, pc} | __asm ("stmdaeq r1, {r3, r5, r6, ip, sp, lr, pc}");
0x080244c8 str r3, [sp, 0x20] | var_20h = r3;
| label_9:
0x080244cc ldr r2, [sp, 0x74] | r2 = *(arg_74h);
0x080244d0 ldr r1, [sp, 0x24] | r1 = var_24h;
0x080244d4 ldr r0, [sp, 0x10] | r0 = var_10h;
0x080244d8 stmdaeq r8, {r2, r3, r4, r6, r7, fp, ip, sp, lr} | __asm ("stmdaeq r8, {r2, r3, r4, r6, r7, fp, ip, sp, lr}");
0x080244dc subs r5, r0, 0 | r5 = r0 - 0;
| if (r5 == r0) {
0x080244e0 beq 0x802490c | goto label_12;
| }
0x080244e4 stmdaeq r8, {r3, r4, r6, r7, fp, ip, sp, lr} | __asm ("stmdaeq r8, {r3, r4, r6, r7, fp, ip, sp, lr}");
| label_0:
0x080244e8 ldr r0, [r4, 0x14] | r0 = *((r4 + 0x14));
0x080244ec mov ip, 0 |
0x080244f0 ldr r3, [sp, 0x14] | r3 = var_14h;
0x080244f4 mov r2, 2 | r2 = 2;
0x080244f8 ldr r1, [r0, 0x1f0] | r1 = *((r0 + 0x1f0));
0x080244fc ldr r1, [r1, 0x2c] | r1 = *((r1 + 0x2c));
0x08024500 str ip, [sp] | *(sp) = ip;
0x08024504 lsl r1, r1, 3 | r1 <<= 3;
0x08024508 str r1, [sp, 4] | var_4h = r1;
0x0802450c movw r1, 0x49c | r1 = 0x49c;
0x08024510 stmdaeq r0, {r4, r5, r6, r7, r8, sb, sl, ip, sp} | __asm ("stmdaeq r0, {r4, r5, r6, r7, r8, sb, sl, ip, sp}");
0x08024514 ldr r3, [r5, 4] | r3 = *((r5 + 4));
0x08024518 mov sb, r0 | sb = r0;
0x0802451c cmn r0, 0x1000 |
| if (r0 > 0x1000) {
0x08024520 bhi 0x8024808 | goto label_13;
| }
0x08024524 tst r3, 1 |
| if ((r3 & 1) == 0) {
0x08024528 subne r3, r3, 1 | r3--;
| }
| if ((r3 & 1) != 0) {
0x0802452c moveq r3, r5 | r3 = r5;
| }
0x08024530 ldr r2, [r3] | r2 = *(r3);
0x08024534 tst r2, 1 |
| if ((r2 & 1) != 0) {
0x08024538 bne 0x80246fc | goto label_14;
| }
0x0802453c pld [r3] | __asm ("pld [r3]");
| do {
0x08024540 ldrex r2, [r3] | __asm ("ldrex r2, [r3]");
0x08024544 orr r1, r2, 1 | r1 = r2 | 1;
0x08024548 strex r0, r1, [r3] | __asm ("strex r0, r1, [r3]");
0x0802454c teq r0, 0 | __asm ("teq r0, 0");
0x08024550 bne 0x8024540 |
| } while ((r2 & 1) != 0);
0x08024554 tst r2, 1 |
| if ((r2 & 1) != 0) {
0x08024558 bne 0x80246fc | goto label_14;
| }
| label_2:
0x0802455c ldr r3, [r5, 0xc] | r3 = *((r5 + 0xc));
0x08024560 mov r0, r5 | r0 = r5;
0x08024564 ldr r2, [sp, 0x10] | r2 = var_10h;
0x08024568 cmp r3, r2 |
| if (r3 != r2) {
0x0802456c bne 0x80248b8 | goto label_15;
| }
0x08024570 stmdaeq r8, {r2, r3, r5, r7, r8, fp, ip, sp, lr} | __asm ("stmdaeq r8, {r2, r3, r5, r7, r8, fp, ip, sp, lr}");
0x08024574 ldr r3, [r4, 0x14] | r3 = *((r4 + 0x14));
0x08024578 ldr r3, [r3, 0x1f0] | r3 = *((r3 + 0x1f0));
0x0802457c ldr r3, [r3, 0x4c] | r3 = *((r3 + 0x4c));
0x08024580 tst r3, 0x400000 |
| if ((r3 & 0x400000) != 0) {
0x08024584 beq 0x80245d0 |
0x08024588 ldrh r3, [r4] | r3 = *(r4);
0x0802458c ldr r2, [sp, 0x18] | r2 = var_18h;
0x08024590 and r3, r3, r2 | r3 &= r2;
0x08024594 cmp r3, 0x8000 |
| if (r3 != 0x8000) {
0x08024598 bne 0x80245d0 | goto label_16;
| }
0x0802459c ldr r3, [r4, -0x6c] | r3 = *((r4 - 0x6c));
0x080245a0 tst r3, 0x80000 |
| if ((r3 & 0x80000) == 0) {
0x080245a4 beq 0x80245d0 | goto label_16;
| }
0x080245a8 mov r0, r4 | r0 = r4;
0x080245ac stmdaeq r0, {r2, r3, r4, r6, r8, sb, sl, ip, sp} | __asm ("stmdaeq r0, {r2, r3, r4, r6, r8, sb, sl, ip, sp}");
0x080245b0 tst r0, 1 |
| if ((r0 & 1) != 0) {
0x080245b4 bne 0x80245d0 | goto label_16;
| }
0x080245b8 ldr r3, [r4, 0x14] | r3 = *((r4 + 0x14));
0x080245bc ldr r3, [r3, 0x1f0] | r3 = *((r3 + 0x1f0));
0x080245c0 ldr r3, [r3, 0x4c] | r3 = *((r3 + 0x4c));
0x080245c4 tst r3, 0x8000000 |
| if ((r3 & loc.imp.fs_overflowgid) == 0) {
0x080245c8 ldrne r3, [sp, 0x20] | r3 = var_20h;
| }
| if ((r3 & loc.imp.fs_overflowgid) != 0) {
0x080245cc bne 0x80245d4 | goto label_17;
| }
| }
| label_16:
0x080245d0 ldr r3, [sp, 0x1c] | r3 = var_1ch;
| label_17:
0x080245d4 str r3, [sp, 4] | var_4h = r3;
0x080245d8 mov r2, sl | r2 = sl;
0x080245dc ldr r3, [sp, 0x70] | r3 = *(arg_70h);
0x080245e0 mov r0, r5 | r0 = r5;
0x080245e4 str r3, [sp] | *(sp) = r3;
0x080245e8 mov r3, fp | r3 = fp;
0x080245ec stmdaeq r8, {r5, r6, r7, fp, ip, sp, lr} | __asm ("stmdaeq r8, {r5, r6, r7, fp, ip, sp, lr}");
0x080245f0 mov r7, r0 | r7 = r0;
0x080245f4 cmp r0, 0 |
| if (r0 == 0) {
0x080245f8 beq 0x8024708 | goto label_18;
| }
| label_4:
0x080245fc ldr r3, [sp, 0x70] | r3 = *(arg_70h);
0x08024600 ldr r0, [r4, 0x30] | r0 = *((r4 + 0x30));
0x08024604 adds r1, r3, sl | r1 = r3 + sl;
0x08024608 ldr r3, [r4, 0x34] | r3 = *((r4 + 0x34));
0x0802460c adc r2, fp, 0 | __asm ("adc r2, arg_70h");
0x08024610 cmp r0, r1 |
0x08024614 sbcs r3, r3, r2 | __asm ("sbcs r3, r3, r2");
| if (r0 >= r1) {
0x08024618 bge 0x80246e0 | goto label_19;
| }
0x0802461c mov r0, r5 | r0 = r5;
0x08024620 stmdaeq r8, {r3, r4, r6, r7, fp, ip, sp, lr} | __asm ("stmdaeq r8, {r3, r4, r6, r7, fp, ip, sp, lr}");
0x08024624 ldrh r3, [r4] | r3 = *(r4);
0x08024628 ldr r2, [sp, 0x18] | r2 = var_18h;
0x0802462c and r3, r3, r2 | r3 &= r2;
0x08024630 sub r2, r3, 0x4000 | r2 = r3 - 0x4000;
0x08024634 tst r2, 0xb000 |
| if ((r2 & 0xb000) == 0) {
0x08024638 beq 0x80247f8 | goto label_20;
| }
0x0802463c cmp r3, 0xa000 |
| if (r3 == 0xa000) {
0x08024640 beq 0x80247e8 | goto label_21;
| }
| label_5:
0x08024644 movw r1, 0x4d1 | r1 = 0x4d1;
0x08024648 mov r2, sb | r2 = sb;
0x0802464c sub r6, r4, 0x10 | r6 = r4 - 0x10;
0x08024650 ldr r0, [pc, 0x2bc] | r0 = *(0x8024910);
0x08024654 stmdaeq r0, {r2, r3, r8, fp, ip, sp} | __asm ("stmdaeq r0, {r2, r3, r8, fp, ip, sp}");
0x08024658 mov r0, r6 | r0 = r6;
0x0802465c stmdaeq r8, {r2, r6, r7, r8, sb, sl, ip, sp, lr} | __asm ("stmdaeq r8, {r2, r6, r7, r8, sb, sl, ip, sp, lr}");
0x08024660 ldr r0, [r4, 0x18] | r0 = *((r4 + 0x18));
0x08024664 ldrd r2, r3, [r4, 0x30] | __asm ("ldrd r2, r3, [r4, 0x30]");
0x08024668 stmdaeq r8, {r5, r6, fp, ip, sp, lr} | __asm ("stmdaeq r8, {r5, r6, fp, ip, sp, lr}");
0x0802466c mov r0, r4 | r0 = r4;
0x08024670 stmdaeq r2, {r3, r4, r5, r6, lr} | __asm ("stmdaeq r2, {r3, r4, r5, r6, lr}");
0x08024674 mov r0, r6 | r0 = r6;
0x08024678 stmdaeq r8, {r3, r6, r7, r8, sb, sl, ip, sp, lr} | __asm ("stmdaeq r8, {r3, r6, r7, r8, sb, sl, ip, sp, lr}");
0x0802467c ldr r3, [r4, 0x24] | r3 = *((r4 + 0x24));
0x08024680 cmp r3, 0 |
| if (r3 != 0) {
0x08024684 bne 0x8024844 | goto label_22;
| }
| label_1:
0x08024688 cmn r7, 0x1c |
| if (r7 != 0x1c) {
0x0802468c bne 0x80246a4 | goto label_23;
| }
0x08024690 ldr r0, [r4, 0x14] | r0 = *((r4 + 0x14));
0x08024694 add r1, sp, 0x44 | r1 += var_44h;
0x08024698 stmdaeq r0, {r4, r5, r6, fp} | __asm ("stmdaeq r0, {r4, r5, r6, fp}");
0x0802469c cmp r0, 0 |
| if (r0 != 0) {
0x080246a0 bne 0x80244e8 | goto label_0;
| }
| label_23:
0x080246a4 ldr r3, [r5, 4] | r3 = *((r5 + 4));
0x080246a8 tst r3, 1 |
| if ((r3 & 1) == 0) {
0x080246ac subne r5, r3, 1 | r5 = r3 - 1;
| }
0x080246b0 add r3, r5, 0x1c | r3 = r5 + 0x1c;
0x080246b4 pld [r3] | __asm ("pld [r3]");
| do {
0x080246b8 ldrex r2, [r3] | __asm ("ldrex r2, [r3]");
0x080246bc sub r2, r2, 1 | r2--;
0x080246c0 strex r1, r2, [r3] | __asm ("strex r1, r2, [r3]");
0x080246c4 teq r1, 0 | __asm ("teq r1, 0");
0x080246c8 bne 0x80246b8 |
| } while ((r3 & 1) != 0);
0x080246cc cmp r2, 0 |
| if (r2 != 0) {
0x080246d0 bne 0x80247c8 | goto label_6;
| }
0x080246d4 mov r0, r5 | r0 = r5;
0x080246d8 stmdaeq r8, {r3, r5, r6, r7, fp, ip, sp, lr} | __asm ("stmdaeq r8, {r3, r5, r6, r7, fp, ip, sp, lr}");
0x080246dc b 0x80247c8 | goto label_6;
| label_19:
0x080246e0 mov r0, r5 | r0 = r5;
0x080246e4 stmdaeq r8, {r3, r4, r6, r7, fp, ip, sp, lr} | __asm ("stmdaeq r8, {r3, r4, r6, r7, fp, ip, sp, lr}");
0x080246e8 mov r2, sb | r2 = sb;
0x080246ec movw r1, 0x4d1 | r1 = 0x4d1;
0x080246f0 ldr r0, [pc, 0x21c] | r0 = *(0x8024910);
0x080246f4 stmdaeq r0, {r2, r3, r8, fp, ip, sp} | __asm ("stmdaeq r0, {r2, r3, r8, fp, ip, sp}");
0x080246f8 b 0x8024688 | goto label_1;
| label_14:
0x080246fc mov r0, r5 | r0 = r5;
0x08024700 stmdaeq r8, {r3, r4, r5, r8, fp, ip, sp, lr} | __asm ("stmdaeq r8, {r3, r4, r5, r8, fp, ip, sp, lr}");
0x08024704 b 0x802455c | goto label_2;
| label_18:
0x08024708 mov r0, r4 | r0 = r4;
0x0802470c stmdaeq r0, {r2, r3, r4, r6, r8, sb, sl, ip, sp} | __asm ("stmdaeq r0, {r2, r3, r4, r6, r8, sb, sl, ip, sp}");
0x08024710 tst r0, 1 |
| if ((r0 & 1) == 0) {
0x08024714 beq 0x80247c0 | goto label_24;
| }
0x08024718 ldr r3, [r5] | r3 = *(r5);
0x0802471c tst r3, 0x2000 |
| if ((r3 & 0x2000) == 0) {
0x08024720 beq 0x80248b4 | goto label_25;
| }
0x08024724 ldr r2, [r5, 0x14] | r2 = *((r5 + 0x14));
0x08024728 mov r6, r7 | r6 = r7;
0x0802472c str r4, [sp, 0x30] | var_30h = r4;
0x08024730 str r7, [sp, 0x3c] | var_3ch = r7;
0x08024734 mov r8, r2 | r8 = r2;
0x08024738 ldr r3, [r2, 0x18] | r3 = *((r2 + 0x18));
0x0802473c mov r4, r2 | r4 = r2;
0x08024740 str sl, [sp, 0x34] | var_34h = sl;
0x08024744 mov sl, sb | sl = sb;
0x08024748 str fp, [sp, 0x38] | var_38h = fp;
0x0802474c mov fp, r3 |
0x08024750 ldr r7, [sp, 0x28] | r7 = var_28h;
0x08024754 ldr sb, [sp, 0x2c] | sb = var_2ch;
0x08024758 b 0x802476c |
| while (r3 == 0) {
0x0802475c mov r0, sl | r0 = sl;
0x08024760 stmdaeq r1, {r2, r3, r4, r5, sl, fp, ip, sp, lr, pc} | __asm ("stmdaeq r1, {r2, r3, r4, r5, sl, fp, ip, sp, lr, pc}");
0x08024764 cmp r0, 0 |
| if (r0 != 0) {
0x08024768 bne 0x80247d4 | goto label_26;
| }
0x0802476c mov ip, r6 |
0x08024770 mov r1, r8 | r1 = r8;
| label_3:
0x08024774 clz r3, r6 | r3 &= r6;
0x08024778 lsr r3, r3, 5 | r3 >>= 5;
0x0802477c cmp r4, r8 |
| if (r4 == r8) {
0x08024780 orrne r3, r3, 1 | r3 |= 1;
| }
0x08024784 cmp r3, 0 |
| if (r3 == 0) {
0x08024788 beq 0x80247bc | goto label_27;
| }
0x0802478c cmp sb, ip |
0x08024790 add r6, r6, fp | r6 += fp;
0x08024794 ldr r8, [r8, 4] | r8 = *((r8 + 4));
0x08024798 add ip, ip, fp |
| if (sb <= ip) {
0x0802479c movhi r3, 0 | r3 = 0;
| }
| if (sb > ip) {
0x080247a0 movls r3, 1 | r3 = 1;
| }
0x080247a4 cmp r7, r6 |
| if (r7 < r6) {
0x080247a8 orrhs r3, r3, 1 | r3 |= 1;
| }
0x080247ac cmp r3, 0 |
0x080247b0 beq 0x802475c |
| }
0x080247b4 mov r1, r8 | r1 = r8;
0x080247b8 b 0x8024774 | goto label_3;
| label_27:
0x080247bc ldr r7, [sp, 0x3c] | r7 = var_3ch;
| label_24:
0x080247c0 ldr r3, [sp, 0x78] | r3 = *(arg_78h);
0x080247c4 str r5, [r3] | *(r3) = r5;
| label_6:
0x080247c8 mov r0, r7 | r0 = r7;
0x080247cc add sp, sp, 0x4c |
0x080247d0 pop {r4, r5, r6, r7, r8, sb, sl, fp, pc} |
| label_26:
0x080247d4 mov sb, sl | sb = sl;
0x080247d8 ldr r4, [sp, 0x30] | r4 = var_30h;
0x080247dc ldrd sl, fp, [sp, 0x34] | __asm ("ldrd sl, fp, [var_34h]");
0x080247e0 mov r7, r0 | r7 = r0;
0x080247e4 b 0x80245fc | goto label_4;
| label_21:
0x080247e8 mov r0, r4 | r0 = r4;
0x080247ec stmdaeq r1, {r3, r4, r8, sb, sp, lr, pc} | __asm ("stmdaeq r1, {r3, r4, r8, sb, sp, lr, pc}");
0x080247f0 cmp r0, 0 |
| if (r0 != 0) {
0x080247f4 bne 0x8024644 | goto label_5;
| }
| label_20:
0x080247f8 mov r1, r4 | r1 = r4;
0x080247fc mov r0, sb | r0 = sb;
0x08024800 stmdaeq r3, {r2, r4, r5, r6, sb, fp, ip, sp, pc} | __asm ("stmdaeq r3, {r2, r4, r5, r6, sb, fp, ip, sp, pc}");
0x08024804 b 0x8024644 | goto label_5;
| label_13:
0x08024808 tst r3, 1 |
| if ((r3 & 1) == 0) {
0x0802480c subne r5, r3, 1 | r5 = r3 - 1;
| }
0x08024810 add r3, r5, 0x1c | r3 = r5 + 0x1c;
0x08024814 pld [r3] | __asm ("pld [r3]");
| do {
0x08024818 ldrex r2, [r3] | __asm ("ldrex r2, [r3]");
0x0802481c sub r2, r2, 1 | r2--;
0x08024820 strex r1, r2, [r3] | __asm ("strex r1, r2, [r3]");
0x08024824 teq r1, 0 | __asm ("teq r1, 0");
0x08024828 bne 0x8024818 |
| } while ((r3 & 1) != 0);
0x0802482c cmp r2, 0 |
| if (r2 == 0) {
0x08024830 beq 0x8024898 | goto label_28;
| }
| label_8:
0x08024834 mov r7, sb | r7 = sb;
0x08024838 mov r0, r7 | r0 = r7;
0x0802483c add sp, sp, 0x4c |
0x08024840 pop {r4, r5, r6, r7, r8, sb, sl, fp, pc} |
| label_22:
0x08024844 mov r1, r4 | r1 = r4;
0x08024848 mov r0, 0 | r0 = 0;
0x0802484c stmdaeq r3, {r2, r4, r6, r7, sb, ip, lr, pc} | __asm ("stmdaeq r3, {r2, r4, r6, r7, sb, ip, lr, pc}");
0x08024850 b 0x8024688 | goto label_1;
| label_11:
0x08024854 ldr r3, [sp, 0x78] | r3 = *(arg_78h);
0x08024858 mov r2, sl | r2 = sl;
0x0802485c str r3, [sp, 8] | var_8h = r3;
0x08024860 mov r1, r4 | r1 = r4;
0x08024864 ldr r3, [sp, 0x74] | r3 = *(arg_74h);
0x08024868 str r3, [sp, 4] | var_4h = r3;
0x0802486c ldr r3, [sp, 0x70] | r3 = *(arg_70h);
0x08024870 str r3, [sp] | *(sp) = r3;
0x08024874 mov r3, fp | r3 = fp;
0x08024878 ldr r0, [sp, 0x10] | r0 = var_10h;
0x0802487c stmdaeq r1, {r3, r4, r6, sl, fp, ip, pc} | __asm ("stmdaeq r1, {r3, r4, r6, sl, fp, ip, pc}");
0x08024880 subs r7, r0, 0 | r7 = r0 - 0;
| if (r7 < r0) {
0x08024884 blt 0x80247c8 | goto label_6;
| }
0x08024888 cmp r7, 1 |
| if (r7 != 1) {
0x0802488c bne 0x80244a8 | goto label_7;
| }
0x08024890 mov r7, r5 | r7 = r5;
0x08024894 b 0x80247c8 | goto label_6;
| label_28:
0x08024898 mov r0, r5 | r0 = r5;
0x0802489c stmdaeq r8, {r3, r5, r6, r7, fp, ip, sp, lr} | __asm ("stmdaeq r8, {r3, r5, r6, r7, fp, ip, sp, lr}");
0x080248a0 b 0x8024834 | goto label_8;
| label_10:
0x080248a4 mvn r7, 4 | r7 = ~4;
0x080248a8 mov r0, r7 | r0 = r7;
0x080248ac add sp, sp, 0x4c |
0x080248b0 pop {r4, r5, r6, r7, r8, sb, sl, fp, pc} |
| label_25:
0x080248b4 udf 0x12 | __asm ("udf 0x12");
| label_15:
0x080248b8 stmdaeq r8, {r3, r4, r6, r7, fp, ip, sp, lr} | __asm ("stmdaeq r8, {r3, r4, r6, r7, fp, ip, sp, lr}");
0x080248bc ldr r3, [r5, 4] | r3 = *((r5 + 4));
0x080248c0 tst r3, 1 |
| if ((r3 & 1) == 0) {
0x080248c4 subne r5, r3, 1 | r5 = r3 - 1;
| }
0x080248c8 add r3, r5, 0x1c | r3 = r5 + 0x1c;
0x080248cc pld [r3] | __asm ("pld [r3]");
| do {
0x080248d0 ldrex r2, [r3] | __asm ("ldrex r2, [r3]");
0x080248d4 sub r2, r2, 1 | r2--;
0x080248d8 strex r1, r2, [r3] | __asm ("strex r1, r2, [r3]");
0x080248dc teq r1, 0 | __asm ("teq r1, 0");
0x080248e0 bne 0x80248d0 |
| } while ((r3 & 1) != 0);
0x080248e4 cmp r2, 0 |
0x080248e8 beq 0x8024900 |
| while (1) {
0x080248ec mov r2, sb | r2 = sb;
0x080248f0 movw r1, 0x4a7 | r1 = 0x4a7;
0x080248f4 ldr r0, [pc, 0x18] | r0 = *(0x8024910);
0x080248f8 stmdaeq r0, {r2, r3, r8, fp, ip, sp} | __asm ("stmdaeq r0, {r2, r3, r8, fp, ip, sp}");
0x080248fc b 0x80244cc | goto label_9;
0x08024900 mov r0, r5 | r0 = r5;
0x08024904 stmdaeq r8, {r3, r5, r6, r7, fp, ip, sp, lr} | __asm ("stmdaeq r8, {r3, r5, r6, r7, fp, ip, sp, lr}");
0x08024908 b 0x80248ec |
| }
| label_12:
0x0802490c mvn r7, 0xb | r7 = ~0xb;
0x08024910 b 0x80247c8 | goto label_6;
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/lib/modules/5.10.52-axis8/kernel/fs/ext4/ext4.ko @ 0x8022ae0 */
| #include <stdint.h>
|
| #define BIT_MASK(t,v) ((t)(-((v)!= 0)))&(((t)-1)>>((sizeof(t)*CHAR_BIT)-(v)))
|
; (fcn) sym.ext4_writepages () | void ext4_writepages (int32_t arg1, int32_t arg2) {
| int32_t var_0h;
| int32_t var_4h;
| int32_t var_8h;
| int32_t var_14h;
| int32_t var_18h;
| int32_t var_1ch;
| int32_t var_20h;
| int32_t var_24h;
| int32_t var_28h;
| int32_t var_2ch;
| int32_t var_33h;
| int32_t var_34h;
| int32_t var_48h;
| int32_t var_0h_2;
| int32_t var_4ch;
| int32_t var_50h;
| int32_t var_58h;
| int32_t var_6ch;
| int32_t var_78h;
| int32_t var_80h;
| int32_t var_90h;
| int32_t var_9ch;
| r0 = arg1;
| r1 = arg2;
0x08022ae0 push {r4, r5, r6, r7, r8, sb, sl, fp, lr} |
0x08022ae4 mov r3, 0 | r3 = 0;
0x08022ae8 mov r6, r1 | r6 = r1;
0x08022aec ldr r4, [r0] | r4 = *(r0);
0x08022af0 sub sp, sp, 0x9c |
0x08022af4 strb r3, [sp, 0x33] | var_33h = r3;
0x08022af8 ldr r3, [r4, 0x14] | r3 = *((r4 + 0x14));
0x08022afc ldr sl, [r3, 0x1f0] | sl = *((r3 + 0x1f0));
0x08022b00 ldr r1, [sl, 0x130] | r1 = *((sl + 0x130));
0x08022b04 ubfx r1, r1, 1, 1 | r1 = (r1 >> 1) & ((1 << 1) - 1);
0x08022b08 cmp r1, 0 |
| if (r1 != 0) {
0x08022b0c bne 0x80230b4 | goto label_15;
| }
0x08022b10 mov r3, sp | r3 = sp;
0x08022b14 mov sb, r0 | sb = r0;
0x08022b18 bic r3, r3, 0x1fc0 | r3 = BIT_MASK (r3, 0x1fc0);
0x08022b1c bic r3, r3, 0x3f | r3 = BIT_MASK (r3, 0x3f);
0x08022b20 ldr r2, [r3, 4] | r2 = *((r3 + 4));
0x08022b24 add r2, r2, 1 | r2++;
0x08022b28 str r2, [r3, 4] | *((r3 + 4)) = r2;
0x08022b2c ldr r3, [sl, 0x2e8] | r3 = *((sl + 0x2e8));
0x08022b30 cmp r3, 0 |
| if (r3 != 0) {
0x08022b34 bne 0x80230c4 | goto label_16;
| }
0x08022b38 mrs r1, apsr | r1 = apsr;
0x08022b3c cpsid i | __asm ("cpsid i");
0x08022b40 ldr r2, [sl, 0x300] | r2 = *((sl + 0x300));
0x08022b44 ldr r3, [r2] | r3 = *(r2);
0x08022b48 add r3, r3, 1 | r3++;
0x08022b4c str r3, [r2] | *(r2) = r3;
0x08022b50 msr cpsr_c, r1 | cpsr_c = r1;
| label_8:
0x08022b54 mov r3, sp | r3 = sp;
0x08022b58 bic r3, r3, 0x1fc0 | r3 = BIT_MASK (r3, 0x1fc0);
0x08022b5c bic r3, r3, 0x3f | r3 = BIT_MASK (r3, 0x3f);
0x08022b60 ldr r2, [r3, 4] | r2 = *((r3 + 4));
0x08022b64 sub r2, r2, 1 | r2--;
0x08022b68 str r2, [r3, 4] | *((r3 + 4)) = r2;
0x08022b6c cmp r2, 0 |
| if (r2 == 0) {
0x08022b70 beq 0x8022e28 | goto label_17;
| }
| label_1:
0x08022b74 ldr r5, [sb, 0x2c] | r5 = *((sb + 0x2c));
0x08022b78 cmp r5, 0 |
| if (r5 == 0) {
0x08022b7c beq 0x8022b8c | goto label_0;
| }
0x08022b80 ldr r5, [sb, 4] | r5 = *((sb + 4));
0x08022b84 ands r5, r5, 0x800000 | r5 &= 0x800000;
0x08022b88 bne 0x8022bf8 |
| while (r0 > 0x1000) {
| label_0:
0x08022b8c mov r3, sp | r3 = sp;
0x08022b90 bic r3, r3, 0x1fc0 | r3 = BIT_MASK (r3, 0x1fc0);
0x08022b94 bic r3, r3, 0x3f | r3 = BIT_MASK (r3, 0x3f);
0x08022b98 ldr r2, [r3, 4] | r2 = *((r3 + 4));
0x08022b9c add r2, r2, 1 | r2++;
0x08022ba0 str r2, [r3, 4] | *((r3 + 4)) = r2;
0x08022ba4 ldr r3, [sl, 0x2e8] | r3 = *((sl + 0x2e8));
0x08022ba8 cmp r3, 0 |
| if (r3 != 0) {
0x08022bac bne 0x80230f4 | goto label_18;
| }
0x08022bb0 mrs r1, apsr | r1 = apsr;
0x08022bb4 cpsid i | __asm ("cpsid i");
0x08022bb8 ldr r2, [sl, 0x300] | r2 = *((sl + 0x300));
0x08022bbc ldr r3, [r2] | r3 = *(r2);
0x08022bc0 sub r3, r3, 1 | r3--;
0x08022bc4 str r3, [r2] | *(r2) = r3;
0x08022bc8 msr cpsr_c, r1 | cpsr_c = r1;
| label_10:
0x08022bcc mov r3, sp | r3 = sp;
0x08022bd0 bic r3, r3, 0x1fc0 | r3 = BIT_MASK (r3, 0x1fc0);
0x08022bd4 bic r3, r3, 0x3f | r3 = BIT_MASK (r3, 0x3f);
0x08022bd8 ldr r2, [r3, 4] | r2 = *((r3 + 4));
0x08022bdc sub r2, r2, 1 | r2--;
0x08022be0 str r2, [r3, 4] | *((r3 + 4)) = r2;
0x08022be4 cmp r2, 0 |
| if (r2 == 0) {
0x08022be8 beq 0x8022e3c | goto label_19;
| }
| label_2:
0x08022bec mov r0, r5 | r0 = r5;
0x08022bf0 add sp, sp, 0x9c |
0x08022bf4 pop {r4, r5, r6, r7, r8, sb, sl, fp, pc} |
0x08022bf8 mov r0, r4 | r0 = r4;
0x08022bfc stmdaeq r0, {r2, r3, r4, r6, r8, sb, sl, ip, sp} | __asm ("stmdaeq r0, {r2, r3, r4, r6, r8, sb, sl, ip, sp}");
0x08022c00 ands r3, r0, 1 | r3 = r0 & 1;
0x08022c04 str r3, [sp, 0x24] | var_24h = r3;
| if (r3 != r0) {
0x08022c08 bne 0x802311c | goto label_20;
| }
0x08022c0c ldr r3, [sb] | r3 = *(sb);
0x08022c10 ldr r3, [r3, 0x14] | r3 = *((r3 + 0x14));
0x08022c14 ldr r3, [r3, 0x1f0] | r3 = *((r3 + 0x1f0));
0x08022c18 ldr r3, [r3, 0x130] | r3 = *((r3 + 0x130));
0x08022c1c tst r3, 2 |
| if ((r3 & 2) != 0) {
0x08022c20 bne 0x8023178 | goto label_21;
| }
0x08022c24 ldr r0, [r4, 0x14] | r0 = *((r4 + 0x14));
0x08022c28 ldr r3, [r0, 0x1f0] | r3 = *((r0 + 0x1f0));
0x08022c2c ldr r2, [r3, 0x54] | r2 = *((r3 + 0x54));
0x08022c30 ubfx r1, r2, 1, 1 | r1 = (r2 >> 1) & ((1 << 1) - 1);
0x08022c34 str r1, [sp, 0x1c] | var_1ch = r1;
0x08022c38 cmp r1, 0 |
| if (r1 != 0) {
0x08022c3c bne 0x8023178 | goto label_21;
| }
0x08022c40 ldr r2, [r4, -0x6c] | r2 = *((r4 - 0x6c));
0x08022c44 tst r2, 0x10000000 |
| if ((r2 & 0x10000000) == 0) {
0x08022c48 beq 0x8022cb4 | goto label_22;
| }
0x08022c4c movw r2, 0x1b6 | r2 = 0x1b6;
0x08022c50 ldrh r2, [r4, r2] | r2 = *((r4 + r2));
0x08022c54 cmp r2, 0 |
| if (r2 == 0) {
0x08022c58 beq 0x8022cb4 | goto label_22;
| }
0x08022c5c ldr r3, [r3, 0x2c] | r3 = *((r3 + 0x2c));
0x08022c60 str r1, [sp] | *(sp) = r1;
0x08022c64 movw r1, 0xa8c | r1 = 0xa8c;
0x08022c68 lsl r3, r3, 3 | r3 <<= 3;
0x08022c6c str r3, [sp, 4] | var_4h = r3;
0x08022c70 mov r3, 1 | r3 = 1;
0x08022c74 mov r2, r3 | r2 = r3;
0x08022c78 stmdaeq r0, {r4, r5, r6, r7, r8, sb, sl, ip, sp} | __asm ("stmdaeq r0, {r4, r5, r6, r7, r8, sb, sl, ip, sp}");
0x08022c7c mov r5, r0 | r5 = r0;
0x08022c80 cmn r0, 0x1000 |
0x08022c84 bhi 0x8022b8c |
| }
0x08022c88 ldr r3, [r4, -0x70] | r3 = *((r4 - 0x70));
0x08022c8c tst r3, 0x80 |
| if ((r3 & 0x80) != 0) {
0x08022c90 bne 0x8023034 | goto label_23;
| }
0x08022c94 mov r1, r4 | r1 = r4;
0x08022c98 stmdaeq r1, {r3, r5, r8, sl, fp, ip, sp, pc} | __asm ("stmdaeq r1, {r3, r5, r8, sl, fp, ip, sp, pc}");
0x08022c9c ldr r0, [pc, 0x4f8] | r0 = *(0x8023198);
0x08022ca0 mov r2, r5 | r2 = r5;
0x08022ca4 movw r1, 0xa94 | r1 = 0xa94;
0x08022ca8 stmdaeq r0, {r2, r3, r8, fp, ip, sp} | __asm ("stmdaeq r0, {r2, r3, r8, fp, ip, sp}");
0x08022cac ldr r3, [r4, 0x14] | r3 = *((r4 + 0x14));
0x08022cb0 ldr r3, [r3, 0x1f0] | r3 = *((r3 + 0x1f0));
| label_22:
0x08022cb4 ldr r3, [r3, 0x4c] | r3 = *((r3 + 0x4c));
0x08022cb8 tst r3, 0x400000 |
| if ((r3 & 0x400000) != 0) {
0x08022cbc beq 0x8022cdc |
0x08022cc0 ldrh r3, [r4] | r3 = *(r4);
0x08022cc4 and r3, r3, 0xf000 | r3 &= 0xf000;
0x08022cc8 cmp r3, 0x8000 |
| if (r3 != 0x8000) {
0x08022ccc bne 0x8022cdc | goto label_11;
| }
0x08022cd0 ldr r3, [r4, -0x6c] | r3 = *((r4 - 0x6c));
0x08022cd4 tst r3, 0x80000 |
| if ((r3 & 0x80000) != 0) {
0x08022cd8 bne 0x8023130 | goto label_24;
| }
| }
| label_11:
0x08022cdc mov r3, 0 | r3 = 0;
0x08022ce0 str r3, [sp, 0x14] | var_14h = r3;
| label_12:
0x08022ce4 ldr r3, [r6, 8] | r3 = *((r6 + 8));
0x08022ce8 ldr r2, [r6, 0xc] | r2 = *((r6 + 0xc));
0x08022cec orrs r1, r3, r2 | r1 = r3 | r2;
| if (r1 == r3) {
0x08022cf0 bne 0x8022d0c |
0x08022cf4 ldrd r0, r1, [r6, 0x10] | __asm ("ldrd r0, r1, [r6, 0x10]");
0x08022cf8 cmn r1, 0x80000001 |
0x08022cfc cmneq r0, 1 | __asm ("cmneq r0, 1");
| if (r1 != 0x80000001) {
0x08022d00 moveq r1, 1 | r1 = 1;
| }
| if (r1 == 0x80000001) {
0x08022d04 movne r1, 0 | r1 = 0;
| }
0x08022d08 str r1, [sp, 0x24] | var_24h = r1;
| }
0x08022d0c ldrb r1, [r6, 0x1c] | r1 = *((r6 + 0x1c));
0x08022d10 tst r1, 0x10 |
| if ((r1 & 0x10) == 0) {
0x08022d14 beq 0x80230d0 | goto label_25;
| }
0x08022d18 ldr r2, [sb, 0x34] | r2 = *((sb + 0x34));
0x08022d1c mvn r3, 0 | r3 = ~0;
0x08022d20 str r2, [sp, 0x1c] | var_1ch = r2;
0x08022d24 clz r5, r2 | r5 &= r2;
0x08022d28 str r2, [sp, 0x50] | var_50h = r2;
0x08022d2c lsr r5, r5, 5 | r5 >>= 5;
| label_9:
0x08022d30 mov r1, r6 | r1 = r6;
0x08022d34 add r0, sp, 0x78 | r0 += var_78h;
0x08022d38 str r3, [sp, 0x58] | var_58h = r3;
0x08022d3c stmdaeq r5, {r2, r3, r5, r6, r8, fp, sp, pc} | __asm ("stmdaeq r5, {r2, r3, r5, r6, r8, fp, sp, pc}");
0x08022d40 stmdaeq r5, {r2, r3, r5, r6, r8, fp, sp, pc} | __asm ("stmdaeq r5, {r2, r3, r5, r6, r8, fp, sp, pc}");
0x08022d44 str r4, [sp, 0x48] | var_48h = r4;
0x08022d48 str r3, [sp, 0x28] | var_28h = r3;
0x08022d4c stmdaeq r5, {r5, r7, fp, sp, pc} | __asm ("stmdaeq r5, {r5, r7, fp, sp, pc}");
0x08022d50 stmdaeq r5, {r5, r7, fp, sp, pc} | __asm ("stmdaeq r5, {r5, r7, fp, sp, pc}");
0x08022d54 str r6, [sp, 0x4c] | var_4ch = r6;
0x08022d58 str r3, [sp, 0x2c] | var_2ch = r3;
0x08022d5c stmdaeq r3, {r2, r3, r5, r8, sb, sl, sp, lr, pc} | __asm ("stmdaeq r3, {r2, r3, r5, r8, sb, sl, sp, lr, pc}");
| label_7:
0x08022d60 ldr r3, [r6, 0x18] | r3 = *((r6 + 0x18));
0x08022d64 cmp r3, 1 |
| if (r3 != 1) {
0x08022d68 beq 0x8022d78 |
0x08022d6c ldrb r3, [r6, 0x1c] | r3 = *((r6 + 0x1c));
0x08022d70 tst r3, 4 |
| if ((r3 & 4) == 0) {
0x08022d74 beq 0x8022d88 | goto label_26;
| }
| }
0x08022d78 ldr r2, [sp, 0x58] | r2 = var_58h;
0x08022d7c mov r0, sb | r0 = sb;
0x08022d80 ldr r1, [sp, 0x50] | r1 = var_50h;
0x08022d84 stmdaeq r8, {r5, r7, r8, fp, ip, sp, lr} | __asm ("stmdaeq r8, {r5, r7, r8, fp, ip, sp, lr}");
| label_26:
0x08022d88 add r0, sp, 0x34 | r0 += var_34h;
0x08022d8c stmdaeq r8, {r6, r8, fp, ip, sp, lr} | __asm ("stmdaeq r8, {r6, r8, fp, ip, sp, lr}");
0x08022d90 ldrb r3, [sp, 0x90] | r3 = var_90h;
0x08022d94 mov r0, r4 | r0 = r4;
0x08022d98 mov r1, 0xcc0 | r1 = 0xcc0;
0x08022d9c bic r3, r3, 3 | r3 = BIT_MASK (r3, 3);
0x08022da0 strb r3, [sp, 0x90] | var_90h = r3;
0x08022da4 stmdaeq r3, {r2, r4, r5, r6, sb, sp, lr, pc} | __asm ("stmdaeq r3, {r2, r4, r5, r6, sb, sp, lr, pc}");
0x08022da8 cmp r0, 0 |
0x08022dac str r0, [sp, 0x80] | var_80h = r0;
| if (r0 == 0) {
0x08022db0 beq 0x8023014 | goto label_27;
| }
0x08022db4 add r0, sp, 0x48 | r0 += var_48h;
0x08022db8 bl 0x801d73c | mpage_prepare_extent_to_map ();
0x08022dbc mov r1, 0 | r1 = 0;
0x08022dc0 mov fp, r0 |
0x08022dc4 add r0, sp, 0x48 | r0 += var_48h;
0x08022dc8 bl 0x801c794 | mpage_release_unused_pages ();
0x08022dcc add r0, sp, 0x78 | r0 += var_78h;
0x08022dd0 stmdaeq r3, {r4, r6, r7, sb, sl, sp, lr, pc} | __asm ("stmdaeq r3, {r4, r6, r7, sb, sl, sp, lr, pc}");
0x08022dd4 ldr r0, [sp, 0x80] | r0 = var_80h;
0x08022dd8 stmdaeq r3, {r2, r3, r4, r5, r7, sb, sp, lr, pc} | __asm ("stmdaeq r3, {r2, r3, r4, r5, r7, sb, sp, lr, pc}");
0x08022ddc mov r3, 0 | r3 = 0;
0x08022de0 cmp fp, 0 |
0x08022de4 str r3, [sp, 0x80] | var_80h = r3;
| if (fp >= 0) {
0x08022de8 bge 0x8022e58 | goto label_28;
| }
| label_14:
0x08022dec mov r5, fp | r5 = fp;
0x08022df0 add r0, sp, 0x34 | r0 += var_34h;
0x08022df4 stmdaeq r8, {r2, r6, r8, fp, ip, sp, lr} | __asm ("stmdaeq r8, {r2, r6, r8, fp, ip, sp, lr}");
| label_4:
0x08022df8 ldrb r3, [r6, 0x1c] | r3 = *((r6 + 0x1c));
0x08022dfc tst r3, 0x10 |
| if ((r3 & 0x10) != 0) {
0x08022e00 bne 0x8022e1c | goto label_29;
| }
0x08022e04 ldr r3, [sp, 0x24] | r3 = var_24h;
0x08022e08 cmp r3, 0 |
| if (r3 == 0) {
0x08022e0c beq 0x8022b8c | goto label_0;
| }
0x08022e10 ldr r3, [r6] | r3 = *(r6);
0x08022e14 cmp r3, 0 |
| if (r3 <= 0) {
0x08022e18 ble 0x8022b8c | goto label_0;
| }
| label_29:
0x08022e1c ldr r3, [sp, 0x50] | r3 = var_50h;
0x08022e20 str r3, [sb, 0x34] | *((sb + 0x34)) = r3;
0x08022e24 b 0x8022b8c | goto label_0;
| label_17:
0x08022e28 ldr r3, [r3] | r3 = *(r3);
0x08022e2c tst r3, 2 |
| if ((r3 & 2) == 0) {
0x08022e30 beq 0x8022b74 | goto label_1;
| }
0x08022e34 stmdaeq r8, {r4, r6, r7, sb, sl, ip, sp, lr} | __asm ("stmdaeq r8, {r4, r6, r7, sb, sl, ip, sp, lr}");
0x08022e38 b 0x8022b74 | goto label_1;
| label_19:
0x08022e3c ldr r3, [r3] | r3 = *(r3);
0x08022e40 tst r3, 2 |
| if ((r3 & 2) == 0) {
0x08022e44 beq 0x8022bec | goto label_2;
| }
0x08022e48 stmdaeq r8, {r4, r6, r7, sb, sl, ip, sp, lr} | __asm ("stmdaeq r8, {r4, r6, r7, sb, sl, ip, sp, lr}");
0x08022e4c mov r0, r5 | r0 = r5;
0x08022e50 add sp, sp, 0x9c |
0x08022e54 pop {r4, r5, r6, r7, r8, sb, sl, fp, pc} |
| label_28:
0x08022e58 ldrb r3, [sp, 0x90] | r3 = var_90h;
0x08022e5c ands r3, r3, 2 | r3 &= 2;
0x08022e60 str r3, [sp, 0x18] | var_18h = r3;
| if (r3 != r3) {
0x08022e64 streq r5, [sp, 0x20] | var_20h = r5;
| }
| if (r3 != r3) {
0x08022e68 bne 0x8023184 | goto label_30;
| }
| do {
0x08022e6c ldr r3, [r6] | r3 = *(r6);
0x08022e70 cmp r3, 0 |
| if (r3 <= 0) {
0x08022e74 ble 0x8023180 | goto label_31;
| }
0x08022e78 mov r0, r4 | r0 = r4;
0x08022e7c mov r1, 0xcc0 | r1 = 0xcc0;
0x08022e80 stmdaeq r3, {r2, r4, r5, r6, sb, sp, lr, pc} | __asm ("stmdaeq r3, {r2, r4, r5, r6, sb, sp, lr, pc}");
0x08022e84 cmp r0, 0 |
0x08022e88 str r0, [sp, 0x80] | var_80h = r0;
| if (r0 == 0) {
0x08022e8c beq 0x8023014 | goto label_27;
| }
0x08022e90 mov r0, r4 | r0 = r4;
0x08022e94 stmdaeq r0, {r2, r3, r4, r6, r8, sb, sl, ip, sp} | __asm ("stmdaeq r0, {r2, r3, r4, r6, r8, sb, sl, ip, sp}");
0x08022e98 ands fp, r0, 1 |
| if (fp != r0) {
0x08022e9c bne 0x8023034 | goto label_23;
| }
0x08022ea0 ldr r3, [r4, 0x14] | r3 = *((r4 + 0x14));
0x08022ea4 ldr r3, [r3, 0x1f0] | r3 = *((r3 + 0x1f0));
0x08022ea8 ldr r3, [r3, 0x118] | r3 = *((r3 + 0x118));
0x08022eac cmp r3, 0 |
| if (r3 != 0) {
0x08022eb0 moveq r2, fp | r2 = fp;
| }
0x08022eb4 movweq r1, 0x7ff | __asm ("movweq r1, 0x7ff");
| if (r3 != 0) {
0x08022eb8 beq 0x8022ed0 |
0x08022ebc mov r0, r4 | r0 = r4;
0x08022ec0 stmdaeq r8, {r2, r7, r8, fp, ip, sp, lr} | __asm ("stmdaeq r8, {r2, r7, r8, fp, ip, sp, lr}");
0x08022ec4 add r1, r0, 0x7f0 | r1 = r0 + 0x7f0;
0x08022ec8 mov r2, r0 | r2 = r0;
0x08022ecc add r1, r1, 0xf | r1 += 0xf;
| }
0x08022ed0 mov r0, r4 | r0 = r4;
0x08022ed4 bl 0x801c730 | r0 = ext4_meta_trans_blocks ();
0x08022ed8 mov r3, r0 | r3 = r0;
0x08022edc ldr r0, [r4, 0x14] | r0 = *((r4 + 0x14));
0x08022ee0 mov r2, 2 | r2 = 2;
0x08022ee4 ldr lr, [sp, 0x14] | lr = var_14h;
0x08022ee8 mov r1, 0xae0 | r1 = 0xae0;
0x08022eec ldr ip, [r0, 0x1f0] | ip = *((r0 + 0x1f0));
0x08022ef0 ldr ip, [ip, 0x2c] | ip = *((ip + 0x2c));
0x08022ef4 str lr, [sp] |
0x08022ef8 lsl ip, ip, 3 |
0x08022efc str ip, [sp, 4] | var_4h = ip;
0x08022f00 stmdaeq r0, {r4, r5, r6, r7, r8, sb, sl, ip, sp} | __asm ("stmdaeq r0, {r4, r5, r6, r7, r8, sb, sl, ip, sp}");
0x08022f04 mov r7, r0 | r7 = r0;
0x08022f08 cmn r0, 0x1000 |
| if (r0 > 0x1000) {
0x08022f0c bhi 0x8023040 | goto label_32;
| }
0x08022f10 ldrb r3, [sp, 0x90] | r3 = var_90h;
0x08022f14 add r0, sp, 0x48 | r0 += var_48h;
0x08022f18 orr r3, r3, 1 | r3 |= 1;
0x08022f1c strb r3, [sp, 0x90] | var_90h = r3;
0x08022f20 bl 0x801d73c | mpage_prepare_extent_to_map ();
0x08022f24 subs r8, r0, 0 | r8 -= var_48h;
| if (r8 == var_48h) {
0x08022f28 bne 0x8022f38 |
0x08022f2c ldr r3, [sp, 0x6c] | r3 = var_6ch;
0x08022f30 cmp r3, 0 |
| if (r3 != 0) {
0x08022f34 bne 0x802301c | goto label_33;
| }
| }
| label_5:
0x08022f38 ldrb r5, [sp, 0x33] | r5 = var_33h;
0x08022f3c cmp r7, 0x1000 |
| if (r7 <= 0x1000) {
0x08022f40 blo 0x8022fb0 | goto label_34;
| }
0x08022f44 ldrb r2, [r7, 0x1c] | r2 = *((r7 + 0x1c));
0x08022f48 tst r2, 1 |
| if ((r2 & 1) == 0) {
0x08022f4c beq 0x8022fb0 | goto label_34;
| }
0x08022f50 mov r1, r5 | r1 = r5;
0x08022f54 add r0, sp, 0x48 | r0 += var_48h;
0x08022f58 bl 0x801c794 | mpage_release_unused_pages ();
0x08022f5c add r0, sp, 0x78 | r0 += var_78h;
0x08022f60 stmdaeq r3, {r4, r6, r7, sb, sl, sp, lr, pc} | __asm ("stmdaeq r3, {r4, r6, r7, sb, sl, sp, lr, pc}");
0x08022f64 cmp r7, 0 |
| if (r7 == 0) {
0x08022f68 beq 0x8022fe0 | goto label_35;
| }
0x08022f6c ldr r0, [sp, 0x80] | r0 = var_80h;
0x08022f70 stmdaeq r3, {r2, r3, r4, r5, r7, sb, sp, lr, pc} | __asm ("stmdaeq r3, {r2, r3, r4, r5, r7, sb, sp, lr, pc}");
0x08022f74 ldr r0, [pc, 0x220] | r0 = *(0x8023198);
0x08022f78 mov r2, r7 | r2 = r7;
0x08022f7c mov r1, 0xb10 | r1 = 0xb10;
0x08022f80 stmdaeq r0, {r2, r3, r8, fp, ip, sp} | __asm ("stmdaeq r0, {r2, r3, r8, fp, ip, sp}");
0x08022f84 ldr r3, [sp, 0x18] | r3 = var_18h;
0x08022f88 cmn r8, 0x1c |
0x08022f8c str r3, [sp, 0x80] | var_80h = r3;
| if (r8 == 0x1c) {
0x08022f90 beq 0x8022ff8 | goto label_36;
| }
| label_3:
0x08022f94 cmp r8, 0 |
| if (r8 != 0) {
0x08022f98 bne 0x8023194 | goto label_37;
| }
| label_6:
0x08022f9c ldrb r3, [sp, 0x90] | r3 = var_90h;
0x08022fa0 tst r3, 2 |
0x08022fa4 beq 0x8022e6c |
| } while ((r3 & 2) == 0);
0x08022fa8 ldr r5, [sp, 0x20] | r5 = var_20h;
0x08022fac b 0x8023080 | goto label_13;
| label_34:
0x08022fb0 mov r2, r7 | r2 = r7;
0x08022fb4 movw r1, 0xafe | r1 = 0xafe;
0x08022fb8 ldr r0, [pc, 0x1dc] | r0 = *(0x8023198);
0x08022fbc stmdaeq r0, {r2, r3, r8, fp, ip, sp} | __asm ("stmdaeq r0, {r2, r3, r8, fp, ip, sp}");
0x08022fc0 ldrb r3, [sp, 0x90] | r3 = var_90h;
0x08022fc4 add r0, sp, 0x48 | r0 += var_48h;
0x08022fc8 mov r1, r5 | r1 = r5;
0x08022fcc bfc r3, 0, 1 | value_0 = BIT_MASK (1, );
| value_0 = ~value_0;
| r3 &= value_0;
0x08022fd0 strb r3, [sp, 0x90] | var_90h = r3;
0x08022fd4 bl 0x801c794 | mpage_release_unused_pages ();
0x08022fd8 add r0, sp, 0x78 | r0 += var_78h;
0x08022fdc stmdaeq r3, {r4, r6, r7, sb, sl, sp, lr, pc} | __asm ("stmdaeq r3, {r4, r6, r7, sb, sl, sp, lr, pc}");
| label_35:
0x08022fe0 ldr r0, [sp, 0x80] | r0 = var_80h;
0x08022fe4 stmdaeq r3, {r2, r4, r6, r7, r8, sl, sp, lr, pc} | __asm ("stmdaeq r3, {r2, r4, r6, r7, r8, sl, sp, lr, pc}");
0x08022fe8 ldr r3, [sp, 0x18] | r3 = var_18h;
0x08022fec cmn r8, 0x1c |
0x08022ff0 str r3, [sp, 0x80] | var_80h = r3;
| if (r8 != 0x1c) {
0x08022ff4 bne 0x8022f94 | goto label_3;
| }
| label_36:
0x08022ff8 ldr r0, [sl, 0x118] | r0 = *((sl + 0x118));
0x08022ffc cmp r0, 0 |
| if (r0 != 0) {
0x08023000 bne 0x8023038 | goto label_38;
| }
| do {
0x08023004 add r0, sp, 0x34 | r0 += var_34h;
0x08023008 mov r5, r8 | r5 = r8;
0x0802300c stmdaeq r8, {r2, r6, r8, fp, ip, sp, lr} | __asm ("stmdaeq r8, {r2, r6, r8, fp, ip, sp, lr}");
0x08023010 b 0x8022df8 | goto label_4;
| label_27:
0x08023014 mvn r8, 0xb | r8 = ~0xb;
0x08023018 b 0x8023004 |
| } while (1);
| label_33:
0x0802301c add r2, sp, 0x33 | r2 += var_33h;
0x08023020 add r1, sp, 0x48 | r1 += var_48h;
0x08023024 mov r0, r7 | r0 = r7;
0x08023028 bl 0x8022368 | r0 = mpage_map_and_submit_extent ();
0x0802302c mov r8, r0 | r8 = r0;
0x08023030 b 0x8022f38 | goto label_5;
| label_23:
0x08023034 udf 0x12 | __asm ("udf 0x12");
| label_38:
0x08023038 stmdaeq r8, {r2, r5, r6, r7, sb, sl, ip, sp, lr} | __asm ("stmdaeq r8, {r2, r5, r6, r7, sb, sl, ip, sp, lr}");
0x0802303c b 0x8022f9c | goto label_6;
| label_32:
0x08023040 ldr r5, [sp, 0x20] | r5 = var_20h;
0x08023044 mov fp, r0 |
0x08023048 ldr r1, [sp, 0x2c] | r1 = var_2ch;
0x0802304c orr r5, r0, r5 | r5 = r0 | r5;
0x08023050 ldr r0, [r4, 0x14] | r0 = *((r4 + 0x14));
0x08023054 str r7, [sp, 8] | var_8h = r7;
0x08023058 ldr r2, [r6] | r2 = *(r6);
0x0802305c ldr r3, [r4, 0x20] | r3 = *((r4 + 0x20));
0x08023060 strd r2, r3, [sp] | __asm ("strd r2, r3, [sp]");
0x08023064 ldr r3, [pc, 0x130] | r3 = *(0x8023198);
0x08023068 ldr r2, [sp, 0x28] | r2 = var_28h;
0x0802306c 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}");
0x08023070 ldr r0, [sp, 0x80] | r0 = var_80h;
0x08023074 stmdaeq r3, {r2, r4, r6, r7, r8, sl, sp, lr, pc} | __asm ("stmdaeq r3, {r2, r4, r6, r7, r8, sl, sp, lr, pc}");
0x08023078 mov r3, 0 | r3 = 0;
0x0802307c str r3, [sp, 0x80] | var_80h = r3;
| label_13:
0x08023080 add r0, sp, 0x34 | r0 += var_34h;
0x08023084 stmdaeq r8, {r2, r6, r8, fp, ip, sp, lr} | __asm ("stmdaeq r8, {r2, r6, r8, fp, ip, sp, lr}");
0x08023088 cmp r5, 0 |
| if (r5 != 0) {
0x0802308c bne 0x802318c | goto label_39;
| }
0x08023090 ldr r3, [r6] | r3 = *(r6);
0x08023094 cmp r3, 0 |
| if (r3 <= 0) {
0x08023098 ble 0x8022df8 | goto label_4;
| }
0x0802309c ldr r3, [sp, 0x1c] | r3 = var_1ch;
0x080230a0 str r5, [sp, 0x50] | var_50h = r5;
0x080230a4 mov r5, 1 | r5 = 1;
0x080230a8 sub r3, r3, 1 | r3--;
0x080230ac str r3, [sp, 0x58] | var_58h = r3;
0x080230b0 b 0x8022d60 | goto label_7;
| label_15:
0x080230b4 mvn r5, 4 | r5 = ~4;
0x080230b8 mov r0, r5 | r0 = r5;
0x080230bc add sp, sp, 0x9c |
0x080230c0 pop {r4, r5, r6, r7, r8, sb, sl, fp, pc} |
| label_16:
0x080230c4 add r0, sl, 0x2e8 | r0 = sl + 0x2e8;
0x080230c8 stmdaeq r8, {r2, r3, r4, r5, fp, ip, sp, lr} | __asm ("stmdaeq r8, {r2, r3, r4, r5, fp, ip, sp, lr}");
0x080230cc b 0x8022b54 | goto label_8;
| label_25:
0x080230d0 lsr r3, r3, 0xc | r3 >>= 0xc;
0x080230d4 mov r5, 1 | r5 = 1;
0x080230d8 orr r3, r3, r2, lsl 20 | r3 |= (r2 << 20);
0x080230dc str r3, [sp, 0x50] | var_50h = r3;
0x080230e0 ldr r3, [r6, 0x10] | r3 = *((r6 + 0x10));
0x080230e4 ldr r2, [r6, 0x14] | r2 = *((r6 + 0x14));
0x080230e8 lsr r3, r3, 0xc | r3 >>= 0xc;
0x080230ec orr r3, r3, r2, lsl 20 | r3 |= (r2 << 20);
0x080230f0 b 0x8022d30 | goto label_9;
| label_18:
0x080230f4 mrs r1, apsr | r1 = apsr;
0x080230f8 cpsid i | __asm ("cpsid i");
0x080230fc ldr r2, [sl, 0x300] | r2 = *((sl + 0x300));
0x08023100 ldr r3, [r2] | r3 = *(r2);
0x08023104 sub r3, r3, 1 | r3--;
0x08023108 str r3, [r2] | *(r2) = r3;
0x0802310c msr cpsr_c, r1 | cpsr_c = r1;
0x08023110 add r0, sl, 0x304 | r0 = sl + 0x304;
0x08023114 stmdaeq r8, {r6, fp, ip, sp, lr} | __asm ("stmdaeq r8, {r6, fp, ip, sp, lr}");
0x08023118 b 0x8022bcc | goto label_10;
| label_20:
0x0802311c mov r1, r6 | r1 = r6;
0x08023120 mov r0, sb | r0 = sb;
0x08023124 stmdaeq r8, {r2, r5, r7, r8, fp, ip, sp, lr} | __asm ("stmdaeq r8, {r2, r5, r7, r8, fp, ip, sp, lr}");
0x08023128 mov r5, r0 | r5 = r0;
0x0802312c b 0x8022b8c | goto label_0;
| label_24:
0x08023130 mov r0, r4 | r0 = r4;
0x08023134 stmdaeq r0, {r2, r3, r4, r6, r8, sb, sl, ip, sp} | __asm ("stmdaeq r0, {r2, r3, r4, r6, r8, sb, sl, ip, sp}");
0x08023138 tst r0, 1 |
| if ((r0 & 1) != 0) {
0x0802313c bne 0x8022cdc | goto label_11;
| }
0x08023140 ldr r3, [r4, 0x14] | r3 = *((r4 + 0x14));
0x08023144 ldr r3, [r3, 0x1f0] | r3 = *((r3 + 0x1f0));
0x08023148 ldr r3, [r3, 0x4c] | r3 = *((r3 + 0x4c));
0x0802314c tst r3, 0x8000000 |
| if ((r3 & loc.imp.fs_overflowgid) == 0) {
0x08023150 beq 0x8022cdc | goto label_11;
| }
0x08023154 ldrb r3, [r4, 0x6a] | r3 = *((r4 + 0x6a));
0x08023158 mov r1, 0x1000 | r1 = 0x1000;
0x0802315c mov r0, r4 | r0 = r4;
0x08023160 mov r2, 1 | r2 = 1;
0x08023164 lsr r1, r1, r3 | r1 >>= r3;
0x08023168 bl 0x801c730 | r0 = ext4_meta_trans_blocks ();
0x0802316c add r3, r0, 1 | r3 = r0 + 1;
0x08023170 str r3, [sp, 0x14] | var_14h = r3;
0x08023174 b 0x8022ce4 | goto label_12;
| label_21:
0x08023178 mvn r5, 0x1d | r5 = ~0x1d;
0x0802317c b 0x8022b8c | goto label_0;
| label_31:
0x08023180 ldr r5, [sp, 0x20] | r5 = var_20h;
| label_30:
0x08023184 orr r5, r5, fp | r5 |= fp;
0x08023188 b 0x8023080 | goto label_13;
| label_39:
0x0802318c mov r5, fp | r5 = fp;
0x08023190 b 0x8022df8 | goto label_4;
| label_37:
0x08023194 mov fp, r8 |
0x08023198 b 0x8022dec | goto label_14;
| }
; 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 @ 0x8022368 */
| #include <stdint.h>
|
| #define BIT_MASK(t,v) ((t)(-((v)!= 0)))&(((t)-1)>>((sizeof(t)*CHAR_BIT)-(v)))
|
; (fcn) sym.mpage_map_and_submit_extent () | void mpage_map_and_submit_extent (int32_t arg1, int32_t arg2) {
| int32_t var_0h;
| int32_t var_4h;
| int32_t var_8h;
| int32_t var_ch;
| int32_t var_14h;
| int32_t var_18h;
| int32_t var_1ch;
| int32_t var_20h;
| int32_t var_24h;
| int32_t var_28h;
| int32_t var_2ch;
| int32_t var_30h;
| int32_t var_34h;
| int32_t var_3ch;
| int32_t var_40h;
| int32_t var_84h;
| r0 = arg1;
| r1 = arg2;
0x08022368 push {r4, r5, r6, r7, r8, sb, sl, fp, lr} |
0x0802236c mov sb, r1 | sb = r1;
0x08022370 sub sp, sp, 0x84 |
0x08022374 ldr r3, [r1] | r3 = *(r1);
0x08022378 str r0, [sp, 0x2c] | var_2ch = r0;
0x0802237c ldr r0, [r1, 0x38] | r0 = *((r1 + 0x38));
0x08022380 str r2, [sp, 0x34] | var_34h = r2;
0x08022384 str r3, [sp, 0x24] | var_24h = r3;
0x08022388 stmdaeq r3, {r3, r5, r6, sp, lr, pc} | __asm ("stmdaeq r3, {r3, r5, r6, sp, lr, pc}");
0x0802238c cmn r0, 0x1000 |
| if (r0 <= 0x1000) {
0x08022390 movhi fp, r0 |
| }
| if (r0 > 0x1000) {
0x08022394 bhi 0x8022798 | goto label_11;
| }
0x08022398 ldr r3, [sp, 0x24] | r3 = var_24h;
0x0802239c add r2, sb, 0x18 | r2 = sb + 0x18;
0x080223a0 str r2, [sp, 0x30] | var_30h = r2;
0x080223a4 mov sl, sb | sl = sb;
0x080223a8 mov r5, 0 | r5 = 0;
0x080223ac ldrb r1, [r3, 0x6a] | r1 = *((r3 + 0x6a));
0x080223b0 ldr r3, [sb, 0x20] | r3 = *((sb + 0x20));
0x080223b4 sub r2, r1, 0x20 | r2 = r1 - 0x20;
0x080223b8 rsb ip, r1, 0x20 |
0x080223bc lsl r2, r3, r2 | r2 = r3 << r2;
0x080223c0 orr r2, r2, r3, lsr ip | r2 |= (r3 >> ip);
0x080223c4 str r2, [r0, 0xc] | *((r0 + 0xc)) = r2;
0x080223c8 lsl r3, r3, r1 | r3 <<= r1;
0x080223cc str r3, [r0, 8] | *((r0 + 8)) = r3;
| label_2:
0x080223d0 ldr r4, [sl] | r4 = *(sl);
0x080223d4 ldr r3, [r4, 0x14] | r3 = *((r4 + 0x14));
0x080223d8 ldr r3, [r3, 0x1f0] | r3 = *((r3 + 0x1f0));
0x080223dc ldr r3, [r3, 0x4c] | r3 = *((r3 + 0x4c));
0x080223e0 tst r3, 0x400000 |
| if ((r3 & 0x400000) != 0) {
0x080223e4 beq 0x80223f8 |
0x080223e8 ldrh r3, [r4] | r3 = *(r4);
0x080223ec and r3, r3, 0xf000 | r3 &= 0xf000;
0x080223f0 cmp r3, 0x8000 |
| if (r3 == 0x8000) {
0x080223f4 beq 0x80226c0 | goto label_14;
| }
| }
| label_6:
0x080223f8 mov r6, 0 | r6 = 0;
0x080223fc movw r3, 0x421 | r3 = 0x421;
| label_7:
0x08022400 ldr r2, [sl, 0x28] | r2 = *((sl + 0x28));
0x08022404 mov r1, r4 | r1 = r4;
0x08022408 ldr r0, [sp, 0x2c] | r0 = var_2ch;
0x0802240c tst r2, 0x100 |
0x08022410 ldr r2, [sp, 0x30] | r2 = var_30h;
| if ((r2 & 0x100) == 0) {
0x08022414 orrne r3, r3, 4 | r3 |= 4;
| }
0x08022418 stmdaeq r1, {sb, sl, sp, lr, pc} | __asm ("stmdaeq r1, {sb, sl, sp, lr, pc}");
0x0802241c cmp r0, 0 |
| if (r0 < 0) {
0x08022420 blt 0x8022740 | goto label_15;
| }
0x08022424 cmp r6, 0 |
| if (r6 != 0) {
0x08022428 beq 0x8022438 |
0x0802242c ldr r3, [sl, 0x28] | r3 = *((sl + 0x28));
0x08022430 tst r3, 0x800 |
| if ((r3 & 0x800) != 0) {
0x08022434 bne 0x80226fc | goto label_16;
| }
| }
| label_8:
0x08022438 ldr r2, [sl, 0x24] | r2 = *((sl + 0x24));
0x0802243c cmp r2, 0 |
| if (r2 == 0) {
0x08022440 beq 0x8022638 | goto label_17;
| }
0x08022444 ldr r1, [sl] | r1 = *(sl);
0x08022448 ldr r3, [sl, 0x20] | r3 = *((sl + 0x20));
0x0802244c ldr r7, [sl, 0x18] | r7 = *((sl + 0x18));
0x08022450 ldrb r4, [r1, 0x6a] | r4 = *((r1 + 0x6a));
0x08022454 add r2, r2, r3 | r2 += r3;
0x08022458 sub r2, r2, 1 | r2--;
0x0802245c ldr sb, [sl, 0x1c] | sb = *((sl + 0x1c));
0x08022460 rsb r4, r4, 0xc | r4 = 0xc - r4;
0x08022464 str r1, [sp, 0x28] | var_28h = r1;
0x08022468 lsr r3, r3, r4 | r3 >>= r4;
0x0802246c str r3, [sp, 0x3c] | var_3ch = r3;
0x08022470 lsr r2, r2, r4 | r2 >>= r4;
0x08022474 str r2, [sp, 0x20] | var_20h = r2;
0x08022478 lsl r4, r3, r4 | r4 = r3 << r4;
0x0802247c mov r2, 0 | r2 = 0;
0x08022480 strh r2, [sp, 0x40] | var_40h = r2;
| label_1:
0x08022484 ldr r2, [sp, 0x20] | r2 = var_20h;
0x08022488 cmp r2, r3 |
| if (r2 <= r3) {
0x0802248c blo 0x80227cc | goto label_18;
| }
0x08022490 ldr r3, [sp, 0x28] | r3 = var_28h;
0x08022494 add r2, sp, 0x3c | r2 += var_3ch;
0x08022498 add r0, sp, 0x40 | r0 += var_40h;
0x0802249c ldr r1, [r3, 0x18] | r1 = *((r3 + 0x18));
0x080224a0 ldr r3, [sp, 0x20] | r3 = var_20h;
0x080224a4 stmdaeq r8, {r2, r8, fp, ip, sp, lr} | __asm ("stmdaeq r8, {r2, r8, fp, ip, sp, lr}");
0x080224a8 subs r3, r0, 0 | r3 -= var_40h;
0x080224ac str r3, [sp, 0x1c] | var_1ch = r3;
| if (r3 == var_40h) {
0x080224b0 beq 0x80227cc | goto label_18;
| }
| if (r3 <= var_40h) {
0x080224b4 ble 0x80225b8 | goto label_19;
| }
0x080224b8 add r3, sp, 0x40 | r3 += var_40h;
0x080224bc mov r6, 0 | r6 = 0;
0x080224c0 str r3, [sp, 0x14] | var_14h = r3;
| label_0:
0x080224c4 ldr r3, [sp, 0x14] | r3 = var_14h;
0x080224c8 ldr r8, [sl, 0x38] | r8 = *((sl + 0x38));
0x080224cc ldr r5, [r3, 4]! | r5 = *((r3 += 4));
0x080224d0 mov r0, r8 | r0 = r8;
0x080224d4 str r3, [sp, 0x14] | var_14h = r3;
0x080224d8 ldr r3, [sl] | r3 = *(sl);
0x080224dc ldrb r3, [r3, 0x6a] | r3 = *((r3 + 0x6a));
0x080224e0 str r3, [sp, 0x18] | var_18h = r3;
0x080224e4 stmdaeq r3, {r3, r5, r7, sp, lr, pc} | __asm ("stmdaeq r3, {r3, r5, r7, sp, lr, pc}");
0x080224e8 ldr lr, [r5] |
0x080224ec mvn lr, lr, lsr 13 | lr = ~lr;
0x080224f0 ands lr, lr, 1 | lr &= 1;
| if (lr != lr) {
0x080224f4 bne 0x8022638 | goto label_17;
| }
0x080224f8 ldr r2, [sp, 0x18] | r2 = var_18h;
0x080224fc mov r3, 1 | r3 = 1;
0x08022500 ldr r1, [r5, 0x14] | r1 = *((r5 + 0x14));
0x08022504 lsl fp, r3, r2 |
0x08022508 mov r2, r1 | r2 = r1;
| do {
0x0802250c ldr r3, [sl, 0x20] | r3 = *((sl + 0x20));
0x08022510 cmp r3, r4 |
| if (r3 <= r4) {
0x08022514 bhi 0x8022578 |
0x08022518 ldr ip, [sl, 0x24] | ip = *((sl + 0x24));
0x0802251c add r3, r3, ip | r3 += ip;
0x08022520 cmp r4, r3 |
| if (r4 >= r3) {
0x08022524 bhs 0x80225cc | goto label_20;
| }
0x08022528 ldr r3, [r2] | r3 = *(r2);
0x0802252c tst r3, 0x100 |
| if ((r3 & 0x100) != 0) {
0x08022530 beq 0x802255c |
0x08022534 mrs ip, apsr | ip = apsr;
0x08022538 cpsid i | __asm ("cpsid i");
0x0802253c ldr r3, [r2] | r3 = *(r2);
0x08022540 bic r3, r3, 0x100 | r3 = BIT_MASK (r3, 0x100);
0x08022544 str r3, [r2] | *(r2) = r3;
0x08022548 msr cpsr_c, ip | cpsr_c = ip;
0x0802254c str r7, [r2, 0x10] | *((r2 + 0x10)) = r7;
0x08022550 adds r7, r7, 1 | r7++;
0x08022554 str sb, [r2, 0x14] | *((r2 + 0x14)) = sb;
0x08022558 adc sb, sb, 0 | __asm ("adc sb, sb, 0");
| }
0x0802255c mrs ip, apsr | ip = apsr;
0x08022560 cpsid i | __asm ("cpsid i");
0x08022564 ldr r3, [r2] | r3 = *(r2);
0x08022568 bic r3, r3, 0x800 | r3 = BIT_MASK (r3, 0x800);
0x0802256c str r3, [r2] | *(r2) = r3;
0x08022570 msr cpsr_c, ip | cpsr_c = ip;
0x08022574 add lr, lr, fp | lr += fp;
| }
0x08022578 ldr r2, [r2, 4] | r2 = *((r2 + 4));
0x0802257c add r4, r4, 1 | r4++;
0x08022580 cmp r1, r2 |
0x08022584 bne 0x802250c |
| } while (r1 != r2);
0x08022588 ldr r3, [r0, 0x10] | r3 = *((r0 + 0x10));
0x0802258c add r3, r3, lr | r3 += lr;
0x08022590 str r3, [r0, 0x10] | *((r0 + 0x10)) = r3;
| label_5:
0x08022594 mov r1, r5 | r1 = r5;
0x08022598 mov r0, sl | r0 = sl;
0x0802259c bl 0x801d4a0 | r0 = mpage_submit_page ();
0x080225a0 cmp r0, 0 |
| if (r0 < 0) {
0x080225a4 blt 0x80226a0 | goto label_21;
| }
0x080225a8 ldr r3, [sp, 0x1c] | r3 = var_1ch;
0x080225ac add r6, r6, 1 | r6++;
0x080225b0 cmp r3, r6 |
| if (r3 != r6) {
0x080225b4 bne 0x80224c4 | goto label_0;
| }
| label_19:
0x080225b8 ldrb r3, [sp, 0x40] | r3 = var_40h;
0x080225bc cmp r3, 0 |
| if (r3 != 0) {
0x080225c0 bne 0x80227c0 | goto label_22;
| }
| label_10:
0x080225c4 ldr r3, [sp, 0x3c] | r3 = var_3ch;
0x080225c8 b 0x8022484 | goto label_1;
| label_20:
0x080225cc mov r3, 0 | r3 = 0;
0x080225d0 str r3, [sl, 0x24] | *((sl + 0x24)) = r3;
0x080225d4 str r3, [sl, 0x28] | *((sl + 0x28)) = r3;
0x080225d8 ldr r3, [r0, 0x10] | r3 = *((r0 + 0x10));
0x080225dc add r3, r3, lr | r3 += lr;
0x080225e0 str r3, [r0, 0x10] | *((r0 + 0x10)) = r3;
0x080225e4 mov r3, r4 | r3 = r4;
0x080225e8 mov r0, sl | r0 = sl;
0x080225ec bl 0x801d578 | r0 = mpage_process_page_bufs ();
0x080225f0 cmp r0, 0 |
| if (r0 < 0) {
0x080225f4 blt 0x80226a0 | goto label_21;
| }
0x080225f8 ldr r3, [sl, 0x24] | r3 = *((sl + 0x24));
0x080225fc cmp r3, 0 |
| if (r3 != 0) {
0x08022600 beq 0x8022610 |
0x08022604 ldr r3, [sl, 0x20] | r3 = *((sl + 0x20));
0x08022608 cmp r4, r3 |
| if (r4 <= r3) {
0x0802260c blo 0x802263c | goto label_23;
| }
| }
0x08022610 ldrb r3, [sp, 0x40] | r3 = var_40h;
0x08022614 cmp r3, 0 |
| if (r3 != 0) {
0x08022618 bne 0x802267c | goto label_24;
| }
| label_3:
0x0802261c ldr r3, [sl, 0x24] | r3 = *((sl + 0x24));
0x08022620 mov r5, 1 | r5 = 1;
0x08022624 cmp r3, 0 |
| if (r3 != 0) {
0x08022628 bne 0x80223d0 | goto label_2;
| }
| label_4:
0x0802262c mov sb, sl | sb = sl;
0x08022630 mov fp, r3 |
0x08022634 b 0x80227e0 | goto label_25;
| label_17:
0x08022638 udf 0x12 | __asm ("udf 0x12");
| label_23:
0x0802263c mov r0, r8 | r0 = r8;
0x08022640 stmdaeq r3, {r3, r5, r6, sp, lr, pc} | __asm ("stmdaeq r3, {r3, r5, r6, sp, lr, pc}");
0x08022644 cmn r0, 0x1000 |
| if (r0 > 0x1000) {
0x08022648 bhi 0x8022698 | goto label_26;
| }
0x0802264c ldr ip, [sp, 0x18] | ip = var_18h;
0x08022650 ldr r3, [sl, 0x20] | r3 = *((sl + 0x20));
0x08022654 sub r2, ip, 0x20 | r2 = ip - 0x20;
0x08022658 rsb r1, ip, 0x20 | r1 = 0x20 - ip;
0x0802265c lsl r2, r3, r2 | r2 = r3 << r2;
0x08022660 orr r2, r2, r3, lsr r1 | r2 |= (r3 >> r1);
0x08022664 str r2, [r0, 0xc] | *((r0 + 0xc)) = r2;
0x08022668 lsl r3, r3, ip | r3 <<= ip;
0x0802266c str r3, [r0, 8] | *((r0 + 8)) = r3;
0x08022670 ldrb r3, [sp, 0x40] | r3 = var_40h;
0x08022674 cmp r3, 0 |
| if (r3 == 0) {
0x08022678 beq 0x802261c | goto label_3;
| }
| label_24:
0x0802267c add r0, sp, 0x40 | r0 += var_40h;
0x08022680 mov r5, 1 | r5 = 1;
0x08022684 stmdaeq r8, {r4, r8, fp, ip, sp, lr} | __asm ("stmdaeq r8, {r4, r8, fp, ip, sp, lr}");
0x08022688 ldr r3, [sl, 0x24] | r3 = *((sl + 0x24));
0x0802268c cmp r3, 0 |
| if (r3 != 0) {
0x08022690 bne 0x80223d0 | goto label_2;
| }
0x08022694 b 0x802262c | goto label_4;
| label_26:
0x08022698 cmp r0, 0 |
| if (r0 >= 0) {
0x0802269c bge 0x8022594 | goto label_5;
| }
| label_21:
0x080226a0 ldrb r3, [sp, 0x40] | r3 = var_40h;
0x080226a4 mov fp, r0 |
0x080226a8 mov sb, sl | sb = sl;
0x080226ac cmp r3, 0 |
| if (r3 == 0) {
0x080226b0 beq 0x80227e0 | goto label_25;
| }
0x080226b4 add r0, sp, 0x40 | r0 += var_40h;
0x080226b8 stmdaeq r8, {r4, r8, fp, ip, sp, lr} | __asm ("stmdaeq r8, {r4, r8, fp, ip, sp, lr}");
0x080226bc b 0x80227e0 | goto label_25;
| label_14:
0x080226c0 ldr r3, [r4, -0x6c] | r3 = *((r4 - 0x6c));
0x080226c4 tst r3, 0x80000 |
| if ((r3 & 0x80000) == 0) {
0x080226c8 beq 0x80223f8 | goto label_6;
| }
0x080226cc mov r0, r4 | r0 = r4;
0x080226d0 stmdaeq r0, {r2, r3, r4, r6, r8, sb, sl, ip, sp} | __asm ("stmdaeq r0, {r2, r3, r4, r6, r8, sb, sl, ip, sp}");
0x080226d4 tst r0, 1 |
| if ((r0 & 1) != 0) {
0x080226d8 bne 0x80223f8 | goto label_6;
| }
0x080226dc ldr r3, [r4, 0x14] | r3 = *((r4 + 0x14));
0x080226e0 ldr r3, [r3, 0x1f0] | r3 = *((r3 + 0x1f0));
0x080226e4 ldr r3, [r3, 0x4c] | r3 = *((r3 + 0x4c));
0x080226e8 tst r3, 0x8000000 |
| if ((r3 & loc.imp.fs_overflowgid) == 0) {
0x080226ec beq 0x80223f8 | goto label_6;
| }
0x080226f0 mov r6, 1 | r6 = 1;
0x080226f4 movw r3, 0x42b | r3 = 0x42b;
0x080226f8 b 0x8022400 | goto label_7;
| label_16:
0x080226fc ldr r3, [sl, 0x38] | r3 = *((sl + 0x38));
0x08022700 ldr r2, [r3, 8] | r2 = *((r3 + 8));
0x08022704 cmp r2, 0 |
| if (r2 == 0) {
0x08022708 beq 0x80227a4 | goto label_27;
| }
| label_9:
0x0802270c ldr r2, [r3, 0x14] | r2 = *((r3 + 0x14));
0x08022710 tst r2, 1 |
| if ((r2 & 1) != 0) {
0x08022714 bne 0x8022438 | goto label_8;
| }
0x08022718 add r4, r4, 0x1d4 | r4 += 0x1d4;
0x0802271c orr r2, r2, 1 | r2 |= 1;
0x08022720 str r2, [r3, 0x14] | *((r3 + 0x14)) = r2;
0x08022724 pld [r4] | __asm ("pld [r4]");
| do {
0x08022728 ldrex r3, [r4] | __asm ("ldrex r3, [r4]");
0x0802272c add r3, r3, 1 | r3++;
0x08022730 strex r2, r3, [r4] | __asm ("strex r2, r3, [r4]");
0x08022734 teq r2, 0 | __asm ("teq r2, 0");
0x08022738 bne 0x8022728 |
| } while ((r2 & 1) != 0);
0x0802273c b 0x8022438 | goto label_8;
| label_15:
0x08022740 ldr r3, [sp, 0x24] | r3 = var_24h;
0x08022744 mov fp, r0 |
0x08022748 mov sb, sl | sb = sl;
0x0802274c ldr r4, [r3, 0x14] | r4 = *((r3 + 0x14));
0x08022750 ldr r3, [r4, 0x1f0] | r3 = *((r4 + 0x1f0));
0x08022754 ldr r2, [r3, 0x130] | r2 = *((r3 + 0x130));
0x08022758 tst r2, 2 |
| if ((r2 & 2) != 0) {
0x0802275c bne 0x80228f8 | goto label_13;
| }
0x08022760 ldr r6, [r3, 0x54] | r6 = *((r3 + 0x54));
0x08022764 ubfx r6, r6, 1, 1 | r6 = (r6 >> 1) & ((1 << 1) - 1);
0x08022768 cmp r6, 0 |
| if (r6 != 0) {
0x0802276c bne 0x80228f8 | goto label_13;
| }
0x08022770 cmn r0, 0xc |
| if (r0 != 0xc) {
0x08022774 beq 0x8022790 |
0x08022778 cmn r0, 0x1c |
| if (r0 != 0x1c) {
0x0802277c bne 0x80228a4 | goto label_28;
| }
0x08022780 mov r0, r4 | r0 = r4;
0x08022784 stmdaeq r0, {r2, r3, r6, sb, fp} | __asm ("stmdaeq r0, {r2, r3, r6, sb, fp}");
0x08022788 orrs r0, r0, r1 | r0 |= r1;
| if (r0 == r0) {
0x0802278c beq 0x8022958 | goto label_29;
| }
| }
0x08022790 cmp r5, 0 |
0x08022794 bne 0x80227e0 |
| while (r2 >= r4) {
| label_11:
0x08022798 mov r0, fp | r0 = fp;
0x0802279c add sp, sp, 0x84 |
0x080227a0 pop {r4, r5, r6, r7, r8, sb, sl, fp, pc} |
| label_27:
0x080227a4 ldr r0, [sp, 0x2c] | r0 = var_2ch;
0x080227a8 cmp r0, 0x1000 |
| if (r0 < 0x1000) {
0x080227ac ldrhs r1, [r0, 4] | r1 = *((r0 + 4));
| }
| if (r0 < 0x1000) {
0x080227b0 strhs r1, [r3, 8] | *((r3 + 8)) = r1;
| }
| if (r0 < 0x1000) {
0x080227b4 strhs r2, [r0, 4] | *((r0 + 4)) = r2;
| }
| if (r0 < 0x1000) {
0x080227b8 ldrhs r3, [sl, 0x38] | r3 = *((sl + 0x38));
| }
0x080227bc b 0x802270c | goto label_9;
| label_22:
0x080227c0 add r0, sp, 0x40 | r0 += var_40h;
0x080227c4 stmdaeq r8, {r4, r8, fp, ip, sp, lr} | __asm ("stmdaeq r8, {r4, r8, fp, ip, sp, lr}");
0x080227c8 b 0x80225c4 | goto label_10;
| label_18:
0x080227cc mov r3, 0 | r3 = 0;
0x080227d0 mov sb, sl | sb = sl;
0x080227d4 mov fp, r3 |
0x080227d8 str r3, [sl, 0x24] | *((sl + 0x24)) = r3;
0x080227dc str r3, [sl, 0x28] | *((sl + 0x28)) = r3;
| label_25:
0x080227e0 ldr r2, [sb, 8] | r2 = *((sb + 8));
0x080227e4 ldr r3, [sp, 0x24] | r3 = var_24h;
0x080227e8 lsr r5, r2, 0x14 | r5 = r2 >> 0x14;
0x080227ec lsl r4, r2, 0xc | r4 = r2 << 0xc;
0x080227f0 ldrd r2, r3, [r3, -0x28] | __asm ("ldrd r2, r3, [r3, -0x28]");
0x080227f4 cmp r2, r4 |
0x080227f8 sbcs r3, r3, r5 | __asm ("sbcs r3, r3, r5");
0x080227fc bge 0x8022798 |
| }
0x08022800 ldr r7, [sp, 0x24] | r7 = var_24h;
0x08022804 sub r6, r7, 0x20 | r6 = r7 - 0x20;
0x08022808 mov r0, r6 | r0 = r6;
0x0802280c stmdaeq r8, {r2, r6, r7, r8, sb, sl, ip, sp, lr} | __asm ("stmdaeq r8, {r2, r6, r7, r8, sb, sl, ip, sp, lr}");
0x08022810 mov r3, sp | r3 = sp;
0x08022814 bic r3, r3, 0x1fc0 | r3 = BIT_MASK (r3, 0x1fc0);
0x08022818 bic r3, r3, 0x3f | r3 = BIT_MASK (r3, 0x3f);
0x0802281c ldr r2, [r3, 4] | r2 = *((r3 + 4));
0x08022820 add r2, r2, 1 | r2++;
0x08022824 str r2, [r3, 4] | *((r3 + 4)) = r2;
0x08022828 ldr r8, [r7, 0x30] | r8 = *((r7 + 0x30));
0x0802282c ldr r7, [r7, 0x34] | r7 = *((r7 + 0x34));
0x08022830 ldr r2, [r3, 4] | r2 = *((r3 + 4));
0x08022834 sub r2, r2, 1 | r2--;
0x08022838 str r2, [r3, 4] | *((r3 + 4)) = r2;
0x0802283c cmp r2, 0 |
| if (r2 == 0) {
0x08022840 beq 0x8022944 | goto label_30;
| }
| label_12:
0x08022844 ldr r0, [sp, 0x24] | r0 = var_24h;
0x08022848 cmp r8, r4 |
0x0802284c sbcs r1, r7, r5 | __asm ("sbcs r1, r7, r5");
0x08022850 mov r2, r4 | r2 = r4;
| if (r8 >= r4) {
0x08022854 movlt r2, r8 | r2 = r8;
| }
0x08022858 mov r3, r5 | r3 = r5;
0x0802285c ldr r1, [r0, -0x28] | r1 = *((r0 - 0x28));
| if (r8 >= r4) {
0x08022860 movlt r3, r7 | r3 = r7;
| }
0x08022864 cmp r1, r2 |
0x08022868 ldr r1, [r0, -0x24] | r1 = *((r0 - 0x24));
0x0802286c sbcs r1, r1, r3 | __asm ("sbcs r1, r1, r3");
0x08022870 strdlt r2, r3, [r0, -0x28] | __asm ("strdlt r2, r3, [r0, -0x28]");
0x08022874 mov r0, r6 | r0 = r6;
0x08022878 stmdaeq r8, {r3, r6, r7, r8, sb, sl, ip, sp, lr} | __asm ("stmdaeq r8, {r3, r6, r7, r8, sb, sl, ip, sp, lr}");
0x0802287c ldr r2, [pc, 0x258] | r2 = *(0x8022ad8);
0x08022880 ldr r1, [sp, 0x24] | r1 = var_24h;
0x08022884 movw r3, 0x9ce | r3 = 0x9ce;
0x08022888 ldr r0, [sp, 0x2c] | r0 = var_2ch;
0x0802288c stmdaeq r2, {r3, r5, r6, r7, r8, sp} | __asm ("stmdaeq r2, {r3, r5, r6, r7, r8, sp}");
0x08022890 subs r4, r0, 0 | r4 = r0 - 0;
0x08022894 bne 0x8022908 |
| while (1) {
0x08022898 cmp fp, 0 |
| if (fp != 0) {
0x0802289c moveq fp, r4 |
| }
0x080228a0 b 0x8022798 | goto label_11;
| label_28:
0x080228a4 ldr r3, [sp, 0x24] | r3 = var_24h;
0x080228a8 mov r0, r4 | r0 = r4;
0x080228ac rsb r1, fp, 0 | r1 = fp - ;
0x080228b0 ldr r3, [r3, 0x20] | r3 = *((r3 + 0x20));
0x080228b4 str r6, [sp, 4] | var_4h = r6;
0x080228b8 ldr r2, [sl, 0x24] | r2 = *((sl + 0x24));
0x080228bc str r2, [sp, 8] | var_8h = r2;
0x080228c0 ldr r2, [sl, 0x20] | r2 = *((sl + 0x20));
0x080228c4 str r2, [sp] | *(sp) = r2;
0x080228c8 stmdaeq r5, {r3, r4, r5, fp, sp, pc} | __asm ("stmdaeq r5, {r3, r4, r5, fp, sp, pc}");
0x080228cc stmdaeq r5, {r3, r4, r5, fp, sp, pc} | __asm ("stmdaeq r5, {r3, r4, r5, fp, sp, pc}");
0x080228d0 str r1, [sp, 0xc] | var_ch = r1;
0x080228d4 stmdaeq r5, {r5, r7, fp, sp, pc} | __asm ("stmdaeq r5, {r5, r7, fp, sp, pc}");
0x080228d8 stmdaeq r5, {r5, r7, fp, sp, pc} | __asm ("stmdaeq r5, {r5, r7, fp, sp, pc}");
0x080228dc 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}");
0x080228e0 stmdaeq r5, {r2, r5, r7, fp, sp, pc} | __asm ("stmdaeq r5, {r2, r5, r7, fp, sp, pc}");
0x080228e4 stmdaeq r5, {r2, r5, r7, fp, sp, pc} | __asm ("stmdaeq r5, {r2, r5, r7, fp, sp, pc}");
0x080228e8 stmdaeq r5, {r5, r7, fp, sp, pc} | __asm ("stmdaeq r5, {r5, r7, fp, sp, pc}");
0x080228ec stmdaeq r5, {r5, r7, fp, sp, pc} | __asm ("stmdaeq r5, {r5, r7, fp, sp, pc}");
0x080228f0 mov r0, r4 | r0 = r4;
0x080228f4 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}");
| label_13:
0x080228f8 ldr r2, [sp, 0x34] | r2 = var_34h;
0x080228fc mov r3, 1 | r3 = 1;
0x08022900 strb r3, [r2] | *(r2) = r3;
0x08022904 b 0x8022798 | goto label_11;
0x08022908 ldr r3, [sp, 0x24] | r3 = var_24h;
0x0802290c mov r2, 0 | r2 = 0;
0x08022910 ldr r1, [pc, 0x1c4] | r1 = *(0x8022ad8);
0x08022914 ldr r0, [r3, 0x14] | r0 = *((r3 + 0x14));
0x08022918 ldr r3, [r3, 0x20] | r3 = *((r3 + 0x20));
0x0802291c str r3, [sp, 0xc] | var_ch = r3;
0x08022920 stmdaeq r5, {r3, r4, fp, sp, pc} | __asm ("stmdaeq r5, {r3, r4, fp, sp, pc}");
0x08022924 stmdaeq r5, {r3, r4, fp, sp, pc} | __asm ("stmdaeq r5, {r3, r4, fp, sp, pc}");
0x08022928 str r3, [sp, 8] | var_8h = r3;
0x0802292c mov r3, 0 | r3 = 0;
0x08022930 strd r2, r3, [sp] | __asm ("strd r2, r3, [sp]");
0x08022934 rsb r3, r4, 0 | r3 = r4 - ;
0x08022938 mov r2, 0x9d0 | r2 = 0x9d0;
0x0802293c stmdaeq r4, {r2, r4, r5, r7, r8, sb, sp, lr} | __asm ("stmdaeq r4, {r2, r4, r5, r7, r8, sb, sp, lr}");
0x08022940 b 0x8022898 |
| }
| label_30:
0x08022944 ldr r3, [r3] | r3 = *(r3);
0x08022948 tst r3, 2 |
| if ((r3 & 2) == 0) {
0x0802294c beq 0x8022844 | goto label_12;
| }
0x08022950 stmdaeq r8, {r4, r6, r7, sb, sl, ip, sp, lr} | __asm ("stmdaeq r8, {r4, r6, r7, sb, sl, ip, sp, lr}");
0x08022954 b 0x8022844 | goto label_12;
| label_29:
0x08022958 ldr r5, [sp, 0x24] | r5 = var_24h;
0x0802295c mov r0, r4 | r0 = r4;
0x08022960 stmdaeq r5, {r5, r7, fp, sp, pc} | __asm ("stmdaeq r5, {r5, r7, fp, sp, pc}");
0x08022964 stmdaeq r5, {r5, r7, fp, sp, pc} | __asm ("stmdaeq r5, {r5, r7, fp, sp, pc}");
0x08022968 ldr r3, [r5, 0x20] | r3 = *((r5 + 0x20));
0x0802296c str r6, [sp, 4] | var_4h = r6;
0x08022970 mov r6, r5 | r6 = r5;
0x08022974 ldr r2, [sl, 0x24] | r2 = *((sl + 0x24));
0x08022978 str r2, [sp, 8] | var_8h = r2;
0x0802297c ldr r2, [sl, 0x20] | r2 = *((sl + 0x20));
0x08022980 str r2, [sp] | *(sp) = r2;
0x08022984 mov r2, 0x1c | r2 = 0x1c;
0x08022988 str r2, [sp, 0xc] | var_ch = r2;
0x0802298c stmdaeq r5, {r3, r4, r5, fp, sp, pc} | __asm ("stmdaeq r5, {r3, r4, r5, fp, sp, pc}");
0x08022990 stmdaeq r5, {r3, r4, r5, fp, sp, pc} | __asm ("stmdaeq r5, {r3, r4, r5, fp, sp, pc}");
0x08022994 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}");
0x08022998 mov r0, r4 | r0 = r4;
0x0802299c stmdaeq r5, {r2, r5, r7, fp, sp, pc} | __asm ("stmdaeq r5, {r2, r5, r7, fp, sp, pc}");
0x080229a0 stmdaeq r5, {r2, r5, r7, fp, sp, pc} | __asm ("stmdaeq r5, {r2, r5, r7, fp, sp, pc}");
0x080229a4 stmdaeq r5, {r5, r7, fp, sp, pc} | __asm ("stmdaeq r5, {r5, r7, fp, sp, pc}");
0x080229a8 stmdaeq r5, {r5, r7, fp, sp, pc} | __asm ("stmdaeq r5, {r5, r7, fp, sp, pc}");
0x080229ac 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}");
0x080229b0 ldr r4, [r5, 0x14] | r4 = *((r5 + 0x14));
0x080229b4 mov r0, r4 | r0 = r4;
0x080229b8 ldr r5, [r4, 0x1f0] | r5 = *((r4 + 0x1f0));
0x080229bc stmdaeq r0, {r2, r3, r6, sb, fp} | __asm ("stmdaeq r0, {r2, r3, r6, sb, fp}");
0x080229c0 ldr r2, [r6, 0x14] | r2 = *((r6 + 0x14));
0x080229c4 mov r3, r0 | r3 = r0;
0x080229c8 ldr r2, [r2, 0x1f0] | r2 = *((r2 + 0x1f0));
0x080229cc ldr r0, [r2, 0x30] | r0 = *((r2 + 0x30));
0x080229d0 lsl r2, r1, r0 | r2 = r1 << r0;
0x080229d4 sub r1, r0, 0x20 | r1 = r0 - 0x20;
0x080229d8 orr r2, r2, r3, lsl r1 | r2 |= (r3 << r1);
0x080229dc rsb r1, r0, 0x20 | r1 = 0x20 - r0;
0x080229e0 orr r2, r2, r3, lsr r1 | r2 |= (r3 >> r1);
0x080229e4 stmdaeq r5, {r5, r7, fp, sp, pc} | __asm ("stmdaeq r5, {r5, r7, fp, sp, pc}");
0x080229e8 stmdaeq r5, {r5, r7, fp, sp, pc} | __asm ("stmdaeq r5, {r5, r7, fp, sp, pc}");
0x080229ec lsl r3, r3, r0 | r3 <<= r0;
0x080229f0 str r2, [sp, 4] | var_4h = r2;
0x080229f4 mov r0, r4 | r0 = r4;
0x080229f8 str r3, [sp] | *(sp) = r3;
0x080229fc stmdaeq r5, {r4, r6, r7, fp, sp, pc} | __asm ("stmdaeq r5, {r4, r6, r7, fp, sp, pc}");
0x08022a00 stmdaeq r5, {r4, r6, r7, fp, sp, pc} | __asm ("stmdaeq r5, {r4, r6, r7, fp, sp, pc}");
0x08022a04 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}");
0x08022a08 mov r0, r4 | r0 = r4;
0x08022a0c stmdaeq r5, {r4, r5, r6, r7, fp, sp, pc} | __asm ("stmdaeq r5, {r4, r5, r6, r7, fp, sp, pc}");
0x08022a10 stmdaeq r5, {r4, r5, r6, r7, fp, sp, pc} | __asm ("stmdaeq r5, {r4, r5, r6, r7, fp, sp, pc}");
0x08022a14 stmdaeq r5, {r5, r7, fp, sp, pc} | __asm ("stmdaeq r5, {r5, r7, fp, sp, pc}");
0x08022a18 stmdaeq r5, {r5, r7, fp, sp, pc} | __asm ("stmdaeq r5, {r5, r7, fp, sp, pc}");
0x08022a1c 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}");
0x08022a20 ldr r3, [r4, 0x1f0] | r3 = *((r4 + 0x1f0));
0x08022a24 ldr r2, [r5, 0xb0] | r2 = *((r5 + 0xb0));
0x08022a28 ldr r1, [r3, 0x30] | r1 = *((r3 + 0x30));
0x08022a2c ldr r3, [r5, 0xb4] | r3 = *((r5 + 0xb4));
0x08022a30 sub r0, r1, 0x20 | r0 = r1 - 0x20;
0x08022a34 lsl r3, r3, r1 | r3 <<= r1;
0x08022a38 orr r3, r3, r2, lsl r0 | r3 |= (r2 << r0);
0x08022a3c rsb r0, r1, 0x20 | r0 = 0x20 - r1;
0x08022a40 orr r3, r3, r2, lsr r0 | r3 |= (r2 >> r0);
0x08022a44 mov r0, r4 | r0 = r4;
0x08022a48 lsl r2, r2, r1 | r2 <<= r1;
0x08022a4c stmdaeq r5, {r5, r7, fp, sp, pc} | __asm ("stmdaeq r5, {r5, r7, fp, sp, pc}");
0x08022a50 stmdaeq r5, {r5, r7, fp, sp, pc} | __asm ("stmdaeq r5, {r5, r7, fp, sp, pc}");
0x08022a54 strd r2, r3, [sp] | __asm ("strd r2, r3, [sp]");
0x08022a58 stmdaeq r5, {r2, r3, r8, fp, sp, pc} | __asm ("stmdaeq r5, {r2, r3, r8, fp, sp, pc}");
0x08022a5c stmdaeq r5, {r2, r3, r8, fp, sp, pc} | __asm ("stmdaeq r5, {r2, r3, r8, fp, sp, pc}");
0x08022a60 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}");
0x08022a64 ldr r3, [r4, 0x1f0] | r3 = *((r4 + 0x1f0));
0x08022a68 ldr r1, [r3, 0x30] | r1 = *((r3 + 0x30));
0x08022a6c ldrd r2, r3, [r5, 0xc8] | __asm ("ldrd r2, r3, [r5, 0xc8]");
0x08022a70 sub r0, r1, 0x20 | r0 = r1 - 0x20;
0x08022a74 lsl r3, r3, r1 | r3 <<= r1;
0x08022a78 orr r3, r3, r2, lsl r0 | r3 |= (r2 << r0);
0x08022a7c rsb r0, r1, 0x20 | r0 = 0x20 - r1;
0x08022a80 orr r3, r3, r2, lsr r0 | r3 |= (r2 >> r0);
0x08022a84 mov r0, r4 | r0 = r4;
0x08022a88 lsl r2, r2, r1 | r2 <<= r1;
0x08022a8c stmdaeq r5, {r5, r7, fp, sp, pc} | __asm ("stmdaeq r5, {r5, r7, fp, sp, pc}");
0x08022a90 stmdaeq r5, {r5, r7, fp, sp, pc} | __asm ("stmdaeq r5, {r5, r7, fp, sp, pc}");
0x08022a94 strd r2, r3, [sp] | __asm ("strd r2, r3, [sp]");
0x08022a98 stmdaeq r5, {r5, r8, fp, sp, pc} | __asm ("stmdaeq r5, {r5, r8, fp, sp, pc}");
0x08022a9c stmdaeq r5, {r5, r8, fp, sp, pc} | __asm ("stmdaeq r5, {r5, r8, fp, sp, pc}");
0x08022aa0 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}");
0x08022aa4 mov r0, r4 | r0 = r4;
0x08022aa8 stmdaeq r5, {r2, r4, r5, r8, fp, sp, pc} | __asm ("stmdaeq r5, {r2, r4, r5, r8, fp, sp, pc}");
0x08022aac stmdaeq r5, {r2, r4, r5, r8, fp, sp, pc} | __asm ("stmdaeq r5, {r2, r4, r5, r8, fp, sp, pc}");
0x08022ab0 stmdaeq r5, {r5, r7, fp, sp, pc} | __asm ("stmdaeq r5, {r5, r7, fp, sp, pc}");
0x08022ab4 stmdaeq r5, {r5, r7, fp, sp, pc} | __asm ("stmdaeq r5, {r5, r7, fp, sp, pc}");
0x08022ab8 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}");
0x08022abc ldr r3, [r6, 0x1ac] | r3 = *((r6 + 0x1ac));
0x08022ac0 mov r0, r4 | r0 = r4;
0x08022ac4 stmdaeq r5, {r4, r6, r8, fp, sp, pc} | __asm ("stmdaeq r5, {r4, r6, r8, fp, sp, pc}");
0x08022ac8 stmdaeq r5, {r4, r6, r8, fp, sp, pc} | __asm ("stmdaeq r5, {r4, r6, r8, fp, sp, pc}");
0x08022acc stmdaeq r5, {r5, r7, fp, sp, pc} | __asm ("stmdaeq r5, {r5, r7, fp, sp, pc}");
0x08022ad0 stmdaeq r5, {r5, r7, fp, sp, pc} | __asm ("stmdaeq r5, {r5, r7, fp, sp, pc}");
0x08022ad4 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}");
0x08022ad8 b 0x80228f8 | goto label_13;
| }
; 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 printf used 1 times ext4.ko