[*] Binary protection state of fsck.ext3

  
  	Full RELRO     Canary found      NX enabled   PIE enabled  No RPATH     No RUNPATH   No Symbols


[*] Function printf tear down of fsck.ext3



r2dec has crashed (info: /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-80367616.squashfs_v4_le_extract/usr/sbin/fsck.ext3 @ 0xc0d4).
Please report the bug at https://github.com/radareorg/r2dec-js/issues
Use the option '--issue' or the command 'pddi' to generate 
the needed data for the issue.
    ; 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 @ 0xc108 */
                                             | #include <stdint.h>
                                             |  
                                             | #define BIT_MASK(t,v) ((t)(-((v)!= 0)))&(((t)-1)>>((sizeof(t)*CHAR_BIT)-(v)))
                                             |  
    ; (fcn) fcn.0000c108 ()                  | void fcn_0000c108 (int16_t arg_8h, int16_t arg_ch, int16_t arg_10h, int16_t arg_14h, int16_t arg_18h, int16_t arg_1ch, int16_t arg_20h, int16_t arg_24h, int16_t arg_28h, int16_t arg_2ch, int16_t arg_30h, int16_t arg_38h, int16_t arg_3ch, int16_t arg_40h, int16_t arg_44h, int16_t arg_50h, int16_t arg_54h, int16_t arg_58h, int16_t arg_5ch, int16_t arg_64h, int16_t arg_78h, int16_t arg_d8h, int16_t arg_130h, int16_t arg_134h, int16_t arg_138h, int16_t arg_1bch, int16_t arg4) {
                                             |     int16_t var_0h;
                                             |     int16_t var_4h;
                                             |     r3 = arg4;
                                             | label_10:
    0x00009af6 mov r2, sb                    |     r2 = sb;
    0x00009af8 mov r1, sl                    |     r1 = sl;
    0x00009afa mov r0, r5                    |     r0 = r5;
    0x00009afc blx 0x9100                    |     r0 = fcn_00009100 ();
    0x00009b00 adds r6, r0, 1                |     r6 = r0 + 1;
    0x00009b02 str.w r0, [r8]                |     __asm ("str.w r0, [r8]");
                                             |     if (r6 != r0) {
    0x00009b06 beq.w 0x9e8e                  |         
    0x00009b0a subs r0, 0x42                 |         r0 -= 0x42;
    0x00009b0c cmp r0, 0x38                  |         
                                             |         if (r0 > 0x38) {
    0x00009b0e bhi.w 0xb6c4                  |             goto label_54;
                                             |         }
    0x00009b12 adr r3, 8                     |         r3 = 8;
    0x00009b14 ldr.w r0, [r3, r0, lsl 2]     |         offset_0 = r0 << 2;
                                             |         r0 = *((r3 + offset_0));
    0x00009b18 add r3, r0                    |         r3 += r0;
    0x00009b1a bx r3                         |         return uint32_t (*r3)() ();
                                             |     }
    0x00009e8e ldr.w r3, [pc, 0x56c]         |     r3 = *(0x0000a3fc);
    0x00009e92 add r3, pc                    |     r3 += pc;
    0x00009e94 ldr.w r3, [r3, 0x110]         |     r3 = *((r3 + 0x110));
    0x00009e98 str r3, [sp, 0x1c]            |     *(arg_1ch) = r3;
    0x00009e9a cmp r3, 0                     |     
                                             |     if (r3 != 0) {
    0x00009e9c bne.w 0xa022                  |         goto label_23;
                                             |     }
    0x00009ea0 ldr.w r3, [pc, 0x55c]         |     r3 = *(0xa400);
    0x00009ea4 ldr r2, [sp, 8]               |     r2 = *(arg_8h);
    0x00009ea6 ldr.w r7, [fp, r3]            |     r7 = *((fp + r3));
    0x00009eaa subs r3, r5, 1                |     r3 = r5 - 1;
    0x00009eac ldr r2, [r2]                  |     r2 = *(r2);
    0x00009eae ldr r1, [r7]                  |     r1 = *(r7);
    0x00009eb0 cmp r3, r1                    |     
                                             |     if (r3 != r1) {
    0x00009eb2 bne.w 0xbf2c                  |         goto label_55;
                                             |     }
    0x00009eb6 ldr r3, [r2, 0x28]            |     r3 = *((r2 + 0x28));
    0x00009eb8 and r3, r3, 0x408             |     r3 &= 0x408;
    0x00009ebc cmp.w r3, 0x408               |     
                                             |     if (r3 == 0x408) {
    0x00009ec0 beq.w 0xb588                  |         goto label_56;
                                             |     }
                                             | label_28:
    0x00009ec4 ldr r3, [sp, 8]               |     r3 = *(arg_8h);
    0x00009ec6 ldr r3, [r3]                  |     r3 = *(r3);
    0x00009ec8 ldr r2, [r3, 0x28]            |     r2 = *((r3 + 0x28));
    0x00009eca lsls r1, r2, 0x1c             |     r1 = r2 << 0x1c;
                                             |     if (r1 < r2) {
    0x00009ecc bmi.w 0xad1e                  |         goto label_57;
                                             |     }
                                             | label_34:
    0x00009ed0 ldr r3, [sp, 8]               |     r3 = *(arg_8h);
    0x00009ed2 ldr.w sb, [r3]                |     sb = *(r3);
                                             | label_19:
    0x00009ed6 ldr r3, [r7]                  |     r3 = *(r7);
    0x00009ed8 movs r1, 0x3f                 |     r1 = 0x3f;
    0x00009eda ldr.w r0, [sl, r3, lsl 2]     |     offset_1 = r3 << 2;
                                             |     r0 = *((sl + offset_1));
    0x00009ede blx 0x8c28                    |     r0 = fcn_00008c28 ();
    0x00009ee2 cmp r0, 0                     |     
                                             |     if (r0 == 0) {
    0x00009ee4 beq.w 0xb496                  |         goto label_58;
                                             |     }
    0x00009ee8 adds r3, r0, 1                |     r3 = r0 + 1;
    0x00009eea str.w r3, [sb, 0x10]          |     __asm ("str.w r3, [sb, 0x10]");
    0x00009eee movs r3, 0                    |     r3 = 0;
    0x00009ef0 strb r3, [r0]                 |     *(r0) = r3;
                                             | label_26:
    0x00009ef2 ldr r6, [sp, 8]               |     r6 = *(arg_8h);
    0x00009ef4 movs r2, 0                    |     r2 = 0;
    0x00009ef6 ldr r3, [r7]                  |     r3 = *(r7);
    0x00009ef8 ldr.w sb, [r6]                |     sb = *(r6);
    0x00009efc ldr.w r1, [sl, r3, lsl 2]     |     offset_2 = r3 << 2;
                                             |     r1 = *((sl + offset_2));
    0x00009f00 ldr.w r0, [sb, 0x5c]          |     r0 = *((sb + 0x5c));
    0x00009f04 blx 0x9504                    |     fcn_00009504 ();
    0x00009f08 ldr r3, [r6]                  |     r3 = *(r6);
    0x00009f0a str.w r0, [sb, 8]             |     __asm ("str.w r0, [sb, 8]");
    0x00009f0e ldr r1, [r3, 8]               |     r1 = *((r3 + 8));
    0x00009f10 cmp r1, 0                     |     
                                             |     if (r1 == 0) {
    0x00009f12 beq.w 0xb676                  |         goto label_59;
                                             |     }
                                             | label_33:
    0x00009f16 ldr r3, [sp, 0xc]             |     r3 = *(arg_ch);
    0x00009f18 cmp r3, 0                     |     
                                             |     if (r3 == 0) {
    0x00009f1a beq.w 0xafe2                  |         goto label_60;
                                             |     }
    0x00009f1e mov r1, r3                    |     r1 = r3;
    0x00009f20 ldr r3, [sp, 8]               |     r3 = *(arg_8h);
    0x00009f22 movs r2, 0                    |     r2 = 0;
    0x00009f24 ldr r3, [r3]                  |     r3 = *(r3);
    0x00009f26 mov r0, r3                    |     r0 = r3;
    0x00009f28 mov r7, r3                    |     r7 = r3;
    0x00009f2a bl 0x1e6e8                    |     r0 = string_copy ();
    0x00009f2e cmp r0, 0                     |     
                                             |     if (r0 == 0) {
    0x00009f30 beq.w 0xafe2                  |         goto label_60;
                                             |     }
    0x00009f34 ldr.w r3, [pc, 0x4cc]         |     r3 = *(0x0000a404);
    0x00009f38 mov sb, r0                    |     sb = r0;
    0x00009f3a strd r5, sl, [sp, 0x40]       |     __asm ("strd r5, sl, [sp, 0x40]");
    0x00009f3e ldr.w sl, [sp, 0x1c]          |     sl = *(arg_1ch);
    0x00009f42 add r3, pc                    |     r3 += pc;
    0x00009f44 str.w r8, [sp, 0x1c]          |     __asm ("str.w r8, [arg_1ch]");
    0x00009f48 str r3, [sp, 0xc]             |     *(arg_ch) = r3;
    0x00009f4a ldr.w r3, [pc, 0x4bc]         |     r3 = *(0x0000a408);
    0x00009f4e strd r4, r0, [sp, 0x38]       |     __asm ("strd r4, r0, [sp, 0x38]");
    0x00009f52 add r3, pc                    |     r3 += pc;
    0x00009f54 str r3, [sp, 0x20]            |     *(arg_20h) = r3;
    0x00009f56 ldr.w r3, [pc, 0x4b4]         |     r3 = *(0x0000a40c);
    0x00009f5a add r3, pc                    |     r3 += pc;
    0x00009f5c mov r8, r3                    |     r8 = r3;
                                             | label_0:
    0x00009f5e ldrb.w r3, [sb]               |     r3 = *(sb);
    0x00009f62 cmp r3, 0                     |     
                                             |     if (r3 == 0) {
    0x00009f64 beq.w 0xafc8                  |         goto label_61;
                                             |     }
    0x00009f68 movs r1, 0x2c                 |     r1 = 0x2c;
    0x00009f6a mov r0, sb                    |     r0 = sb;
    0x00009f6c add r6, sp, 0x78              |     r6 += arg_78h;
    0x00009f6e blx 0x8c28                    |     r0 = fcn_00008c28 ();
    0x00009f72 mov r4, r0                    |     r4 = r0;
    0x00009f74 str r0, [r6]                  |     *(r6) = r0;
                                             |     if (r0 != 0) {
    0x00009f76 cbz r0, 0x9f80                |         
    0x00009f78 movs r3, 0                    |         r3 = 0;
    0x00009f7a strb r3, [r0]                 |         *(r0) = r3;
    0x00009f7c ldr r4, [r6]                  |         r4 = *(r6);
    0x00009f7e adds r4, 1                    |         r4++;
                                             |     }
    0x00009f80 movs r1, 0x3d                 |     r1 = 0x3d;
    0x00009f82 mov r0, sb                    |     r0 = sb;
    0x00009f84 blx 0x8c28                    |     r0 = fcn_00008c28 ();
    0x00009f88 mov r5, r0                    |     r5 = r0;
    0x00009f8a cmp r0, 0                     |     
                                             |     if (r0 == 0) {
    0x00009f8c beq.w 0xae5e                  |         goto label_62;
                                             |     }
    0x00009f90 movs r3, 0                    |     r3 = 0;
    0x00009f92 mov r1, r8                    |     r1 = r8;
    0x00009f94 mov r0, sb                    |     r0 = sb;
    0x00009f96 strb r3, [r5], 1              |     *(r5) = r3;
                                             |     r5++;
    0x00009f9a blx 0x98a0                    |     r0 = fcn_000098a0 ();
    0x00009f9e cmp r0, 0                     |     
                                             |     if (r0 != 0) {
    0x00009fa0 bne.w 0xae36                  |         void (*0xae36)() ();
                                             |     }
                                             | label_48:
    0x00009fc4 cmp r4, 0                     |     
                                             |     if (r4 == 0) {
    0x00009fc6 beq.w 0xafc8                  |         goto label_61;
                                             |     }
    0x00009fca mov sb, r4                    |     sb = r4;
    0x00009fcc b 0x9f5e                      |     goto label_0;
                                             | label_23:
    0x0000a022 ldr r7, [pc, 0x3f8]           |     
    0x0000a024 add r7, pc                    |     r7 = 0x14446;
                                             |     do {
    0x0000a026 movs r1, 2                    |         r1 = 2;
    0x0000a028 mov r0, r7                    |         r0 = r7;
    0x0000a02a blx 0x88dc                    |         r0 = open (r0, r1, r2);
    0x0000a02e subs r3, r0, 0                |         r3 = r0 - 0;
                                             |         if (r3 < r0) {
    0x0000a030 blt.w 0xaa16                  |             goto label_63;
                                             |         }
    0x0000a034 cmp r3, 2                     |         
    0x0000a036 ble 0xa026                    |         
                                             |     } while (r3 <= 2);
    0x0000a038 blx 0x934c                    |     fcn_0000934c ();
                                             | label_9:
    0x0000a03c mov r0, r4                    |     r0 = r4;
    0x0000a03e bl 0x25494                    |     set_up_logging ();
    0x0000a042 ldr r3, [r4, 0x14]            |     r3 = *((r4 + 0x14));
                                             |     if (r3 == 0) {
    0x0000a044 cbz r3, 0xa07e                |         goto label_64;
                                             |     }
    0x0000a046 ldr r0, [pc, 0x3d8]           |     
    0x0000a048 movs r2, 0xc                  |     r2 = 0xc;
    0x0000a04a movs r1, 1                    |     r1 = 1;
    0x0000a04c add r0, pc                    |     r0 = 0x14472;
    0x0000a04e blx 0x937c                    |     fcn_0000937c ();
    0x0000a052 cmp r5, 0                     |     
                                             |     if (r5 <= 0) {
    0x0000a054 ble 0xa076                    |         goto label_65;
                                             |     }
    0x0000a056 sub.w r8, sl, 4               |     r8 = sl - 4;
    0x0000a05a movs r7, 0                    |     r7 = 0;
    0x0000a05c b 0xa066                      |     
                                             |     while (r5 != r7) {
    0x0000a05e ldr r1, [r4, 0x14]            |         r1 = *((r4 + 0x14));
    0x0000a060 movs r0, 0x20                 |         r0 = 0x20;
    0x0000a062 blx 0x9558                    |         fcn_00009558 ();
    0x0000a066 ldr r1, [r4, 0x14]            |         r1 = *((r4 + 0x14));
    0x0000a068 adds r7, 1                    |         r7++;
    0x0000a06a ldr r0, [r8, 4]!              |         r0 = *((r8 += 4));
    0x0000a06e blx 0x9964                    |         fcn_00009964 ();
    0x0000a072 cmp r5, r7                    |         
    0x0000a074 bne 0xa05e                    |         
                                             |     }
                                             | label_65:
    0x0000a076 ldr r1, [r4, 0x14]            |     r1 = *((r4 + 0x14));
    0x0000a078 movs r0, 0xa                  |     r0 = 0xa;
    0x0000a07a blx 0x9558                    |     fcn_00009558 ();
                                             | label_64:
    0x0000a07e ldr r3, [r4, 0x1c]            |     r3 = *((r4 + 0x1c));
                                             |     if (r3 == 0) {
    0x0000a080 cbz r3, 0xa0e0                |         goto label_66;
                                             |     }
    0x0000a082 ldr r0, [pc, 0x3a0]           |     
    0x0000a084 movs r2, 0x27                 |     r2 = 0x27;
    0x0000a086 movs r1, 1                    |     r1 = 1;
    0x0000a088 add r0, pc                    |     r0 = 0x144b2;
    0x0000a08a blx 0x937c                    |     fcn_0000937c ();
    0x0000a08e ldr r2, [pc, 0x398]           |     
    0x0000a090 movs r1, 1                    |     r1 = 1;
    0x0000a092 ldr.w r3, [r4, 0x334]         |     r3 = *((r4 + 0x334));
    0x0000a096 ldr r0, [r4, 0x1c]            |     r0 = *((r4 + 0x1c));
    0x0000a098 add r2, pc                    |     r2 = 0x144c6;
    0x0000a09a blx 0x94ec                    |     fcn_000094ec ();
    0x0000a09e ldr r2, [pc, 0x38c]           |     
    0x0000a0a0 movs r1, 1                    |     r1 = 1;
    0x0000a0a2 ldr.w r3, [sl]                |     r3 = *(sl);
    0x0000a0a6 ldr r0, [r4, 0x1c]            |     r0 = *((r4 + 0x1c));
    0x0000a0a8 add r2, pc                    |     r2 = 0x144da;
    0x0000a0aa blx 0x94ec                    |     fcn_000094ec ();
    0x0000a0ae cmp r5, 1                     |     
                                             |     if (r5 <= 1) {
    0x0000a0b0 ble 0xa0d2                    |         goto label_67;
                                             |     }
    0x0000a0b2 ldr.w sb, [pc, 0x37c]         |     
    0x0000a0b6 movs r7, 1                    |     r7 = 1;
    0x0000a0b8 add sb, pc                    |     sb = 0x144ee;
                                             |     do {
    0x0000a0ba ldr r3, [sl, 4]!              |         r3 = *((sl += 4));
    0x0000a0be mov r2, sb                    |         r2 = sb;
    0x0000a0c0 ldr r0, [r4, 0x1c]            |         r0 = *((r4 + 0x1c));
    0x0000a0c2 movs r1, 1                    |         r1 = 1;
    0x0000a0c4 str r3, [sp]                  |         *(sp) = r3;
    0x0000a0c6 mov r3, r7                    |         r3 = r7;
    0x0000a0c8 adds r7, 1                    |         r7++;
    0x0000a0ca blx 0x94ec                    |         fcn_000094ec ();
    0x0000a0ce cmp r5, r7                    |         
    0x0000a0d0 bne 0xa0ba                    |         
                                             |     } while (r5 != r7);
                                             | label_67:
    0x0000a0d2 ldr r0, [pc, 0x360]           |     
    0x0000a0d4 movs r2, 3                    |     r2 = 3;
    0x0000a0d6 ldr r3, [r4, 0x1c]            |     r3 = *((r4 + 0x1c));
    0x0000a0d8 movs r1, 1                    |     r1 = 1;
    0x0000a0da add r0, pc                    |     r0 = 0x14514;
    0x0000a0dc blx 0x937c                    |     fcn_0000937c ();
                                             | label_66:
    0x0000a0e0 add.w sl, r4, 0x288           |     sl = r4 + 0x288;
    0x0000a0e4 movs r1, 0                    |     r1 = 0;
    0x0000a0e6 mov r0, sl                    |     r0 = sl;
    0x0000a0e8 bl 0x1eaf8                    |     init_resource_track ();
    0x0000a0ec ldr r3, [r4, 0x28]            |     r3 = *((r4 + 0x28));
    0x0000a0ee lsls r5, r3, 0x1e             |     r5 = r3 << 0x1e;
                                             |     if (r5 >= r3) {
    0x0000a0f0 bpl.w 0xa9b8                  |         goto label_68;
                                             |     }
    0x0000a0f4 ldr r3, [pc, 0x340]           |     
    0x0000a0f6 add r3, pc                    |     
    0x0000a0f8 ldr.w r3, [r3, 0x110]         |     r3 = *(0x14642);
    0x0000a0fc cmp r3, 0                     |     
                                             |     if (r3 != 0) {
    0x0000a0fe bne.w 0xa9b8                  |         goto label_68;
                                             |     }
                                             | label_7:
    0x0000a102 mov r0, r4                    |     r0 = r4;
    0x0000a104 bl 0xc1ec                     |     fcn_0000c1ec (r0);
    0x0000a108 ldr r3, [r4, 0x28]            |     r3 = *((r4 + 0x28));
    0x0000a10a tst.w r3, 0xe                 |     
                                             |     if ((r3 & 0xe) == 0) {
    0x0000a10e bne 0xa11a                    |         
    0x0000a110 ldr.w r3, [r4, 0x2c8]         |         r3 = *((r4 + 0x2c8));
    0x0000a114 cmp r3, 0                     |         
                                             |         if (r3 == 0) {
    0x0000a116 beq.w 0xadb8                  |             goto label_69;
                                             |         }
                                             |     }
                                             | label_21:
    0x0000a11a movw r0, 0xb750               |     
    0x0000a11e mov.w r1, -1                  |     r1 = -1;
    0x0000a122 movt r0, 0x7f2b               |     r0 = 0x7f2bb750;
    0x0000a126 str r1, [sp, 0x58]            |     *(arg_58h) = r1;
    0x0000a128 str r0, [sp, 0x38]            |     *(arg_38h) = r0;
    0x0000a12a movw r0, 0xb724               |     
    0x0000a12e movt r0, 0x7f2b               |     r0 = 0x7f2bb724;
    0x0000a132 str r1, [sp, 0x5c]            |     *(arg_5ch) = r1;
    0x0000a134 str r0, [sp, 0x40]            |     *(arg_40h) = r0;
    0x0000a136 movw r0, 0xb73c               |     
    0x0000a13a movt r0, 0x7f2b               |     r0 = 0x7f2bb73c;
    0x0000a13e ldr r3, [pc, 0x2fc]           |     r3 = *(0xa43e);
    0x0000a140 str r0, [sp, 0x44]            |     *(arg_44h) = r0;
    0x0000a142 movs r2, 0                    |     r2 = 0;
    0x0000a144 ldr r0, [pc, 0x2f8]           |     
    0x0000a146 movw lr, 0xb714               |     
    0x0000a14a str r2, [sp, 0x3c]            |     *(arg_3ch) = r2;
    0x0000a14c movw ip, 0x48bd               |     
    0x0000a150 str r2, [sp, 0x24]            |     *(arg_24h) = r2;
    0x0000a152 movt lr, 0x7f2b               |     lr = 0x7f2bb714;
    0x0000a156 add r0, pc                    |     r0 = 0x1459a;
    0x0000a158 str r2, [sp, 0x10]            |     *(arg_10h) = r2;
    0x0000a15a str r0, [sp, 0x18]            |     *(arg_18h) = r0;
    0x0000a15c mov.w r2, 0x1000              |     r2 = 0x1000;
    0x0000a160 ldrd r0, r1, [r4, 0x30]       |     __asm ("ldrd r0, r1, [r4, 0x30]");
    0x0000a164 movt ip, 0x80d4               |     ip = 0x80d448bd;
    0x0000a168 str r2, [sp, 0x28]            |     *(arg_28h) = r2;
    0x0000a16a mov.w sb, 0x4100000           |     sb = 0x4100000;
    0x0000a16e strd r0, r1, [r4, 0x38]       |     __asm ("strd r0, r1, [r4, 0x38]");
    0x0000a172 ldr.w r3, [fp, r3]            |     r3 = *((fp + r3));
    0x0000a176 str.w sl, [sp, 0x64]          |     __asm ("str.w sl, [arg_64h]");
    0x0000a17a ldr.w sl, [sp, 0x30]          |     sl = *(arg_30h);
    0x0000a17e str r3, [sp, 0x1c]            |     *(arg_1ch) = r3;
    0x0000a180 str.w sb, [sp, 0xc]           |     __asm ("str.w sb, [arg_ch]");
    0x0000a184 str.w lr, [sp, 0x2c]          |     __asm ("str.w lr, [arg_2ch]");
    0x0000a188 str.w ip, [sp, 0x20]          |     __asm ("str.w ip, [arg_20h]");
                                             | label_1:
    0x0000a18c ldr r0, [sp, 0x18]            |     r0 = *(arg_18h);
    0x0000a18e blx 0x8bf4                    |     r0 = printf_chk ()
    0x0000a192 cmp r0, 0                     |     
                                             |     if (r0 == 0) {
    0x0000a194 beq.w 0xa824                  |         goto label_70;
                                             |     }
                                             | label_2:
    0x0000a198 ldr r3, [pc, 0x2a8]           |     r3 = *(0xa444);
    0x0000a19a ldr r2, [sp, 0x1c]            |     r2 = *(arg_1ch);
    0x0000a19c ldr.w r3, [fp, r3]            |     r3 = *((fp + r3));
    0x0000a1a0 ldr r2, [r2]                  |     r2 = *(r2);
    0x0000a1a2 ldr r6, [r3]                  |     r6 = *(0xa444);
    0x0000a1a4 ldr r3, [pc, 0x2a0]           |     r3 = *(0xa448);
    0x0000a1a6 ldr.w r3, [fp, r3]            |     r3 = *((fp + r3));
    0x0000a1aa str r2, [r3]                  |     *(r3) = r2;
                                             | label_3:
    0x0000a1ac ldr r5, [sp, 8]               |     r5 = *(arg_8h);
    0x0000a1ae movs r3, 0                    |     r3 = 0;
    0x0000a1b0 ldr r2, [pc, 0x298]           |     
    0x0000a1b2 ldr r1, [pc, 0x29c]           |     
    0x0000a1b4 ldr.w r0, [r4, 0x340]         |     r0 = *((r4 + 0x340));
    0x0000a1b8 add r2, pc                    |     r2 = 0x14608;
    0x0000a1ba str r3, [sp]                  |     *(sp) = r3;
    0x0000a1bc add r1, pc                    |     r1 = 0x14612;
    0x0000a1be str r5, [sp, 4]               |     var_4h = r5;
    0x0000a1c0 bl 0x28f58                    |     profile_get_boolean ();
    0x0000a1c4 ldr r3, [r5]                  |     r3 = *(r5);
    0x0000a1c6 cmp r3, 0                     |     
                                             |     if (r3 == 0) {
    0x0000a1c8 beq.w 0xa96c                  |         goto label_71;
                                             |     }
    0x0000a1cc ldr r3, [sp, 0xc]             |     r3 = *(arg_ch);
    0x0000a1ce orr r3, r3, 0x10000           |     r3 |= 0x10000;
    0x0000a1d2 str r3, [sp, 0xc]             |     *(arg_ch) = r3;
                                             | label_5:
    0x0000a1d4 ldr r3, [r4, 0x28]            |     r3 = *((r4 + 0x28));
    0x0000a1d6 lsls r0, r3, 0x1f             |     r0 = r3 << 0x1f;
                                             |     if (r0 >= r3) {
    0x0000a1d8 bmi 0xa200                    |         
    0x0000a1da ldr r2, [r4, 0x54]            |         r2 = *((r4 + 0x54));
    0x0000a1dc and r1, r2, 6                 |         r1 = r2 & 6;
    0x0000a1e0 cmp r1, 6                     |         
    0x0000a1e2 ldr r1, [sp, 0xc]             |         r1 = *(arg_ch);
    0x0000a1e4 it ne                         |         
                                             |         if (r1 == 6) {
    0x0000a1e6 orrne r1, r1, 0x4000          |             r1 |= 0x4000;
                                             |         }
    0x0000a1ea orr r1, r1, 1                 |         r1 |= 1;
    0x0000a1ee str r1, [sp, 0xc]             |         *(arg_ch) = r1;
    0x0000a1f0 lsls r1, r2, 0x1d             |         r1 = r2 << 0x1d;
                                             |         if (r1 >= r2) {
    0x0000a1f2 bpl 0xa200                    |             goto label_72;
                                             |         }
    0x0000a1f4 lsls r2, r3, 0x17             |         r2 = r3 << 0x17;
    0x0000a1f6 ittt mi                       |         
                                             |         if (r2 >= r3) {
    0x0000a1f8 ldrmi r3, [sp, 0xc]           |             r3 = *(arg_ch);
                                             |         }
                                             |         if (r2 < r3) {
    0x0000a1fa bicmi r3, r3, 0x4000          |             __asm ("bicmi r3, r3, aav.0x000000ff");
                                             |         }
                                             |         if (r2 >= r3) {
    0x0000a1fe str r3, [sp, 0xc]             |             *(arg_ch) = r3;
                                             |             goto label_72;
                                             |         }
                                             |     }
                                             | label_72:
    0x0000a200 ldr.w r3, [r4, 0x374]         |     r3 = *((r4 + 0x374));
    0x0000a204 cmp r3, 0                     |     
                                             |     if (r3 != 0) {
    0x0000a206 beq 0xa300                    |         
    0x0000a208 add r7, sp, 0xd8              |         r7 += arg_d8h;
    0x0000a20a movs r2, 0                    |         r2 = 0;
    0x0000a20c str r2, [r7]                  |         *(r7) = r2;
    0x0000a20e ldrb r3, [r3]                 |         r3 = *(r3);
    0x0000a210 cmp r3, 0                     |         
                                             |         if (r3 != 0) {
    0x0000a212 bne.w 0xaa38                  |             goto label_73;
                                             |         }
    0x0000a216 ldr r0, [pc, 0x23c]           |         
    0x0000a218 add r0, pc                    |         r0 = 0x14672;
    0x0000a21a blx 0x8bf4                    |         r0 = printf_chk ()
    0x0000a21e mov r8, r0                    |         r8 = r0;
    0x0000a220 str r0, [r7]                  |         *(r7) = r0;
    0x0000a222 cmp r0, 0                     |         
                                             |         if (r0 == 0) {
    0x0000a224 beq.w 0xacd6                  |             goto label_74;
                                             |         }
    0x0000a228 ldr r1, [pc, 0x22c]           |         
    0x0000a22a add r1, pc                    |         r1 = 0x14686;
    0x0000a22c blx 0x98a0                    |         r0 = fcn_000098a0 ();
    0x0000a230 cmp r0, 0                     |         
                                             |         if (r0 == 0) {
    0x0000a232 beq 0xa300                    |             goto label_18;
                                             |         }
    0x0000a234 ldrb.w r3, [r8]               |         r3 = *(r8);
    0x0000a238 cmp r3, 0                     |         
                                             |         if (r3 == 0) {
    0x0000a23a beq 0xa300                    |             goto label_18;
                                             |         }
    0x0000a23c mov r0, r8                    |         r0 = r8;
    0x0000a23e movs r1, 2                    |         r1 = 2;
    0x0000a240 blx 0x8f50                    |         fcn_00008f50 ();
    0x0000a244 str r0, [sp, 0x50]            |         *(arg_50h) = r0;
    0x0000a246 cmp r0, 0                     |         
                                             |         if (r0 != 0) {
    0x0000a248 bne 0xa300                    |             goto label_18;
                                             |         }
                                             | label_49:
    0x0000a24a ldr r0, [r4, 8]               |         r0 = *((r4 + 8));
    0x0000a24c blx 0x9464                    |         r0 = malloc (r0);
    0x0000a250 mov sb, r0                    |         sb = r0;
    0x0000a252 cmp r0, 0                     |         
                                             |         if (r0 == 0) {
    0x0000a254 beq.w 0xbf04                  |             goto label_75;
                                             |         }
    0x0000a258 blx 0x9130                    |         fcn_00009130 ();
    0x0000a25c ldr r3, [r7]                  |         r3 = *(r7);
    0x0000a25e mov r5, r0                    |         r5 = r0;
    0x0000a260 mov r0, r3                    |         r0 = r3;
    0x0000a262 str r3, [sp, 0x54]            |         *(arg_54h) = r3;
    0x0000a264 blx 0x90e8                    |         r0 = fcn_000090e8 ();
    0x0000a268 mov r8, r0                    |         r8 = r0;
    0x0000a26a mov r0, r5                    |         r0 = r5;
    0x0000a26c blx 0x90e8                    |         fcn_000090e8 ();
    0x0000a270 add r0, r8                    |         r0 += r8;
    0x0000a272 adds r0, 0x10                 |         r0 += 0x10;
    0x0000a274 blx 0x948c                    |         fcn_0000948c ();
    0x0000a278 ldr r3, [sp, 0x54]            |         r3 = *(arg_54h);
    0x0000a27a mov r8, r0                    |         r8 = r0;
    0x0000a27c cmp r0, 0                     |         
                                             |         if (r0 == 0) {
    0x0000a27e beq.w 0xbefe                  |             goto label_76;
                                             |         }
    0x0000a282 strd r3, r5, [sp]             |         __asm ("strd r3, r5, [sp]");
    0x0000a286 mov.w r2, -1                  |         r2 = -1;
    0x0000a28a ldr r3, [pc, 0x1d0]           |         
    0x0000a28c movs r1, 1                    |         r1 = 1;
    0x0000a28e add r3, pc                    |         r3 = 0x146f0;
    0x0000a290 blx 0x978c                    |         fcn_0000978c ();
    0x0000a294 mov r0, sb                    |         r0 = sb;
    0x0000a296 blx 0x8ed8                    |         fcn_00008ed8 ();
    0x0000a29a mov r0, r8                    |         r0 = r8;
    0x0000a29c blx 0x90f4                    |         r0 = fcn_000090f4 ();
    0x0000a2a0 cmp r0, 0                     |         
                                             |         if (r0 < 0) {
    0x0000a2a2 bge 0xa2b4                    |             
    0x0000a2a4 blx 0x98dc                    |             r0 = fcn_000098dc ();
    0x0000a2a8 ldr.w sb, [r0]                |             sb = *(r0);
    0x0000a2ac cmp.w sb, 2                   |             
                                             |             if (sb != 2) {
    0x0000a2b0 bne.w 0xba90                  |                 goto label_77;
                                             |             }
                                             |         }
    0x0000a2b4 mov r0, r6                    |         r0 = r6;
    0x0000a2b6 blx 0x9404                    |         r0 = ext2fs_free_blocks_count ();
    0x0000a2ba mov sb, r0                    |         sb = r0;
                                             |         if (r0 == 0) {
    0x0000a2bc cbnz r0, 0xa2d4               |             
    0x0000a2be ldr r3, [pc, 0x1a0]           |             r3 = *(0xa462);
    0x0000a2c0 mov r0, r8                    |             r0 = r8;
    0x0000a2c2 ldr.w r3, [fp, r3]            |             r3 = *((fp + r3));
    0x0000a2c6 ldr r6, [r3]                  |             r6 = *(0xa462);
    0x0000a2c8 blx 0x9564                    |             r0 = fcn_00009564 ();
    0x0000a2cc mov sb, r0                    |             sb = r0;
    0x0000a2ce cmp r0, 0                     |             
                                             |             if (r0 == 0) {
    0x0000a2d0 beq.w 0xb748                  |                 goto label_78;
                                             |             }
                                             |         }
                                             | label_50:
    0x0000a2d4 ldr r3, [sp, 0x50]            |         r3 = *(arg_50h);
    0x0000a2d6 cmp r3, 0                     |         
                                             |         if (r3 == 0) {
    0x0000a2d8 beq.w 0xc054                  |             goto label_79;
                                             |         }
                                             | label_44:
    0x0000a2dc ldr r0, [r7]                  |         r0 = *(r7);
    0x0000a2de blx 0x8ed8                    |         fcn_00008ed8 ();
                                             | label_43:
    0x0000a2e2 mov r0, r8                    |         r0 = r8;
    0x0000a2e4 blx 0x8ed8                    |         fcn_00008ed8 ();
    0x0000a2e8 ldr r3, [pc, 0x178]           |         
    0x0000a2ea mov r1, sb                    |         r1 = sb;
    0x0000a2ec ldr r2, [pc, 0x178]           |         
    0x0000a2ee ldr r0, [r4, 4]               |         r0 = *((r4 + 4));
    0x0000a2f0 add r3, pc                    |         r3 = 0x14758;
    0x0000a2f2 add r2, pc                    |         r2 = 0x1475e;
    0x0000a2f4 blx 0x8d24                    |         fcn_00008d24 ();
    0x0000a2f8 cmp.w sb, 0                   |         
                                             |         if (sb != 0) {
    0x0000a2fc bne.w 0xaa58                  |             goto label_17;
                                             |         }
                                             |     }
                                             | label_18:
    0x0000a300 ldr r1, [sp, 0xc]             |     r1 = *(arg_ch);
    0x0000a302 mov r3, sl                    |     r3 = sl;
    0x0000a304 mov r2, r6                    |     r2 = r6;
    0x0000a306 mov r0, r4                    |     r0 = r4;
    0x0000a308 str r1, [r4, 0x58]            |     *((r4 + 0x58)) = r1;
    0x0000a30a bl 0xc304                     |     fcn_0000c304 (r0, r1, r2, r3);
    0x0000a30e ldrd r3, r2, [r4, 0x38]       |     __asm ("ldrd r3, r2, [r4, 0x38]");
    0x0000a312 mov r8, r0                    |     r8 = r0;
    0x0000a314 orrs r3, r2                   |     r3 |= r2;
                                             |     if (r3 != r2) {
    0x0000a316 bne.w 0xa544                  |         goto label_46;
                                             |     }
    0x0000a31a ldr r3, [r4, 0x28]            |     r3 = *((r4 + 0x28));
    0x0000a31c lsls r3, r3, 0x1e             |     r3 <<= 0x1e;
                                             |     if (r3 < r3) {
    0x0000a31e bmi.w 0xa544                  |         goto label_46;
                                             |     }
    0x0000a322 ldr r3, [r4, 0x24]            |     r3 = *((r4 + 0x24));
    0x0000a324 lsls r7, r3, 0x17             |     r7 = r3 << 0x17;
                                             |     if (r7 < r3) {
    0x0000a326 bmi.w 0xa544                  |         goto label_46;
                                             |     }
    0x0000a32a movw r2, 0xb713               |     
    0x0000a32e movw r3, 0xb798               |     
    0x0000a332 movt r2, 0x7f2b               |     r2 = 0x7f2bb713;
    0x0000a336 movt r3, 0x7f2b               |     r3 = 0x7f2bb798;
    0x0000a33a cmp r0, r3                    |     
    0x0000a33c it ne                         |     
                                             |     if (r0 != r3) {
    0x0000a33e cmpne r0, r2                  |         __asm ("cmpne r0, r2");
                                             |     }
                                             |     if (r0 == r3) {
    0x0000a340 beq.w 0xa46c                  |         goto label_80;
                                             |     }
    0x0000a344 movw r3, 0xb73c               |     
    0x0000a348 movt r3, 0x7f2b               |     r3 = 0x7f2bb73c;
    0x0000a34c cmp r0, r3                    |     
                                             |     if (r0 == r3) {
    0x0000a34e beq.w 0xa46c                  |         goto label_80;
                                             |     }
    0x0000a352 cmp r0, 0                     |     
                                             |     if (r0 == 0) {
    0x0000a354 beq.w 0xb5ec                  |         goto label_81;
                                             |     }
    0x0000a358 movw r3, 0x48bd               |     
    0x0000a35c movt r3, 0x80d4               |     r3 = 0x80d448bd;
    0x0000a360 add r3, r0                    |     r3 += r0;
    0x0000a362 cmp r3, 1                     |     
                                             |     if (r3 < 1) {
    0x0000a364 bls.w 0xa83a                  |         goto label_82;
                                             |     }
                                             |     do {
    0x0000a368 ldr r6, [sp, 0x10]            |         r6 = *(arg_10h);
    0x0000a36a str.w r8, [sp, 0x10]          |         __asm ("str.w r8, [arg_10h]");
                                             | label_32:
    0x0000a36e ldr r3, [sp, 0x24]            |         r3 = *(arg_24h);
    0x0000a370 ldr r0, [r4, 4]               |         r0 = *((r4 + 4));
    0x0000a372 cmp r3, 0                     |         
                                             |         if (r3 != 0) {
    0x0000a374 bne.w 0xc04a                  |             goto label_83;
                                             |         }
    0x0000a378 ldr r3, [r4, 8]               |         r3 = *((r4 + 8));
    0x0000a37a b 0xa884                      |         goto label_52;
                                             | label_80:
    0x0000a46c ldr r5, [sp, 0x14]            |         r5 = *(arg_14h);
    0x0000a46e movs r1, 0x44                 |         r1 = 0x44;
    0x0000a470 mov r0, r4                    |         r0 = r4;
    0x0000a472 mov r2, r5                    |         r2 = r5;
    0x0000a474 str.w r8, [r5]                |         __asm ("str.w r8, [r5]");
    0x0000a478 bl 0x202f8                    |         fix_problem ();
    0x0000a47c ldr r1, [sp, 0x10]            |         r1 = *(arg_10h);
    0x0000a47e cmp r1, 0                     |         
                                             |         if (r1 != 0) {
    0x0000a480 bne.w 0xb5fc                  |             goto label_84;
                                             |         }
    0x0000a484 str r1, [r5]                  |         *(r5) = r1;
                                             | label_31:
    0x0000a486 ldr.w r0, [sl]                |         r0 = *(sl);
    0x0000a48a ldr r3, [r0, 8]               |         r3 = *((r0 + 8));
    0x0000a48c lsls r5, r3, 0xf              |         r5 = r3 << 0xf;
                                             |         if (r5 < r3) {
    0x0000a48e bmi.w 0xbaaa                  |             goto label_85;
                                             |         }
    0x0000a492 ldr r3, [r0, 0x1c]            |         r3 = *((r0 + 0x1c));
    0x0000a494 cmp r3, 1                     |         
                                             |         if (r3 < 1) {
    0x0000a496 bls.w 0xb7a6                  |             goto label_86;
                                             |         }
                                             | label_45:
    0x0000a49a ldr r2, [r4, 4]               |         r2 = *((r4 + 4));
    0x0000a49c cmp.w r8, 0                   |         
                                             |         if (r8 == 0) {
    0x0000a4a0 beq.w 0xb712                  |             goto label_87;
                                             |         }
    0x0000a4a4 ldr.w r3, [pc, 0xa04]         |         r3 = *(0x0000aeac);
    0x0000a4a8 mov r0, r4                    |         r0 = r4;
    0x0000a4aa ldr.w r1, [pc, 0xa04]         |         
    0x0000a4ae add r3, pc                    |         r3 += pc;
    0x0000a4b0 add r1, pc                    |         r1 = 0x15366;
    0x0000a4b2 bl 0x1e4a0                    |         log_out ();
    0x0000a4b6 ldr r5, [r4, 0x38]            |         r5 = *((r4 + 0x38));
    0x0000a4b8 mov r3, r6                    |         r3 = r6;
    0x0000a4ba ldr r2, [r4, 8]               |         r2 = *((r4 + 8));
    0x0000a4bc mov r0, r4                    |         r0 = r4;
    0x0000a4be ldr.w r1, [sl]                |         r1 = *(sl);
    0x0000a4c2 str r5, [sp, 0x58]            |         *(arg_58h) = r5;
    0x0000a4c4 ldr r5, [r4, 0x3c]            |         r5 = *((r4 + 0x3c));
    0x0000a4c6 str r5, [sp, 0x5c]            |         *(arg_5ch) = r5;
    0x0000a4c8 bl 0x1ef34                    |         get_backup_sb ();
    0x0000a4cc ldr.w r3, [sl]                |         r3 = *(sl);
    0x0000a4d0 cmp r3, 0                     |         
                                             |         if (r3 == 0) {
    0x0000a4d2 beq.w 0xbb94                  |             goto label_88;
                                             |         }
                                             | label_37:
    0x0000a4d6 mov r0, sl                    |         r0 = sl;
    0x0000a4d8 blx 0x91fc                    |         fcn_000091fc ();
                                             | label_38:
    0x0000a4dc ldr r1, [sp, 0xc]             |         r1 = *(arg_ch);
    0x0000a4de mov r3, sl                    |         r3 = sl;
    0x0000a4e0 mov r2, r6                    |         r2 = r6;
    0x0000a4e2 mov r0, r4                    |         r0 = r4;
    0x0000a4e4 bl 0xc304                     |         r0 = fcn_0000c304 (r0, r1, r2, r3);
    0x0000a4e8 mov r7, r0                    |         r7 = r0;
    0x0000a4ea cmp.w r8, 0                   |         
                                             |         if (r8 != 0) {
    0x0000a4ee bne.w 0xbb8a                  |             goto label_89;
                                             |         }
    0x0000a4f2 cmp r0, 0                     |         
                                             |         if (r0 == 0) {
    0x0000a4f4 beq.w 0xbb8a                  |             goto label_89;
                                             |         }
    0x0000a4f8 ldr.w r3, [sl]                |         r3 = *(sl);
                                             |         if (r3 != 0) {
    0x0000a4fc cbz r3, 0xa504                |             
    0x0000a4fe mov r0, sl                    |             r0 = sl;
    0x0000a500 blx 0x91fc                    |             fcn_000091fc ();
                                             |         }
    0x0000a504 mov r0, r7                    |         r0 = r7;
    0x0000a506 ldr r7, [r4, 4]               |         r7 = *((r4 + 4));
    0x0000a508 blx 0x8e20                    |         fcn_00008e20 ();
    0x0000a50c ldr.w r1, [pc, 0x9a4]         |         r1 = *(0x0000aeb4);
    0x0000a510 mov r3, r0                    |         r3 = r0;
    0x0000a512 mov r2, r7                    |         r2 = r7;
    0x0000a514 mov r0, r4                    |         r0 = r4;
    0x0000a516 add r1, pc                    |         r1 += pc;
    0x0000a518 bl 0x1e4a0                    |         log_out ();
    0x0000a51c ldr.w r1, [pc, 0x998]         |         
    0x0000a520 mov r0, r4                    |         r0 = r4;
    0x0000a522 ldr r2, [r4, 4]               |         r2 = *((r4 + 4));
    0x0000a524 add r1, pc                    |         r1 = 0x153e0;
    0x0000a526 bl 0x1e4a0                    |         log_out ();
    0x0000a52a ldr r3, [sp, 0x58]            |         r3 = *(arg_58h);
    0x0000a52c mov r2, r6                    |         r2 = r6;
    0x0000a52e ldr r1, [sp, 0xc]             |         r1 = *(arg_ch);
    0x0000a530 mov r0, r4                    |         r0 = r4;
    0x0000a532 str r3, [r4, 0x38]            |         *((r4 + 0x38)) = r3;
    0x0000a534 ldr r3, [sp, 0x5c]            |         r3 = *(arg_5ch);
    0x0000a536 str r3, [r4, 0x3c]            |         *((r4 + 0x3c)) = r3;
    0x0000a538 mov r3, sl                    |         r3 = sl;
    0x0000a53a bl 0xc304                     |         r0 = fcn_0000c304 (r0, r1, r2, r3);
    0x0000a53e mov r8, r0                    |         r8 = r0;
    0x0000a540 movs r3, 0                    |         r3 = 0;
    0x0000a542 str r3, [sp, 0x24]            |         *(arg_24h) = r3;
                                             | label_46:
    0x0000a544 ldr r3, [sp, 0x20]            |         r3 = *(arg_20h);
    0x0000a546 add r3, r8                    |         r3 += r8;
    0x0000a548 cmp r3, 1                     |         
                                             |         if (r3 < 1) {
    0x0000a54a bls.w 0xa83a                  |             goto label_82;
                                             |         }
                                             | label_39:
    0x0000a54e cmp.w r8, 0                   |         
    0x0000a552 bne.w 0xa368                  |         
                                             |     } while (r8 != 0);
                                             | label_6:
    0x0000a556 ldr.w r3, [sl]                |     r3 = *(sl);
    0x0000a55a ldr r1, [r4, 0x24]            |     r1 = *((r4 + 0x24));
    0x0000a55c ldr r2, [r3, 8]               |     r2 = *((r3 + 8));
    0x0000a55e ands r8, r1, 0x800            |     r8 = r1 & 0x800;
    0x0000a562 orr r2, r2, 0x200             |     r2 |= 0x200;
    0x0000a566 str r2, [r3, 8]               |     *((r3 + 8)) = r2;
    0x0000a568 ldr r2, [r3, 0x10]            |     r2 = *((r3 + 0x10));
                                             |     if (r8 != r1) {
    0x0000a56a bne 0xa5ae                    |         goto label_90;
                                             |     }
    0x0000a56c ldr r3, [r2, 0x18]            |     r3 = *((r2 + 0x18));
    0x0000a56e mov.w r6, 0x400               |     r6 = 0x400;
    0x0000a572 add.w r7, r4, 0x40            |     r7 = r4 + 0x40;
    0x0000a576 ldr r0, [r4, 8]               |     r0 = *((r4 + 8));
    0x0000a578 mov r2, r7                    |     r2 = r7;
    0x0000a57a lsls r6, r3                   |     r6 <<= r3;
    0x0000a57c mov r1, r6                    |     r1 = r6;
    0x0000a57e blx 0x8f38                    |     fcn_00008f38 ();
    0x0000a582 ldr r3, [sp, 0x14]            |     r3 = *(arg_14h);
    0x0000a584 cmp r0, 0x10                  |     
    0x0000a586 str r0, [r3]                  |     *(r3) = r0;
                                             |     if (r0 == 0x10) {
    0x0000a588 beq.w 0xac94                  |         goto label_91;
                                             |     }
                                             | label_16:
    0x0000a58c ldr r3, [sp, 0x38]            |     r3 = *(arg_38h);
    0x0000a58e cmp r0, r3                    |     
                                             |     if (r0 == r3) {
    0x0000a590 beq.w 0xaac0                  |         goto label_92;
                                             |     }
    0x0000a594 cmp r0, 0                     |     
                                             |     if (r0 != 0) {
    0x0000a596 bne.w 0xac2e                  |         goto label_93;
                                             |     }
                                             | label_13:
    0x0000a59a ldr r3, [r4, 0x24]            |     r3 = *((r4 + 0x24));
    0x0000a59c orr r3, r3, 0x800             |     r3 |= 0x800;
    0x0000a5a0 str r3, [r4, 0x24]            |     *((r4 + 0x24)) = r3;
    0x0000a5a2 cmp.w r8, 0                   |     
                                             |     if (r8 != 0) {
    0x0000a5a6 bne.w 0xa18c                  |         goto label_1;
                                             |     }
    0x0000a5aa ldr.w r3, [sl]                |     r3 = *(sl);
                                             | label_90:
    0x0000a5ae ldr r7, [r3, 0x10]            |     r7 = *((r3 + 0x10));
    0x0000a5b0 ldr.w r2, [r4, 0x334]         |     r2 = *((r4 + 0x334));
    0x0000a5b4 str r3, [r4]                  |     *(r4) = r3;
    0x0000a5b6 str r2, [r3, 0x60]            |     *((r3 + 0x60)) = r2;
    0x0000a5b8 ldr r3, [r7, 0x4c]            |     r3 = *((r7 + 0x4c));
    0x0000a5ba cmp r3, 1                     |     
                                             |     if (r3 > 1) {
    0x0000a5bc bhi.w 0xaa04                  |         goto label_94;
                                             |     }
                                             | label_4:
    0x0000a5c0 ldr.w r8, [r4, 0xc]           |     r8 = *((r4 + 0xc));
    0x0000a5c4 cmp.w r8, 0                   |     
                                             |     if (r8 == 0) {
    0x0000a5c8 beq.w 0xaa7c                  |         goto label_95;
                                             |     }
                                             | label_11:
    0x0000a5cc ldrb.w r6, [r8]               |     r6 = *(r8);
                                             |     if (r6 == 0) {
    0x0000a5d0 cbz r6, 0xa5f8                |         goto label_96;
                                             |     }
    0x0000a5d2 blx 0x941c                    |     ext2fs_find_inode_goal ();
    0x0000a5d6 movs r2, 0x5f                 |     r2 = 0x5f;
                                             |     do {
    0x0000a5d8 ldr r3, [r0]                  |         r3 = *(r0);
    0x0000a5da ldrh.w r3, [r3, r6, lsl 1]    |         offset_3 = r6 << 1;
                                             |         r3 = *((r3 + offset_3));
    0x0000a5de ubfx r3, r3, 0xd, 1           |         r3 = (r3 >> 0xd) & ((1 << 1) - 1);
    0x0000a5e2 cmp r6, 0x3a                  |         
    0x0000a5e4 it eq                         |         
                                             |         if (r6 != 0x3a) {
    0x0000a5e6 orreq r3, r3, 1               |             r3 |= 1;
                                             |         }
                                             |         if (r3 != 0) {
    0x0000a5ea cbz r3, 0xa5f0                |             
    0x0000a5ec strb.w r2, [r8]               |             *(r8) = r2;
                                             |         }
    0x0000a5f0 ldrb r6, [r8, 1]!             |         r6 = *((r8 += 1));
    0x0000a5f4 cmp r6, 0                     |         
    0x0000a5f6 bne 0xa5d8                    |         
                                             |     } while (r6 != 0);
                                             | label_96:
    0x0000a5f8 ldr r0, [r4, 0x1c]            |     r0 = *((r4 + 0x1c));
                                             |     if (r0 != 0) {
    0x0000a5fa cbz r0, 0xa634                |         
    0x0000a5fc ldr.w r2, [pc, 0x8bc]         |         
    0x0000a600 movs r1, 1                    |         r1 = 1;
    0x0000a602 ldr r3, [r4, 8]               |         r3 = *((r4 + 8));
    0x0000a604 add.w r6, r7, 0x68            |         r6 = r7 + 0x68;
    0x0000a608 add r2, pc                    |         r2 = 0x154c8;
    0x0000a60a blx 0x94ec                    |         fcn_000094ec ();
    0x0000a60e mov r0, r6                    |         r0 = r6;
    0x0000a610 blx 0x986c                    |         r0 = getpwuid_r ();
    0x0000a614 cmp r0, 0                     |         
                                             |         if (r0 == 0) {
    0x0000a616 beq.w 0xac7a                  |             goto label_97;
                                             |         }
                                             | label_15:
    0x0000a61a ldrb.w r2, [r7, 0x78]         |         r2 = *((r7 + 0x78));
    0x0000a61e ldr r3, [r4, 0x1c]            |         r3 = *((r4 + 0x1c));
    0x0000a620 cmp r2, 0                     |         
                                             |         if (r2 != 0) {
    0x0000a622 bne.w 0xac62                  |             goto label_98;
                                             |         }
                                             | label_14:
    0x0000a626 ldr.w r0, [pc, 0x898]         |         r0 = *(0x0000aec0);
    0x0000a62a movs r2, 3                    |         r2 = 3;
    0x0000a62c movs r1, 1                    |         r1 = 1;
    0x0000a62e add r0, pc                    |         r0 += pc;
    0x0000a630 blx 0x937c                    |         fcn_0000937c ();
                                             |     }
    0x0000a634 ldr.w r3, [sl]                |     r3 = *(sl);
    0x0000a638 ldr r0, [r3, 4]               |     r0 = *((r3 + 4));
    0x0000a63a bl 0x20234                    |     ehandler_init ();
    0x0000a63e ldr.w r6, [sl]                |     r6 = *(sl);
    0x0000a642 ldr r3, [r6, 0x10]            |     r3 = *((r6 + 0x10));
    0x0000a644 ldr r3, [r3, 0x60]            |     r3 = *((r3 + 0x60));
    0x0000a646 lsls r2, r3, 0x17             |     r2 = r3 << 0x17;
                                             |     if (r2 < r3) {
    0x0000a648 bpl 0xa652                    |         
    0x0000a64a ldr r3, [sp, 0xc]             |         r3 = *(arg_ch);
    0x0000a64c lsls r3, r3, 0xb              |         r3 <<= 0xb;
                                             |         if (r3 < r3) {
    0x0000a64e bmi.w 0xb250                  |             goto label_99;
                                             |         }
                                             |     }
    0x0000a652 ldr r6, [r4, 0x14]            |     r6 = *((r4 + 0x14));
                                             |     if (r6 != 0) {
    0x0000a654 cbz r6, 0xa66e                |         
    0x0000a656 add.w r0, r7, 0x68            |         r0 = r7 + 0x68;
    0x0000a65a blx 0x9648                    |         fcn_00009648 ();
    0x0000a65e ldr.w r2, [pc, 0x864]         |         
    0x0000a662 mov r3, r0                    |         r3 = r0;
    0x0000a664 movs r1, 1                    |         r1 = 1;
    0x0000a666 mov r0, r6                    |         r0 = r6;
    0x0000a668 add r2, pc                    |         r2 = 0x15532;
    0x0000a66a blx 0x94ec                    |         fcn_000094ec ();
                                             |     }
    0x0000a66e ldr r3, [r4, 0x54]            |     r3 = *((r4 + 0x54));
    0x0000a670 tst.w r3, 0x11                |     
                                             |     if ((r3 & 0x11) == 0) {
    0x0000a674 beq.w 0xaa96                  |         goto label_100;
                                             |     }
                                             | label_12:
    0x0000a678 ldr r3, [r7, 0x60]            |     r3 = *((r7 + 0x60));
    0x0000a67a lsls r5, r3, 0x1d             |     r5 = r3 << 0x1d;
                                             |     if (r5 < r3) {
    0x0000a67c bpl 0xa6a4                    |         
    0x0000a67e ldr r3, [r4, 0x28]            |         r3 = *((r4 + 0x28));
    0x0000a680 ands r6, r3, 1                |         r6 = r3 & 1;
                                             |         if (r6 == r3) {
    0x0000a684 beq.w 0xab10                  |             goto label_101;
                                             |         }
    0x0000a688 ldr.w r2, [pc, 0x83c]         |         r2 = *(0x0000aec8);
    0x0000a68c mov r0, r4                    |         r0 = r4;
    0x0000a68e ldr.w r1, [pc, 0x83c]         |         
    0x0000a692 add r2, pc                    |         r2 += pc;
    0x0000a694 add r1, pc                    |         r1 = 0x15566;
    0x0000a696 bl 0x1e4a0                    |         log_out ();
    0x0000a69a ldr r3, [r4]                  |         r3 = *(r4);
    0x0000a69c ldr r0, [r3, 4]               |         r0 = *((r3 + 4));
    0x0000a69e ldr r3, [r0, 4]               |         r3 = *((r0 + 4));
    0x0000a6a0 ldr r3, [r3, 0x1c]            |         r3 = *((r3 + 0x1c));
    0x0000a6a2 blx r3                        |         uint32_t (*r3)(uint32_t, uint32_t) (r0, r3);
                                             |     }
    0x0000a6a4 ldr r1, [r7, 0x5c]            |     r1 = *((r7 + 0x5c));
    0x0000a6a6 movw r3, 0x1821               |     
    0x0000a6aa movt r3, 0xfffc               |     r3 = 0xfffc1821;
    0x0000a6ae bic r1, r1, 0xe30             |     r1 = BIT_MASK (r1, 0xe30);
    0x0000a6b2 bic r1, r1, 0xf               |     r1 = BIT_MASK (r1, 0xf);
    0x0000a6b6 str r1, [sp, 0x130]           |     *(arg_130h) = r1;
    0x0000a6b8 ldr r2, [r7, 0x60]            |     r2 = *((r7 + 0x60));
    0x0000a6ba ands r3, r2                   |     r3 &= r2;
    0x0000a6bc str r3, [sp, 0x134]           |     *(arg_134h) = r3;
    0x0000a6be ldr r2, [r7, 0x64]            |     r2 = *((r7 + 0x64));
    0x0000a6c0 bic r2, r2, 0xf700            |     r2 = BIT_MASK (r2, 0xf700);
    0x0000a6c4 bic r2, r2, 0x7b              |     r2 = BIT_MASK (r2, 0x7b);
    0x0000a6c8 str r2, [sp, 0x138]           |     *(arg_138h) = r2;
    0x0000a6ca cmp r1, 0                     |     
                                             |     if (r1 != 0) {
    0x0000a6cc bne.w 0xa8ee                  |         goto label_102;
                                             |     }
    0x0000a6d0 orrs r3, r2                   |     r3 |= r2;
                                             |     if (r3 != r2) {
    0x0000a6d2 bne.w 0xa8ee                  |         goto label_102;
                                             |     }
    0x0000a6d6 ldr r3, [r7, 0x60]            |     r3 = *((r7 + 0x60));
    0x0000a6d8 lsls r1, r3, 0xe              |     r1 = r3 << 0xe;
                                             |     if (r1 >= r3) {
    0x0000a6da bpl 0xa6ea                    |         void (*0xa6ea)() ();
                                             |     }
                                             | label_70:
    0x0000a824 ldr.w r0, [pc, 0x6b8]         |     
    0x0000a828 add r0, pc                    |     r0 = 0x1570c;
    0x0000a82a blx 0x8bf4                    |     r0 = printf_chk ()
    0x0000a82e cmp r0, 0                     |     
                                             |     if (r0 != 0) {
    0x0000a830 bne.w 0xa198                  |         goto label_2;
                                             |     }
    0x0000a834 ldr r3, [sp, 0x1c]            |     r3 = *(arg_1ch);
    0x0000a836 ldr r6, [r3]                  |     r6 = *(r3);
    0x0000a838 b 0xa1ac                      |     goto label_3;
                                             | label_82:
    0x0000a83a ldr.w r0, [sl]                |     r0 = *(sl);
                                             |     if (r0 != 0) {
    0x0000a83e cbz r0, 0xa872                |         
                                             | label_40:
    0x0000a840 ldr r7, [r0, 0x10]            |         r7 = *((r0 + 0x10));
                                             |         if (r7 == 0) {
    0x0000a842 cbz r7, 0xa872                |             goto label_103;
                                             |         }
    0x0000a844 ldr r3, [r7, 0x5c]            |         r3 = *((r7 + 0x5c));
    0x0000a846 movw r1, 0x1821               |         
    0x0000a84a movt r1, 0xfffc               |         r1 = 0xfffc1821;
    0x0000a84e bic r3, r3, 0xe30             |         r3 = BIT_MASK (r3, 0xe30);
    0x0000a852 bic r3, r3, 0xf               |         r3 = BIT_MASK (r3, 0xf);
    0x0000a856 str r3, [sp, 0x130]           |         *(arg_130h) = r3;
    0x0000a858 ldr r2, [r7, 0x60]            |         r2 = *((r7 + 0x60));
    0x0000a85a ands r1, r2                   |         r1 &= r2;
    0x0000a85c str r1, [sp, 0x134]           |         *(arg_134h) = r1;
    0x0000a85e ldr r2, [r7, 0x64]            |         r2 = *((r7 + 0x64));
    0x0000a860 bic r2, r2, 0xf700            |         r2 = BIT_MASK (r2, 0xf700);
    0x0000a864 bic r2, r2, 0x7b              |         r2 = BIT_MASK (r2, 0x7b);
    0x0000a868 str r2, [sp, 0x138]           |         *(arg_138h) = r2;
    0x0000a86a cmp r3, 0                     |         
                                             |         if (r3 != 0) {
    0x0000a86c bne 0xa8ee                    |             goto label_102;
                                             |         }
    0x0000a86e orrs r1, r2                   |         r1 |= r2;
                                             |         if (r1 != r2) {
    0x0000a870 bne 0xa8ee                    |             goto label_102;
                                             |         }
                                             |     }
                                             | label_103:
    0x0000a872 ldr r2, [sp, 0x24]            |     r2 = *(arg_24h);
    0x0000a874 ldr r3, [sp, 0x24]            |     r3 = *(arg_24h);
    0x0000a876 ldr r6, [sp, 0x10]            |     r6 = *(arg_10h);
    0x0000a878 str r3, [sp, 0x10]            |     *(arg_10h) = r3;
    0x0000a87a ldrd r0, r3, [r4, 4]          |     __asm ("ldrd r0, r3, [r4, 4]");
    0x0000a87e cmp r2, 0                     |     
                                             |     if (r2 == 0) {
    0x0000a880 beq.w 0xb486                  |         goto label_104;
                                             |     }
                                             | label_52:
    0x0000a884 ldr r5, [sp, 0x10]            |     r5 = *(arg_10h);
    0x0000a886 ldr.w r2, [pc, 0x65c]         |     r2 = sym.ea_refcount_intr_next;
    0x0000a88a mov r1, r5                    |     r1 = r5;
    0x0000a88c add r2, pc                    |     r2 += pc;
    0x0000a88e blx 0x8d24                    |     fcn_00008d24 ();
    0x0000a892 ldr r2, [sp, 0x2c]            |     r2 = *(arg_2ch);
    0x0000a894 cmp r5, r2                    |     
                                             |     if (r5 == r2) {
    0x0000a896 beq.w 0xb222                  |         goto label_105;
                                             |     }
    0x0000a89a ldr r3, [sp, 0x10]            |     r3 = *(arg_10h);
    0x0000a89c cmp r3, 0x1e                  |     
                                             |     if (r3 > 0x1e) {
    0x0000a89e bgt 0xa976                    |         goto label_106;
                                             |     }
    0x0000a8a0 cmp r3, 0                     |     
                                             |     if (r3 <= 0) {
    0x0000a8a2 ble.w 0xa9ac                  |         goto label_24;
                                             |     }
    0x0000a8a6 subs r3, 1                    |     r3--;
    0x0000a8a8 cmp r3, 0x1d                  |     
                                             |     if (r3 > 0x1d) {
    0x0000a8aa bhi.w 0xb6ce                  |         goto label_107;
                                             |     }
                                             |     /* switch table (31 cases) at 0xa8b2 */
    0x0000a8ae tbh [pc, r3, lsl 1]           |     __asm ("tbh [pc, r3, lsl 1]");
                                             | label_102:
    0x0000a8ee ldr.w r1, [pc, 0x5f8]         |     
    0x0000a8f2 mov r0, r4                    |     r0 = r4;
    0x0000a8f4 ldr r2, [r4, 8]               |     r2 = *((r4 + 8));
    0x0000a8f6 mov.w sb, 0                   |     sb = 0;
    0x0000a8fa mov r8, r4                    |     r8 = r4;
    0x0000a8fc add r1, pc                    |     r1 = 0x157ea;
    0x0000a8fe bl 0x1e51c                    |     log_err ();
    0x0000a902 ldr.w r3, [pc, 0x5e8]         |     r3 = *(0x0000aeec);
    0x0000a906 add r1, sp, 0x130             |     r1 += arg_130h;
    0x0000a908 str r7, [sp, 0x50]            |     *(arg_50h) = r7;
    0x0000a90a mov r7, sb                    |     r7 = sb;
    0x0000a90c str.w sl, [sp, 0x54]          |     __asm ("str.w sl, [arg_54h]");
    0x0000a910 mov sl, r1                    |     sl = r1;
    0x0000a912 add r3, pc                    |     r3 += pc;
    0x0000a914 mov sb, r3                    |     sb = r3;
    0x0000a916 ldr r4, [sl], 4               |     r4 = *(sl);
                                             |     sl += 4;
    0x0000a91a movs r6, 0x20                 |     r6 = 0x20;
    0x0000a91c movs r5, 1                    |     r5 = 1;
    0x0000a91e b 0xa928                      |     
    0x0000a928 tst r5, r4                    |     
                                             |     if ((r5 & r4) == 0) {
    0x0000a92a beq 0xa920                    |         void (*0xa920)() ();
                                             |     }
                                             | label_8:
    0x0000a95e ldr.w r1, [pc, 0x594]         |     
    0x0000a962 mov r0, r4                    |     r0 = r4;
    0x0000a964 add r1, pc                    |     r1 = 0x1585e;
    0x0000a966 bl 0x1e598                    |     fatal_error ();
    0x0000a96a b 0xa5c0                      |     goto label_4;
                                             | label_71:
    0x0000a96c ldr r3, [sp, 0xc]             |     r3 = *(arg_ch);
    0x0000a96e orr r3, r3, 0x30000           |     r3 |= 0x30000;
    0x0000a972 str r3, [sp, 0xc]             |     *(arg_ch) = r3;
    0x0000a974 b 0xa1d4                      |     goto label_5;
                                             | label_106:
    0x0000a976 ldr r3, [sp, 0x10]            |     r3 = *(arg_10h);
    0x0000a978 ldr r2, [sp, 0x40]            |     r2 = *(arg_40h);
    0x0000a97a cmp r3, r2                    |     
                                             |     if (r3 != r2) {
    0x0000a97c bne 0xa99c                    |         goto label_108;
                                             |     }
    0x0000a97e ldr.w r2, [pc, 0x578]         |     
    0x0000a982 mov r0, r4                    |     r0 = r4;
    0x0000a984 ldr.w r1, [pc, 0x574]         |     r1 = *(0x0000aefc);
    0x0000a988 add r2, pc                    |     r2 = 0x15886;
    0x0000a98a add r1, pc                    |     r1 += pc;
    0x0000a98c bl 0x1e4a0                    |     log_out ();
                                             |     do {
                                             | label_22:
    0x0000a990 movs r1, 0                    |         r1 = 0;
    0x0000a992 mov r0, r4                    |         r0 = r4;
    0x0000a994 str r6, [sp, 0x10]            |         *(arg_10h) = r6;
    0x0000a996 bl 0x1e598                    |         fatal_error ();
    0x0000a99a b 0xa556                      |         goto label_6;
                                             | label_108:
    0x0000a99c ldr r2, [sp, 0x44]            |         r2 = *(arg_44h);
    0x0000a99e cmp r3, r2                    |         
                                             |         if (r3 != r2) {
    0x0000a9a0 bne.w 0xb6ce                  |             goto label_107;
                                             |         }
    0x0000a9a4 ldr r3, [sp, 0xc]             |         r3 = *(arg_ch);
    0x0000a9a6 lsls r1, r3, 8                |         r1 = r3 << 8;
                                             |         if (r1 >= r3) {
    0x0000a9a8 bpl.w 0xb76a                  |             goto label_109;
                                             |         }
                                             | label_24:
    0x0000a9ac ldr r2, [sp, 0x14]            |         r2 = *(arg_14h);
    0x0000a9ae movs r1, 4                    |         r1 = 4;
    0x0000a9b0 mov r0, r4                    |         r0 = r4;
    0x0000a9b2 bl 0x202f8                    |         fix_problem ();
    0x0000a9b6 b 0xa990                      |         
                                             |     } while (1);
                                             | label_68:
    0x0000a9b8 ldr.w r3, [pc, 0x544]         |     r3 = *(0x0000af00);
    0x0000a9bc mov r0, r4                    |     r0 = r4;
    0x0000a9be ldr.w r2, [pc, 0x544]         |     
    0x0000a9c2 ldr.w r1, [pc, 0x544]         |     r1 = *(0x0000af08);
    0x0000a9c6 add r3, pc                    |     r3 += pc;
    0x0000a9c8 add r2, pc                    |     r2 = 0x158d2;
    0x0000a9ca add r1, pc                    |     r1 += pc;
    0x0000a9cc bl 0x1e51c                    |     log_err ();
    0x0000a9d0 ldr.w r3, [pc, 0x538]         |     
    0x0000a9d4 add r3, pc                    |     
    0x0000a9d6 ldr.w r3, [r3, 0x110]         |     r3 = *(0x159f4);
    0x0000a9da cmp r3, 0                     |     
                                             |     if (r3 == 0) {
    0x0000a9dc beq.w 0xa102                  |         goto label_7;
                                             |     }
    0x0000a9e0 mov.w r0, 0xb700              |     
    0x0000a9e4 movt r0, 0x7f2b               |     r0 = 0x7f2bb700;
    0x0000a9e8 blx 0x8e20                    |     fcn_00008e20 ();
    0x0000a9ec ldr r3, [sp, 0x18]            |     r3 = *(arg_18h);
    0x0000a9ee mov r2, r0                    |     r2 = r0;
    0x0000a9f0 ldr.w r1, [pc, 0x51c]         |     
    0x0000a9f4 mov r0, r4                    |     r0 = r4;
    0x0000a9f6 ldr r3, [r3]                  |     r3 = *(r3);
    0x0000a9f8 add r1, pc                    |     r1 = 0x1590c;
    0x0000a9fa bl 0x1e51c                    |     log_err ();
    0x0000a9fe movs r0, 0                    |     r0 = 0;
    0x0000aa00 blx 0x98b8                    |     fcn_000098b8 ();
                                             | label_94:
    0x0000aa04 ldr.w r2, [pc, 0x50c]         |     r2 = *(0x0000af14);
    0x0000aa08 ldr r3, [r4, 8]               |     r3 = *((r4 + 8));
    0x0000aa0a ldr r0, [r4, 4]               |     r0 = *((r4 + 4));
    0x0000aa0c ldr r1, [sp, 0x2c]            |     r1 = *(arg_2ch);
    0x0000aa0e add r2, pc                    |     r2 += pc;
    0x0000aa10 blx 0x8d24                    |     fcn_00008d24 ();
    0x0000aa14 b 0xa95e                      |     goto label_8;
                                             | label_63:
    0x0000aa16 ldr r3, [sp, 0x10]            |     r3 = *(arg_10h);
    0x0000aa18 ldr r7, [r3]                  |     r7 = *(r3);
    0x0000aa1a blx 0x98dc                    |     r0 = fcn_000098dc ();
    0x0000aa1e ldr r0, [r0]                  |     r0 = *(r0);
    0x0000aa20 blx 0x893c                    |     strerror (r0);
    0x0000aa24 ldr.w r2, [pc, 0x4f0]         |     r2 = *(0x0000af18);
    0x0000aa28 mov r3, r0                    |     r3 = r0;
    0x0000aa2a movs r1, 1                    |     r1 = 1;
    0x0000aa2c mov r0, r7                    |     r0 = r7;
    0x0000aa2e add r2, pc                    |     r2 += pc;
    0x0000aa30 blx 0x94ec                    |     fcn_000094ec ();
    0x0000aa34 b.w 0xa03c                    |     goto label_9;
                                             | label_73:
    0x0000aa38 mov r0, r6                    |     r0 = r6;
    0x0000aa3a blx 0x9404                    |     r0 = ext2fs_free_blocks_count ();
    0x0000aa3e mov r1, r0                    |     r1 = r0;
    0x0000aa40 cmp r0, 0                     |     
                                             |     if (r0 == 0) {
    0x0000aa42 beq.w 0xacae                  |         goto label_110;
                                             |     }
    0x0000aa46 ldr.w r3, [pc, 0x4d4]         |     
    0x0000aa4a ldr.w r2, [pc, 0x4d4]         |     r2 = *(0x0000af20);
    0x0000aa4e ldr r0, [r4, 4]               |     r0 = *((r4 + 4));
    0x0000aa50 add r3, pc                    |     r3 = 0x15972;
    0x0000aa52 add r2, pc                    |     r2 += pc;
    0x0000aa54 blx 0x8d24                    |     fcn_00008d24 ();
                                             | label_17:
    0x0000aa58 movs r0, 8                    |     r0 = 8;
    0x0000aa5a blx 0x98b8                    |     r0 = fcn_000098b8 ();
    0x0000aa5e rsbs r0, r0, 0                |     r0 -= ;
    0x0000aa60 movs r2, 0                    |     r2 = 0;
    0x0000aa62 str.w r0, [r3, 0x2b8]         |     __asm ("str.w r0, aav.0x000000ff");
    0x0000aa66 str.w r2, [r3, 0x1ec]         |     __asm ("str.w r2, aav.0x000000ff");
    0x0000aa6a blx 0x96f0                    |     r0 = fcn_000096f0 ();
    0x0000aa6e cmp r0, 0                     |     
                                             |     if (r0 < 0) {
    0x0000aa70 blt.w 0xad6a                  |         goto label_111;
                                             |     }
    0x0000aa74 blx 0x934c                    |     fcn_0000934c ();
    0x0000aa78 b.w 0x9af6                    |     goto label_10;
                                             | label_95:
    0x0000aa7c ldrb.w r3, [r7, 0x78]         |     r3 = *((r7 + 0x78));
    0x0000aa80 cmp r3, 0                     |     
                                             |     if (r3 != 0) {
    0x0000aa82 bne.w 0xb238                  |         goto label_112;
                                             |     }
                                             | label_25:
    0x0000aa86 ldr r1, [r4, 8]               |     r1 = *((r4 + 8));
    0x0000aa88 movs r2, 0                    |     r2 = 0;
    0x0000aa8a mov r0, r4                    |     r0 = r4;
    0x0000aa8c bl 0x1e6e8                    |     r0 = string_copy ();
    0x0000aa90 mov r8, r0                    |     r8 = r0;
    0x0000aa92 str r0, [r4, 0xc]             |     *((r4 + 0xc)) = r0;
    0x0000aa94 b 0xa5cc                      |     goto label_11;
                                             | label_100:
    0x0000aa96 mov r0, r4                    |     r0 = r4;
    0x0000aa98 bl 0x1d894                    |     r0 = e2fsck_check_ext3_journal ();
    0x0000aa9c cmp r0, 0                     |     
                                             |     if (r0 == 0) {
    0x0000aa9e beq.w 0xa678                  |         goto label_12;
                                             |     }
    0x0000aaa2 ldr.w r2, [pc, 0x480]         |     
    0x0000aaa6 mov r1, r0                    |     r1 = r0;
    0x0000aaa8 ldr r3, [r4, 0xc]             |     r3 = *((r4 + 0xc));
    0x0000aaaa ldr r0, [r4, 4]               |     r0 = *((r4 + 4));
    0x0000aaac add r2, pc                    |     r2 = 0x159d6;
    0x0000aaae blx 0x8d24                    |     fcn_00008d24 ();
    0x0000aab2 ldr.w r1, [pc, 0x474]         |     
    0x0000aab6 mov r0, r4                    |     r0 = r4;
    0x0000aab8 add r1, pc                    |     r1 = 0x159e6;
    0x0000aaba bl 0x1e598                    |     fatal_error ();
    0x0000aabe b 0xa678                      |     goto label_12;
                                             | label_92:
    0x0000aac0 vmov.i32 d16, 0               |     __asm ("vmov.i32 d16, 0");
    0x0000aac4 vstr d16, [r4, 0x40]          |     __asm ("vstr d16, [r4, 0x40]");
    0x0000aac8 b 0xa59a                      |     goto label_13;
                                             | label_101:
    0x0000ab10 ldr r3, [r4, 0x24]            |     r3 = *((r4 + 0x24));
    0x0000ab12 lsls r0, r3, 0x16             |     r0 = r3 << 0x16;
                                             |     if (r0 < r3) {
    0x0000ab14 bmi.w 0xada0                  |         goto label_113;
                                             |     }
                                             | label_20:
    0x0000ab18 mov r0, r4                    |     r0 = r4;
    0x0000ab1a bl 0x1dcd0                    |     e2fsck_run_ext3_journal ();
    0x0000ab1e movw r3, 0xb7af               |     
    0x0000ab22 movt r3, 0x7f2b               |     r3 = 0x7f2bb7af;
    0x0000ab26 cmp r0, r3                    |     
                                             |     if (r0 == r3) {
    0x0000ab28 beq.w 0xb62a                  |         void (*0xb62a)() ();
                                             |     }
                                             | label_93:
    0x0000ac2e ldr r2, [sp, 0x14]            |     r2 = *(arg_14h);
    0x0000ac30 movs r1, 0xc                  |     r1 = 0xc;
    0x0000ac32 mov r0, r4                    |     r0 = r4;
    0x0000ac34 bl 0x202f8                    |     fix_problem ();
    0x0000ac38 ldr r3, [r4, 0x24]            |     r3 = *((r4 + 0x24));
    0x0000ac3a movs r1, 0                    |     r1 = 0;
    0x0000ac3c mov r0, r4                    |     r0 = r4;
    0x0000ac3e orr r3, r3, 1                 |     r3 |= 1;
    0x0000ac42 str r3, [r4, 0x24]            |     *((r4 + 0x24)) = r3;
    0x0000ac44 bl 0x1e598                    |     fatal_error ();
    0x0000ac48 b 0xa59a                      |     goto label_13;
                                             | label_98:
    0x0000ac62 ldr r2, [pc, 0x2e8]           |     
    0x0000ac64 mov r0, r3                    |     r0 = r3;
    0x0000ac66 add.w r3, r7, 0x78            |     r3 = r7 + 0x78;
    0x0000ac6a movs r1, 1                    |     r1 = 1;
    0x0000ac6c str r3, [sp]                  |     *(sp) = r3;
    0x0000ac6e movs r3, 0x10                 |     r3 = 0x10;
    0x0000ac70 add r2, pc                    |     r2 = 0x15bc2;
    0x0000ac72 blx 0x94ec                    |     fcn_000094ec ();
    0x0000ac76 ldr r3, [r4, 0x1c]            |     r3 = *((r4 + 0x1c));
    0x0000ac78 b 0xa626                      |     goto label_14;
                                             | label_97:
    0x0000ac7a mov r0, r6                    |     r0 = r6;
    0x0000ac7c add r6, sp, 0x1bc             |     r6 += arg_1bch;
    0x0000ac7e mov r1, r6                    |     r1 = r6;
    0x0000ac80 blx 0x9798                    |     fcn_00009798 ();
    0x0000ac84 ldr r2, [pc, 0x2c8]           |     
    0x0000ac86 mov r3, r6                    |     r3 = r6;
    0x0000ac88 ldr r0, [r4, 0x1c]            |     r0 = *((r4 + 0x1c));
    0x0000ac8a movs r1, 1                    |     r1 = 1;
    0x0000ac8c add r2, pc                    |     r2 = 0x15be0;
    0x0000ac8e blx 0x94ec                    |     fcn_000094ec ();
    0x0000ac92 b 0xa61a                      |     goto label_15;
                                             | label_91:
    0x0000ac94 mov r0, sl                    |     r0 = sl;
    0x0000ac96 mov.w r8, 1                   |     r8 = 1;
    0x0000ac9a blx 0x91fc                    |     fcn_000091fc ();
    0x0000ac9e ldr r0, [r4, 8]               |     r0 = *((r4 + 8));
    0x0000aca0 mov r2, r7                    |     r2 = r7;
    0x0000aca2 mov r1, r6                    |     r1 = r6;
    0x0000aca4 blx 0x8f38                    |     fcn_00008f38 ();
    0x0000aca8 ldr r3, [sp, 0x14]            |     r3 = *(arg_14h);
    0x0000acaa str r0, [r3]                  |     *(r3) = r0;
    0x0000acac b 0xa58c                      |     goto label_16;
                                             | label_110:
    0x0000acae ldr r3, [pc, 0x2a4]           |     r3 = *(0xaf56);
    0x0000acb0 ldr.w r0, [r4, 0x374]         |     r0 = *((r4 + 0x374));
    0x0000acb4 ldr.w r3, [fp, r3]            |     r3 = *((fp + r3));
    0x0000acb8 ldr r6, [r3]                  |     r6 = *(0xaf56);
    0x0000acba blx 0x9564                    |     r0 = fcn_00009564 ();
    0x0000acbe mov r1, r0                    |     r1 = r0;
    0x0000acc0 cmp r0, 0                     |     
                                             |     if (r0 == 0) {
    0x0000acc2 beq.w 0xade2                  |         goto label_114;
                                             |     }
    0x0000acc6 ldr r3, [pc, 0x290]           |     
    0x0000acc8 ldr r2, [pc, 0x290]           |     
    0x0000acca ldr r0, [r4, 4]               |     r0 = *((r4 + 4));
    0x0000accc add r3, pc                    |     r3 = 0x15c2a;
    0x0000acce add r2, pc                    |     r2 = 0x15c2e;
    0x0000acd0 blx 0x8d24                    |     fcn_00008d24 ();
    0x0000acd4 b 0xaa58                      |     goto label_17;
                                             | label_74:
    0x0000acd6 ldr r2, [pc, 0x288]           |     
    0x0000acd8 mov r3, r0                    |     r3 = r0;
    0x0000acda ldr r1, [pc, 0x288]           |     
    0x0000acdc str r7, [sp, 4]               |     var_4h = r7;
    0x0000acde add r2, pc                    |     r2 = 0x15c44;
    0x0000ace0 str r2, [sp]                  |     *(sp) = r2;
    0x0000ace2 add r1, pc                    |     r1 = 0x15c4c;
    0x0000ace4 ldr r2, [pc, 0x280]           |     
    0x0000ace6 ldr.w r0, [r4, 0x340]         |     r0 = *((r4 + 0x340));
    0x0000acea add r2, pc                    |     r2 = 0x15c56;
    0x0000acec bl 0x28cdc                    |     profile_get_string ();
    0x0000acf0 ldr.w r8, [r7]                |     r8 = *(r7);
    0x0000acf4 ldr r1, [pc, 0x274]           |     
    0x0000acf6 mov r0, r8                    |     r0 = r8;
    0x0000acf8 add r1, pc                    |     r1 = 0x15c68;
    0x0000acfa blx 0x98a0                    |     r0 = fcn_000098a0 ();
                                             |     if (r0 != 0) {
    0x0000acfe cbz r0, 0xad14                |         
    0x0000ad00 ldrb.w r3, [r8]               |         r3 = *(r8);
                                             |         if (r3 == 0) {
    0x0000ad04 cbz r3, 0xad14                |             goto label_115;
                                             |         }
    0x0000ad06 mov r0, r8                    |         r0 = r8;
    0x0000ad08 movs r1, 2                    |         r1 = 2;
    0x0000ad0a blx 0x8f50                    |         r0 = fcn_00008f50 ();
    0x0000ad0e cmp r0, 0                     |         
                                             |         if (r0 == 0) {
    0x0000ad10 beq.w 0xbec2                  |             goto label_116;
                                             |         }
                                             |     }
                                             | label_115:
    0x0000ad14 ldr r0, [r7]                  |     r0 = *(r7);
    0x0000ad16 blx 0x8ed8                    |     fcn_00008ed8 ();
    0x0000ad1a b.w 0xa300                    |     goto label_18;
                                             | label_57:
    0x0000ad1e ldr r2, [pc, 0x250]           |     
    0x0000ad20 add r2, pc                    |     
    0x0000ad22 ldr r2, [r2, 0xc]             |     r2 = *(0x15ca2);
    0x0000ad24 cmp r2, 0                     |     
                                             |     if (r2 != 0) {
    0x0000ad26 bne.w 0xb698                  |         goto label_117;
                                             |     }
                                             | label_35:
    0x0000ad2a ldr r2, [pc, 0x248]           |     
    0x0000ad2c add r2, pc                    |     
    0x0000ad2e ldr r2, [r2, 8]               |     r2 = *(0x15cae);
    0x0000ad30 cmp r2, 0                     |     
                                             |     if (r2 == 0) {
    0x0000ad32 beq.w 0xb4bc                  |         goto label_118;
                                             |     }
    0x0000ad36 ldr r0, [r3, 4]               |     r0 = *((r3 + 4));
    0x0000ad38 movs r1, 0                    |     r1 = 0;
    0x0000ad3a ldr r3, [pc, 0x23c]           |     
    0x0000ad3c ldr r2, [pc, 0x23c]           |     
    0x0000ad3e add r3, pc                    |     r3 = 0x15cbc;
    0x0000ad40 add r2, pc                    |     r2 = 0x15cc0;
    0x0000ad42 blx 0x8d24                    |     fcn_00008d24 ();
    0x0000ad46 ldr r6, [sp, 8]               |     r6 = *(arg_8h);
    0x0000ad48 movs r1, 0                    |     r1 = 0;
    0x0000ad4a ldr r0, [r6]                  |     r0 = *(r6);
    0x0000ad4c bl 0x1e598                    |     fatal_error ();
    0x0000ad50 ldr.w sb, [r6]                |     sb = *(r6);
    0x0000ad54 ldr.w r3, [sb, 0x28]          |     r3 = *((sb + 0x28));
    0x0000ad58 lsls r6, r3, 0x1c             |     r6 = r3 << 0x1c;
                                             |     if (r6 >= r3) {
    0x0000ad5a bpl.w 0x9ed6                  |         goto label_19;
                                             |     }
                                             | label_27:
    0x0000ad5e orr r3, r3, 1                 |     r3 |= 1;
    0x0000ad62 str.w r3, [sb, 0x28]          |     __asm ("str.w r3, [sb, 0x28]");
    0x0000ad66 b.w 0x9ed6                    |     goto label_19;
                                             | label_111:
    0x0000ad6a ldr r3, [sp, 8]               |     r3 = *(arg_8h);
    0x0000ad6c ldr r2, [sp, 0x10]            |     r2 = *(arg_10h);
    0x0000ad6e ldr r3, [r3]                  |     r3 = *(r3);
    0x0000ad70 ldr r6, [r2]                  |     r6 = *(r2);
    0x0000ad72 ldr.w r7, [r3, 0x2b8]         |     r7 = *((r3 + 0x2b8));
    0x0000ad76 blx 0x98dc                    |     r0 = fcn_000098dc ();
    0x0000ad7a ldr r0, [r0]                  |     r0 = *(r0);
    0x0000ad7c blx 0x8e20                    |     fcn_00008e20 ();
    0x0000ad80 ldr r2, [pc, 0x1fc]           |     
    0x0000ad82 mov r3, r7                    |     r3 = r7;
    0x0000ad84 str r0, [sp]                  |     *(sp) = r0;
    0x0000ad86 movs r1, 1                    |     r1 = 1;
    0x0000ad88 mov r0, r6                    |     r0 = r6;
    0x0000ad8a add r2, pc                    |     r2 = 0x15d0e;
    0x0000ad8c blx 0x94ec                    |     fcn_000094ec ();
    0x0000ad90 ldr r3, [sp, 8]               |     r3 = *(arg_8h);
    0x0000ad92 ldr r1, [pc, 0x1f0]           |     
    0x0000ad94 ldr r0, [r3]                  |     r0 = *(r3);
    0x0000ad96 add r1, pc                    |     r1 = 0x15d20;
    0x0000ad98 bl 0x1e598                    |     fatal_error ();
    0x0000ad9c b.w 0x9af6                    |     goto label_10;
                                             | label_113:
    0x0000ada0 ldr r2, [pc, 0x1e4]           |     
    0x0000ada2 mov r1, r6                    |     r1 = r6;
    0x0000ada4 ldr r0, [r4, 4]               |     r0 = *((r4 + 4));
    0x0000ada6 ldr r3, [r4, 0xc]             |     r3 = *((r4 + 0xc));
    0x0000ada8 add r2, pc                    |     r2 = 0x15d34;
    0x0000adaa blx 0x8d24                    |     fcn_00008d24 ();
    0x0000adae mov r1, r6                    |     r1 = r6;
    0x0000adb0 mov r0, r4                    |     r0 = r4;
    0x0000adb2 bl 0x1e598                    |     fatal_error ();
    0x0000adb6 b 0xab18                      |     goto label_20;
                                             | label_69:
    0x0000adb8 ldr r1, [pc, 0x1d0]           |     
    0x0000adba mov r0, r4                    |     r0 = r4;
    0x0000adbc add r1, pc                    |     r1 = 0x15d4c;
    0x0000adbe bl 0x1e598                    |     fatal_error ();
    0x0000adc2 b.w 0xa11a                    |     goto label_21;
    0x0000adc6 ldr r3, [r4, 0x28]            |     r3 = *((r4 + 0x28));
    0x0000adc8 lsls r0, r3, 0x1f             |     r0 = r3 << 0x1f;
                                             |     if (r0 < r3) {
    0x0000adca bmi.w 0xb708                  |         goto label_119;
                                             |     }
    0x0000adce ldr r2, [pc, 0x1c0]           |     
    0x0000add0 add r2, pc                    |     r2 = 0x15d66;
                                             | label_36:
    0x0000add2 ldr r1, [pc, 0x1c0]           |     
    0x0000add4 mov r0, r4                    |     r0 = r4;
    0x0000add6 add r1, pc                    |     r1 = 0x15d70;
    0x0000add8 bl 0x1e4a0                    |     log_out ();
    0x0000addc b 0xa990                      |     goto label_22;
                                             | label_114:
    0x0000ade2 ldr r1, [pc, 0x1b4]           |     
    0x0000ade4 movs r0, 1                    |     r0 = 1;
    0x0000ade6 ldr r3, [r4, 8]               |     r3 = *((r4 + 8));
    0x0000ade8 ldr.w r2, [r4, 0x374]         |     r2 = *((r4 + 0x374));
    0x0000adec add r1, pc                    |     r1 = 0x15d8a;
    0x0000adee blx 0x8c04                    |     fcn_00008c04 ();
    0x0000adf2 b.w 0xa300                    |     goto label_18;
    0x0000adf6 ldr r2, [pc, 0x1a4]           |     
    0x0000adf8 mov r0, r4                    |     r0 = r4;
    0x0000adfa ldr r1, [pc, 0x1a4]           |     
    0x0000adfc add r2, pc                    |     r2 = 0x15d9e;
    0x0000adfe add r1, pc                    |     r1 = 0x15da4;
    0x0000ae00 bl 0x1e4a0                    |     log_out ();
    0x0000ae04 b 0xa990                      |     goto label_22;
    0x0000ae06 ldr r2, [pc, 0x19c]           |     
    0x0000ae08 mov r0, r4                    |     r0 = r4;
    0x0000ae0a ldr r1, [pc, 0x19c]           |     
    0x0000ae0c add r2, pc                    |     r2 = 0x15db6;
    0x0000ae0e add r1, pc                    |     r1 = 0x15dbc;
    0x0000ae10 bl 0x1e4a0                    |     log_out ();
    0x0000ae14 b 0xa990                      |     goto label_22;
    0x0000ae16 ldr r2, [pc, 0x194]           |     
    0x0000ae18 mov r0, r4                    |     r0 = r4;
    0x0000ae1a ldr r1, [pc, 0x194]           |     
    0x0000ae1c add r2, pc                    |     r2 = 0x15dce;
    0x0000ae1e add r1, pc                    |     r1 = 0x15dd4;
    0x0000ae20 bl 0x1e4a0                    |     log_out ();
    0x0000ae24 b 0xa990                      |     goto label_22;
    0x0000ae26 ldr r2, [pc, 0x18c]           |     
    0x0000ae28 mov r0, r4                    |     r0 = r4;
    0x0000ae2a ldr r1, [pc, 0x18c]           |     
    0x0000ae2c add r2, pc                    |     r2 = 0x15de6;
    0x0000ae2e add r1, pc                    |     r1 = 0x15dec;
    0x0000ae30 bl 0x1e4a0                    |     log_out ();
    0x0000ae34 b 0xa990                      |     goto label_22;
                                             | label_62:
    0x0000ae5e ldr r1, [pc, 0x160]           |     
    0x0000ae60 mov r0, sb                    |     r0 = sb;
    0x0000ae62 add r1, pc                    |     r1 = 0x15e28;
    0x0000ae64 blx 0x98a0                    |     r0 = fcn_000098a0 ();
                                             |     if (r0 == 0) {
    0x0000ae68 cbz r0, 0xae76                |         void (*0xae76)() ();
                                             |     }
                                             | label_61:
    0x0000afc8 ldrd r4, r6, [sp, 0x38]       |     __asm ("ldrd r4, r6, [arg_38h]");
    0x0000afcc mov r7, sl                    |     r7 = sl;
    0x0000afce ldr.w r8, [sp, 0x1c]          |     r8 = *(arg_1ch);
    0x0000afd2 ldrd r5, sl, [sp, 0x40]       |     __asm ("ldrd r5, sl, [arg_40h]");
    0x0000afd6 mov r0, r6                    |     r0 = r6;
    0x0000afd8 blx 0x8ed8                    |     fcn_00008ed8 ();
    0x0000afdc cmp r7, 0                     |     
                                             |     if (r7 != 0) {
    0x0000afde bne.w 0xbf36                  |         goto label_120;
                                             |     }
                                             | label_60:
    0x0000afe2 ldr.w r0, [pc, 0xc88]         |     r0 = *(0x0000bc6c);
    0x0000afe6 add r0, pc                    |     r0 += pc;
    0x0000afe8 blx 0x8bf4                    |     r0 = printf_chk ()
                                             |     if (r0 != 0) {
    0x0000afec cbz r0, 0xaffa                |         
    0x0000afee ldr r3, [sp, 8]               |         r3 = *(arg_8h);
    0x0000aff0 ldr r2, [r3]                  |         r2 = *(r3);
    0x0000aff2 ldr r3, [r2, 0x28]            |         r3 = *((r2 + 0x28));
    0x0000aff4 orr r3, r3, 0x8000            |         r3 |= 0x8000;
    0x0000aff8 str r3, [r2, 0x28]            |         *((r2 + 0x28)) = r3;
                                             |     }
    0x0000affa ldr r3, [sp, 8]               |     r3 = *(arg_8h);
    0x0000affc ldr r2, [r3]                  |     r2 = *(r3);
    0x0000affe ldr r3, [r2, 0x28]            |     r3 = *((r2 + 0x28));
    0x0000b000 and r3, r3, 0x8400            |     r3 &= 0x8400;
    0x0000b004 cmp.w r3, 0x8400              |     
                                             |     if (r3 == 0x8400) {
    0x0000b008 beq.w 0xb5cc                  |         goto label_121;
                                             |     }
                                             | label_30:
    0x0000b00c ldr r3, [sp, 8]               |     r3 = *(arg_8h);
    0x0000b00e ldr r2, [r3]                  |     r2 = *(r3);
    0x0000b010 ldr r3, [r2, 0x28]            |     r3 = *((r2 + 0x28));
    0x0000b012 and r3, r3, 0xc000            |     r3 &= 0xc000;
    0x0000b016 cmp.w r3, 0xc000              |     
    0x0000b018 ldr r7, [pc, 0x100]           |     r7 = *(0xb11c);
                                             |     if (r3 == 0xc000) {
    0x0000b01a beq.w 0xb5ac                  |         goto label_122;
                                             |     }
                                             | label_29:
    0x0000b01e ldr.w r0, [pc, 0xc50]         |     r0 = *(0x0000bc70);
    0x0000b022 add r0, pc                    |     r0 += pc;
    0x0000b024 blx 0x8bf4                    |     r0 = printf_chk ()
                                             |     if (r0 == 0) {
    0x0000b028 cbz r0, 0xb032                |         void (*0xb032)() ();
                                             |     }
                                             | label_51:
    0x0000b1fe mov r0, r7                    |     r0 = r7;
    0x0000b200 blx 0x92e0                    |     fcn_000092e0 ();
    0x0000b204 b.w 0xa022                    |     goto label_23;
                                             | label_105:
    0x0000b222 ldr.w r1, [pc, 0xaa0]         |     
    0x0000b226 mov r0, r4                    |     r0 = r4;
    0x0000b228 ldr.w r2, [pc, 0xa9c]         |     r2 = *(0x0000bcc8);
    0x0000b22c add r1, pc                    |     r1 = 0x16ef6;
    0x0000b22e add r2, pc                    |     r2 += pc;
    0x0000b230 bl 0x1e4a0                    |     log_out ();
    0x0000b234 b.w 0xa9ac                    |     goto label_24;
                                             | label_112:
    0x0000b238 movs r2, 0x10                 |     r2 = 0x10;
    0x0000b23a add.w r1, r7, 0x78            |     r1 = r7 + 0x78;
    0x0000b23e mov r0, r4                    |     r0 = r4;
    0x0000b240 bl 0x1e6e8                    |     r0 = string_copy ();
    0x0000b244 mov r8, r0                    |     r8 = r0;
    0x0000b246 str r0, [r4, 0xc]             |     *((r4 + 0xc)) = r0;
    0x0000b248 cmp r0, 0                     |     
                                             |     if (r0 != 0) {
    0x0000b24a bne.w 0xa5cc                  |         goto label_11;
                                             |     }
    0x0000b24e b 0xaa86                      |     goto label_25;
                                             | label_99:
    0x0000b250 add r7, sp, 0xd8              |     r7 += arg_d8h;
    0x0000b252 mov r0, r7                    |     r0 = r7;
    0x0000b254 bl 0x202dc                    |     clear_problem_context ();
    0x0000b258 ldr.w r3, [r6, 0x98]          |     r3 = *((r6 + 0x98));
    0x0000b25c cmp r3, 0                     |     
                                             |     if (r3 == 0) {
    0x0000b25e beq.w 0xba78                  |         goto label_123;
                                             |     }
                                             | label_42:
    0x0000b262 ldr r2, [r6, 0x10]            |     r2 = *((r6 + 0x10));
    0x0000b264 mov r0, r6                    |     r0 = r6;
    0x0000b266 str r3, [sp]                  |     *(sp) = r3;
    0x0000b268 ldrd r2, r3, [r2, 0x168]      |     __asm ("ldrd r2, r3, aav.0x000000ff");
    0x0000b26c blx 0x94f8                    |     r0 = fcn_000094f8 ();
    0x0000b270 mov r1, r0                    |     r1 = r0;
    0x0000b272 cmp r0, 0                     |     
                                             |     if (r0 != 0) {
    0x0000b274 bne.w 0xb7f6                  |         goto label_124;
                                             |     }
    0x0000b278 ldr.w r2, [r6, 0x98]          |     r2 = *((r6 + 0x98));
    0x0000b27c movw r1, 0x4d50               |     
    0x0000b280 movt r1, 0xff4d               |     r1 = 0xff4d4d50;
    0x0000b284 ldr r3, [r2, 4]               |     r3 = *((r2 + 4));
    0x0000b286 cmp r3, r1                    |     
                                             |     if (r3 == r1) {
    0x0000b288 beq.w 0xb63c                  |         goto label_125;
                                             |     }
    0x0000b28c movw r1, 0x4d50               |     
    0x0000b290 movt r1, 0xe24d               |     r1 = 0xe24d4d50;
    0x0000b294 cmp r3, r1                    |     
                                             |     if (r3 == r1) {
    0x0000b296 beq.w 0xb7d2                  |         void (*0xb7d2)() ();
                                             |     }
                                             | label_41:
    0x0000b2d2 movs r1, 0                    |     r1 = 0;
    0x0000b2d4 mov r0, r4                    |     r0 = r4;
    0x0000b2d6 bl 0x1e598                    |     fatal_error ();
    0x0000b2da ldr r3, [sp, 0xc]             |     r3 = *(arg_ch);
    0x0000b2dc mov r0, r4                    |     r0 = r4;
    0x0000b2de bic r3, r3, 0x100000          |     r3 = BIT_MASK (r3, 0x100000);
    0x0000b2e2 str r3, [sp, 0xc]             |     *(arg_ch) = r3;
    0x0000b2e4 blx 0x91fc                    |     fcn_000091fc ();
    0x0000b2e8 b.w 0xa18c                    |     goto label_1;
                                             | label_104:
    0x0000b486 ldr.w r2, [pc, 0x890]         |     
    0x0000b48a mov r1, r8                    |     r1 = r8;
    0x0000b48c add r2, pc                    |     r2 = 0x171aa;
    0x0000b48e blx 0x8d24                    |     fcn_00008d24 ();
    0x0000b492 b.w 0xa9ac                    |     goto label_24;
                                             | label_58:
    0x0000b496 str.w r0, [sb, 0x10]          |     __asm ("str.w r0, [sb, 0x10]");
    0x0000b49a b.w 0x9ef2                    |     goto label_26;
                                             | label_118:
    0x0000b4bc ldr r3, [sp, 8]               |     r3 = *(arg_8h);
    0x0000b4be ldr.w sb, [r3]                |     sb = *(r3);
    0x0000b4c2 ldr.w r3, [sb, 0x28]          |     r3 = *((sb + 0x28));
    0x0000b4c6 b 0xad5e                      |     goto label_27;
                                             | label_56:
    0x0000b588 ldr r6, [sp, 0x1c]            |     r6 = *(arg_1ch);
    0x0000b58a ldr r0, [r2, 4]               |     r0 = *((r2 + 4));
    0x0000b58c ldr.w r3, [pc, 0x7a0]         |     r3 = *(0x0000bd30);
    0x0000b590 ldr.w r2, [pc, 0x7a0]         |     
    0x0000b594 mov r1, r6                    |     r1 = r6;
    0x0000b596 add r3, pc                    |     r3 += pc;
    0x0000b598 add r2, pc                    |     r2 = 0x172d0;
    0x0000b59a blx 0x8d24                    |     fcn_00008d24 ();
    0x0000b59e ldr r3, [sp, 8]               |     r3 = *(arg_8h);
    0x0000b5a0 mov r1, r6                    |     r1 = r6;
    0x0000b5a2 ldr r0, [r3]                  |     r0 = *(r3);
    0x0000b5a4 bl 0x1e598                    |     fatal_error ();
    0x0000b5a8 b.w 0x9ec4                    |     goto label_28;
                                             | label_122:
    0x0000b5ac ldr r0, [r2, 4]               |     r0 = *((r2 + 4));
    0x0000b5ae movs r1, 0                    |     r1 = 0;
    0x0000b5b0 ldr.w r3, [pc, 0x784]         |     
    0x0000b5b4 ldr.w r2, [pc, 0x784]         |     r2 = *(0x0000bd3c);
    0x0000b5b8 add r3, pc                    |     r3 = 0x172f4;
    0x0000b5ba add r2, pc                    |     r2 += pc;
    0x0000b5bc blx 0x8d24                    |     fcn_00008d24 ();
    0x0000b5c0 ldr r3, [sp, 8]               |     r3 = *(arg_8h);
    0x0000b5c2 movs r1, 0                    |     r1 = 0;
    0x0000b5c4 ldr r0, [r3]                  |     r0 = *(0x172f4);
    0x0000b5c6 bl 0x1e598                    |     fatal_error ();
    0x0000b5ca b 0xb01e                      |     goto label_29;
                                             | label_121:
    0x0000b5cc ldr r0, [r2, 4]               |     r0 = *((r2 + 4));
    0x0000b5ce movs r1, 0                    |     r1 = 0;
    0x0000b5d0 ldr.w r3, [pc, 0x76c]         |     
    0x0000b5d4 ldr.w r2, [pc, 0x76c]         |     r2 = *(0x0000bd44);
    0x0000b5d8 add r3, pc                    |     r3 = 0x1731c;
    0x0000b5da add r2, pc                    |     r2 += pc;
    0x0000b5dc blx 0x8d24                    |     fcn_00008d24 ();
    0x0000b5e0 ldr r3, [sp, 8]               |     r3 = *(arg_8h);
    0x0000b5e2 movs r1, 0                    |     r1 = 0;
    0x0000b5e4 ldr r0, [r3]                  |     r0 = *(0x1731c);
    0x0000b5e6 bl 0x1e598                    |     fatal_error ();
    0x0000b5ea b 0xb00c                      |     goto label_30;
                                             | label_81:
    0x0000b5ec ldr.w r0, [sl]                |     r0 = *(sl);
    0x0000b5f0 blx 0x8b88                    |     isoc99_sscanf ();
    0x0000b5f4 str r0, [sp, 0x10]            |     *(arg_10h) = r0;
    0x0000b5f6 cmp r0, 0                     |     
                                             |     if (r0 == 0) {
    0x0000b5f8 beq.w 0xa556                  |         goto label_6;
                                             |     }
                                             | label_84:
    0x0000b5fc ldr r7, [sp, 0x14]            |     r7 = *(arg_14h);
    0x0000b5fe movs r1, 0x45                 |     r1 = 0x45;
    0x0000b600 ldr r5, [sp, 0x10]            |     r5 = *(arg_10h);
    0x0000b602 mov r0, r4                    |     r0 = r4;
    0x0000b604 mov r2, r7                    |     r2 = r7;
    0x0000b606 str r5, [r7]                  |     *(r7) = r5;
    0x0000b608 bl 0x202f8                    |     fix_problem ();
    0x0000b60c cmp r5, 0xc                   |     
    0x0000b60e mov.w r3, 0                   |     r3 = 0;
    0x0000b612 str r3, [r7]                  |     *(r7) = r3;
                                             |     if (r5 == 0xc) {
    0x0000b614 beq 0xb624                    |         goto label_126;
                                             |     }
    0x0000b616 movw r3, 0xb746               |     
    0x0000b61a movt r3, 0x7f2b               |     r3 = 0x7f2bb746;
    0x0000b61e cmp r5, r3                    |     
                                             |     if (r5 != r3) {
    0x0000b620 bne.w 0xa486                  |         goto label_31;
                                             |     }
                                             | label_126:
    0x0000b624 ldr r6, [sp, 0x10]            |     r6 = *(arg_10h);
    0x0000b626 b.w 0xa36e                    |     goto label_32;
                                             | label_125:
    0x0000b63c ldr r1, [r6, 0x10]            |     r1 = *((r6 + 0x10));
    0x0000b63e ldrh.w r3, [r2, 0x70]         |     r3 = *((r2 + 0x70));
    0x0000b640 adds r0, 0x70                 |     r0 += 0x70;
    0x0000b642 ldrh.w r2, [r1, 0x166]        |     r2 = *((r1 + 0x166));
    0x0000b646 cmp r2, r3                    |     
    0x0000b648 it lo                         |     
                                             |     if (r2 >= r3) {
    0x0000b64a movlo r2, r3                  |         r2 = r3;
                                             |     }
    0x0000b64c ldr.w r3, [pc, 0x6fc]         |     r3 = *(0x0000bd4c);
    0x0000b650 cmp r2, 5                     |     
    0x0000b652 it lo                         |     
                                             |     if (r2 >= 5) {
    0x0000b654 movlo r2, 5                   |         r2 = 5;
                                             |     }
    0x0000b656 add r3, pc                    |     r3 += pc;
    0x0000b658 ldr r1, [r3, 4]               |     r1 = *((r3 + 4));
    0x0000b65a lsls r3, r2, 1                |     r3 = r2 << 1;
    0x0000b65c adds r3, 1                    |     r3++;
                                             |     if (r1 != 0) {
    0x0000b65e cbnz r1, 0xb666               |         void (*0xb666)() ();
                                             |     }
                                             | label_59:
    0x0000b676 ldr r2, [r7]                  |     r2 = *(r7);
    0x0000b678 ldr r0, [r3, 4]               |     r0 = *((r3 + 4));
    0x0000b67a str r1, [sp, 0x20]            |     *(arg_20h) = r1;
    0x0000b67c ldr.w r3, [sl, r2, lsl 2]     |     offset_4 = r2 << 2;
                                             |     r3 = *((sl + offset_4));
    0x0000b680 ldr.w r2, [pc, 0x6d0]         |     
    0x0000b684 add r2, pc                    |     r2 = 0x173dc;
    0x0000b686 blx 0x8d24                    |     fcn_00008d24 ();
    0x0000b68a ldr r3, [sp, 8]               |     r3 = *(arg_8h);
    0x0000b68c ldr r1, [sp, 0x20]            |     r1 = *(arg_20h);
    0x0000b68e ldr r0, [r3]                  |     r0 = *(r3);
    0x0000b690 bl 0x1e598                    |     fatal_error ();
    0x0000b694 b.w 0x9f16                    |     goto label_33;
                                             | label_117:
    0x0000b698 ldr r0, [r3, 4]               |     r0 = *((r3 + 4));
    0x0000b69a movs r1, 0                    |     r1 = 0;
    0x0000b69c ldr.w r3, [pc, 0x6b8]         |     
    0x0000b6a0 ldr.w r2, [pc, 0x6b8]         |     r2 = *(0x0000bd5c);
    0x0000b6a4 add r3, pc                    |     r3 = 0x17400;
    0x0000b6a6 add r2, pc                    |     r2 += pc;
    0x0000b6a8 blx 0x8d24                    |     fcn_00008d24 ();
    0x0000b6ac ldr r6, [sp, 8]               |     r6 = *(arg_8h);
    0x0000b6ae movs r1, 0                    |     r1 = 0;
    0x0000b6b0 ldr r0, [r6]                  |     r0 = *(r6);
    0x0000b6b2 bl 0x1e598                    |     fatal_error ();
    0x0000b6b6 ldr r3, [r6]                  |     r3 = *(r6);
    0x0000b6b8 ldr r2, [r3, 0x28]            |     r2 = *(0x17428);
    0x0000b6ba lsls r2, r2, 0x1c             |     r2 <<= 0x1c;
                                             |     if (r2 >= r2) {
    0x0000b6bc bpl.w 0x9ed0                  |         goto label_34;
                                             |     }
    0x0000b6c0 b.w 0xad2a                    |     goto label_35;
                                             | label_54:
    0x0000b6c4 ldr r3, [sp, 8]               |     r3 = *(arg_8h);
    0x0000b6c6 ldr r3, [r3]                  |     r3 = *(r3);
    0x0000b6c8 ldr r0, [r3, 4]               |     r0 = *((r3 + 4));
    0x0000b6ca bl 0xcf28                     |     fcn_0000cf28 (r0, r1);
                                             | label_107:
    0x0000b6ce ldr r2, [sp, 0x14]            |     r2 = *(arg_14h);
    0x0000b6d0 movs r1, 4                    |     r1 = 4;
    0x0000b6d2 mov r0, r4                    |     r0 = r4;
    0x0000b6d4 bl 0x202f8                    |     fix_problem ();
    0x0000b6d8 ldr r2, [sp, 0x10]            |     r2 = *(arg_10h);
    0x0000b6da movw r3, 0xb713               |     
    0x0000b6de movt r3, 0x7f2b               |     r3 = 0x7f2bb713;
    0x0000b6e2 cmp r2, r3                    |     
                                             |     if (r2 != r3) {
    0x0000b6e4 bne.w 0xa990                  |         goto label_22;
                                             |     }
    0x0000b6e8 ldr r0, [r4, 8]               |     r0 = *((r4 + 8));
    0x0000b6ea movs r2, 0                    |     r2 = 0;
    0x0000b6ec movs r1, 4                    |     r1 = 4;
    0x0000b6ee bl 0x277a4                    |     check_plausibility ();
    0x0000b6f2 b.w 0xa990                    |     goto label_22;
                                             | label_119:
    0x0000b708 ldr.w r2, [pc, 0x658]         |     r2 = sym.e2fsck_hide_quota;
    0x0000b70c add r2, pc                    |     r2 += pc;
    0x0000b70e b.w 0xadd2                    |     goto label_36;
                                             | label_87:
    0x0000b712 ldr.w r3, [pc, 0x654]         |     
    0x0000b716 mov r0, r4                    |     r0 = r4;
    0x0000b718 ldr.w r1, [pc, 0x650]         |     r1 = *(0x0000bd6c);
    0x0000b71c add r3, pc                    |     r3 = 0x1748a;
    0x0000b71e add r1, pc                    |     r1 += pc;
    0x0000b720 bl 0x1e4a0                    |     log_out ();
    0x0000b724 ldr r5, [r4, 0x38]            |     r5 = *((r4 + 0x38));
    0x0000b726 mov r3, r6                    |     r3 = r6;
    0x0000b728 ldr r2, [r4, 8]               |     r2 = *((r4 + 8));
    0x0000b72a mov r0, r4                    |     r0 = r4;
    0x0000b72c ldr.w r1, [sl]                |     r1 = *(sl);
    0x0000b730 str r5, [sp, 0x58]            |     *(arg_58h) = r5;
    0x0000b732 ldr r5, [r4, 0x3c]            |     r5 = *((r4 + 0x3c));
    0x0000b734 str r5, [sp, 0x5c]            |     *(arg_5ch) = r5;
    0x0000b736 bl 0x1ef34                    |     get_backup_sb ();
    0x0000b73a ldr.w r3, [sl]                |     r3 = *(sl);
    0x0000b73e cmp r3, 0                     |     
                                             |     if (r3 != 0) {
    0x0000b740 bne.w 0xa4d6                  |         goto label_37;
                                             |     }
    0x0000b744 b.w 0xa4dc                    |     goto label_38;
                                             | label_78:
    0x0000b748 ldr.w r1, [pc, 0x624]         |     r1 = *(0x0000bd70);
    0x0000b74c mov r2, r8                    |     r2 = r8;
    0x0000b74e ldr r3, [r4, 8]               |     r3 = *((r4 + 8));
    0x0000b750 movs r0, 1                    |     r0 = 1;
    0x0000b752 add r1, pc                    |     r1 += pc;
    0x0000b754 blx 0x8c04                    |     fcn_00008c04 ();
    0x0000b758 ldr r3, [sp, 0x50]            |     r3 = *(arg_50h);
    0x0000b75a cmp r3, 0                     |     
                                             |     if (r3 != 0) {
    0x0000b75c bne.w 0xbc3e                  |         goto label_127;
                                             |     }
                                             | label_47:
    0x0000b760 mov r0, r8                    |     r0 = r8;
    0x0000b762 blx 0x8ed8                    |     fcn_00008ed8 ();
    0x0000b766 b.w 0xa300                    |     goto label_18;
                                             | label_109:
    0x0000b76a ldr.w r3, [sl]                |     r3 = *(sl);
                                             |     if (r3 != 0) {
    0x0000b76e cbz r3, 0xb776                |         
    0x0000b770 mov r0, sl                    |         r0 = sl;
    0x0000b772 blx 0x91fc                    |         fcn_000091fc ();
                                             |     }
    0x0000b776 ldr.w r1, [pc, 0x5fc]         |     r1 = *(0x0000bd74);
    0x0000b77a mov r0, r4                    |     r0 = r4;
    0x0000b77c ldr r2, [r4, 4]               |     r2 = *((r4 + 4));
    0x0000b77e add r1, pc                    |     r1 += pc;
    0x0000b780 bl 0x1e4a0                    |     log_out ();
    0x0000b784 ldrd r3, r2, [sp, 0x58]       |     __asm ("ldrd r3, r2, [arg_58h]");
    0x0000b788 cmp.w r2, -1                  |     
    0x0000b78c it eq                         |     
                                             |     if (r2 == -1) {
    0x0000b78e cmpeq r3, -1                  |         __asm ("cmpeq r3, -1");
                                             |     }
                                             |     if (r2 != -1) {
    0x0000b792 beq 0xb798                    |         
    0x0000b794 strd r3, r2, [r4, 0x38]       |         __asm ("strd r3, r2, [r4, 0x38]");
                                             |     }
    0x0000b798 ldr r3, [sp, 0xc]             |     r3 = *(arg_ch);
    0x0000b79a orr r3, r3, 0x800000          |     r3 |= 0x800000;
    0x0000b79e strd r3, r6, [sp, 0xc]        |     __asm ("strd r3, r6, [sp, 0xc]");
    0x0000b7a2 b.w 0xa18c                    |     goto label_1;
                                             | label_86:
    0x0000b7a6 movw r3, 0x48bd               |     
    0x0000b7aa movt r3, 0x80d4               |     r3 = 0x80d448bd;
    0x0000b7ae add r3, r8                    |     r3 += r8;
    0x0000b7b0 cmp r3, 1                     |     
                                             |     if (r3 > 1) {
    0x0000b7b2 bhi.w 0xa54e                  |         goto label_39;
                                             |     }
    0x0000b7b6 b.w 0xa840                    |     goto label_40;
                                             | label_124:
    0x0000b7f6 movw r3, 0xb78d               |     
    0x0000b7fa movt r3, 0x7f2b               |     r3 = 0x7f2bb78d;
    0x0000b7fe cmp r0, r3                    |     
                                             |     if (r0 == r3) {
    0x0000b800 beq.w 0xbc04                  |         goto label_128;
                                             |     }
    0x0000b804 movw r3, 0x4876               |     
    0x0000b808 movt r3, 0x80d4               |     r3 = 0x80d44876;
    0x0000b80c add r3, r0                    |     r3 += r0;
    0x0000b80e cmp r3, 0x10                  |     
    0x0000b810 bhi 0xb868                    |     
                                             |     while (r0 == 0) {
    0x0000b860 movw r1, 0xb746               |         
    0x0000b864 movt r1, 0x7f2b               |         r1 = 0x7f2bb746;
    0x0000b868 ldr.w r3, [pc, 0x510]         |         r3 = *(0x0000bd7c);
    0x0000b86c ldr.w r2, [pc, 0x510]         |         
    0x0000b870 ldr r0, [r4, 4]               |         r0 = *((r4 + 4));
    0x0000b872 add r3, pc                    |         r3 += pc;
    0x0000b874 add r2, pc                    |         r2 = 0x175f8;
    0x0000b876 blx 0x8d24                    |         fcn_00008d24 ();
    0x0000b87a b 0xb2d2                      |         goto label_41;
                                             | label_123:
    0x0000ba78 ldr r0, [r6, 0x14]            |         r0 = *((r6 + 0x14));
    0x0000ba7a blx 0x948c                    |         r0 = fcn_0000948c ();
    0x0000ba7e cmp r0, 0                     |         
    0x0000ba80 beq.w 0xb860                  |         
                                             |     }
    0x0000ba84 str.w r0, [r6, 0x98]          |     __asm ("str.w r0, [r6, 0x98]");
    0x0000ba88 ldr.w r3, [r6, 0x98]          |     r3 = *((r6 + 0x98));
    0x0000ba8c b.w 0xb262                    |     goto label_42;
                                             | label_77:
    0x0000ba90 ldr r2, [pc, 0x310]           |     
    0x0000ba92 mov r3, r8                    |     r3 = r8;
    0x0000ba94 ldr r0, [r4, 4]               |     r0 = *((r4 + 4));
    0x0000ba96 mov r1, sb                    |     r1 = sb;
    0x0000ba98 add r2, pc                    |     r2 = 0x17840;
    0x0000ba9a blx 0x8d24                    |     fcn_00008d24 ();
    0x0000ba9e ldr r3, [sp, 0x50]            |     r3 = *(arg_50h);
    0x0000baa0 cmp r3, 0                     |     
                                             |     if (r3 == 0) {
    0x0000baa2 beq.w 0xa2e2                  |         goto label_43;
                                             |     }
    0x0000baa6 b.w 0xa2dc                    |     goto label_44;
                                             | label_85:
    0x0000baaa blx 0x93d4                    |     ext2fs_get_num_dirs ();
    0x0000baae movs r3, 0                    |     r3 = 0;
    0x0000bab0 str.w r3, [sl]                |     __asm ("str.w r3, [sl]");
    0x0000bab4 b.w 0xa49a                    |     goto label_45;
                                             | label_89:
    0x0000bb8a str.w r8, [sp, 0x24]          |     __asm ("str.w r8, [arg_24h]");
    0x0000bb8e mov r8, r7                    |     r8 = r7;
    0x0000bb90 b.w 0xa544                    |     goto label_46;
                                             | label_88:
    0x0000bb94 ldr r1, [sp, 0xc]             |     r1 = *(arg_ch);
    0x0000bb96 mov r2, r6                    |     r2 = r6;
    0x0000bb98 mov r3, sl                    |     r3 = sl;
    0x0000bb9a mov r0, r4                    |     r0 = r4;
    0x0000bb9c str.w r8, [sp, 0x24]          |     __asm ("str.w r8, [arg_24h]");
    0x0000bba0 bl 0xc304                     |     r0 = fcn_0000c304 (r0, r1, r2, r3);
    0x0000bba4 mov r8, r0                    |     r8 = r0;
    0x0000bba6 b.w 0xa544                    |     goto label_46;
                                             | label_128:
    0x0000bc04 mov r2, r7                    |     r2 = r7;
    0x0000bc06 movs r1, 0x42                 |     r1 = 0x42;
    0x0000bc08 mov r0, r4                    |     r0 = r4;
    0x0000bc0a bl 0x202f8                    |     r0 = fix_problem ();
    0x0000bc0e cmp r0, 0                     |     
                                             |     if (r0 == 0) {
    0x0000bc10 beq.w 0xb2d2                  |         goto label_41;
                                             |     }
                                             | label_127:
    0x0000bc3e ldr r0, [r7]                  |     r0 = *(r7);
    0x0000bc40 blx 0x8ed8                    |     fcn_00008ed8 ();
    0x0000bc44 b 0xb760                      |     goto label_47;
                                             | label_53:
    0x0000bc4c str r3, [r7, 0x28]            |     *((r7 + 0x28)) = r3;
    0x0000bc4e b.w 0x9fc4                    |     goto label_48;
                                             |     if (r1 != 0) {
    0x0000bc50 cbnz r1, 0xbc82               |         void (*0xbc82)() ();
                                             |     }
                                             | label_116:
    0x0000bec2 movs r3, 1                    |     r3 = 1;
    0x0000bec4 str r3, [sp, 0x50]            |     *(arg_50h) = r3;
    0x0000bec6 b.w 0xa24a                    |     goto label_49;
                                             | label_76:
    0x0000befe mov r0, sb                    |     r0 = sb;
    0x0000bf00 blx 0x8ed8                    |     fcn_00008ed8 ();
                                             | label_75:
    0x0000bf04 mov.w r8, 0                   |     r8 = 0;
    0x0000bf08 mov.w sb, 0xc                 |     sb = 0xc;
    0x0000bf0c b.w 0xa2d4                    |     goto label_50;
                                             | label_55:
    0x0000bf2c ldr r0, [r2, 4]               |     r0 = *((r2 + 4));
    0x0000bf2e bl 0xcf28                     |     r0 = fcn_0000cf28 (r0, r1);
    0x0000bf32 blx 0x94bc                    |     fcn_000094bc ();
                                             | label_120:
    0x0000bf36 ldr r4, [sp, 0x10]            |     r4 = *(arg_10h);
    0x0000bf38 movs r2, 0x8c                 |     r2 = 0x8c;
    0x0000bf3a ldr r0, [pc, 0x148]           |     
    0x0000bf3c movs r1, 1                    |     r1 = 1;
    0x0000bf3e ldr r3, [r4]                  |     r3 = *(r4);
    0x0000bf40 add r0, pc                    |     r0 = 0x17fca;
    0x0000bf42 blx 0x937c                    |     fcn_0000937c ();
    0x0000bf46 ldr r0, [pc, 0x140]           |     
    0x0000bf48 movs r2, 0x1e                 |     r2 = 0x1e;
    0x0000bf4a ldr r3, [r4]                  |     r3 = *(r4);
    0x0000bf4c movs r1, 1                    |     r1 = 1;
    0x0000bf4e add r0, pc                    |     r0 = 0x17fdc;
    0x0000bf50 blx 0x937c                    |     fcn_0000937c ();
    0x0000bf54 ldr r0, [pc, 0x134]           |     
    0x0000bf56 movs r2, 0xb                  |     r2 = 0xb;
    0x0000bf58 ldr r3, [r4]                  |     r3 = *(r4);
    0x0000bf5a movs r1, 1                    |     r1 = 1;
    0x0000bf5c add r0, pc                    |     r0 = 0x17fec;
    0x0000bf5e blx 0x937c                    |     fcn_0000937c ();
    0x0000bf62 ldr r0, [pc, 0x12c]           |     
    0x0000bf64 movs r2, 0xe                  |     r2 = 0xe;
    0x0000bf66 ldr r3, [r4]                  |     r3 = *(r4);
    0x0000bf68 movs r1, 1                    |     r1 = 1;
    0x0000bf6a add r0, pc                    |     r0 = 0x18000;
    0x0000bf6c blx 0x937c                    |     fcn_0000937c ();
    0x0000bf70 ldr r0, [pc, 0x120]           |     
    0x0000bf72 movs r2, 9                    |     r2 = 9;
    0x0000bf74 ldr r3, [r4]                  |     r3 = *(r4);
    0x0000bf76 movs r1, 1                    |     r1 = 1;
    0x0000bf78 add r0, pc                    |     r0 = 0x18010;
    0x0000bf7a blx 0x937c                    |     fcn_0000937c ();
    0x0000bf7e ldr r0, [pc, 0x118]           |     
    0x0000bf80 movs r2, 0xb                  |     r2 = 0xb;
    0x0000bf82 ldr r3, [r4]                  |     r3 = *(r4);
    0x0000bf84 movs r1, 1                    |     r1 = 1;
    0x0000bf86 add r0, pc                    |     r0 = 0x18024;
    0x0000bf88 blx 0x937c                    |     fcn_0000937c ();
    0x0000bf8c ldr r0, [pc, 0x10c]           |     
    0x0000bf8e movs r2, 0x12                 |     r2 = 0x12;
    0x0000bf90 ldr r3, [r4]                  |     r3 = *(r4);
    0x0000bf92 movs r1, 1                    |     r1 = 1;
    0x0000bf94 add r0, pc                    |     r0 = 0x18034;
    0x0000bf96 blx 0x937c                    |     fcn_0000937c ();
    0x0000bf9a ldr r0, [pc, 0x104]           |     
    0x0000bf9c movs r2, 0x15                 |     r2 = 0x15;
    0x0000bf9e ldr r3, [r4]                  |     r3 = *(r4);
    0x0000bfa0 movs r1, 1                    |     r1 = 1;
    0x0000bfa2 add r0, pc                    |     r0 = 0x18048;
    0x0000bfa4 blx 0x937c                    |     fcn_0000937c ();
    0x0000bfa8 ldr r0, [pc, 0xf8]            |     
    0x0000bfaa movs r2, 0x15                 |     r2 = 0x15;
    0x0000bfac ldr r3, [r4]                  |     r3 = *(r4);
    0x0000bfae movs r1, 1                    |     r1 = 1;
    0x0000bfb0 add r0, pc                    |     r0 = 0x18058;
    0x0000bfb2 blx 0x937c                    |     fcn_0000937c ();
    0x0000bfb6 ldr r0, [pc, 0xf0]            |     
    0x0000bfb8 movs r2, 0x18                 |     r2 = 0x18;
    0x0000bfba ldr r3, [r4]                  |     r3 = *(r4);
    0x0000bfbc movs r1, 1                    |     r1 = 1;
    0x0000bfbe add r0, pc                    |     r0 = 0x1806c;
    0x0000bfc0 blx 0x937c                    |     fcn_0000937c ();
    0x0000bfc4 ldr r0, [pc, 0xe4]            |     
    0x0000bfc6 movs r2, 0x1c                 |     r2 = 0x1c;
    0x0000bfc8 ldr r3, [r4]                  |     r3 = *(r4);
    0x0000bfca movs r1, 1                    |     r1 = 1;
    0x0000bfcc add r0, pc                    |     r0 = 0x1807c;
    0x0000bfce blx 0x937c                    |     fcn_0000937c ();
    0x0000bfd2 ldr r0, [pc, 0xdc]            |     
    0x0000bfd4 movs r2, 0xd                  |     r2 = 0xd;
    0x0000bfd6 ldr r3, [r4]                  |     r3 = *(r4);
    0x0000bfd8 movs r1, 1                    |     r1 = 1;
    0x0000bfda add r0, pc                    |     r0 = 0x18090;
    0x0000bfdc blx 0x937c                    |     fcn_0000937c ();
    0x0000bfe0 ldr r0, [pc, 0xd0]            |     
    0x0000bfe2 movs r2, 0x10                 |     r2 = 0x10;
    0x0000bfe4 ldr r3, [r4]                  |     r3 = *(r4);
    0x0000bfe6 movs r1, 1                    |     r1 = 1;
    0x0000bfe8 add r0, pc                    |     r0 = 0x180a0;
    0x0000bfea blx 0x937c                    |     fcn_0000937c ();
    0x0000bfee ldr r0, [pc, 0xc8]            |     
    0x0000bff0 movs r2, 0xc                  |     r2 = 0xc;
    0x0000bff2 ldr r3, [r4]                  |     r3 = *(r4);
    0x0000bff4 movs r1, 1                    |     r1 = 1;
    0x0000bff6 add r0, pc                    |     r0 = 0x180b4;
    0x0000bff8 blx 0x937c                    |     fcn_0000937c ();
    0x0000bffc ldr r0, [pc, 0xbc]            |     
    0x0000bffe movs r2, 0x10                 |     r2 = 0x10;
    0x0000c000 ldr r3, [r4]                  |     r3 = *(r4);
    0x0000c002 movs r1, 1                    |     r1 = 1;
    0x0000c004 add r0, pc                    |     r0 = 0x180c4;
    0x0000c006 blx 0x937c                    |     fcn_0000937c ();
    0x0000c00a ldr r1, [r4]                  |     r1 = *(r4);
    0x0000c00c movs r0, 0xa                  |     r0 = 0xa;
    0x0000c00e blx 0x9558                    |     fcn_00009558 ();
    0x0000c012 movs r0, 1                    |     r0 = 1;
    0x0000c014 blx 0x98b8                    |     fcn_000098b8 ();
    0x0000c018 ldr r3, [sp, 8]               |     r3 = *(arg_8h);
    0x0000c01a ldr r1, [pc, 0xa4]            |     
    0x0000c01c ldr r0, [r3]                  |     r0 = *(r3);
    0x0000c01e add r1, pc                    |     r1 = 0x180e4;
    0x0000c020 bl 0x1e598                    |     fatal_error ();
    0x0000c024 ldr r1, [pc, 0x9c]            |     
    0x0000c026 movs r2, 0xb                  |     r2 = 0xb;
    0x0000c028 mov r0, r7                    |     r0 = r7;
    0x0000c02a add r1, pc                    |     r1 = 0x180f2;
    0x0000c02c blx 0x913c                    |     fcn_0000913c ();
    0x0000c030 b.w 0xb1fe                    |     goto label_51;
                                             | label_83:
    0x0000c04a ldr r2, [sp, 0x24]            |     r2 = *(arg_24h);
    0x0000c04c ldr r3, [r4, 8]               |     r3 = *((r4 + 8));
    0x0000c04e str r2, [sp, 0x10]            |     *(arg_10h) = r2;
    0x0000c050 b.w 0xa884                    |     goto label_52;
                                             | label_79:
    0x0000c054 mov r0, r8                    |     r0 = r8;
    0x0000c056 blx 0x8ed8                    |     fcn_00008ed8 ();
    0x0000c05a ldr r3, [pc, 0x70]            |     
    0x0000c05c mov r1, sb                    |     r1 = sb;
    0x0000c05e ldr r2, [pc, 0x70]            |     
    0x0000c060 ldr r0, [r4, 4]               |     r0 = *((r4 + 4));
    0x0000c062 add r3, pc                    |     r3 = 0x18134;
    0x0000c064 add r2, pc                    |     r2 = 0x1813a;
    0x0000c066 blx 0x8d24                    |     fcn_00008d24 ();
    0x0000c06a b.w 0xaa58                    |     goto label_17;
    0x0000c108 adds r0, 0x14                 |     r0 += 0x14;
    0x0000c10a b 0xbc4c                      |     goto label_53;
                                             |     do {
    0x00029a46 mov r0, r4                    |         r0 = r4;
    0x00029a48 add sp, 8                     |         
    0x00029a4a pop {r4, pc}                  |         
    0x00029a70 b 0x29a46                     |         
                                             |     } while (1);
                                             | }
    ; assembly                                           | /* r2dec pseudo code output */
                                                         | /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-80367616.squashfs_v4_le_extract/usr/sbin/fsck.ext3 @ 0x282b4 */
                                                         | #include <stdint.h>
                                                         |  
    ; (fcn) fcn.000282b4 ()                              | void fcn_000282b4 (int16_t arg1, int16_t arg2) {
                                                         |     int16_t var_4h;
                                                         |     r0 = arg1;
                                                         |     r1 = arg2;
    0x000282b4 push.w {r4, r5, r6, r7, r8, sb, lr}       |     
    0x000282b8 mov r6, r0                                |     r6 = r0;
    0x000282ba sub sp, 0xc                               |     
    0x000282bc movs r0, 0x1c                             |     r0 = 0x1c;
    0x000282be mov r7, r1                                |     r7 = r1;
    0x000282c0 blx 0x948c                                |     r0 = fcn_0000948c ();
    0x000282c4 cmp r0, 0                                 |     
                                                         |     if (r0 == 0) {
    0x000282c6 beq 0x28388                               |         goto label_6;
                                                         |     }
    0x000282c8 movw r1, 0x6019                           |     
    0x000282cc movs r2, 0                                |     r2 = 0;
    0x000282ce mov r4, r0                                |     r4 = r0;
    0x000282d0 movt r1, 0xaaca                           |     r1 = 0xaaca6019;
    0x000282d4 strd r2, r2, [r0, 4]                      |     __asm ("strd r2, r2, [r0, 4]");
    0x000282d8 strd r2, r2, [r0, 0xc]                    |     __asm ("strd r2, r2, [r0, 0xc]");
    0x000282dc strd r2, r2, [r0, 0x14]                   |     __asm ("strd r2, r2, [r0, 0x14]");
    0x000282e0 mov r0, r6                                |     r0 = r6;
    0x000282e2 str r1, [r4]                              |     *(r4) = r1;
    0x000282e4 blx 0x90e8                                |     fcn_000090e8 ();
    0x000282e8 ldrb r3, [r6]                             |     r3 = *(r6);
    0x000282ea add.w r8, r0, 1                           |     r8 = r0 + 1;
    0x000282ee cmp r3, 0x7e                              |     
    0x000282f0 beq 0x28320                               |     
                                                         |     while (r3 != 0x2f) {
                                                         | label_0:
    0x000282f2 mov r0, r8                                |         r0 = r8;
    0x000282f4 blx 0x948c                                |         r0 = fcn_0000948c ();
    0x000282f8 mov r5, r0                                |         r5 = r0;
    0x000282fa cmp r0, 0                                 |         
                                                         |         if (r0 == 0) {
    0x000282fc beq 0x2838c                               |             goto label_7;
                                                         |         }
    0x000282fe mov r2, r8                                |         r2 = r8;
    0x00028300 mov r1, r6                                |         r1 = r6;
    0x00028302 blx 0x913c                                |         fcn_0000913c ();
                                                         | label_1:
    0x00028306 ldr r1, [pc, 0xd8]                        |         
    0x00028308 mov r0, r5                                |         r0 = r5;
    0x0002830a str r5, [r4, 4]                           |         *((r4 + 4)) = r5;
    0x0002830c add r1, pc                                |         r1 = 0x506f2;
    0x0002830e blx 0x98a0                                |         r0 = fcn_000098a0 ();
                                                         |         if (r0 != 0) {
    0x00028312 cbnz r0, 0x28358                          |             goto label_8;
                                                         |         }
                                                         | label_2:
    0x00028314 movs r5, 0                                |         r5 = 0;
    0x00028316 str r4, [r7]                              |         *(r7) = r4;
                                                         | label_3:
    0x00028318 mov r0, r5                                |         r0 = r5;
    0x0002831a add sp, 0xc                               |         
    0x0002831c pop.w {r4, r5, r6, r7, r8, sb, pc}        |         
    0x00028320 ldrb r3, [r6, 1]                          |         r3 = *((r6 + 1));
    0x00028322 cmp r3, 0x2f                              |         
    0x00028324 bne 0x282f2                               |         
                                                         |     }
    0x00028326 ldr r0, [pc, 0xbc]                        |     
    0x00028328 add r0, pc                                |     r0 = 0x50712;
    0x0002832a blx 0x8bf4                                |     r0 = printf_chk ()
    0x0002832e cmp r0, 0                                 |     
                                                         |     if (r0 == 0) {
    0x00028330 beq 0x282f2                               |         goto label_0;
                                                         |     }
    0x00028332 str r0, [sp, 4]                           |     var_4h = r0;
    0x00028334 blx 0x90e8                                |     r0 = fcn_000090e8 ();
    0x00028338 mov sb, r0                                |     sb = r0;
    0x0002833a add r0, r8                                |     r0 += r8;
    0x0002833c blx 0x948c                                |     fcn_0000948c ();
    0x00028340 ldr r1, [sp, 4]                           |     r1 = var_4h;
    0x00028342 mov r5, r0                                |     r5 = r0;
                                                         |     if (r0 == 0) {
    0x00028344 cbz r0, 0x2838c                           |         goto label_7;
                                                         |     }
    0x00028346 mov r2, sb                                |     r2 = sb;
    0x00028348 blx 0x913c                                |     fcn_0000913c ();
    0x0002834c adds r1, r6, 1                            |     r1 = r6 + 1;
    0x0002834e add.w r0, r5, sb                          |     r0 = r5 + sb;
    0x00028352 blx 0x91d8                                |     fcn_000091d8 ();
    0x00028356 b 0x28306                                 |     goto label_1;
                                                         | label_8:
    0x00028358 mov r0, r4                                |     r0 = r4;
    0x0002835a bl 0x281bc                                |     r0 = fcn_000281bc (r0, r1);
    0x0002835e mov r5, r0                                |     r5 = r0;
    0x00028360 cmp r0, 0                                 |     
                                                         |     if (r0 == 0) {
    0x00028362 beq 0x28314                               |         goto label_2;
                                                         |     }
    0x00028364 ldr r0, [r4, 0x14]                        |     r0 = *((r4 + 0x14));
                                                         |     if (r0 != 0) {
    0x00028366 cbz r0, 0x2837a                           |         
    0x00028368 ldr r2, [r0]                              |         r2 = *(r0);
    0x0002836a movw r3, 0x6001                           |         
    0x0002836e movt r3, 0xaaca                           |         r3 = 0xaaca6001;
    0x00028370 movs r3, 0xca                             |         r3 = 0xca;
    0x00028372 cmp r2, r3                                |         
                                                         |         if (r2 != r3) {
    0x00028374 bne 0x2837a                               |             goto label_9;
                                                         |         }
    0x00028376 bl 0x27b60                                |         fcn_00027b60 (r0, r1);
                                                         |     }
                                                         | label_9:
    0x0002837a ldr r0, [r4, 4]                           |     r0 = *((r4 + 4));
    0x0002837c blx 0x8ed8                                |     fcn_00008ed8 ();
    0x00028380 mov r0, r4                                |     r0 = r4;
    0x00028382 blx 0x8ed8                                |     fcn_00008ed8 ();
    0x00028386 b 0x28318                                 |     goto label_3;
                                                         | label_6:
    0x00028388 movs r5, 0xc                              |     r5 = 0xc;
    0x0002838a b 0x28318                                 |     goto label_3;
                                                         | label_7:
    0x0002838c ldr r5, [r4, 0x14]                        |     r5 = *((r4 + 0x14));
                                                         |     if (r5 != 0) {
    0x0002838e cbz r5, 0x2839e                           |         
    0x00028390 ldr r6, [r5]                              |         r6 = *(r5);
    0x00028392 movw r3, 0x6001                           |         
    0x00028396 movt r3, 0xaaca                           |         r3 = 0xaaca6001;
    0x0002839a cmp r6, r3                                |         
                                                         |         if (r6 == r3) {
    0x0002839c beq 0x283b2                               |             goto label_10;
                                                         |         }
                                                         |     }
                                                         | label_5:
    0x0002839e ldr r0, [r4, 4]                           |     r0 = *((r4 + 4));
    0x000283a0 blx 0x8ed8                                |     fcn_00008ed8 ();
    0x000283a4 mov r0, r4                                |     r0 = r4;
    0x000283a6 blx 0x8ed8                                |     fcn_00008ed8 ();
    0x000283aa blx 0x98dc                                |     r0 = fcn_000098dc ();
    0x000283ae ldr r5, [r0]                              |     r5 = *(r0);
    0x000283b0 b 0x28318                                 |     goto label_3;
                                                         | label_10:
    0x000283b2 ldr r0, [r5, 4]                           |     r0 = *((r5 + 4));
    0x000283b4 blx 0x8ed8                                |     fcn_00008ed8 ();
    0x000283b8 ldr r0, [r5, 8]                           |     r0 = *((r5 + 8));
    0x000283ba blx 0x8ed8                                |     fcn_00008ed8 ();
    0x000283be ldr r0, [r5, 0x14]                        |     r0 = *((r5 + 0x14));
                                                         |     do {
                                                         |         if (r0 == 0) {
                                                         | label_4:
    0x000283c0 cbz r0, 0x283d6                           |             goto label_11;
                                                         |         }
    0x000283c2 ldr r3, [r0]                              |         r3 = *(r0);
    0x000283c4 ldr r7, [r0, 0x1c]                        |         r7 = *((r0 + 0x1c));
    0x000283c6 cmp r3, r6                                |         
                                                         |         if (r3 == r6) {
    0x000283c8 beq 0x283ce                               |             goto label_12;
                                                         |         }
    0x000283ca mov r0, r7                                |         r0 = r7;
    0x000283cc b 0x283c0                                 |         
                                                         |     } while (1);
                                                         | label_12:
    0x000283ce bl 0x27b60                                |     fcn_00027b60 (r0, r1);
    0x000283d2 mov r0, r7                                |     r0 = r7;
    0x000283d4 b 0x283c0                                 |     goto label_4;
                                                         | label_11:
    0x000283d6 mov r0, r5                                |     r0 = r5;
    0x000283d8 blx 0x8ed8                                |     fcn_00008ed8 ();
    0x000283dc b 0x2839e                                 |     goto label_5;
                                                         | }
    ; 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 @ 0xd2dc */
                                                     | #include <stdint.h>
                                                     |  
    ; (fcn) sym.e2fsck_allocate_context ()           | void e2fsck_allocate_context (int16_t arg1) {
                                                     |     r0 = arg1;
    0x0000d2dc push {r3, r4, r5, lr}                 |     
    0x0000d2de movs r1, 1                            |     r1 = 1;
    0x0000d2e0 mov r5, r0                            |     r5 = r0;
    0x0000d2e2 mov.w r0, 0x3b0                       |     r0 = 0x3b0;
    0x0000d2e6 blx 0x8c80                            |     r0 = fcn_00008c80 ();
                                                     |     if (r0 == 0) {
    0x0000d2ea cbz r0, 0xd348                        |         goto label_0;
                                                     |     }
    0x0000d2ec movs r3, 2                            |     r3 = 2;
    0x0000d2ee mov.w r1, 0x100                       |     r1 = 0x100;
    0x0000d2f2 str.w r3, [r0, 0x33c]                 |     __asm ("str.w r3, aav.0x000000ff");
    0x0000d2f6 mov r4, r0                            |     r4 = r0;
    0x0000d2f8 str.w r1, [r0, 0x270]                 |     __asm ("str.w r1, aav.0x000000ff");
    0x0000d2fc movs r2, 1                            |     r2 = 1;
    0x0000d2fe ldr r0, [pc, 0x54]                    |     
    0x0000d300 movs r3, 0xff                         |     r3 = 0xff;
    0x0000d302 str.w r2, [r4, 0x344]                 |     __asm ("str.w r2, aav.0x000000ff");
    0x0000d306 str.w r3, [r4, 0x278]                 |     __asm ("str.w r3, aav.0x000000ff");
    0x0000d30a add r0, pc                            |     r0 = 0x1a664;
    0x0000d30c blx 0x8bf4                            |     r0 = printf_chk ()
                                                     |     if (r0 == 0) {
    0x0000d310 cbz r0, 0xd324                        |         goto label_1;
                                                     |     }
    0x0000d312 movs r2, 0                            |     r2 = 0;
    0x0000d314 mov r1, r2                            |     r1 = r2;
    0x0000d316 blx 0x8ebc                            |     fcn_00008ebc ();
    0x0000d31a str.w r0, [r4, 0x334]                 |     __asm ("str.w r0, aav.0x000000ff");
    0x0000d31e movs r0, 0                            |     r0 = 0;
    0x0000d320 str r4, [r5]                          |     *(r5) = r4;
                                                     |     do {
    0x0000d322 pop {r3, r4, r5, pc}                  |         
                                                     | label_1:
    0x0000d324 blx 0x93ec                            |         setvbuf (r0, r1, r2, r3);
    0x0000d328 movw r3, 0x814f                       |         
    0x0000d32c str.w r0, [r4, 0x334]                 |         __asm ("str.w r0, aav.0x000000ff");
    0x0000d330 movt r3, 0x4b3d                       |         r3 = 0x4b3d814f;
    0x0000d334 str r4, [r5]                          |         *(r5) = r4;
    0x0000d336 cmp r0, r3                            |         
    0x0000d338 mov.w r0, 0                           |         r0 = 0;
    0x0000d33c ittt le                               |         
                                                     |         if (r0 > r3) {
    0x0000d33e ldrle r3, [r4, 0x24]                  |             r3 = *((r4 + 0x24));
                                                     |         }
                                                     |         if (r0 > r3) {
    0x0000d340 orrle r3, r3, 0x2000                  |             r3 |= 0x2000;
                                                     |         }
                                                     |         if (r0 <= r3) {
    0x0000d344 str r3, [r4, 0x24]                    |             *((r4 + 0x24)) = r3;
                                                     |         }
    0x0000d346 b 0xd322                              |         
                                                     |     } while (1);
                                                     | label_0:
    0x0000d348 movw r0, 0xb746                       |     
    0x0000d34c movt r0, 0x7f2b                       |     r0 = 0x7f2bb746;
    0x0000d350 pop {r3, r4, r5, pc}                  |     
                                                     | }

[*] Function printf used 8 times fsck.ext3