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