[*] Binary protection state of fsck.ext3
Full RELRO Canary found NX enabled PIE enabled No RPATH No RUNPATH No Symbols
[*] Function popen tear down of fsck.ext3
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-80367616.squashfs_v4_le_extract/usr/sbin/fsck.ext3 @ 0x1753c */
| #include <stdint.h>
|
| #define BIT_MASK(t,v) ((t)(-((v)!= 0)))&(((t)-1)>>((sizeof(t)*CHAR_BIT)-(v)))
|
; (fcn) fcn.0001753c () | void fcn_0001753c (int16_t arg_10h, int16_t arg1, int16_t arg2, int16_t arg3, int16_t arg4) {
| int16_t var_0h;
| int16_t var_4h;
| int16_t var_8h;
| int16_t var_10h;
| int16_t var_14h_2;
| int16_t var_18h;
| int16_t var_1ch;
| int16_t var_20h;
| int16_t var_24h;
| int16_t var_28h;
| int16_t var_2ch;
| int16_t var_30h;
| int16_t var_38h_2;
| int16_t var_3ch;
| int16_t var_40h;
| int16_t var_44h;
| int16_t var_48h;
| int16_t var_4ch;
| int16_t var_50h;
| int16_t var_54h;
| int16_t var_58h;
| int16_t var_5ch;
| int16_t var_60h;
| int16_t var_64h;
| int16_t var_68h;
| int16_t var_6ch;
| int16_t var_70h;
| int16_t var_74h;
| int16_t var_78h;
| int16_t var_7ch;
| int16_t var_80h;
| int16_t var_94h;
| int16_t var_9ch;
| int16_t var_a0h;
| int16_t var_a4h;
| int16_t var_a8h;
| int16_t var_ach;
| int16_t var_184h;
| int16_t var_28ch;
| int16_t var_394h;
| r0 = arg1;
| r1 = arg2;
| r2 = arg3;
| r3 = arg4;
0x0001753c push.w {r4, r5, r6, r7, r8, sb, sl, fp, lr} |
0x00017540 mov r4, r2 | r4 = r2;
0x00017542 ldrd r2, r3, [r1, 8] | __asm ("ldrd r2, r3, [r1, 8]");
0x00017546 mov r7, r1 | r7 = r1;
0x00017548 mov r8, r0 | r8 = r0;
0x0001754a vpush {d8} | __asm ("vpush {d8}");
0x0001754e sub.w sp, sp, 0x39c |
0x00017552 strd r2, r3, [sp, 0x30] | __asm ("strd r2, r3, [sp, 0x30]");
0x00017556 add.w sl, sp, 0x9c | sl += var_9ch;
0x0001755a ldr.w r2, [pc, 0xab0] | r2 = *(0x0001800c);
0x0001755e ldr.w r3, [pc, 0xab0] |
0x00017562 ldr.w fp, [r1] | fp = *(r1);
0x00017566 add r2, pc | r2 += pc;
0x00017568 ldr r5, [r4, 0x68] | r5 = *((r4 + 0x68));
0x0001756a ldr r3, [r2, r3] | r3 = *((r2 + r3));
0x0001756c ldr r1, [r4] | r1 = *(r4);
0x0001756e mov r2, fp | r2 = fp;
0x00017570 ldr.w r0, [r5, 0x208] | r0 = *((r5 + 0x208));
0x00017574 ldr r3, [r3] | r3 = *(0x18012);
0x00017576 str r3, [sp, 0x394] | var_394h = r3;
0x00017578 mov.w r3, 0 | r3 = 0;
0x0001757c movs r3, 0 | r3 = 0;
0x0001757e str r5, [sp, 0x18] | var_18h = r5;
0x00017580 str.w r3, [sl] | __asm ("str.w r3, [sl]");
0x00017584 str r1, [sp, 0x1c] | var_1ch = r1;
0x00017586 blx 0x8af8 | ext2fs_bg_flags_set ();
0x0001758a str r0, [sp, 0x28] | var_28h = r0;
| if (r0 != 0) {
0x0001758c cbz r0, 0x175a4 |
0x0001758e ldr r3, [r5] | r3 = *(r5);
0x00017590 ldr r3, [r3, 0x10] | r3 = *((r3 + 0x10));
0x00017592 ldrh.w r3, [r3, 0x27e] | r3 = *((r3 + 0x27e));
0x00017596 lsls r0, r3, 0x1f | r0 = r3 << 0x1f;
0x00017598 itet pl |
| if (r0 < r3) {
0x0001759a ldrpl r3, [r5, 0x28] | r3 = *((r5 + 0x28));
| }
| if (r0 >= r3) {
0x0001759c movmi r3, 1 | r3 = 1;
| }
| if (r0 >= r3) {
0x0001759e ubfxpl r3, r3, 0x14, 1 | __asm ("ubfxpl r3, r3, 0x14, 1");
| }
0x000175a0 strh r0, [r0, r4] | *((r0 + r4)) = r0;
0x000175a2 str r3, [sp, 0x28] | var_28h = r3;
| }
0x000175a4 ldr r2, [sp, 0x18] | r2 = var_18h;
0x000175a6 ldr r3, [r2, 0x24] | r3 = *((r2 + 0x24));
0x000175a8 ands r3, r3, 7 | r3 &= 7;
0x000175ac str r3, [sp, 0x20] | var_20h = r3;
| if (r3 != r3) {
0x000175ae bne.w 0x178e6 | goto label_7;
| }
0x000175b2 ldr.w r6, [r2, 0x1ec] | r6 = *((r2 + 0x1ec));
| if (r6 != 0) {
0x000175b6 cbz r6, 0x175d0 |
0x000175b8 ldrd r2, r3, [r4, 0x60] | __asm ("ldrd r2, r3, [r4, 0x60]");
0x000175bc movs r1, 2 | r1 = 2;
0x000175be ldr r0, [sp, 0x18] | r0 = var_18h;
0x000175c0 add.w ip, r2, 1 |
0x000175c4 str.w ip, [r4, 0x60] | __asm ("str.w ip, [r4, 0x60]");
0x000175c8 blx r6 | r0 = uint32_t (*r6)(uint32_t, uint32_t, uint32_t) (r0, r1, r2);
0x000175ca cmp r0, 0 |
| if (r0 != 0) {
0x000175cc bne.w 0x178e6 | goto label_7;
| }
| }
0x000175d0 ldr.w r2, [r8, 0x10] | r2 = *((r8 + 0x10));
0x000175d4 ldr r3, [r2, 0x64] | r3 = *((r2 + 0x64));
0x000175d6 ands r3, r3, 0x400 | r3 &= 0x400;
0x000175da itt eq |
| if (r3 != r3) {
0x000175dc moveq sb, r3 | sb = r3;
| }
| if (r3 != r3) {
0x000175de streq sb, [sp, 0x24] | var_24h = sb;
| }
0x000175e2 bne 0x17690 |
| while (1) {
0x000175e4 ldr r3, [r2, 0x60] | r3 = *((r2 + 0x60));
0x000175e6 mov r2, fp | r2 = fp;
0x000175e8 str r3, [sp, 0x38] | var_38h_2 = r3;
0x000175ea ldr r3, [sp, 0x18] | r3 = var_18h;
0x000175ec ldr.w r0, [r3, 0x1f0] | r0 = *((r3 + 0x1f0));
0x000175f0 movs r3, 0 | r3 = 0;
0x000175f2 blx 0x8af8 | r0 = ext2fs_bg_flags_set ();
0x000175f6 cmp r0, 0 |
| if (r0 != 0) {
0x000175f8 beq 0x17668 |
0x000175fa ldrd r2, r3, [sp, 0x30] | __asm ("ldrd r2, r3, [var_30h]");
0x000175fe ldrd r0, r1, [r7, 0x10] | __asm ("ldrd r0, r1, [r7, 0x10]");
0x00017602 vmov.i32 d16, 0 | __asm ("vmov.i32 d16, 0");
0x00017606 strd r2, r3, [r4, 0x20] | __asm ("strd r2, r3, [r4, 0x20]");
0x0001760a ldr.w r3, [r8, 0x10] | r3 = *((r8 + 0x10));
0x0001760e str.w fp, [r4, 0xc] | __asm ("str.w fp, [r4, 0xc]");
0x00017612 ldr r2, [r3, 0x60] | r2 = *((r3 + 0x60));
0x00017614 movs r3, 0 | r3 = 0;
0x00017616 strd r0, r1, [r4, 0x30] | __asm ("strd r0, r1, [r4, 0x30]");
0x0001761a str r3, [r4, 0x10] | *((r4 + 0x10)) = r3;
0x0001761c lsls r1, r2, 0x10 | r1 = r2 << 0x10;
0x0001761e str r3, [r4, 0x1c] | *((r4 + 0x1c)) = r3;
0x00017620 vstr d16, [r4, 0x48] | __asm ("vstr d16, [r4, 0x48]");
| if (r1 < r2) {
0x00017624 bmi.w 0x17d42 | goto label_39;
| }
| label_8:
0x00017628 ldrd r3, r2, [r7, 8] | __asm ("ldrd r3, r2, [r7, 8]");
0x0001762c orrs r3, r2 | r3 |= r2;
| if (r3 != r2) {
0x0001762e bne 0x1769a | goto label_40;
| }
0x00017630 ldr.w r3, [r8, 0x10] | r3 = *((r8 + 0x10));
0x00017634 ldr r3, [r3, 0x60] | r3 = *((r3 + 0x60));
0x00017636 lsls r2, r3, 0x11 | r2 = r3 << 0x11;
| if (r2 < r3) {
0x00017638 bmi.w 0x178f0 | goto label_41;
| }
| label_1:
0x0001763c ldr.w r3, [sl] | r3 = *(sl);
| if (r3 != 0) {
0x00017640 cbnz r3, 0x1769a | goto label_40;
| }
0x00017642 ldr r5, [sp, 0x18] | r5 = var_18h;
0x00017644 add.w r3, r4, 8 | r3 = r4 + 8;
0x00017648 vmov.i32 d16, 0 | __asm ("vmov.i32 d16, 0");
0x0001764c movs r1, 0x15 |
0x0001764e movt r1, 2 | r1 = 0x20015;
0x00017652 mov r2, r3 | r2 = r3;
0x00017654 mov r0, r5 | r0 = r5;
0x00017656 ldr r6, [r5] | r6 = *(r5);
0x00017658 str r3, [sp, 0x2c] | var_2ch = r3;
0x0001765a vstr d16, [sp, 0xa8] | __asm ("vstr d16, [sp, 0xa8]");
0x0001765e bl 0x202f8 | r0 = fix_problem ();
0x00017662 cmp r0, 0 |
| if (r0 != 0) {
0x00017664 bne.w 0x1803c | goto label_42;
| }
| }
| label_0:
0x00017668 ldr.w r2, [pc, 0x9a8] |
0x0001766c ldr.w r3, [pc, 0x9a0] | r3 = *(0x18010);
0x00017670 add r2, pc | r2 = 0x2f688;
0x00017672 ldr r3, [r2, r3] | r3 = *(0x2f688);
0x00017674 ldr r2, [r3] | r2 = *(0x2f688);
0x00017676 ldr r3, [sp, 0x394] | r3 = var_394h;
0x00017678 eors r2, r3 | r2 ^= r3;
0x0001767a mov.w r3, 0 | r3 = 0;
| if (r2 != r3) {
0x0001767e bne.w 0x18eaa | goto label_43;
| }
0x00017682 ldr r0, [sp, 0x20] | r0 = var_20h;
0x00017684 add.w sp, sp, 0x39c |
0x00017688 vpop {d8} | __asm ("vpop {d8}");
0x0001768c pop.w {r4, r5, r6, r7, r8, sb, sl, fp, pc} |
0x00017690 movs r3, 8 | r3 = 8;
0x00017692 mov.w sb, 0xc | sb = 0xc;
0x00017696 str r3, [sp, 0x24] | var_24h = r3;
0x00017698 b 0x175e4 |
| }
| label_40:
0x0001769a add r3, sp, 0xa8 | r3 += var_a8h;
0x0001769c str r3, [sp, 0x40] | var_40h = r3;
| label_19:
0x0001769e ldrd r3, r2, [r7, 0x10] | __asm ("ldrd r3, r2, [r7, 0x10]");
0x000176a2 orrs r3, r2 | r3 |= r2;
0x000176a4 ldr r3, [sp, 0x18] | r3 = var_18h;
0x000176a6 ldr.w r0, [r3, 0x268] | r0 = *((r3 + 0x268));
0x000176aa ite ne |
| if (r3 == r2) {
0x000176ac movne r3, 1 | r3 = 1;
| }
| if (r3 != r2) {
0x000176ae moveq r3, 0 | r3 = 0;
| }
0x000176b0 lsls r3, r3, 1 | r3 <<= 1;
0x000176b2 str r3, [sp, 0x2c] | var_2ch = r3;
0x000176b4 cmp r0, 0 |
| if (r0 == 0) {
0x000176b6 beq.w 0x178ec | goto label_44;
| }
0x000176ba mov r1, fp | r1 = fp;
0x000176bc blx 0x95cc | r0 = popen (r0, r1)
0x000176c0 subs r3, r0, 0 | r3 = r0 - 0;
0x000176c2 it ne |
| if (r3 == r0) {
0x000176c4 movne r3, 1 | r3 = 1;
| }
0x000176c6 str r3, [sp, 0x64] | var_64h = r3;
| do {
0x000176c8 ldr.w r3, [pc, 0x94c] |
0x000176cc add r3, pc | r3 = 0x2f6e8;
0x000176ce ldr r0, [r3] | r0 = *(0x2f6e8);
0x000176d0 cmp r0, 0 |
| if (r0 == 0) {
0x000176d2 beq.w 0x17f0a | goto label_45;
| }
| label_13:
0x000176d6 bl 0x20224 | ehandler_operation ();
0x000176da ldr.w r3, [sl] | r3 = *(sl);
0x000176de cmp r3, 0 |
| if (r3 == 0) {
0x000176e0 beq.w 0x17c86 | goto label_46;
| }
0x000176e4 ldr r5, [sp, 0x1c] | r5 = var_1ch;
0x000176e6 movs r1, 0 | r1 = 0;
0x000176e8 ldr.w r2, [r8, 0x14] | r2 = *((r8 + 0x14));
0x000176ec mov r0, r5 | r0 = r5;
0x000176ee subs r2, r2, r3 | r2 -= r3;
0x000176f0 blx 0x8cf0 | ext2fs_set_bitmap_padding ();
0x000176f4 movs r2, 0 | r2 = 0;
0x000176f6 mov r3, r5 | r3 = r5;
0x000176f8 mov r1, fp | r1 = fp;
0x000176fa mov r0, r8 | r0 = r8;
0x000176fc str r2, [sp] | *(sp) = r2;
0x000176fe blx 0x8de4 | fcn_00008de4 ();
| label_5:
0x00017702 ldr.w r3, [sl] | r3 = *(sl);
0x00017706 movs r2, 0 | r2 = 0;
0x00017708 ldr r1, [sp, 0x40] | r1 = var_40h;
0x0001770a str r0, [r4, 8] | *((r4 + 8)) = r0;
0x0001770c lsls r5, r3, 0x1e | r5 = r3 << 0x1e;
0x0001770e str.w fp, [r1, 4] | __asm ("str.w fp, [r1, 4]");
0x00017712 str r3, [r1, 0x40] | *((r1 + 0x40)) = r3;
0x00017714 str r2, [r1, 0x44] | *((r1 + 0x44)) = r2;
| if (r5 != r3) {
0x00017716 bne.w 0x17c9a | goto label_47;
| }
0x00017718 strh r0, [r0, 0x16] | *((r0 + 0x16)) = r0;
0x0001771a subs r3, 0x3d | r3 -= 0x3d;
0x0001771c cmp r3, 0xa |
| if (r3 < 0xa) {
0x0001771e bls.w 0x17c9a | goto label_47;
| }
| label_6:
0x00017722 movs r0, 0 | r0 = 0;
0x00017724 bl 0x20224 | ehandler_operation ();
0x00017728 ldr r3, [r4, 8] | r3 = *((r4 + 8));
0x0001772a movw r2, 0xb723 |
0x0001772e movt r2, 0x7f2b | r2 = 0x7f2bb723;
0x00017732 cmp r3, r2 |
| if (r3 == r2) {
0x00017734 beq.w 0x17e2e | goto label_48;
| }
0x00017738 movw r2, 0xb796 |
0x0001773c movt r2, 0x7f2b | r2 = 0x7f2bb796;
0x00017740 cmp r3, r2 |
| if (r3 == r2) {
0x00017742 beq.w 0x17f56 | goto label_49;
| }
| if (r3 != 0) {
0x00017746 cbz r3, 0x17788 |
0x00017748 movs r1, 0x20 | r1 = 0x20;
0x0001774a ldr r0, [sp, 0x18] | r0 = var_18h;
0x0001774c movt r1, 2 | r1 = (r1 & 0xFFFF) | 0x20000;
0x00017750 add.w r2, r4, 8 | r2 = r4 + 8;
0x00017754 bl 0x202f8 | r0 = fix_problem ();
0x00017758 cmp r0, 0 |
| if (r0 == 0) {
0x0001775a beq.w 0x1833e | goto label_50;
| }
0x0001775e ldrd r3, r2, [r7, 0x10] | __asm ("ldrd r3, r2, [r7, 0x10]");
0x00017762 add r6, sp, 0xa4 | r6 += var_a4h;
0x00017764 mov r0, r8 | r0 = r8;
0x00017766 orrs r3, r2 | r3 |= r2;
0x00017768 mov r3, r6 | r3 = r6;
0x0001776a ite eq |
| if (r3 != r2) {
0x0001776c moveq r1, fp | r1 = fp;
| }
| if (r3 == r2) {
0x0001776e movne r1, 0 | r1 = 0;
| }
0x00017770 movs r2, 2 | r2 = 2;
0x00017772 blx 0x90dc | fcn_000090dc ();
0x00017776 ldr.w r2, [r8, 0x14] | r2 = *((r8 + 0x14));
0x0001777a ldr r1, [sp, 0xa4] | r1 = var_a4h;
0x0001777c ldr r0, [sp, 0x1c] | r0 = var_1ch;
0x0001777e blx 0x913c | fcn_0000913c ();
0x00017782 ldr r0, [sp, 0xa4] | r0 = var_a4h;
0x00017784 blx 0x8ed8 | fcn_00008ed8 ();
| }
0x00017788 movs r3, 0 | r3 = 0;
0x0001778a str r3, [sp, 0x74] | var_74h = r3;
| label_12:
0x0001778c ldr r5, [sp, 0x18] | r5 = var_18h;
0x0001778e mov r1, fp | r1 = fp;
0x00017790 mov r0, r5 | r0 = r5;
0x00017792 bl 0x1ffc4 | e2fsck_get_dx_dir_info ();
0x00017796 str r0, [sp, 0x5c] | var_5ch = r0;
| if (r0 != 0) {
0x00017798 cbz r0, 0x177a2 |
0x0001779a ldr r2, [r0, 8] | r2 = *((r0 + 8));
0x0001779c cmp r2, 0 |
| if (r2 != 0) {
0x0001779e bne.w 0x17e38 | goto label_51;
| }
| }
| label_22:
0x000177a2 movs r3, 0 | r3 = 0;
0x000177a4 str r3, [sp, 0x7c] | var_7ch = r3;
| label_16:
0x000177a6 ldr.w r3, [sl] | r3 = *(sl);
0x000177aa cmp r3, 0 |
| if (r3 != 0) {
0x000177ac bne.w 0x17f5c | goto label_52;
| }
0x000177b0 ldr r3, [sp, 0x74] | r3 = var_74h;
0x000177b2 cmp r3, 0 |
| if (r3 != 0) {
0x000177b4 bne.w 0x18414 | goto label_53;
| }
0x000177b8 movs r3, 1 | r3 = 1;
0x000177ba str r3, [sp, 0x80] | var_80h = r3;
| label_17:
0x000177bc ldr.w r3, [r8, 0x14] | r3 = *((r8 + 0x14));
0x000177c0 sub.w r3, r3, sb | r3 -= sb;
0x000177c4 str r3, [sp, 0x24] | var_24h = r3;
0x000177c6 ldr r3, [sp, 0x1c] | r3 = var_1ch;
0x000177c8 str r3, [sp, 0x48] | var_48h = r3;
| label_15:
0x000177ca ldr r5, [sp, 0x18] | r5 = var_18h;
0x000177cc mov r1, fp | r1 = fp;
0x000177ce mov r0, r5 | r0 = r5;
0x000177d0 bl 0x26b28 | find_encryption_policy ();
0x000177d4 ldr r3, [sp, 0x28] | r3 = var_28h;
0x000177d6 str r0, [sp, 0x60] | var_60h = r0;
0x000177d8 cmp r3, 0 |
| if (r3 == 0) {
0x000177da beq.w 0x17e0c | goto label_54;
| }
0x000177de ldr.w r6, [pc, 0x83c] | r6 = *(0x0001801c);
0x000177e2 mov.w r1, -1 | r1 = -1;
0x000177e6 ldr.w r2, [pc, 0x838] | r2 = *(0x00018020);
0x000177ea add r6, pc | r6 += pc;
0x000177ec adds r6, 4 | r6 += 4;
0x000177ee add r2, pc | r2 += pc;
0x000177f0 mov r0, r6 | r0 = r6;
0x000177f2 bl 0x2b894 | dict_init ();
0x000177f6 ldr r3, [r5] | r3 = *(r5);
0x000177f8 mov r0, r6 | r0 = r6;
0x000177fa ldr.w r1, [r3, 0xc4] | r1 = *((r3 + 0xc4));
0x000177fe bl 0x2b6d0 | dict_set_cmp_context ();
0x00017802 ldr r3, [sp, 0x18] | r3 = var_18h;
0x00017804 ldr.w r0, [r3, 0x348] | r0 = *((r3 + 0x348));
0x00017808 cmp r0, 0 |
| if (r0 == 0) {
0x0001780a beq.w 0x17e2a | goto label_55;
| }
| label_10:
0x0001780e mov r1, fp | r1 = fp;
0x00017810 blx 0x95cc | popen (r0, r1)
0x00017814 ldr r3, [sp, 0x60] | r3 = var_60h;
0x00017816 cmp.w r3, -1 |
0x0001781a it ne |
| if (r3 != -1) {
0x0001781c cmpne r0, 0 | __asm ("cmpne r0, 0");
| }
0x0001781e ite ne |
| if (r3 == -1) {
0x00017820 movne r3, 1 | r3 = 1;
| }
| if (r3 != -1) {
0x00017822 moveq r3, 0 | r3 = 0;
| }
0x00017824 str r3, [sp, 0x3c] | var_3ch = r3;
| label_11:
0x00017826 ldr r3, [sp, 0x38] | r3 = var_38h_2;
0x00017828 mov.w lr, 0 | lr = 0;
0x0001782c mov.w ip, 0x13 |
0x00017830 str.w fp, [sp, 0x58] | __asm ("str.w fp, [var_58h]");
0x00017834 str r7, [sp, 0x78] | var_78h = r7;
0x00017836 mov fp, r8 |
0x00017838 ubfx r3, r3, 1, 1 | r3 = (r3 >> 1) & ((1 << 1) - 1);
0x0001783c mov r7, lr | r7 = lr;
0x0001783e lsls r3, r3, 9 | r3 <<= 9;
0x00017840 movt ip, 2 |
0x00017844 str.w lr, [sp, 0x38] | __asm ("str.w lr, [var_38h_2]");
0x00017848 str r3, [sp, 0x68] | var_68h = r3;
0x0001784a add.w r3, r4, 8 | r3 = r4 + 8;
0x0001784e str.w lr, [sp, 0x44] | __asm ("str.w lr, [var_44h]");
0x00017852 str r3, [sp, 0x50] | var_50h = r3;
0x00017854 str.w lr, [sp, 0x70] | __asm ("str.w lr, [var_70h]");
0x00017858 str.w sl, [sp, 0x4c] | __asm ("str.w sl, [var_4ch]");
0x0001785c str.w ip, [sp, 0x54] | __asm ("str.w ip, [var_54h]");
0x00017860 ldr r3, [sp, 0x2c] | r3 = var_2ch;
0x00017862 cmp r3, 1 |
0x00017864 ldr r3, [sp, 0x3c] | r3 = var_3ch;
0x00017866 ite le |
| if (r3 > 1) {
0x00017868 movle r8, 0 | r8 = 0;
| }
| if (r3 > 1) {
0x0001786c mov.w r8, 1 | r8 = 1;
| }
0x00017870 ands.w r3, r8, r3 | r3 = r8 & r3;
| if (r3 != r8) {
0x00017874 bne 0x178f8 | goto label_56;
| }
0x00017876 ldr r2, [sp, 0x4c] | r2 = var_4ch;
0x00017878 movs r5, 0xc | r5 = 0xc;
0x0001787a ldr r2, [r2] | r2 = *(r2);
0x0001787c cmp r2, 0 |
0x0001787e ite ne |
| if (r2 == 0) {
0x00017880 movne r1, r8 | r1 = r8;
| }
| if (r2 != 0) {
0x00017882 orreq r1, r8, 1 | r1 = r8 | 1;
| }
0x00017886 cmp r1, 0 |
| if (r1 == 0) {
0x00017888 beq.w 0x17d60 | goto label_57;
| }
| label_2:
0x0001788c ldr r2, [sp, 0x24] | r2 = var_24h;
0x0001788e sub.w sb, r2, r7 | sb = r2 - r7;
0x00017892 ldr r2, [sp, 0x48] | r2 = var_48h;
0x00017894 cmp.w sb, 7 |
0x00017898 add.w r6, r2, r7 | r6 = r2 + r7;
| if (sb > 7) {
0x0001789c bhi.w 0x17c64 | goto label_58;
| }
0x000178a0 add.w sl, sp, 0x94 | sl += var_94h;
0x000178a4 movs r2, 0 | r2 = 0;
0x000178a6 str.w r5, [sl] | __asm ("str.w r5, [sl]");
| label_4:
0x000178aa ldr r0, [sp, 0x24] | r0 = var_24h;
0x000178ac movs r1, 0 | r1 = 0;
0x000178ae str r1, [r4, 0x4c] | *((r4 + 0x4c)) = r1;
0x000178b0 adds r1, r7, r5 | r1 = r7 + r5;
0x000178b2 str r6, [r4, 0x1c] | *((r4 + 0x1c)) = r6;
0x000178b4 cmp r1, r0 |
0x000178b6 it hi |
| if (r1 <= r0) {
0x000178b8 orrhi r2, r2, 1 | r2 |= 1;
| }
0x000178bc str r7, [r4, 0x48] | *((r4 + 0x48)) = r7;
0x000178be cmp r2, 0 |
| if (r2 == 0) {
0x000178c0 beq.w 0x17a26 | goto label_59;
| }
| label_3:
0x000178c4 ldrd r2, r1, [sp, 0x50] | __asm ("ldrd r2, r1, [var_50h]");
0x000178c8 ldr r0, [sp, 0x18] | r0 = var_18h;
0x000178ca bl 0x202f8 | r0 = fix_problem ();
| if (r0 != 0) {
0x000178ce cbnz r0, 0x178fc | goto label_60;
| }
| label_38:
0x000178d0 ldr r2, [sp, 0x18] | r2 = var_18h;
0x000178d2 ldr.w r0, [pc, 0x750] |
0x000178d6 ldr r3, [r2, 0x24] | r3 = *((r2 + 0x24));
0x000178d8 add r0, pc | r0 = 0x2f902;
0x000178da adds r0, 4 | r0 += 4;
0x000178dc orr r3, r3, 1 | r3 |= 1;
0x000178e0 str r3, [r2, 0x24] | *((r2 + 0x24)) = r3;
0x000178e2 bl 0x2b6d4 | dict_free_nodes ();
| label_7:
0x000178e6 movs r3, 2 | r3 = 2;
0x000178e8 str r3, [sp, 0x20] | var_20h = r3;
0x000178ea b 0x17668 | goto label_0;
| label_44:
0x000178ec str r0, [sp, 0x64] | var_64h = r0;
0x000178ee b 0x176c8 |
| } while (1);
| label_41:
0x000178f0 lsls r6, r3, 0x10 | r6 = r3 << 0x10;
| if (r6 >= r3) {
0x000178f2 bpl.w 0x17668 | goto label_0;
| }
0x000178f6 b 0x1763c | goto label_1;
| label_56:
0x000178f8 movs r5, 0x14 | r5 = 0x14;
0x000178fa b 0x1788c | goto label_2;
| label_60:
0x000178fc cmp.w sb, 7 |
0x00017900 add.w sl, sp, 0xa0 | sl += var_a0h;
| if (sb > 7) {
0x00017904 bhi.w 0x17f14 | goto label_61;
| }
0x00017908 mov r5, sb | r5 = sb;
0x0001790a str.w sb, [sl] | __asm ("str.w sb, [sl]");
0x0001790e ldr r3, [sp, 0x44] | r3 = var_44h;
0x00017910 cmp r3, 0 |
| if (r3 == 0) {
0x00017912 beq.w 0x18316 | void (*0x18316)() ();
| }
| label_59:
0x00017a26 ands r2, r5, 3 | r2 = r5 & 3;
0x00017a2a str r2, [sp, 0x6c] | var_6ch = r2;
| if (r2 != r5) {
0x00017a2c bne.w 0x178c4 | goto label_3;
| }
0x00017a30 ldrb r2, [r6, 6] | r2 = *((r6 + 6));
0x00017a32 adds r2, 0xb | r2 += 0xb;
0x00017a34 bic r2, r2, 3 | r2 = BIT_MASK (r2, 3);
0x00017a38 cmp r3, 0 |
| if (r3 != 0) {
0x00017a3a bne.w 0x17f82 | goto label_62;
| }
0x00017a3e cmp r2, r5 |
| if (r2 > r5) {
0x00017a40 bhi.w 0x178c4 | goto label_3;
| }
0x00017a44 ldr r1, [sp, 0x2c] | r1 = var_2ch;
0x00017a46 ldr r2, [r6] | r2 = *(r6);
0x00017a48 mov r3, r2 | r3 = r2;
0x00017a4a cmp r1, 0 |
| if (r1 == 0) {
0x00017a4c beq.w 0x182aa | goto label_63;
| }
| label_20:
0x00017a60 cmp r2, 0 |
| if (r2 != 0) {
0x00017a62 beq.w 0x17c3a |
0x00017a66 ldrh r5, [r6, 6] | r5 = *((r6 + 6));
0x00017a68 cmp r2, 2 |
0x00017a6a ldr.w r3, [fp, 0x10] | r3 = *(arg_10h);
| if (r2 != 2) {
0x00017a6e beq 0x17a80 |
| }
| label_9:
0x00017a80 ldr r1, [r3] | r1 = *(r3);
0x00017a82 cmp r1, r2 |
| if (r1 <= r2) {
0x00017a84 blo.w 0x18254 | goto label_64;
| }
0x00017a88 ldr.w r1, [r3, 0x240] | r1 = *((r3 + 0x240));
0x00017a8c cmp r1, r2 |
| if (r1 == r2) {
0x00017a8e beq.w 0x18254 | goto label_64;
| }
| }
0x00017c3a ldr r3, [sp, 0x38] | r3 = var_38h_2;
0x00017c3c cmp r3, 0 |
| if (r3 != 0) {
0x00017c3e bne.w 0x18c6c | void (*0x18c6c)() ();
| }
| label_58:
0x00017c64 add.w sl, sp, 0x94 | sl += var_94h;
0x00017c68 mov r1, r6 | r1 = r6;
0x00017c6a mov r2, sl | r2 = sl;
0x00017c6c mov r0, fp | r0 = fp;
0x00017c6e str r3, [sp, 0x6c] | var_6ch = r3;
0x00017c70 blx 0x89c0 | ext2fs_get_rec_len ();
0x00017c74 ldr.w r1, [sl] | r1 = *(sl);
0x00017c78 ldr r3, [sp, 0x6c] | r3 = var_6ch;
0x00017c7a cmp r5, r1 |
0x00017c7c mov r5, r1 | r5 = r1;
0x00017c7e ite ls |
| if (r5 > r1) {
0x00017c80 movls r2, 0 | r2 = 0;
| }
| if (r5 <= r1) {
0x00017c82 movhi r2, 1 | r2 = 1;
| }
0x00017c84 b 0x178aa | goto label_4;
| label_46:
0x00017c86 strd r3, fp, [sp, 4] | __asm ("strd r3, fp, [sp, 4]");
0x00017c8a mov r0, r8 | r0 = r8;
0x00017c8c ldr r3, [sp, 0x1c] | r3 = var_1ch;
0x00017c8e str r3, [sp] | *(sp) = r3;
0x00017c90 ldrd r2, r3, [sp, 0x30] | __asm ("ldrd r2, r3, [var_30h]");
0x00017c94 blx 0x8dc0 | fcn_00008dc0 ();
0x00017c98 b 0x17702 | goto label_5;
| label_47:
0x00017c9a movs r1, 0x4e | r1 = 0x4e;
0x00017c9c ldr r2, [sp, 0x40] | r2 = var_40h;
0x00017c9e ldr r0, [sp, 0x18] | r0 = var_18h;
0x00017ca0 movt r1, 2 | r1 = (r1 & 0xFFFF) | 0x20000;
0x00017ca4 bl 0x202f8 | r0 = fix_problem ();
0x00017ca8 cmp r0, 0 |
| if (r0 == 0) {
0x00017caa beq.w 0x17722 | goto label_6;
| }
0x00017cae ldr.w r0, [sl] | r0 = *(sl);
0x00017cb2 movs r1, 0 | r1 = 0;
0x00017cb4 ldr r3, [sp, 0x18] | r3 = var_18h;
0x00017cb6 ldr r5, [r3] | r5 = *(r3);
0x00017cb8 sub.w r3, r0, 0x3d | r3 = r0 - 0x3d;
0x00017cbc cmp r3, 0xa |
0x00017cbe ldr r3, [sp, 0x1c] | r3 = var_1ch;
0x00017cc0 itete hi |
| if (r3 > 0xa) {
0x00017cc2 bichi r6, r0, 3 | __asm ("bichi r6, r0, 3");
| }
| if (r3 <= 0xa) {
0x00017cc6 movhi r0, 0x3c | r0 = 0x3c;
| }
| if (r3 > 0xa) {
0x00017cc8 addls r6, 4 | r6 += 4;
| }
| if (r3 <= 0xa) {
0x00017cca mov r6, r0 | r6 = r0;
| }
0x00017ccc ite hi |
| if (r3 <= 0xa) {
0x00017cce subhi r2, r6, r0 | r2 = r6 - r0;
| }
| if (r3 > 0xa) {
0x00017cd0 movls r2, 0 | r2 = 0;
| }
0x00017cd2 add r0, r3 | r0 += r3;
0x00017cd4 blx 0x8cf0 | ext2fs_set_bitmap_padding ();
0x00017cd8 ldr r3, [sp, 0x1c] | r3 = var_1ch;
0x00017cda movs r2, 0 | r2 = 0;
0x00017cdc mov r1, fp | r1 = fp;
0x00017cde mov r0, r5 | r0 = r5;
0x00017ce0 str r6, [sp] | *(sp) = r6;
0x00017ce2 blx 0x975c | fcn_0000975c ();
0x00017ce6 movw r3, 0xb7a7 |
0x00017cea movt r3, 0x7f2b | r3 = 0x7f2bb7a7;
0x00017cee cmp r0, r3 |
| if (r0 == r3) {
0x00017cf0 beq.w 0x1823c | goto label_65;
| }
0x00017cf4 cmp r0, 0 |
| if (r0 != 0) {
0x00017cf6 bne.w 0x181e8 | goto label_23;
| }
| label_21:
0x00017cfa add r3, sp, 0x28c | r3 += var_28ch;
0x00017cfc mov r1, fp | r1 = fp;
0x00017cfe mov r2, r3 | r2 = r3;
0x00017d00 mov r0, r5 | r0 = r5;
0x00017d02 str r3, [sp, 0x3c] | var_3ch = r3;
0x00017d04 blx 0x8e68 | r0 = fcn_00008e68 ();
0x00017d08 cmp r0, 0 |
| if (r0 != 0) {
0x00017d0a bne.w 0x178e6 | goto label_7;
| }
0x00017d0e mov r3, r0 | r3 = r0;
0x00017d10 ldr r1, [sp, 0x3c] | r1 = var_3ch;
0x00017d12 mov r2, r6 | r2 = r6;
0x00017d14 mov r0, r5 | r0 = r5;
0x00017d16 blx 0x9720 | r0 = fcn_00009720 ();
0x00017d1a cmp r0, 0 |
| if (r0 != 0) {
0x00017d1c bne.w 0x178e6 | goto label_7;
| }
| if (r6 == 0) {
0x00017d20 cbnz r6, 0x17d2c |
0x00017d22 ldr r2, [sp, 0x3c] | r2 = var_3ch;
0x00017d24 ldr r3, [r2, 0x20] | r3 = *((r2 + 0x20));
0x00017d26 bic r3, r3, 0x10000000 | r3 = BIT_MASK (r3, 0x10000000);
0x00017d2a str r3, [r2, 0x20] | *((r2 + 0x20)) = r3;
| }
0x00017d2c ldr r2, [sp, 0x3c] | r2 = var_3ch;
0x00017d2e mov r0, r5 | r0 = r5;
0x00017d30 mov r1, fp | r1 = fp;
0x00017d32 blx 0x9738 | r0 = fcn_00009738 ();
0x00017d36 cmp r0, 0 |
| if (r0 != 0) {
0x00017d38 bne.w 0x178e6 | goto label_7;
| }
0x00017d3c str.w r6, [sl] | __asm ("str.w r6, [sl]");
0x00017d40 b 0x17722 | goto label_6;
| label_39:
0x00017d42 mov r2, sl | r2 = sl;
0x00017d44 mov r1, fp | r1 = fp;
0x00017d46 mov r0, r8 | r0 = r8;
0x00017d48 blx 0x9860 | strcmp (r0, r1);
0x00017d4c movw r3, 0xb7a5 |
0x00017d50 movt r3, 0x7f2b | r3 = 0x7f2bb7a5;
0x00017d54 cmp r0, 0 |
0x00017d56 it ne |
| if (r0 == 0) {
0x00017d58 cmpne r0, r3 | __asm ("cmpne r0, r3");
| goto label_66;
| }
| if (r0 == 0) {
| label_66:
0x00017d5a beq.w 0x17628 | goto label_8;
| }
0x00017d5e b 0x178e6 | goto label_7;
| label_57:
0x00017d60 ldr r3, [sp, 0x2c] | r3 = var_2ch;
0x00017d62 mov.w r2, 0x108 | r2 = 0x108;
0x00017d66 ldrsh.w r5, [sp, 0x68] | r5 = var_68h;
0x00017d6a cmp r3, 0 |
| if (r3 == 0) {
0x00017d6c beq.w 0x18282 | goto label_67;
| }
0x00017d70 add r6, sp, 0x28c | r6 += var_28ch;
0x00017d72 str r1, [sp, 0x44] | var_44h = r1;
0x00017d74 mov r0, r6 | r0 = r6;
0x00017d76 orr r5, r5, 2 | r5 |= 2;
0x00017d7a blx 0x8cf0 | ext2fs_set_bitmap_padding ();
0x00017d7c invalid |
0x00017d80 movs r2, 0xc | r2 = 0xc;
0x00017d82 ldr r1, [sp, 0x44] | r1 = var_44h;
0x00017d84 ldr r3, [r3] | r3 = *(r3);
0x00017d86 strh r2, [r6, 4] | *((r6 + 4)) = r2;
0x00017d88 movw r2, 0x2e2e | r2 = 0x2e2e;
0x00017d8c strh r5, [r6, 6] | *((r6 + 6)) = r5;
0x00017d8e str r1, [r4, 0x4c] | *((r4 + 0x4c)) = r1;
0x00017d90 str r6, [r4, 0x1c] | *((r4 + 0x1c)) = r6;
0x00017d92 str r7, [r4, 0x48] | *((r4 + 0x48)) = r7;
0x00017d94 str r3, [r6] | *(r6) = r3;
0x00017d96 strh r2, [r6, 8] | *((r6 + 8)) = r2;
0x00017d98 ldr r2, [sp, 0x18] | r2 = var_18h;
0x00017d9a add.w r5, r4, 8 | r5 = r4 + 8;
0x00017d9e ldr r0, [r2] | r0 = *(0x2e2e);
0x00017da0 cmp r3, 0 |
| if (r3 == 0) {
0x00017da2 beq.w 0x186da | goto label_68;
| }
0x00017da4 strh r2, [r3, 0x24] | *((r3 + 0x24)) = r2;
0x00017da6 ldrb r3, [r6, 6] | r3 = *((r6 + 6));
0x00017da8 cmp r3, 2 |
| if (r3 == 2) {
0x00017daa beq.w 0x18928 | goto label_69;
| }
| label_36:
0x00017dae add.w sb, sp, 0xa4 | sb += var_a4h;
0x00017db2 mov r1, r6 | r1 = r6;
0x00017db4 mov r2, sb | r2 = sb;
0x00017db6 blx 0x89c0 | ext2fs_get_rec_len ();
0x00017dba movs r1, 0xc |
0x00017dbc movt r1, 2 | r1 = 0x2000c;
| label_29:
0x00017dc0 ldr r0, [sp, 0x18] | r0 = var_18h;
0x00017dc2 mov r2, r5 | r2 = r5;
0x00017dc4 ldr r3, [r0] | r3 = *(r0);
0x00017dc6 ldr r3, [r3, 0x10] | r3 = *((r3 + 0x10));
0x00017dc8 ldr r5, [r3, 0x60] | r5 = *((r3 + 0x60));
0x00017dca bl 0x202f8 | fix_problem ();
0x00017dcc invalid |
0x00017dd0 cmp r0, 0 |
| if (r0 == 0) {
0x00017dd2 beq.w 0x181e2 | goto label_37;
| }
0x00017dd6 ldr.w r3, [sb] | r3 = *(sb);
0x00017dda ubfx r5, r5, 1, 1 | r5 = (r5 >> 1) & ((1 << 1) - 1);
0x00017dde lsls r5, r5, 9 | r5 <<= 9;
0x00017de0 movs r2, 2 | r2 = 2;
0x00017de2 str r2, [r6] | *(r6) = r2;
0x00017de4 cmp r3, 0xb |
0x00017de6 orr r5, r5, 2 | r5 |= 2;
0x00017dea it ls |
| if (r3 > 0xb) {
0x00017dec movls r3, 0xc | r3 = 0xc;
| }
0x00017dee strh r5, [r6, 6] | *((r6 + 6)) = r5;
0x00017df0 it ls |
| if (r3 <= 0xb) {
0x00017df2 strhls r3, [r6, 4] | __asm ("strhls r3, [r6, 4]");
| }
0x00017df4 ldr r3, [sp, 0x38] | r3 = var_38h_2;
0x00017df6 adds r3, 1 | r3++;
0x00017df8 str r3, [sp, 0x38] | var_38h_2 = r3;
0x00017dfa movs r3, 0 | r3 = 0;
0x00017dfc strb r3, [r6, 0xa] | *((r6 + 0xa)) = r3;
0x00017dfe str r3, [sp, 0x6c] | var_6ch = r3;
0x00017e00 movw r3, 0x2e2e | r3 = 0x2e2e;
0x00017e04 strh r3, [r6, 8] | *((r6 + 8)) = r3;
0x00017e06 ldr.w r3, [fp, 0x10] | r3 = *(arg_10h);
0x00017e0a b 0x17a80 | goto label_9;
| label_54:
0x00017e0c ldr r0, [pc, 0x21c] |
0x00017e0e mov.w r1, -1 | r1 = -1;
0x00017e12 ldr r2, [pc, 0x21c] |
0x00017e14 add r0, pc | r0 = 0x2fe44;
0x00017e16 adds r0, 4 | r0 += 4;
0x00017e18 add r2, pc | r2 = 0x2fe4e;
0x00017e1a bl 0x2b894 | dict_init ();
0x00017e1e ldr r3, [sp, 0x18] | r3 = var_18h;
0x00017e20 ldr.w r0, [r3, 0x348] | r0 = *((r3 + 0x348));
0x00017e24 cmp r0, 0 |
| if (r0 != 0) {
0x00017e26 bne.w 0x1780e | goto label_10;
| }
| label_55:
0x00017e2a str r0, [sp, 0x3c] | var_3ch = r0;
0x00017e2c b 0x17826 | goto label_11;
| label_48:
0x00017e2e movs r3, 0 | r3 = 0;
0x00017e30 str r3, [sp, 0x74] | var_74h = r3;
| label_14:
0x00017e32 movs r3, 0 | r3 = 0;
0x00017e34 str r3, [r4, 8] | *((r4 + 8)) = r3;
0x00017e36 b 0x1778c | goto label_12;
| label_51:
0x00017e38 ldrd r3, r1, [r7, 0x10] | __asm ("ldrd r3, r1, [r7, 0x10]");
0x00017e3c movs r6, 0 | r6 = 0;
0x00017e3e cmp r3, r2 |
0x00017e40 sbcs r1, r1, 0 | __asm ("sbcs r1, r1, 0");
| if (r3 >= r2) {
0x00017e44 blt 0x17e6c |
0x00017e46 ldr r3, [sp, 0x40] | r3 = var_40h;
0x00017e48 movs r1, 0x45 |
0x00017e4a movt r1, 2 | r1 = 0x20045;
0x00017e4e mov r0, r5 | r0 = r5;
0x00017e50 mov r2, r3 | r2 = r3;
0x00017e52 str.w fp, [r3, 0xc] | __asm ("str.w fp, [r3, 0xc]");
0x00017e56 bl 0x202f8 | r0 = fix_problem ();
0x00017e5a cmp r0, 0 |
| if (r0 != 0) {
0x00017e5c bne.w 0x18200 | goto label_70;
| }
0x00017e60 ldr r1, [pc, 0x1d0] |
0x00017e62 ldr r0, [sp, 0x18] | r0 = var_18h;
0x00017e64 add r1, pc | r1 = 0x2fe9c;
0x00017e66 bl 0x1e598 | fatal_error ();
0x00017e6a ldr r3, [r7, 0x10] | r3 = *((r7 + 0x10));
| }
0x00017e6c ldr r0, [sp, 0x5c] | r0 = var_5ch;
0x00017e6e add.w r3, r3, r3, lsl 1 | r3 += (r3 << 1);
0x00017e72 vmov.i64 d16, 0xffffffff | __asm ("vmov.i64 d16, aav.0x000000ff");
0x00017e76 add r5, sp, 0x94 | r5 += var_94h;
0x00017e78 lsls r6, r3, 4 | r6 = r3 << 4;
0x00017e7a ldr r3, [r0, 0xc] | r3 = *((r0 + 0xc));
0x00017e7c mov r2, r3 | r2 = r3;
0x00017e7e movs r3, 2 | r3 = 2;
0x00017e80 adds r0, r2, r6 | r0 = r2 + r6;
0x00017e82 str r3, [r2, r6] | *((r2 + r6)) = r3;
0x00017e84 str r2, [sp, 0x3c] | var_3ch = r2;
0x00017e86 ldrd r1, r2, [sp, 0x30] | __asm ("ldrd r1, r2, [var_30h]");
0x00017e8a str r0, [sp, 0x7c] | var_7ch = r0;
0x00017e8c vstr d16, [r0, 0x20] | __asm ("vstr d16, [r0, 0x20]");
0x00017e90 strd r1, r2, [r0, 8] | __asm ("strd r1, r2, [r0, 8]");
0x00017e94 mov r2, r5 | r2 = r5;
0x00017e96 ldr r1, [sp, 0x1c] | r1 = var_1ch;
0x00017e98 mov r0, r8 | r0 = r8;
0x00017e9a blx 0x89c0 | ext2fs_get_rec_len ();
0x00017e9e ldrd r3, r1, [r7, 0x10] | __asm ("ldrd r3, r1, [r7, 0x10]");
0x00017ea2 orrs r3, r1 | r3 |= r1;
| if (r3 != r1) {
0x00017ea4 bne 0x17f8e | goto label_71;
| }
0x00017ea6 ldr r0, [sp, 0x7c] | r0 = var_7ch;
0x00017ea8 ldr r1, [sp, 0x1c] | r1 = var_1ch;
0x00017eaa ldr r5, [sp, 0x3c] | r5 = var_3ch;
0x00017eac ldr r3, [r0, 4] | r3 = *((r0 + 4));
0x00017eae ldr r2, [r1, 0x18] | r2 = *((r1 + 0x18));
0x00017eb0 movs r1, 1 | r1 = 1;
0x00017eb2 str r1, [r5, r6] | *((r5 + r6)) = r1;
0x00017eb4 orr r3, r3, 0xc | r3 |= 0xc;
0x00017eb8 str r3, [r0, 4] | *((r0 + 4)) = r3;
0x00017eba cmp r2, 0 |
| if (r2 != 0) {
0x00017ebc bne.w 0x1834c | goto label_72;
| }
0x00017ec0 ldr r5, [sp, 0x1c] | r5 = var_1ch;
0x00017ec2 ldrb r3, [r5, 0x1d] | r3 = *((r5 + 0x1d));
0x00017ec4 cmp r3, 7 |
| if (r3 < 7) {
0x00017ec6 bls.w 0x1834c | goto label_72;
| }
0x00017eca ldr.w r1, [r8, 0x10] | r1 = *((r8 + 0x10));
0x00017ece ldrb r3, [r5, 0x1e] | r3 = *((r5 + 0x1e));
0x00017ed0 ldr r2, [r1, 0x60] | r2 = *((r1 + 0x60));
0x00017ed2 tst.w r2, 0x4000 |
0x00017ed6 ite ne |
| if ((r2 & 0x4000) == 0) {
0x00017ed8 movne r2, 3 | r2 = 3;
| }
| if ((r2 & 0x4000) != 0) {
0x00017eda moveq r2, 2 | r2 = 2;
| }
0x00017edc cmp r3, r2 |
| if (r3 >= r2) {
0x00017ede bhs.w 0x1834c | goto label_72;
| }
0x00017ee2 ldrb r2, [r5, 0x1c] | r2 = *((r5 + 0x1c));
0x00017ee4 ldr r0, [sp, 0x5c] | r0 = var_5ch;
0x00017ee6 cmp r2, 2 |
0x00017ee8 it hi |
| if (r2 <= 2) {
0x00017eea addhi r3, 1 | r3++;
| }
0x00017eec strb r2, [r0, 6] | *((r0 + 6)) = r2;
0x00017eee it hi |
| if (r2 > 2) {
0x00017ef0 strhhi r3, [r0, 4] | __asm ("strhhi r3, [r0, 4]");
| }
| if (r2 > 2) {
0x00017ef2 bhi 0x17faa | goto label_33;
| }
| label_24:
0x00017ef4 ldr.w r1, [r1, 0x160] | r1 = *((r1 + 0x160));
0x00017ef8 lsls r1, r1, 0x1e | r1 <<= 0x1e;
| if (r1 >= r1) {
0x00017efa bpl.w 0x18658 | goto label_73;
| }
0x00017efe ldr r1, [sp, 0x5c] | r1 = var_5ch;
0x00017f00 adds r2, 3 | r2 += 3;
0x00017f02 adds r3, 1 | r3++;
0x00017f04 strb r2, [r1, 6] | *((r1 + 6)) = r2;
0x00017f06 strh r3, [r1, 4] | *((r1 + 4)) = r3;
0x00017f08 b 0x17fa0 | goto label_28;
| label_45:
0x00017f0a ldr r0, [pc, 0x12c] |
0x00017f0c add r0, pc | r0 = 0x2ff4a;
0x00017f0e str r0, [r3] | *(r3) = r0;
0x00017f10 b.w 0x176d6 | goto label_13;
| label_61:
0x00017f14 mov r2, sl | r2 = sl;
0x00017f16 mov r1, r6 | r1 = r6;
0x00017f18 mov r0, fp | r0 = fp;
0x00017f1a ldrh.w r8, [r6, 6] | r8 = *((r6 + 6));
0x00017f1e blx 0x89c0 | ext2fs_get_rec_len ();
0x00017f22 ldr r3, [sp, 0x3c] | r3 = var_3ch;
0x00017f24 ldr.w r5, [sl] | r5 = *(sl);
0x00017f28 cmp r3, 0 |
0x00017f2a ite ne |
| if (r3 == 0) {
0x00017f2c movne r3, 0x14 | r3 = 0x14;
| }
| if (r3 != 0) {
0x00017f2e moveq r3, 0xc | r3 = 0xc;
| }
0x00017f30 sub.w r2, sb, r5 | r2 = sb - r5;
0x00017f34 cmp r2, r3 |
| if (r2 < r3) {
0x00017f36 blt 0x17fbc | void (*0x17fbc)() ();
| }
| label_49:
0x00017f56 movs r3, 1 | r3 = 1;
0x00017f58 str r3, [sp, 0x74] | var_74h = r3;
0x00017f5a b 0x17e32 | goto label_14;
| label_52:
0x00017f5c movs r2, 1 | r2 = 1;
0x00017f5e str r2, [sp, 0x80] | var_80h = r2;
| label_18:
0x00017f60 ldrd r2, r1, [r7, 0x10] | __asm ("ldrd r2, r1, [r7, 0x10]");
0x00017f64 orrs r2, r1 | r2 |= r1;
| if (r2 == r1) {
0x00017f66 beq 0x17f78 | goto label_74;
| }
0x00017f68 subs r3, 0x3c | r3 -= 0x3c;
0x00017f6a str r3, [sp, 0x24] | var_24h = r3;
| if (r3 == 0x3c) {
0x00017f6c beq.w 0x17668 | goto label_0;
| }
0x00017f70 ldr r3, [sp, 0x1c] | r3 = var_1ch;
0x00017f72 adds r3, 0x3c | r3 += 0x3c;
0x00017f74 str r3, [sp, 0x48] | var_48h = r3;
0x00017f76 b 0x177ca | goto label_15;
| label_74:
0x00017f78 ldr r3, [sp, 0x1c] | r3 = var_1ch;
0x00017f7a str r3, [sp, 0x48] | var_48h = r3;
0x00017f7c movs r3, 0x3c | r3 = 0x3c;
0x00017f7e str r3, [sp, 0x24] | var_24h = r3;
0x00017f80 b 0x177ca | goto label_15;
| label_62:
0x00017f82 adds r2, 8 | r2 += 8;
0x00017f84 cmp r2, r5 |
| if (r2 > r5) {
0x00017f86 bhi.w 0x178c4 | goto label_3;
| }
0x00017f8a ldr r2, [r6] | r2 = *(r6);
0x00017f8c b 0x17a58 | void (*0x17a58)() ();
| label_71:
0x00017f8e ldr r3, [sp, 0x1c] | r3 = var_1ch;
0x00017f90 ldr r3, [r3] | r3 = *(r3);
| if (r3 == 0) {
0x00017f92 cbnz r3, 0x17fa0 |
0x00017f94 ldr r2, [r5] | r2 = *(r5);
0x00017f96 ldr.w r3, [r8, 0x14] | r3 = *((r8 + 0x14));
0x00017f9a cmp r3, r2 |
| if (r3 == r2) {
0x00017f9c beq.w 0x1880e | goto label_75;
| }
| }
| label_28:
0x00017fa0 ldr r3, [sp, 0x3c] | r3 = var_3ch;
0x00017fa2 ldr r3, [r3, r6] | r3 = *((r3 + r6));
0x00017fa4 cmp r3, 2 |
| if (r3 == 2) {
0x00017fa6 beq.w 0x177a6 | goto label_16;
| }
| label_33:
0x00017faa movs r3, 0 | r3 = 0;
0x00017fac mov sb, r3 | sb = r3;
0x00017fae str r3, [sp, 0x80] | var_80h = r3;
| label_26:
0x00017fb0 ldr.w r3, [sl] | r3 = *(sl);
0x00017fb4 cmp r3, 0 |
| if (r3 == 0) {
0x00017fb6 beq.w 0x177bc | goto label_17;
| }
0x00017fba b 0x17f60 | goto label_18;
| label_42:
0x0001803c mov r0, r5 | r0 = r5;
0x0001803e bl 0x1f4f8 | e2fsck_read_bitmaps ();
0x00018042 add r3, sp, 0x28c | r3 += var_28ch;
0x00018044 mov r0, r5 | r0 = r5;
0x00018046 mov r2, r3 | r2 = r3;
0x00018048 ldr.w r3, [pc, 0xbb4] | r3 = *(0x00018c00);
0x0001804c ldr r1, [r7] | r1 = *(r7);
0x0001804e add r5, sp, 0xa8 | r5 += var_a8h;
0x00018050 str r2, [sp, 0x3c] | var_3ch = r2;
0x00018052 add r3, pc | r3 += pc;
0x00018054 bl 0x1ee54 | e2fsck_read_inode ();
0x00018058 str r5, [sp, 8] | var_8h = r5;
0x0001805a mov r0, r6 | r0 = r6;
0x0001805c vldr d16, [r7, 0x10] | __asm ("vldr d16, [r7, 0x10]");
0x00018060 ldr r1, [r7] | r1 = *(r7);
0x00018062 ldr r2, [sp, 0x3c] | r2 = var_3ch;
0x00018064 vstr d16, [sp] | __asm ("vstr d16, [sp]");
0x00018068 str r5, [sp, 0x40] | var_40h = r5;
0x0001806a blx 0x92f8 | fcn_000092f8 ();
0x0001806e str r0, [r4, 8] | *((r4 + 8)) = r0;
| if (r0 == 0) {
0x00018070 cbnz r0, 0x1807c |
0x00018072 ldrd r2, r3, [sp, 0xa8] | __asm ("ldrd r2, r3, [var_a8h]");
0x00018076 orrs.w r1, r2, r3 | r1 = r2 | r3;
| if (r1 != r2) {
0x0001807a bne 0x180b8 | goto label_76;
| }
| }
0x0001807c vldr d16, [r7, 0x10] | __asm ("vldr d16, [r7, 0x10]");
0x00018080 mov r0, r6 | r0 = r6;
0x00018082 ldr r2, [sp, 0x3c] | r2 = var_3ch;
0x00018084 ldr r1, [r7] | r1 = *(r7);
0x00018086 vstr d16, [sp] | __asm ("vstr d16, [sp]");
0x0001808a blx 0x9440 | strdup (r0);
0x0001808e ldr r5, [sp, 0x40] | r5 = var_40h;
0x00018090 mov r3, r1 | r3 = r1;
0x00018092 ldr r1, [sp, 0x18] | r1 = var_18h;
0x00018094 mov r2, r0 | r2 = r0;
0x00018096 mov r0, r6 | r0 = r6;
0x00018098 str r5, [sp, 4] | var_4h = r5;
0x0001809a ldr.w r1, [r1, 0x20c] | r1 = *((r1 + 0x20c));
0x0001809e str r1, [sp] | *(sp) = r1;
0x000180a0 add r1, sp, 0xa8 | r1 += var_a8h;
0x000180a2 str r2, [r1] | *(r1) = r2;
0x000180a4 add r1, sp, 0xac | r1 += var_ach;
0x000180a6 str r3, [r1] | *(r1) = r3;
0x000180a8 blx 0x8a54 | fcn_00008a54 ();
0x000180ac str r0, [r4, 8] | *((r4 + 8)) = r0;
0x000180ae cmp r0, 0 |
| if (r0 != 0) {
0x000180b0 bne.w 0x18a16 | goto label_77;
| }
0x000180b4 ldr r3, [sp, 0xac] | r3 = var_ach;
0x000180b6 ldr r2, [r5] | r2 = *(r5);
| label_76:
0x000180b8 ldr r1, [sp, 0x18] | r1 = var_18h;
0x000180ba ldr.w r0, [r1, 0x20c] | r0 = *((r1 + 0x20c));
0x000180be blx 0x9598 | fcn_00009598 ();
0x000180c2 ldrd r2, r3, [sp, 0xa8] | __asm ("ldrd r2, r3, [var_a8h]");
0x000180c6 ldr r0, [r6, 0x30] | r0 = *((r6 + 0x30));
0x000180c8 blx 0x9598 | fcn_00009598 ();
0x000180cc ldr r3, [r6, 8] | r3 = *((r6 + 8));
0x000180ce mov r0, r6 | r0 = r6;
0x000180d0 orr r3, r3, 0x22 | r3 |= 0x22;
0x000180d4 str r3, [r6, 8] | *((r6 + 8)) = r3;
0x000180d6 ldrd r3, r2, [r7, 0x10] | __asm ("ldrd r3, r2, [r7, 0x10]");
0x000180da orrs r3, r2 | r3 |= r2;
0x000180dc ittee ne |
| if (r3 == r2) {
0x000180de movne r2, 0 | r2 = 0;
| }
| if (r3 == r2) {
0x000180e0 addne r3, sp, 0xa4 | r3 += var_a4h;
| }
| if (r3 != r2) {
0x000180e2 addeq r3, sp, 0xa4 | r3 += var_a4h;
| }
| if (r3 != r2) {
0x000180e4 ldreq r1, [r7] | r1 = *(r7);
| }
0x000180e6 itete ne |
| if (r3 == r2) {
0x000180e8 movne r1, r2 | r1 = r2;
| }
| if (r3 != r2) {
0x000180ea moveq r2, 2 | r2 = 2;
| }
| if (r3 == r2) {
0x000180ec strne r3, [sp, 0x30] | var_30h = r3;
| }
| if (r3 != r2) {
0x000180ee streq r3, [sp, 0x30] | var_30h = r3;
| }
0x000180f0 blx 0x90dc | r0 = fcn_000090dc ();
0x000180f4 mov r5, r0 | r5 = r0;
0x000180f6 str r0, [r4, 8] | *((r4 + 8)) = r0;
0x000180f8 cmp r0, 0 |
| if (r0 != 0) {
0x000180fa bne.w 0x18766 | goto label_78;
| }
0x000180fe str r0, [sp, 4] | var_4h = r0;
0x00018100 mov r0, r6 | r0 = r6;
0x00018102 ldr r3, [r7] | r3 = *(r7);
0x00018104 str r3, [sp, 8] | var_8h = r3;
0x00018106 ldr r3, [sp, 0x30] | r3 = var_30h;
0x00018108 ldr r3, [r3] | r3 = *(r3);
0x0001810a str r3, [sp] | *(sp) = r3;
0x0001810c ldrd r2, r3, [sp, 0xa8] | __asm ("ldrd r2, r3, [var_a8h]");
0x00018110 blx 0x9534 | fcn_00009534 ();
0x00018114 ldr r3, [sp, 0x30] | r3 = var_30h;
0x00018116 str r0, [r4, 8] | *((r4 + 8)) = r0;
0x00018118 ldr r0, [r3] | r0 = *(r3);
0x0001811a blx 0x8ed8 | fcn_00008ed8 ();
0x0001811e ldr r3, [sp, 0x30] | r3 = var_30h;
0x00018120 str r5, [r3] | *(r3) = r5;
0x00018122 ldr r3, [r4, 8] | r3 = *((r4 + 8));
0x00018124 cmp r3, 0 |
| if (r3 != 0) {
0x00018126 bne.w 0x188d6 | goto label_79;
| }
0x0001812a ldr r5, [sp, 0x3c] | r5 = var_3ch;
0x0001812c movs r2, 1 | r2 = 1;
0x0001812e movs r3, 0 | r3 = 0;
0x00018130 mov r0, r6 | r0 = r6;
0x00018132 mov r1, r5 | r1 = r5;
0x00018134 blx 0x9750 | fcn_00009750 ();
0x00018138 mov r2, r5 | r2 = r5;
0x0001813a ldr r3, [r6, 0x14] | r3 = *((r6 + 0x14));
0x0001813c ldrd r1, r0, [r7, 0x10] | __asm ("ldrd r1, r0, [r7, 0x10]");
0x00018140 str r2, [sp, 0x3c] | var_3ch = r2;
0x00018142 ldr r2, [r2, 0x6c] | r2 = *((r2 + 0x6c));
0x00018144 ldr r5, [r5, 4] | r5 = *((r5 + 4));
0x00018146 str r2, [sp, 0x30] | var_30h = r2;
0x00018148 adds r2, r1, 1 | r2 = r1 + 1;
0x0001814a umull r2, ip, r2, r3 | r2:ip = r2 * r3;
0x0001814e adc lr, r0, 0 | __asm ("adc lr, r0, 0");
0x00018152 mla lr, r3, lr, ip | __asm ("mla lr, r3, lr, ip");
0x00018156 cmp r5, r2 |
0x00018158 ldr r5, [sp, 0x30] | r5 = var_30h;
0x0001815a sbcs.w lr, r5, lr | __asm ("sbcs.w lr, r5, lr");
| if (r5 < r2) {
0x0001815e bhs 0x1817a |
0x00018160 adds r1, 1 | r1++;
0x00018162 adc r1, r0, 0 | __asm ("adc r1, r0, 0");
0x00018166 mov r0, r6 | r0 = r6;
0x00018168 mla r3, r3, r1, ip | __asm ("mla r3, r3, r1, ip");
0x0001816c ldr r1, [sp, 0x3c] | r1 = var_3ch;
0x0001816e blx 0x9720 | fcn_00009720 ();
0x00018172 str r0, [r4, 8] | *((r4 + 8)) = r0;
0x00018174 cmp r0, 0 |
| if (r0 != 0) {
0x00018176 bne.w 0x18cfc | goto label_80;
| }
| }
0x0001817a ldr r5, [sp, 0x3c] | r5 = var_3ch;
0x0001817c ldr.w r3, [pc, 0xa84] | r3 = *(0x00018c04);
0x00018180 ldr r1, [r7] | r1 = *(r7);
0x00018182 ldr r0, [sp, 0x18] | r0 = var_18h;
0x00018184 mov r2, r5 | r2 = r5;
0x00018186 add r3, pc | r3 += pc;
0x00018188 bl 0x1eefc | e2fsck_write_inode ();
0x0001818c ldr r3, [sp, 0x40] | r3 = var_40h;
0x0001818e movs r1, 2 | r1 = 2;
0x00018190 vldr d16, [sp, 0xa8] | __asm ("vldr d16, [sp, 0xa8]");
0x00018194 mov r2, r5 | r2 = r5;
0x00018196 str r1, [sp] | *(sp) = r1;
0x00018198 mov r0, r6 | r0 = r6;
0x0001819a str r3, [sp, 0x14] | var_14h_2 = r3;
0x0001819c movs r3, 0 | r3 = 0;
0x0001819e str r3, [sp, 0x10] | *(arg_10h) = r3;
0x000181a0 vstr d16, [r7, 8] | __asm ("vstr d16, [r7, 8]");
0x000181a4 vldr d16, [r7, 0x10] | __asm ("vldr d16, [r7, 0x10]");
0x000181a8 ldr r1, [r7] | r1 = *(r7);
0x000181aa vstr d16, [sp, 8] | __asm ("vstr d16, [sp, 8]");
0x000181ae blx 0x9708 | fcn_00009708 ();
0x000181b2 str r0, [r4, 8] | *((r4 + 8)) = r0;
0x000181b4 cmp r0, 0 |
| if (r0 != 0) {
0x000181b6 bne.w 0x18b76 | goto label_81;
| }
0x000181ba ldrd r2, r3, [r7, 8] | __asm ("ldrd r2, r3, [r7, 8]");
0x000181be strd r2, r3, [sp, 0x30] | __asm ("strd r2, r3, [sp, 0x30]");
0x000181c2 b.w 0x1769e | goto label_19;
| label_37:
0x000181e2 ldr r2, [r6] | r2 = *(r6);
0x000181e4 str r3, [sp, 0x6c] | var_6ch = r3;
0x000181e6 b 0x17a60 | goto label_20;
| label_23:
0x000181e8 movs r1, 0x4f | r1 = 0x4f;
0x000181ea ldr r2, [sp, 0x40] | r2 = var_40h;
0x000181ec ldr r0, [sp, 0x18] | r0 = var_18h;
0x000181ee movt r1, 2 | r1 = (r1 & 0xFFFF) | 0x20000;
0x000181f2 bl 0x202f8 | r0 = fix_problem ();
0x000181f6 cmp r0, 0 |
| if (r0 == 0) {
0x000181f8 beq.w 0x178e6 | goto label_7;
| }
0x000181fc movs r6, 0 | r6 = 0;
0x000181fe b 0x17cfa | goto label_21;
| label_70:
0x00018200 ldr r0, [sp, 0x18] | r0 = var_18h;
0x00018202 mov r1, fp | r1 = fp;
0x00018204 bl 0x169ac | fcn_000169ac (r0, r1);
0x00018208 ldr r3, [sp, 0x5c] | r3 = var_5ch;
0x0001820a str r6, [r3, 8] | *((r3 + 8)) = r6;
0x0001820c b.w 0x177a2 | goto label_22;
| label_65:
0x0001823c subs r6, 4 | r6 -= 4;
0x0001823e ldr r3, [sp, 0x1c] | r3 = var_1ch;
0x00018240 movs r2, 0 | r2 = 0;
0x00018242 mov r1, fp | r1 = fp;
0x00018244 mov r0, r5 | r0 = r5;
0x00018246 str r6, [sp] | *(sp) = r6;
0x00018248 blx 0x975c | r0 = fcn_0000975c ();
0x0001824c cmp r0, 0 |
| if (r0 == 0) {
0x0001824e beq.w 0x17cfa | goto label_21;
| }
0x00018252 b 0x181e8 | goto label_23;
| label_64:
0x00018254 ldr r0, [sp, 0x18] | r0 = var_18h;
0x00018256 add.w r2, r4, 8 | r2 = r4 + 8;
0x0001825a mov.w r1, 0x20002 | r1 = 0x20002;
0x0001825e bl 0x202f8 | r0 = fix_problem ();
0x00018262 cmp r0, 0 |
| if (r0 == 0) {
0x00018264 beq.w 0x18532 | void (*0x18532)() ();
| }
| label_67:
0x00018282 add r6, sp, 0x184 | r6 += var_184h;
0x00018284 mov r1, r3 | r1 = r3;
0x00018286 mov r0, r6 | r0 = r6;
0x00018288 mov sb, r3 | sb = r3;
0x0001828a blx 0x8cf0 | ext2fs_set_bitmap_padding ();
0x0001828e ldr r2, [sp, 0x58] | r2 = var_58h;
0x00018290 movs r3, 0xc | r3 = 0xc;
0x00018292 strh r3, [r6, 4] | *((r6 + 4)) = r3;
0x00018294 movs r3, 0x2e | r3 = 0x2e;
0x00018296 strb r3, [r6, 8] | *((r6 + 8)) = r3;
0x00018298 orr r5, r5, 1 | r5 |= 1;
0x0001829c mov r3, r2 | r3 = r2;
0x0001829e strh r5, [r6, 6] | *((r6 + 6)) = r5;
0x000182a0 str r2, [r6] | *(r6) = r2;
0x000182a2 str r6, [r4, 0x1c] | *((r4 + 0x1c)) = r6;
0x000182a4 str r7, [r4, 0x48] | *((r4 + 0x48)) = r7;
0x000182a6 str.w sb, [r4, 0x4c] | __asm ("str.w sb, [r4, 0x4c]");
| label_63:
0x000182aa ldr r2, [sp, 0x18] | r2 = var_18h;
0x000182ac add.w sl, r4, 8 | sl = r4 + 8;
0x000182b0 ldr r0, [r2] | r0 = *(r2);
0x000182b2 cmp r3, 0 |
| if (r3 == 0) {
0x000182b4 beq 0x18378 | goto label_82;
| }
0x000182b6 ldrb r3, [r6, 6] | r3 = *((r6 + 6));
0x000182b8 cmp r3, 1 |
| if (r3 == 1) {
0x000182ba beq.w 0x18726 | goto label_83;
| }
| label_30:
0x000182be add.w sb, sp, 0xa4 | sb += var_a4h;
0x000182c2 mov r1, r6 | r1 = r6;
0x000182c4 mov r2, sb | r2 = sb;
0x000182c6 blx 0x89c0 | ext2fs_get_rec_len ();
0x000182ca movs r1, 0xb |
0x000182cc movt r1, 2 | r1 = 0x2000b;
| label_25:
0x000182d0 ldr r0, [sp, 0x18] | r0 = var_18h;
0x000182d2 mov r2, sl | r2 = sl;
0x000182d4 ldr r3, [r0] | r3 = *(r0);
0x000182d6 ldr r3, [r3, 0x10] | r3 = *((r3 + 0x10));
0x000182d8 ldr r5, [r3, 0x60] | r5 = *((r3 + 0x60));
0x000182da ubfx r3, r5, 1, 1 | r3 = (r5 >> 1) & ((1 << 1) - 1);
0x000182de and r5, r5, 2 | r5 &= 2;
0x000182e2 str r3, [sp, 0x44] | var_44h = r3;
0x000182e4 bl 0x202f8 | r0 = fix_problem ();
0x000182e8 cmp r0, 0 |
| if (r0 != 0) {
0x000182ea bne.w 0x18588 | goto label_84;
| }
0x000182ee ldr r2, [r6] | r2 = *(r6);
0x000182f0 ldr r3, [sp, 0x58] | r3 = var_58h;
0x000182f2 cmp r3, r2 |
| if (r3 != r2) {
0x000182f4 bne 0x1839c | goto label_85;
| }
0x000182f6 ldr.w r3, [sb] | r3 = *(sb);
0x000182fa cmp r3, 0xc |
| if (r3 < 0xc) {
0x000182fc bls 0x1830a | goto label_86;
| }
0x000182fe sub.w sb, r3, 0xc | sb = r3 - 0xc;
0x00018302 cmp.w sb, 0xc |
| if (sb > 0xc) {
0x00018306 bhi.w 0x18616 | void (*0x18616)() ();
| }
| label_86:
0x0001830a str r0, [sp, 0x6c] | var_6ch = r0;
0x0001830c b.w 0x17a60 | goto label_20;
| label_50:
0x0001833e ldr r2, [sp, 0x18] | r2 = var_18h;
0x00018340 ldr r3, [r2, 0x24] | r3 = *((r2 + 0x24));
0x00018342 orr r3, r3, 1 | r3 |= 1;
0x00018346 str r3, [r2, 0x24] | *((r2 + 0x24)) = r3;
0x00018348 b.w 0x178e6 | goto label_7;
| label_72:
0x0001834c movs r1, 0x3c | r1 = 0x3c;
0x0001834e ldr r0, [sp, 0x18] | r0 = var_18h;
0x00018350 movt r1, 2 | r1 = (r1 & 0xFFFF) | 0x20000;
0x00018354 add.w r2, r4, 8 | r2 = r4 + 8;
0x00018358 bl 0x202f8 | r0 = fix_problem ();
0x0001835c cmp r0, 0 |
| if (r0 != 0) {
0x0001835e bne.w 0x186f0 | goto label_87;
| }
0x00018362 ldr r3, [sp, 0x1c] | r3 = var_1ch;
0x00018364 ldr r1, [sp, 0x5c] | r1 = var_5ch;
0x00018366 ldrb r2, [r3, 0x1c] | r2 = *((r3 + 0x1c));
0x00018368 cmp r2, 2 |
0x0001836a strb r2, [r1, 6] | *((r1 + 6)) = r2;
0x0001836c ldrb r3, [r3, 0x1e] | r3 = *((r3 + 0x1e));
| if (r2 > 2) {
0x0001836e bhi.w 0x18658 | goto label_73;
| }
0x00018372 ldr.w r1, [r8, 0x10] | r1 = *((r8 + 0x10));
0x00018376 b 0x17ef4 | goto label_24;
| label_82:
0x00018378 add.w sb, sp, 0xa4 | sb += var_a4h;
0x0001837c mov r1, r6 | r1 = r6;
0x0001837e mov r2, sb | r2 = sb;
0x00018380 blx 0x89c0 | ext2fs_get_rec_len ();
0x00018384 movs r1, 9 |
0x00018386 movt r1, 2 | r1 = 0x20009;
0x0001838a b 0x182d0 | goto label_25;
| label_31:
0x0001838c blx 0x89c0 | ext2fs_get_rec_len ();
0x00018390 ldr r2, [r6] | r2 = *(r6);
0x00018392 ldr r3, [sp, 0x58] | r3 = var_58h;
0x00018394 cmp r3, r2 |
| if (r3 == r2) {
0x00018396 beq.w 0x1874a | goto label_88;
| }
0x0001839a movs r5, 2 | r5 = 2;
| label_85:
0x0001839c movs r1, 1 | r1 = 1;
0x0001839e ldr r0, [sp, 0x18] | r0 = var_18h;
0x000183a0 movt r1, 2 | r1 = (r1 & 0xFFFF) | 0x20000;
0x000183a4 mov r2, sl | r2 = sl;
0x000183a6 bl 0x202f8 | r0 = fix_problem ();
0x000183aa cmp r0, 0 |
| if (r0 == 0) {
0x000183ac beq.w 0x18600 | goto label_89;
| }
0x000183b0 ldr r3, [sp, 0x58] | r3 = var_58h;
0x000183b2 str r3, [r6] | *(r6) = r3;
0x000183b4 ldr.w r3, [sb] | r3 = *(sb);
0x000183b8 cmp r3, 0xc |
| if (r3 < 0xc) {
0x000183ba bls.w 0x185aa | goto label_32;
| }
| label_27:
0x000183fe ldr r3, [sp, 0x38] | r3 = var_38h_2;
0x00018400 adds r3, 1 | r3++;
0x00018402 str r3, [sp, 0x38] | var_38h_2 = r3;
0x00018404 cmp r2, 0 |
| if (r2 == 0) {
0x00018406 beq.w 0x18c6c | void (*0x18c6c)() ();
| }
| label_53:
0x00018414 ldr r1, [sp, 0x1c] | r1 = var_1ch;
0x00018416 mov r0, r8 | r0 = r8;
0x00018418 blx 0x8ef0 | r0 = fcn_00008ef0 ();
0x0001841c mov r6, r0 | r6 = r0;
0x0001841e cmp r0, 0 |
| if (r0 == 0) {
0x00018420 beq.w 0x187ae | goto label_90;
| }
0x00018424 ldr r3, [sp, 0x74] | r3 = var_74h;
0x00018426 str r3, [sp, 0x80] | var_80h = r3;
0x00018428 b 0x17fb0 | goto label_26;
| label_84:
0x00018588 ldr.w r2, [sb] | r2 = *(sb);
0x0001858c ldr r3, [sp, 0x44] | r3 = var_44h;
0x0001858e cmp r2, 0xb |
0x00018590 lsl.w r3, r3, 9 | r3 <<= 9;
| if (r2 > 0xb) {
0x00018594 bhi.w 0x187ea | goto label_91;
| }
0x00018598 orr r3, r3, 1 | r3 |= 1;
0x0001859c ldr r2, [sp, 0x58] | r2 = var_58h;
0x0001859e strh r3, [r6, 6] | *((r6 + 6)) = r3;
0x000185a0 movs r3, 0xc | r3 = 0xc;
0x000185a2 strh r3, [r6, 4] | *((r6 + 4)) = r3;
0x000185a4 movs r3, 0x2e | r3 = 0x2e;
0x000185a6 str r2, [r6] | *(r6) = r2;
0x000185a8 strh r3, [r6, 8] | *((r6 + 8)) = r3;
| label_32:
0x000185aa ldr r2, [sp, 0x58] | r2 = var_58h;
0x000185ac b 0x183fe | goto label_27;
| label_89:
0x00018600 ldr.w r3, [sb] | r3 = *(sb);
0x00018604 cmp r3, 0xc |
| if (r3 < 0xc) {
0x00018606 bls.w 0x1871c | void (*0x1871c)() ();
| }
| label_73:
0x00018658 ldr r2, [sp, 0x5c] | r2 = var_5ch;
0x0001865a adds r3, 1 | r3++;
0x0001865c strh r3, [r2, 4] | *((r2 + 4)) = r3;
0x0001865e b 0x17fa0 | goto label_28;
| label_68:
0x000186da add.w sb, sp, 0xa4 | sb += var_a4h;
0x000186de mov r1, r6 | r1 = r6;
0x000186e0 mov r2, sb | r2 = sb;
0x000186e2 blx 0x89c0 | ext2fs_get_rec_len ();
0x000186e6 movs r1, 0xa |
0x000186e8 movt r1, 2 | r1 = 0x2000a;
0x000186ec b.w 0x17dc0 | goto label_29;
| label_87:
0x000186f0 mov r1, fp | r1 = fp;
0x000186f2 ldr r0, [sp, 0x18] | r0 = var_18h;
0x000186f4 bl 0x169ac | fcn_000169ac (r0, r1);
0x000186f8 ldr r1, [sp, 0x5c] | r1 = var_5ch;
0x000186fa movs r3, 0 | r3 = 0;
0x000186fc str r3, [r1, 8] | *((r1 + 8)) = r3;
0x000186fe ldr r3, [sp, 0x1c] | r3 = var_1ch;
0x00018700 ldrb r2, [r3, 0x1c] | r2 = *((r3 + 0x1c));
0x00018702 cmp r2, 2 |
0x00018704 strb r2, [r1, 6] | *((r1 + 6)) = r2;
| if (r2 < 2) {
0x00018706 bls.w 0x188aa | goto label_92;
| }
0x0001870a ldrb r3, [r3, 0x1e] | r3 = *((r3 + 0x1e));
0x0001870c adds r3, 1 | r3++;
| label_34:
0x0001870e ldr r2, [sp, 0x5c] | r2 = var_5ch;
0x00018710 strh r3, [r2, 4] | *((r2 + 4)) = r3;
0x00018712 movs r3, 0 | r3 = 0;
0x00018714 mov sb, r3 | sb = r3;
0x00018716 str r3, [sp, 0x80] | var_80h = r3;
0x00018718 str r3, [sp, 0x7c] | var_7ch = r3;
0x0001871a b 0x17fb0 | goto label_26;
| label_83:
0x00018726 ldrb r3, [r6, 8] | r3 = *((r6 + 8));
0x00018728 cmp r3, 0x2e |
| if (r3 != 0x2e) {
0x0001872a bne.w 0x182be | goto label_30;
| }
0x0001872e ldrb r5, [r6, 9] | r5 = *((r6 + 9));
0x00018730 add.w sb, sp, 0xa4 | sb += var_a4h;
0x00018734 mov r2, sb | r2 = sb;
0x00018736 mov r1, r6 | r1 = r6;
0x00018738 cmp r5, 0 |
| if (r5 == 0) {
0x0001873a beq.w 0x1838c | goto label_31;
| }
0x0001873e blx 0x89c0 | ext2fs_get_rec_len ();
0x00018742 movs r1, 0x16 |
0x00018744 movt r1, 2 | r1 = 0x20016;
0x00018748 b 0x182d0 | goto label_25;
| label_88:
0x0001874a ldr.w r3, [sb] | r3 = *(sb);
0x0001874e cmp r3, 0xc |
| if (r3 < 0xc) {
0x00018750 bls 0x18760 | void (*0x18760)() ();
| }
| label_78:
0x00018766 ldr.w r3, [pc, 0x4a4] | r3 = *(0x00018c0c);
0x0001876a add r3, pc | r3 += pc;
| label_35:
0x0001876c movs r1, 0x22 | r1 = 0x22;
0x0001876e ldr r2, [sp, 0x2c] | r2 = var_2ch;
0x00018770 ldr r0, [sp, 0x18] | r0 = var_18h;
0x00018772 movt r1, 2 | r1 = (r1 & 0xFFFF) | 0x20000;
0x00018776 str r3, [r4, 0x58] | *((r4 + 0x58)) = r3;
0x00018778 bl 0x202f8 | fix_problem ();
0x0001877c b.w 0x17668 | goto label_0;
| label_90:
0x000187ae ldr r0, [sp, 0x18] | r0 = var_18h;
0x000187b0 mov r1, fp | r1 = fp;
0x000187b2 bl 0x23d94 | r0 = e2fsck_dir_will_be_rehashed ();
0x000187b6 mov r5, r0 | r5 = r0;
0x000187b8 cmp r0, 0 |
| if (r0 != 0) {
0x000187ba bne.w 0x189a2 | goto label_93;
| }
0x000187be movs r1, 0x4c | r1 = 0x4c;
0x000187c0 ldr r0, [r4, 0x68] | r0 = *((r4 + 0x68));
0x000187c2 movt r1, 2 | r1 = (r1 & 0xFFFF) | 0x20000;
0x000187c6 add.w r2, r4, 8 | r2 = r4 + 8;
0x000187ca bl 0x202f8 | fix_problem ();
0x000187ce ldr r3, [sp, 0x74] | r3 = var_74h;
0x000187d0 mov sb, r0 | sb = r0;
0x000187d2 str r3, [sp, 0x80] | var_80h = r3;
0x000187d4 cmp r0, 0 |
| if (r0 == 0) {
0x000187d6 beq.w 0x17fb0 | goto label_26;
| }
0x000187da ldr r0, [sp, 0x18] | r0 = var_18h;
0x000187dc mov r1, fp | r1 = fp;
0x000187de str r5, [sp, 0x74] | var_74h = r5;
0x000187e0 mov sb, r5 | sb = r5;
0x000187e2 bl 0x23d68 | e2fsck_rehash_dir_later ();
0x000187e6 b.w 0x17fb0 | goto label_26;
| label_91:
0x000187ea ldr r1, [sp, 0x58] | r1 = var_58h;
0x000187ec orr r3, r3, 1 | r3 |= 1;
0x000187f0 cmp r2, 0xc |
0x000187f2 strh r3, [r6, 6] | *((r6 + 6)) = r3;
0x000187f4 mov.w r3, 0x2e | r3 = 0x2e;
0x000187f8 str r1, [r6] | *(r6) = r1;
0x000187fa strh r3, [r6, 8] | *((r6 + 8)) = r3;
| if (r2 == 0xc) {
0x000187fc beq.w 0x185aa | goto label_32;
| }
0x00018800 sub.w sb, r2, 0xc | sb = r2 - 0xc;
0x00018804 cmp.w sb, 0xc |
| if (sb > 0xc) {
0x00018808 bhi.w 0x183da | void (*0x183da)() ();
| }
| label_75:
0x0001880e ldr r1, [sp, 0x1c] | r1 = var_1ch;
0x00018810 ldrb r2, [r1, 6] | r2 = *((r1 + 6));
0x00018812 cmp r2, 0 |
| if (r2 != 0) {
0x00018814 bne.w 0x17fa0 | goto label_28;
| }
0x00018818 ldr r2, [sp, 0x24] | r2 = var_24h;
0x0001881a subs r3, 8 | r3 -= 8;
0x0001881c subs r3, r3, r2 | r3 -= r2;
0x0001881e ldrh r2, [r1, 8] | r2 = *((r1 + 8));
0x00018820 cmp.w r2, r3, lsr 3 |
| if (r2 != r3) {
0x00018824 bne.w 0x17fa0 | goto label_28;
| }
0x00018828 ldr r2, [sp, 0x3c] | r2 = var_3ch;
0x0001882a movs r3, 3 | r3 = 3;
0x0001882c str r3, [r2, r6] | *((r2 + r6)) = r3;
0x0001882e b.w 0x17faa | goto label_33;
| label_92:
0x000188aa ldr.w r3, [r8, 0x10] | r3 = *((r8 + 0x10));
0x000188ae ldr.w r1, [r3, 0x160] | r1 = *((r3 + 0x160));
0x000188b2 ldr r3, [sp, 0x1c] | r3 = var_1ch;
0x000188b4 lsls r0, r1, 0x1e | r0 = r1 << 0x1e;
0x000188b6 ldrb r3, [r3, 0x1e] | r3 = *((r3 + 0x1e));
0x000188b8 add.w r3, r3, 1 | r3++;
| if (r0 >= r1) {
0x000188bc bpl.w 0x1870e | goto label_34;
| }
0x000188c0 ldr r1, [sp, 0x5c] | r1 = var_5ch;
0x000188c2 adds r2, 3 | r2 += 3;
0x000188c4 strb r2, [r1, 6] | *((r1 + 6)) = r2;
0x000188c6 b 0x1870e | goto label_34;
| label_79:
0x000188d6 ldr r3, [pc, 0x338] |
0x000188d8 add r3, pc | r3 = 0x314ee;
0x000188da b 0x1876c | goto label_35;
| label_69:
0x00018928 ldrh r2, [r6, 8] | r2 = *((r6 + 8));
0x0001892a movw r3, 0x2e2e | r3 = 0x2e2e;
0x0001892e cmp r2, r3 |
| if (r2 != r3) {
0x00018930 bne.w 0x17dae | goto label_36;
| }
0x00018934 ldrb r3, [r6, 0xa] | r3 = *((r6 + 0xa));
| if (r3 != 0) {
0x00018936 cbz r3, 0x1894e |
0x00018938 add.w sb, sp, 0xa4 | sb += var_a4h;
0x0001893c mov r1, r6 | r1 = r6;
0x0001893e mov r2, sb | r2 = sb;
0x00018940 blx 0x89c0 | ext2fs_get_rec_len ();
0x00018944 movs r1, 0x17 |
0x00018946 movt r1, 2 | r1 = 0x20017;
0x0001894a b.w 0x17dc0 | goto label_29;
| }
0x0001894e add r2, sp, 0xa4 | r2 += var_a4h;
0x00018950 mov r1, r6 | r1 = r6;
0x00018952 blx 0x89c0 | ext2fs_get_rec_len ();
0x00018956 ldr r2, [r6] | r2 = *(r6);
0x00018958 ldr r1, [sp, 0x58] | r1 = var_58h;
0x0001895a ldr r0, [sp, 0x18] | r0 = var_18h;
0x0001895c bl 0x1fdec | r0 = e2fsck_dir_info_set_dotdot ();
0x00018960 mov r3, r0 | r3 = r0;
0x00018962 cmp r0, 0 |
| if (r0 == 0) {
0x00018964 beq.w 0x181e2 | goto label_37;
| }
0x00018968 movs r1, 0x1c | r1 = 0x1c;
0x0001896a ldr r0, [sp, 0x18] | r0 = var_18h;
0x0001896c mov r2, r5 | r2 = r5;
0x0001896e movt r1, 2 | r1 = (r1 & 0xFFFF) | 0x20000;
0x00018972 bl 0x202f8 | fix_problem ();
0x00018976 b.w 0x178d0 | goto label_38;
| label_93:
0x000189a2 ldr r3, [sp, 0x74] | r3 = var_74h;
0x000189a4 mov sb, r6 | sb = r6;
0x000189a6 str r6, [sp, 0x74] | var_74h = r6;
0x000189a8 str r3, [sp, 0x80] | var_80h = r3;
0x000189aa b.w 0x17fb0 | goto label_26;
| label_77:
0x00018a16 ldr r3, [pc, 0x200] |
0x00018a18 add r3, pc | r3 = 0x31636;
0x00018a1a b 0x1876c | goto label_35;
| label_81:
0x00018b76 ldr r3, [pc, 0xa4] |
0x00018b78 add r3, pc | r3 = 0x3179a;
0x00018b7a b 0x1876c | goto label_35;
| label_80:
0x00018cfc ldr r3, [pc, 0x1e0] |
0x00018cfe add r3, pc | r3 = 0x31be2;
0x00018d00 b 0x1876c | goto label_35;
| label_43:
0x00018eaa blx 0x94bc | fcn_000094bc ();
0x00018eae ldr r3, [r6] | r3 = *(r6);
0x00018eb0 movs r1, 0x1c | r1 = 0x1c;
0x00018eb2 ldr r0, [sp, 0x18] | r0 = var_18h;
0x00018eb4 mov r2, sl | r2 = sl;
0x00018eb6 movt r1, 2 | r1 = (r1 & 0xFFFF) | 0x20000;
0x00018eba str r3, [r4, 0xc] | *((r4 + 0xc)) = r3;
0x00018ebc bl 0x202f8 | fix_problem ();
0x00018ec0 b.w 0x178d0 | goto label_38;
| }
[*] Function popen used 3 times fsck.ext3