[*] 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