[*] Binary protection state of mkfs.ext3
Full RELRO Canary found NX enabled PIE enabled No RPATH No RUNPATH No Symbols
[*] Function strcat tear down of mkfs.ext3
r2dec has crashed (info: /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/sbin/mkfs.ext3 @ 0x7d48).
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-50593792.squashfs_v4_le_extract/usr/sbin/mkfs.ext3 @ 0x819c */
| #include <stdint.h>
|
; (fcn) fcn.0000819c () | void fcn_0000819c (int16_t arg_0h, int16_t arg1, uint32_t arg2) {
| int16_t var_0h;
| int16_t var_ch;
| int16_t var_14h;
| int16_t var_18h;
| int16_t var_1ch;
| r0 = arg1;
| r1 = arg2;
0x0000819c ldr r2, [pc, 0x178] |
0x0000819e ldr r3, [pc, 0x17c] | r3 = *(0x831e);
0x000081a0 push.w {r4, r5, r6, r7, r8, sb, sl, fp, lr} |
0x000081a4 sub sp, 0x24 |
0x000081a6 add r2, pc | r2 = 0x104c2;
0x000081a8 ldr.w fp, [pc, 0x174] | fp = *(0x00008320);
0x000081ac ldr r3, [r2, r3] |
0x000081ae add fp, pc |
0x000081b0 ldr r3, [r3] | r3 = *(0x104c2);
0x000081b2 str r3, [sp, 0x1c] | var_1ch = r3;
0x000081b4 mov.w r3, 0 | r3 = 0;
0x000081b8 cmp r1, 0 |
| if (r1 == 0) {
0x000081ba beq 0x82a8 | goto label_2;
| }
0x000081bc ldr r3, [r0, 0x10] | r3 = *(arg_0hx10);
0x000081be mov r5, r0 | r5 = r0;
0x000081c0 ldr r2, [r0, 0x20] | r2 = *(arg_0hx20);
0x000081c2 mov sb, r1 | sb = r1;
0x000081c4 ldr r6, [r3, 0x14] | r6 = *((r3 + 0x14));
0x000081c6 adds r2, 1 | r2++;
0x000081c8 adds r4, r6, r2 | r4 = r6 + r2;
| if (r4 >= r6) {
0x000081ca bhs 0x81e0 | goto label_3;
| }
| do {
0x000081cc mov r1, r6 | r1 = r6;
0x000081ce mov r0, sb | r0 = sb;
0x000081d0 blx 0x3474 | r0 = loc_imp_gmon_start_ ();
0x000081d4 cmp r0, 0 |
| if (r0 != 0) {
0x000081d6 bne 0x82c2 | goto label_4;
| }
0x000081d8 adds r6, 1 | r6++;
0x000081da cmp r4, r6 |
0x000081dc bhs 0x81cc |
| } while (r4 >= r6);
0x000081de ldr r3, [r5, 0x10] | r3 = *((r5 + 0x10));
| label_3:
0x000081e0 ldr r1, [r3, 0x14] | r1 = *((r3 + 0x14));
0x000081e2 ldr r2, [r3, 0x20] | r2 = *((r3 + 0x20));
0x000081e4 add.w r8, r1, r2 | r8 = r1 + r2;
0x000081e8 ldr r1, [r5, 0x1c] | r1 = *((r5 + 0x1c));
0x000081ea cmp r1, 1 |
| if (r1 < 1) {
0x000081ec bls 0x827a | goto label_5;
| }
0x000081ee ldr r0, [pc, 0x134] |
0x000081f0 mov.w sl, 1 | sl = 1;
0x000081f4 ldr r2, [r5, 0x20] | r2 = *((r5 + 0x20));
0x000081f6 add r0, pc | r0 = 0x10520;
0x000081f8 str r0, [sp, 0xc] | var_ch = r0;
| label_1:
0x000081fa adds r0, r2, 1 | r0 = r2 + 1;
0x000081fc itt ne |
| if (r0 == r2) {
0x000081fe movne r7, 0 | r7 = 0;
| }
| if (r0 == r2) {
0x00008200 movne r4, r7 | r4 = r7;
| }
| if (r0 != r2) {
0x00008202 bne 0x8242 | goto label_6;
| }
0x00008204 b 0x826e | goto label_7;
| label_0:
0x00008206 movs r3, 0 | r3 = 0;
0x00008208 mov r2, r6 | r2 = r6;
0x0000820a mov r0, r5 | r0 = r5;
0x0000820c adds r7, 1 | r7++;
0x0000820e blx 0x3200 | r0 = fcn_00003200 ();
0x00008212 mov r6, r0 | r6 = r0;
0x00008214 mov r0, r5 | r0 = r5;
0x00008216 mov r1, r6 | r1 = r6;
0x00008218 blx 0x340c | fcn_0000340c ();
0x0000821c mov r1, r6 | r1 = r6;
0x0000821e adds r2, r0, 1 | r2 = r0 + 1;
0x00008220 mov r0, r5 | r0 = r5;
0x00008222 blx 0x354c | ext2fs_read_bb_FILE ();
0x00008226 mov r0, r5 | r0 = r5;
0x00008228 mov r1, r6 | r1 = r6;
0x0000822a blx 0x31e8 | fcn_000031e8 ();
0x0000822e ldr r0, [r5, 0x10] | r0 = *((r5 + 0x10));
0x00008230 movs r2, 1 | r2 = 1;
0x00008232 movs r3, 0 | r3 = 0;
0x00008234 blx 0x3164 | fcn_00003164 ();
| do {
0x00008238 ldr r2, [r5, 0x20] | r2 = *((r5 + 0x20));
0x0000823a adds r4, 1 | r4++;
0x0000823c adds r3, r2, 1 | r3 = r2 + 1;
0x0000823e cmp r3, r4 |
| if (r3 < r4) {
0x00008240 bls 0x826a | goto label_8;
| }
| label_6:
0x00008242 add.w r6, r4, r8 | r6 = r4 + r8;
0x00008246 mov r0, sb | r0 = sb;
0x00008248 mov r1, r6 | r1 = r6;
0x0000824a blx 0x3474 | r0 = loc_imp_gmon_start_ ();
0x0000824e cmp r0, 0 |
0x00008250 beq 0x8238 |
| } while (r0 == 0);
0x00008252 cmp r7, 0 |
| if (r7 != 0) {
0x00008254 bne 0x8206 | goto label_0;
| }
0x00008256 ldr r0, [pc, 0xd0] |
0x00008258 mov r3, r8 | r3 = r8;
0x0000825a ldr r2, [sp, 0xc] | r2 = var_ch;
0x0000825c movs r1, 1 | r1 = 1;
0x0000825e ldr.w r0, [fp, r0] | r0 = *((fp + r0));
0x00008262 ldr r0, [r0] | r0 = *(0x832a);
0x00008264 blx 0x3684 | ext2fs_write_inode ();
0x00008268 b 0x8206 | goto label_0;
| label_8:
0x0000826a ldr r3, [r5, 0x10] | r3 = *((r5 + 0x10));
0x0000826c ldr r1, [r5, 0x1c] | r1 = *((r5 + 0x1c));
| label_7:
0x0000826e ldr r0, [r3, 0x20] | r0 = *((r3 + 0x20));
0x00008270 add.w sl, sl, 1 | sl++;
0x00008274 cmp r1, sl |
0x00008276 add r8, r0 | r8 += r0;
| if (r1 > sl) {
0x00008278 bhi 0x81fa | goto label_1;
| }
| label_5:
0x0000827a add r1, sp, 0x18 | r1 += var_18h;
0x0000827c mov r0, sb | r0 = sb;
0x0000827e blx 0x3804 | r0 = ext2fs_xattr_set ();
0x00008282 mov r1, r0 | r1 = r0;
0x00008284 cmp r0, 0 |
| if (r0 != 0) {
0x00008286 bne 0x8300 | goto label_9;
| }
0x00008288 add r4, sp, 0x14 | r4 += var_14h;
0x0000828a b 0x8296 |
| while (r0 != 0) {
0x0000828c ldr r2, [sp, 0x14] | r2 = var_14h;
0x0000828e movs r3, 0 | r3 = 0;
0x00008290 ldr r0, [r5, 0x30] | r0 = *((r5 + 0x30));
0x00008292 blx 0x3948 | ext2fs_free_blocks_count ();
0x00008296 ldr r0, [sp, 0x18] | r0 = var_18h;
0x00008298 mov r1, r4 | r1 = r4;
0x0000829a blx 0x399c | r0 = fcn_0000399c ();
0x0000829e cmp r0, 0 |
0x000082a0 bne 0x828c |
| }
0x000082a2 ldr r0, [sp, 0x18] | r0 = var_18h;
0x000082a4 blx 0x390c | abort ();
| label_2:
0x000082a8 ldr r2, [pc, 0x80] |
0x000082aa ldr r3, [pc, 0x70] | r3 = *(0x831e);
0x000082ac add r2, pc | r2 = 0x105dc;
0x000082ae ldr r3, [r2, r3] | r3 = *(0x105dc);
0x000082b0 ldr r2, [r3] | r2 = *(0x105dc);
0x000082b2 ldr r3, [sp, 0x1c] | r3 = var_1ch;
0x000082b4 eors r2, r3 | r2 ^= r3;
0x000082b6 mov.w r3, 0 | r3 = 0;
| if (r2 == r3) {
0x000082ba bne 0x82fc |
0x000082bc add sp, 0x24 |
0x000082be pop.w {r4, r5, r6, r7, r8, sb, sl, fp, pc} |
| label_4:
0x000082c2 ldr r2, [pc, 0x64] | r2 = *(0x832a);
0x000082c4 mov r3, r6 | r3 = r6;
0x000082c6 movs r1, 1 | r1 = 1;
0x000082c8 ldr.w r6, [fp, r2] | r6 = *((fp + r2));
0x000082cc ldr r2, [pc, 0x60] |
0x000082ce ldr r0, [r6] | r0 = *(r6);
0x000082d0 add r2, pc | r2 = 0x10604;
0x000082d2 blx 0x3684 | ext2fs_write_inode ();
0x000082d6 ldr r3, [r5, 0x10] | r3 = *((r5 + 0x10));
0x000082d8 movs r1, 1 | r1 = 1;
0x000082da ldr r2, [pc, 0x58] |
0x000082dc str r4, [sp] | *(sp) = r4;
0x000082de ldr r3, [r3, 0x14] | r3 = *((r3 + 0x14));
0x000082e0 add r2, pc | r2 = 0x1061a;
0x000082e2 ldr r0, [r6] | r0 = *(r6);
0x000082e4 blx 0x3684 | ext2fs_write_inode ();
0x000082e8 ldr r0, [pc, 0x4c] |
0x000082ea movs r2, 0xd | r2 = 0xd;
0x000082ec ldr r3, [r6] | r3 = *(r6);
0x000082ee movs r1, 1 | r1 = 1;
0x000082f0 add r0, pc | r0 = 0x1062c;
0x000082f2 blx 0x3324 | strcat (r0, r1)
0x000082f6 movs r0, 1 | r0 = 1;
0x000082f8 blx 0x34b0 | r0 = feof (r0);
| }
0x000082fc blx 0x31f4 | fcn_000031f4 ();
| label_9:
0x00008300 ldr r0, [pc, 0x38] |
0x00008302 ldr r3, [pc, 0x3c] |
0x00008304 ldr r2, [pc, 0x3c] |
0x00008306 add r0, pc | r0 = 0x10646;
0x00008308 add r3, pc | r3 = 0x1064e;
0x0000830a add r2, pc | r2 = 0x10652;
0x0000830c blx 0x32cc | fcn_000032cc ();
0x00008310 movs r0, 1 | r0 = 1;
0x00008312 blx 0x34b0 | feof (r0);
0x00008316 nop |
0x00008318 invalid |
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/sbin/mkfs.ext3 @ 0x8dd4 */
| #include <stdint.h>
|
; (fcn) fcn.00008dd4 () | void fcn_00008dd4 (int16_t arg1) {
| int16_t var_0h;
| int16_t var_8h;
| int16_t var_ch;
| int16_t var_10h;
| int16_t var_14h;
| int16_t var_18h;
| int16_t var_1ch;
| int16_t var_20h;
| int16_t var_24h;
| int16_t var_2ch;
| int16_t var_30h;
| int16_t var_34h;
| r0 = arg1;
0x00008dd4 ldmdahs ip!, {r0, r1, r2, r3, r4, r6, r7, fp, ip, sp, lr, pc} | __asm ("ldmdahs ip!, {r0, r1, r2, r3, r4, r6, r7, fp, ip, sp, lr, pc}");
0x00008dd8 ldr.w r3, [pc, 0x83c] |
0x00008ddc push.w {r4, r5, r6, r7, r8, sb, sl, fp, lr} |
0x00008de0 sub sp, 0x3c |
0x00008de2 add r2, pc | r2 += pc;
0x00008de4 ldr.w r8, [pc, 0x834] | r8 = *(0x0000961c);
0x00008de8 mov r5, r0 | r5 = r0;
0x00008dea ldr r3, [r2, r3] | r3 = *((r2 + r3));
0x00008dec add r8, pc | r8 += pc;
0x00008dee ldr r3, [r3] | r3 = *(0x9618);
0x00008df0 str r3, [sp, 0x34] | var_34h = r3;
0x00008df2 mov.w r3, 0 | r3 = 0;
0x00008df6 blx 0x3504 | r0 = e2p_os2string ();
0x00008dfa adds r4, r0, 1 | r4 = r0 + 1;
0x00008dfc mov r0, r4 | r0 = r4;
0x00008dfe blx 0x3450 | r0 = strerror (r0);
0x00008e02 cmp r0, 0 |
| if (r0 == 0) {
0x00008e04 beq.w 0x9494 | goto label_7;
| }
0x00008e08 mov r2, r4 | r2 = r4;
0x00008e0a mov r1, r5 | r1 = r5;
0x00008e0c mov fp, r0 |
0x00008e0e ldr.w r7, [pc, 0x810] |
0x00008e12 blx 0x30e0 | fcn_000030e0 ();
0x00008e16 ldr.w r3, [pc, 0x80c] | r3 = *(0x00009624);
0x00008e1a mov sl, fp | sl = fp;
0x00008e1c ldr.w r2, [pc, 0x808] | r2 = *(0x00009628);
0x00008e20 movs r6, 0 | r6 = 0;
0x00008e22 ldr.w r5, [pc, 0x808] | r5 = *(0x0000962c);
0x00008e26 add r7, pc | r7 = 0x1244c;
0x00008e28 add r3, pc | r3 += pc;
0x00008e2a str r6, [sp, 0xc] | var_ch = r6;
0x00008e2c add r2, pc | r2 += pc;
0x00008e2e str r3, [sp, 0x14] | var_14h = r3;
0x00008e30 adds r3, 0x24 | r3 += 0x24;
0x00008e32 add r5, pc | r5 += pc;
0x00008e34 str r3, [sp, 0x18] | var_18h = r3;
0x00008e36 add.w r3, r2, 0x18 | r3 = r2 + 0x18;
0x00008e3a str r3, [sp, 0x1c] | var_1ch = r3;
0x00008e3c ldrb.w r3, [sl] | r3 = *(sl);
0x00008e40 str r6, [sp, 8] | var_8h = r6;
0x00008e42 str r2, [sp, 0x10] | var_10h = r2;
0x00008e44 cmp r3, 0 |
| if (r3 == 0) {
0x00008e46 beq 0x8ec8 | goto label_8;
| }
| do {
0x00008e48 movs r1, 0x2c | r1 = 0x2c;
0x00008e4a mov r0, sl | r0 = sl;
0x00008e4c blx 0x3534 | r0 = ext2fs_bg_free_blocks_count_set ();
0x00008e50 mov r4, r0 | r4 = r0;
0x00008e52 str r0, [sp, 0x2c] | var_2ch = r0;
| if (r0 != 0) {
0x00008e54 cbz r0, 0x8e5e |
0x00008e56 movs r3, 0 | r3 = 0;
0x00008e58 strb r3, [r0] | *(r0) = r3;
0x00008e5a ldr r4, [sp, 0x2c] | r4 = var_2ch;
0x00008e5c adds r4, 1 | r4++;
| }
0x00008e5e movs r1, 0x3d | r1 = 0x3d;
0x00008e60 mov r0, sl | r0 = sl;
0x00008e62 blx 0x3534 | r0 = ext2fs_bg_free_blocks_count_set ();
0x00008e66 mov sb, r0 | sb = r0;
| if (r0 != 0) {
0x00008e68 cbz r0, 0x8e70 |
0x00008e6a movs r3, 0 | r3 = 0;
0x00008e6c strb r3, [sb], 1 | *(sb) = r3;
| sb++;
| }
0x00008e70 mov r1, r7 | r1 = r7;
0x00008e72 mov r0, sl | r0 = sl;
0x00008e74 blx 0x2f98 | r0 = fcn_00002f98 ();
0x00008e78 cmp r0, 0 |
| if (r0 == 0) {
0x00008e7a beq 0x8f1a | goto label_9;
| }
0x00008e7c ldr.w r1, [pc, 0x7b0] |
0x00008e80 mov r0, sl | r0 = sl;
0x00008e82 add r1, pc | r1 = 0x124b6;
0x00008e84 blx 0x2f98 | r0 = fcn_00002f98 ();
0x00008e88 cmp r0, 0 |
| if (r0 == 0) {
0x00008e8a beq 0x8f1a | goto label_9;
| }
0x00008e8c ldr.w r1, [pc, 0x7a4] |
0x00008e90 mov r0, sl | r0 = sl;
0x00008e92 add r1, pc | r1 = 0x124ca;
0x00008e94 blx 0x2f98 | r0 = fcn_00002f98 ();
0x00008e98 cmp r0, 0 |
| if (r0 != 0) {
0x00008e9a bne.w 0x8fde | goto label_10;
| }
0x00008e9e cmp.w sb, 0 |
| if (sb == 0) {
0x00008ea2 beq.w 0x8fba | goto label_1;
| }
0x00008ea6 ldr.w r1, [pc, 0x790] | r1 = *(0x00009638);
0x00008eaa mov r0, sb | r0 = sb;
0x00008eac add r1, pc | r1 += pc;
0x00008eae add.w r1, r1, 0x104 | r1 += 0x104;
0x00008eb2 blx 0x37d4 | r0 = ext2fs_extent_free ();
0x00008eb6 cmp r0, 0 |
| if (r0 != 0) {
0x00008eb8 bne.w 0x912e | goto label_11;
| }
| if (r4 == 0) {
| label_0:
0x00008ebc cbz r4, 0x8ec8 | goto label_8;
| }
0x00008ebe mov sl, r4 | sl = r4;
0x00008ec0 ldrb.w r3, [sl] | r3 = *(sl);
0x00008ec4 cmp r3, 0 |
0x00008ec6 bne 0x8e48 |
| } while (r3 != 0);
| label_8:
0x00008ec8 cmp r6, 0 |
| if (r6 != 0) {
0x00008eca bne.w 0x9480 | goto label_12;
| }
0x00008ece ldr.w r3, [pc, 0x76c] | r3 = *(0x0000963c);
0x00008ed2 add r3, pc | r3 += pc;
0x00008ed4 ldrh.w r4, [r3, 0x17c] | r4 = *((r3 + 0x17c));
0x00008ed8 cmp r4, 0 |
| if (r4 != 0) {
0x00008eda bne.w 0x909c | goto label_13;
| }
| label_2:
0x00008ede ldr.w r4, [pc, 0x760] | r4 = *(0x00009640);
0x00008ee2 add r4, pc | r4 += pc;
0x00008ee4 ldr r3, [r4, 0x78] | r3 = *((r4 + 0x78));
0x00008ee6 lsls r3, r3, 0xe | r3 <<= 0xe;
| if (r3 < r3) {
0x00008ee8 bmi.w 0x914a | goto label_14;
| }
0x00008eec ldr r3, [sp, 0xc] | r3 = var_ch;
0x00008eee cmp r3, 0 |
| if (r3 != 0) {
0x00008ef0 bne.w 0x946e | goto label_15;
| }
| label_3:
0x00008ef4 ldr.w r2, [pc, 0x74c] | r2 = *(0x00009644);
0x00008ef8 ldr.w r3, [pc, 0x71c] | r3 = *(0x9618);
0x00008efa adds r7, 0x1c | r7 += 0x1c;
0x00008efc add r2, pc | r2 += pc;
0x00008efe ldr r3, [r2, r3] | r3 = *((r2 + r3));
0x00008f00 ldr r2, [r3] | r2 = *(0x9618);
0x00008f02 ldr r3, [sp, 0x34] | r3 = var_34h;
0x00008f04 eors r2, r3 | r2 ^= r3;
0x00008f06 mov.w r3, 0 | r3 = 0;
| if (r2 != r3) {
0x00008f0a bne.w 0x946a | goto label_16;
| }
0x00008f0e mov r0, fp | r0 = fp;
0x00008f10 add sp, 0x3c |
0x00008f12 pop.w {r4, r5, r6, r7, r8, sb, sl, fp, lr} |
0x00008f16 b.w 0x3094 | void (*0x3094)() ();
| label_9:
0x00008f1a ldr r3, [r5, 0x78] | r3 = *((r5 + 0x78));
0x00008f1c lsls r1, r3, 0x18 | r1 = r3 << 0x18;
| if (r1 >= r3) {
0x00008f1e bpl 0x8fc2 | goto label_17;
| }
0x00008f20 ldrh.w r2, [r5, 0xe6] | r2 = *((r5 + 0xe6));
0x00008f24 cmp r2, 0 |
| if (r2 != 0) {
0x00008f26 bne.w 0x9030 | goto label_18;
| }
0x00008f2a cmp.w sb, 0 |
| if (sb == 0) {
0x00008f2e beq 0x8fba | goto label_1;
| }
0x00008f30 add r1, sp, 0x2c | r1 += var_2ch;
0x00008f32 mov r0, sb | r0 = sb;
0x00008f34 blx 0x34f8 | ext2fs_inode_bitmap_loc_set ();
0x00008f38 ldr r3, [sp, 0x2c] | r3 = var_2ch;
0x00008f3a ldrb r3, [r3] | r3 = *(r3);
| if (r3 != 0) {
0x00008f3c cbnz r3, 0x8f4a | goto label_19;
| }
0x00008f3e subs r3, r0, 1 | r3 = r0 - 1;
0x00008f40 tst r3, r0 |
0x00008f42 it eq |
| if ((r3 & r0) != 0) {
0x00008f44 strheq r0, [r5, 0x116] | __asm ("strheq r0, [r5, 0x116]");
| goto label_20;
| }
| if ((r3 & r0) == 0) {
| label_20:
0x00008f48 beq 0x8ebc | goto label_0;
| }
| label_19:
0x00008f4a ldr.w r2, [pc, 0x6fc] | r2 = *(0x964a);
0x00008f4e mov r3, sb | r3 = sb;
0x00008f50 movs r1, 1 | r1 = 1;
0x00008f52 adds r6, 1 | r6++;
0x00008f54 ldr.w r2, [r8, r2] | r2 = *((r8 + r2));
0x00008f58 ldr r0, [r2] | r0 = *(0x964a);
0x00008f5a ldr.w r2, [pc, 0x6f0] |
0x00008f5e add r2, pc | r2 = 0x125b0;
0x00008f60 blx 0x3684 | ext2fs_write_inode ();
0x00008f64 b 0x8ebc | goto label_0;
| label_6:
0x00008f66 ldr.w r1, [pc, 0x6e8] |
0x00008f6a mov r0, sl | r0 = sl;
0x00008f6c add r1, pc | r1 = 0x125c2;
0x00008f6e blx 0x2f98 | r0 = fcn_00002f98 ();
0x00008f72 cmp r0, 0 |
| if (r0 != 0) {
0x00008f74 bne.w 0x9586 | goto label_21;
| }
0x00008f78 str r0, [sp, 0x30] | var_30h = r0;
0x00008f7a cmp.w sb, 0 |
| if (sb == 0) {
0x00008f7e beq 0x8fba | goto label_1;
| }
0x00008f80 ldr r2, [sp, 0x14] | r2 = var_14h;
0x00008f82 movs r3, 0 | r3 = 0;
0x00008f84 ldr r1, [sp, 0x18] | r1 = var_18h;
0x00008f86 mov r0, sb | r0 = sb;
0x00008f88 str r3, [r2, 0x24] | *((r2 + 0x24)) = r3;
0x00008f8a add r2, sp, 0x30 | r2 += var_30h;
0x00008f8c bl 0xec3c | r0 = fcn_0000ec3c (r0, r1, r2);
0x00008f90 mov r1, r0 | r1 = r0;
0x00008f92 cmp r0, 0 |
| if (r0 == 0) {
0x00008f94 beq 0x8ebc | goto label_0;
| }
0x00008f96 ldr r3, [sp, 0x30] | r3 = var_30h;
0x00008f98 cmp r3, 0 |
| if (r3 == 0) {
0x00008f9a beq.w 0x959e | goto label_22;
| }
0x00008f9e ldr.w r2, [pc, 0x6a8] | r2 = *(0x964a);
0x00008fa2 movs r1, 1 | r1 = 1;
0x00008fa4 ldr.w r2, [r8, r2] | r2 = *((r8 + r2));
0x00008fa8 ldr r0, [r2] | r0 = *(0x964a);
0x00008faa ldr.w r2, [pc, 0x6a8] |
0x00008fae add r2, pc | r2 = 0x12608;
0x00008fb0 blx 0x3684 | ext2fs_write_inode ();
0x00008fb4 ldr r0, [sp, 0x30] | r0 = var_30h;
0x00008fb6 blx 0x3098 | fcn_00003098 ();
| do {
| label_1:
0x00008fba adds r6, 1 | r6++;
0x00008fbc str.w sl, [sp, 8] | __asm ("str.w sl, [var_8h]");
0x00008fc0 b 0x8ebc | goto label_0;
| label_17:
0x00008fc2 ldr.w r2, [pc, 0x684] | r2 = *(0x964a);
0x00008fc6 mov r3, sl | r3 = sl;
0x00008fc8 movs r1, 1 | r1 = 1;
0x00008fca adds r6, 1 | r6++;
0x00008fcc ldr.w r2, [r8, r2] | r2 = *((r8 + r2));
0x00008fd0 ldr r0, [r2] | r0 = *(0x964a);
0x00008fd2 ldr.w r2, [pc, 0x684] |
0x00008fd6 add r2, pc | r2 = 0x12634;
0x00008fd8 blx 0x3684 | ext2fs_write_inode ();
0x00008fdc b 0x8ebc | goto label_0;
| label_10:
0x00008fde ldr.w r1, [pc, 0x67c] |
0x00008fe2 mov r0, sl | r0 = sl;
0x00008fe4 add r1, pc | r1 = 0x12646;
0x00008fe6 blx 0x2f98 | r0 = fcn_00002f98 ();
| if (r0 != 0) {
0x00008fea cbnz r0, 0x904e | goto label_23;
| }
0x00008fec cmp.w sb, 0 |
0x00008ff0 beq 0x8fba |
| } while (sb == 0);
0x00008ff2 mov r2, r0 | r2 = r0;
0x00008ff4 add r1, sp, 0x2c | r1 += var_2ch;
0x00008ff6 mov r0, sb | r0 = sb;
0x00008ff8 blx 0x3608 | fcn_00003608 ();
0x00008ffc ldr r3, [sp, 0x2c] | r3 = var_2ch;
0x00008ffe ldrb r2, [r3] | r2 = *(r3);
0x00009000 ldr.w r3, [pc, 0x65c] | r3 = *(0x00009660);
0x00009004 add r3, pc | r3 += pc;
0x00009006 add.w r3, r3, 0x420 | r3 += 0x420;
0x0000900a strd r0, r1, [r3] | __asm ("strd r0, r1, [r3]");
0x0000900e cmp r2, 0 |
| if (r2 == 0) {
0x00009010 beq.w 0x8ebc | goto label_0;
| }
0x00009014 ldr.w r2, [pc, 0x630] | r2 = *(0x9648);
0x00009018 mov r3, sb | r3 = sb;
0x0000901a movs r1, 1 | r1 = 1;
0x0000901c adds r6, 1 | r6++;
0x0000901e ldr.w r2, [r8, r2] | r2 = *((r8 + r2));
0x00009020 movs r0, 2 | r0 = 2;
0x00009022 ldr r0, [r2] | r0 = *(0x9648);
0x00009024 ldr.w r2, [pc, 0x63c] |
0x00009028 add r2, pc | r2 = 0x12690;
0x0000902a blx 0x3684 | ext2fs_write_inode ();
0x0000902e b 0x8ebc | goto label_0;
| label_18:
0x00009030 ldr.w r1, [pc, 0x614] | r1 = *(0x9648);
0x00009034 mov r3, sl | r3 = sl;
0x00009036 adds r6, 1 | r6++;
0x00009038 ldr.w r1, [r8, r1] | r1 = *((r8 + r1));
0x0000903c str r2, [sp] | *(sp) = r2;
0x0000903e ldr.w r2, [pc, 0x628] |
0x00009042 ldr r0, [r1] | r0 = *(0x9648);
0x00009044 movs r1, 1 | r1 = 1;
0x00009046 add r2, pc | r2 = 0x126b4;
0x00009048 blx 0x3684 | ext2fs_write_inode ();
0x0000904c b 0x8ebc | goto label_0;
| label_23:
0x0000904e ldr.w r1, [pc, 0x61c] |
0x00009052 mov r0, sl | r0 = sl;
0x00009054 add r1, pc | r1 = 0x126c6;
0x00009056 blx 0x2f98 | r0 = fcn_00002f98 ();
| if (r0 != 0) {
0x0000905a cbnz r0, 0x90ca | goto label_24;
| }
0x0000905c cmp.w sb, 0 |
| if (sb == 0) {
0x00009060 beq 0x8fba | goto label_1;
| }
0x00009062 mov r2, r0 | r2 = r0;
0x00009064 add r1, sp, 0x2c | r1 += var_2ch;
0x00009066 mov r0, sb | r0 = sb;
0x00009068 blx 0x34f8 | ext2fs_inode_bitmap_loc_set ();
0x0000906c ldr.w r3, [pc, 0x600] | r3 = *(0x00009670);
0x00009070 add r3, pc | r3 += pc;
0x00009072 strh.w r0, [r3, 0x17e] | *((r3 + 0x17e)) = r0;
0x00009076 ldr r3, [sp, 0x2c] | r3 = var_2ch;
0x00009078 ldrb r3, [r3] | r3 = *(r3);
0x0000907a cmp r3, 0 |
| if (r3 == 0) {
0x0000907c beq.w 0x8ebc | goto label_0;
| }
0x00009080 ldr.w r2, [pc, 0x5c4] | r2 = *(0x9648);
0x00009084 mov r3, sb | r3 = sb;
0x00009086 movs r1, 1 | r1 = 1;
0x00009088 adds r6, 1 | r6++;
0x0000908a ldr.w r2, [r8, r2] | r2 = *((r8 + r2));
0x0000908e ldr r0, [r2] | r0 = *(0x9648);
0x00009090 ldr.w r2, [pc, 0x5e0] |
0x00009094 add r2, pc | r2 = 0x1270c;
0x00009096 blx 0x3684 | ext2fs_write_inode ();
0x0000909a b 0x8ebc | goto label_0;
| label_13:
0x0000909c ldr.w r5, [r3, 0x188] | r5 = *((r3 + 0x188));
0x000090a0 mov r1, r4 | r1 = r4;
0x000090a2 mov r0, r5 | r0 = r5;
0x000090a4 bl 0x119c4 | fcn_000119c4 (r0, r1, r2);
0x000090a8 cmp r1, 0 |
| if (r1 == 0) {
0x000090aa beq.w 0x8ede | goto label_2;
| }
0x000090ae ldr.w r2, [pc, 0x598] | r2 = *(0x964a);
0x000090b2 mov r3, r5 | r3 = r5;
0x000090b4 movs r1, 1 | r1 = 1;
0x000090b6 ldr.w r2, [r8, r2] | r2 = *((r8 + r2));
0x000090ba str r4, [sp] | *(sp) = r4;
0x000090bc ldr r0, [r2] | r0 = *(0x964a);
0x000090be ldr.w r2, [pc, 0x5b8] |
0x000090c2 add r2, pc | r2 = 0x12740;
0x000090c4 blx 0x3684 | ext2fs_write_inode ();
0x000090c8 b 0x8ede | goto label_2;
| label_24:
0x000090ca ldr.w r1, [pc, 0x5b0] |
0x000090ce mov r0, sl | r0 = sl;
0x000090d0 add r1, pc | r1 = 0x12752;
0x000090d2 blx 0x2f98 | r0 = fcn_00002f98 ();
0x000090d6 cmp r0, 0 |
| if (r0 == 0) {
0x000090d8 beq 0x91d6 | goto label_25;
| }
0x000090da ldr.w r1, [pc, 0x5a4] |
0x000090de mov r0, sl | r0 = sl;
0x000090e0 add r1, pc | r1 = 0x12766;
0x000090e2 blx 0x2f98 | r0 = fcn_00002f98 ();
0x000090e6 cmp r0, 0 |
| if (r0 != 0) {
0x000090e8 bne 0x9196 | goto label_26;
| }
0x000090ea cmp.w sb, 0 |
| if (sb == 0) {
0x000090ee beq.w 0x8fba | goto label_1;
| }
0x000090f2 mov r2, r0 | r2 = r0;
0x000090f4 add r1, sp, 0x2c | r1 += var_2ch;
0x000090f6 mov r0, sb | r0 = sb;
0x000090f8 blx 0x34f8 | ext2fs_inode_bitmap_loc_set ();
0x000090fc ldr r3, [sp, 0x2c] | r3 = var_2ch;
0x000090fe ldr.w r2, [pc, 0x584] | r2 = *(0x00009684);
0x00009102 ldrb r3, [r3] | r3 = *(r3);
0x00009104 add r2, pc | r2 += pc;
0x00009106 str r0, [r2, 0x10] | *((r2 + 0x10)) = r0;
0x00009108 cmp r0, 2 |
0x0000910a it le |
| if (r0 > 2) {
0x0000910c cmple r3, 0 | __asm ("cmple r3, 0");
| goto label_27;
| }
| if (r0 == 2) {
| label_27:
0x0000910e beq.w 0x8ebc | goto label_0;
| }
0x00009110 add r6, sp, 0x354 | r6 = sp + 0x354;
0x00009112 ldr.w r2, [pc, 0x534] | r2 = *(0x964a);
0x00009116 mov r3, sb | r3 = sb;
0x00009118 movs r1, 1 | r1 = 1;
0x0000911a adds r6, 1 | r6++;
0x0000911c ldr.w r2, [r8, r2] | r2 = *((r8 + r2));
0x00009120 ldr r0, [r2] | r0 = *(0x964a);
0x00009122 ldr.w r2, [pc, 0x564] |
0x00009126 add r2, pc | r2 = 0x127b4;
0x00009128 blx 0x3684 | ext2fs_write_inode ();
0x0000912c b 0x8ebc | goto label_0;
| label_11:
0x0000912e ldr.w r2, [pc, 0x518] | r2 = *(0x964a);
0x00009132 mov r3, sb | r3 = sb;
0x00009134 movs r1, 1 | r1 = 1;
0x00009136 adds r6, 1 | r6++;
0x00009138 ldr.w r2, [r8, r2] | r2 = *((r8 + r2));
0x0000913c ldr r0, [r2] | r0 = *(0x964a);
0x0000913e ldr.w r2, [pc, 0x54c] |
0x00009142 add r2, pc | r2 = 0x127d4;
0x00009144 blx 0x3684 | ext2fs_write_inode ();
0x00009148 b 0x8ebc | goto label_0;
| label_14:
0x0000914a ldrh.w r0, [r4, 0x294] | r0 = *((r4 + 0x294));
0x0000914e blx 0x38ac | ext2fs_r_blocks_count ();
0x00009152 ldr r3, [sp, 0xc] | r3 = var_ch;
0x00009154 strh.w r0, [r4, 0x296] | *((r4 + 0x296)) = r0;
0x00009158 cmp r3, 0 |
| if (r3 == 0) {
0x0000915a beq.w 0x8ef4 | goto label_3;
| }
0x0000915e ldrh.w r0, [r4, 0x294] | r0 = *((r4 + 0x294));
0x00009162 addw r2, r4, 0x296 | __asm ("addw r2, r4, 0x296");
0x00009166 mov r1, r3 | r1 = r3;
0x00009168 blx 0x32c0 | r0 = fcn_000032c0 ();
0x0000916c cmp r0, 0 |
| if (r0 == 0) {
0x0000916e beq.w 0x8ef4 | goto label_3;
| }
0x00009172 ldr.w r1, [pc, 0x4d4] | r1 = *(0x964a);
0x00009176 ldr.w r2, [pc, 0x518] |
0x0000917a ldr r3, [sp, 0xc] | r3 = var_ch;
0x0000917c ldr.w r1, [r8, r1] | r1 = *((r8 + r1));
0x00009180 add r2, pc | r2 = 0x12816;
0x00009182 ldr r0, [r1] | r0 = *(0x964a);
| label_5:
0x00009184 movs r1, 1 | r1 = 1;
0x00009186 blx 0x3684 | ext2fs_write_inode ();
0x0000918a mov r0, fp | r0 = fp;
0x0000918c blx 0x3098 | fcn_00003098 ();
0x00009190 movs r0, 1 | r0 = 1;
0x00009192 blx 0x34b0 | feof (r0);
| label_26:
0x00009196 ldr.w r1, [pc, 0x4fc] |
0x0000919a mov r0, sl | r0 = sl;
0x0000919c add r1, pc | r1 = 0x12836;
0x0000919e blx 0x2f98 | r0 = fcn_00002f98 ();
| if (r0 != 0) {
0x000091a2 cbnz r0, 0x91e4 | goto label_28;
| }
0x000091a4 cmp.w sb, 0 |
| if (sb == 0) {
0x000091a8 beq.w 0x9350 | goto label_29;
| }
0x000091ac mov r2, r0 | r2 = r0;
0x000091ae add r1, sp, 0x2c | r1 += var_2ch;
0x000091b0 mov r0, sb | r0 = sb;
0x000091b2 blx 0x34f8 | ext2fs_inode_bitmap_loc_set ();
0x000091b6 ldr.w r3, [pc, 0x4e0] | r3 = *(0x00009698);
0x000091ba add r3, pc | r3 += pc;
0x000091bc str.w r0, [r3, 0x42c] | __asm ("str.w r0, [r3, 0x42c]");
0x000091c0 cmp r0, 0 |
| if (r0 == 0) {
0x000091c2 beq.w 0x8ebc | goto label_0;
| }
| label_4:
0x000091c6 ldr.w r3, [pc, 0x4d4] | r3 = *(0x0000969c);
0x000091ca vmov.i32 d16, 0 | __asm ("vmov.i32 d16, 0");
0x000091ce add r3, pc | r3 += pc;
0x000091d0 vstr d16, [r3, 0x18] | __asm ("vstr d16, [r3, 0x18]");
0x000091d4 b 0x8ebc | goto label_0;
| label_25:
0x000091d6 ldr.w r3, [pc, 0x4c8] | r3 = *(0x000096a0);
0x000091da movs r2, 1 | r2 = 1;
0x000091dc add r3, pc | r3 += pc;
0x000091de str.w r2, [r3, 0x428] | __asm ("str.w r2, [r3, 0x428]");
0x000091e2 b 0x8ebc | goto label_0;
| label_28:
0x000091e4 ldr.w r1, [pc, 0x4bc] |
0x000091e8 mov r0, sl | r0 = sl;
0x000091ea add r1, pc | r1 = 0x12892;
0x000091ec blx 0x2f98 | r0 = fcn_00002f98 ();
0x000091f0 cmp r0, 0 |
| if (r0 == 0) {
0x000091f2 beq.w 0x9314 | goto label_30;
| }
0x000091f6 ldr.w r1, [pc, 0x4b0] |
0x000091fa mov r0, sl | r0 = sl;
0x000091fc add r1, pc | r1 = 0x128aa;
0x000091fe blx 0x2f98 | r0 = fcn_00002f98 ();
0x00009202 cmp r0, 0 |
| if (r0 == 0) {
0x00009204 beq.w 0x935c | goto label_31;
| }
0x00009208 ldr.w r1, [pc, 0x4a0] |
0x0000920c mov r0, sl | r0 = sl;
0x0000920e add r1, pc | r1 = 0x128be;
0x00009210 blx 0x2f98 | r0 = fcn_00002f98 ();
0x00009214 cmp r0, 0 |
| if (r0 == 0) {
0x00009216 beq.w 0x935c | goto label_31;
| }
0x0000921a ldr.w r1, [pc, 0x494] |
0x0000921e mov r0, sl | r0 = sl;
0x00009220 add r1, pc | r1 = 0x128d6;
0x00009222 blx 0x2f98 | fcn_00002f98 ();
0x00009224 cdp p8, 0xb, c2, c10, c0, 0 | __asm ("cdp p8, 0xb, c2, c10, c0, 0");
| if (r0 != 0) {
0x00009228 bne.w 0x9398 | goto label_32;
| }
0x0000922c cmp.w sb, 0 |
| if (sb == 0) {
0x00009230 beq.w 0x8fba | goto label_1;
| }
0x00009234 ldr r3, [sp, 0x10] | r3 = var_10h;
0x00009236 mov r0, sb | r0 = sb;
0x00009238 ldr r1, [r3, 0x30] | r1 = *((r3 + 0x30));
0x0000923a blx 0x314c | r0 = fcn_0000314c ();
0x0000923e mov r3, r0 | r3 = r0;
0x00009240 str r0, [sp, 0x20] | var_20h = r0;
0x00009242 orrs r3, r1 | r3 |= r1;
0x00009244 str r1, [sp, 0x24] | var_24h = r1;
| if (r3 == r1) {
0x00009246 beq.w 0x93dc | goto label_33;
| }
0x0000924a ldr r0, [sp, 0x1c] | r0 = var_1ch;
0x0000924c blx 0x33dc | fcn_000033dc ();
0x00009250 ldr r3, [sp, 0x20] | r3 = var_20h;
0x00009252 cmp r0, r3 |
0x00009254 ldr r3, [sp, 0x24] | r3 = var_24h;
0x00009256 sbcs r1, r3 | __asm ("sbcs r1, r3");
| if (r0 >= r3) {
0x00009258 bhs.w 0x9452 | goto label_34;
| }
0x0000925c ldr r2, [sp, 0x10] | r2 = var_10h;
0x0000925e mov.w r0, 0x400 | r0 = 0x400;
0x00009262 ldr r3, [r2, 0x30] | r3 = *((r2 + 0x30));
0x00009264 ldr.w sl, [r2, 0x38] | sl = *((r2 + 0x38));
0x00009268 lsls r0, r3 | r0 <<= r3;
0x0000926a cmp.w sl, 0 |
| if (sl == 0) {
0x0000926e bne 0x9274 |
0x00009270 lsl.w sl, r0, 3 | sl = r0 << 3;
| }
0x00009274 ldr.w r3, [pc, 0x43c] | r3 = *(0x000096b4);
0x00009278 add r3, pc | r3 += pc;
0x0000927a ldr r1, [r3, 0x78] | r1 = *((r3 + 0x78));
0x0000927c lsls r2, r1, 0x18 | r2 = r1 << 0x18;
0x0000927e ite mi |
| if (r2 < r1) {
0x00009280 ldrhmi r1, [r3, 0x116] | __asm ("ldrhmi r1, [r3, 0x116]");
| }
| if (r2 >= r1) {
0x00009284 movs r1, 0x20 | r1 = 0x20;
| }
0x00009286 bl 0x119e0 | fcn_000119e0 (r0, r1);
0x00009288 invalid |
0x0000928c ldr.w r0, [pc, 0x428] | r0 = *(0x000096b8);
0x00009290 add r0, pc | r0 += pc;
0x00009292 adds r0, 0x18 | r0 += 0x18;
0x00009294 blx 0x33dc | r0 = fcn_000033dc ();
0x00009298 mov r3, r0 | r3 = r0;
0x0000929a orrs.w r0, r3, r1 | r0 = r3 | r1;
| if (r0 != r3) {
0x0000929e beq 0x92b2 |
0x000092a0 subs r0, r3, 1 | r0 = r3 - 1;
0x000092a2 mov r2, sl | r2 = sl;
0x000092a4 mov.w r3, 0 | r3 = 0;
0x000092a8 sbc r1, r1, 0 | __asm ("sbc r1, r1, 0");
0x000092ac bl 0x120a8 | r0 = fcn_000120a8 (r0, r1, r2, r3);
0x000092b0 adds r3, r0, 1 | r3 = r0 + 1;
| }
0x000092b2 add.w r0, sb, -1 | r0 = sb + -1;
0x000092b6 mov r1, sb | r1 = sb;
0x000092b8 add r0, r3 | r0 += r3;
0x000092ba bl 0x11768 | fcn_00011768 (r0, r1, r2);
0x000092be ldr r2, [sp, 0x20] | r2 = var_20h;
0x000092c0 mov r3, r0 | r3 = r0;
0x000092c2 ldr r1, [sp, 0x24] | r1 = var_24h;
0x000092c4 subs r0, r2, 1 | r0 = r2 - 1;
0x000092c6 mov r2, sl | r2 = sl;
0x000092c8 sbc r1, r1, 0 | __asm ("sbc r1, r1, 0");
0x000092cc mov sl, r3 | sl = r3;
0x000092ce movs r3, 0 | r3 = 0;
0x000092d0 bl 0x120a8 | r0 = fcn_000120a8 (r0, r1, r2, r3);
0x000092d4 adds r3, r0, 1 | r3 = r0 + 1;
| if (r3 != r0) {
0x000092d6 beq 0x92e0 |
0x000092d8 mov r1, sb | r1 = sb;
0x000092da bl 0x11768 | r0 = fcn_00011768 (r0, r1, r2);
0x000092de adds r3, r0, 1 | r3 = r0 + 1;
| }
0x000092e0 ldr r1, [pc, 0x3d8] |
0x000092e2 mov.w r2, 0x400 | r2 = 0x400;
0x000092e6 sub.w r3, r3, sl | r3 -= sl;
0x000092ea add r1, pc | r1 = 0x129aa;
0x000092ec ldr r0, [r1, 0x30] | r0 = *(0x129da);
0x000092ee lsls r2, r0 | r2 <<= r0;
0x000092f0 lsrs r2, r2, 2 | r2 >>= 2;
0x000092f2 cmp r3, r2 |
0x000092f4 it ge |
| if (r3 < r2) {
0x000092f6 movge r3, r2 | r3 = r2;
| }
0x000092f8 cmp r3, 0 |
| if (r3 <= 0) {
0x000092fa ble.w 0x8ebc | goto label_0;
| }
0x000092fe ldr r2, [r1, 0x64] | r2 = *((r1 + 0x64));
0x00009300 cmp r2, 0 |
| if (r2 == 0) {
0x00009302 beq.w 0x9426 | goto label_35;
| }
0x00009306 strh.w r3, [r1, 0xe6] | *((r1 + 0xe6)) = r3;
0x0000930a ldr r3, [r1, 0x74] | r3 = *((r1 + 0x74));
0x0000930c orr r3, r3, 0x10 | r3 |= 0x10;
0x00009310 str r3, [r1, 0x74] | *((r1 + 0x74)) = r3;
0x00009312 b 0x8ebc | goto label_0;
| label_30:
0x00009314 cmp.w sb, 0 |
| if (sb == 0) {
0x00009318 beq.w 0x8fba | goto label_1;
| }
0x0000931c movs r2, 0 | r2 = 0;
0x0000931e add r1, sp, 0x2c | r1 += var_2ch;
0x00009320 mov r0, sb | r0 = sb;
0x00009322 blx 0x34f8 | ext2fs_inode_bitmap_loc_set ();
0x00009326 ldr r3, [pc, 0x398] |
0x00009328 add r3, pc | r3 = 0x129ee;
0x0000932a strh.w r0, [r3, 0x17c] | *((r3 + 0x17c)) = r0;
0x0000932e ldr r3, [sp, 0x2c] | r3 = var_2ch;
0x00009330 ldrb r3, [r3] | r3 = *(r3);
0x00009332 cmp r3, 0 |
| if (r3 == 0) {
0x00009334 beq.w 0x8ebc | goto label_0;
| }
0x00009338 ldr r2, [pc, 0x30c] | r2 = *(0x9648);
0x0000933a mov r3, sb | r3 = sb;
0x0000933c movs r1, 1 | r1 = 1;
0x0000933e adds r6, 1 | r6++;
0x00009340 ldr.w r2, [r8, r2] | r2 = *((r8 + r2));
0x00009344 ldr r0, [r2] | r0 = *(0x9648);
0x00009346 ldr r2, [pc, 0x37c] |
0x00009348 add r2, pc | r2 = 0x12a12;
0x0000934a blx 0x3684 | ext2fs_write_inode ();
0x0000934e b 0x8ebc | goto label_0;
| label_29:
0x00009350 ldr r3, [pc, 0x374] |
0x00009352 movs r2, 1 | r2 = 1;
0x00009354 add r3, pc | r3 = 0x12a20;
0x00009356 str.w r2, [r3, 0x42c] | __asm ("str.w r2, [r3, 0x42c]");
0x0000935a b 0x91c6 | goto label_4;
| label_31:
0x0000935c cmp.w sb, 0 |
| if (sb == 0) {
0x00009360 beq.w 0x8fba | goto label_1;
| }
0x00009364 movs r2, 0 | r2 = 0;
0x00009366 add r1, sp, 0x2c | r1 += var_2ch;
0x00009368 mov r0, sb | r0 = sb;
0x0000936a blx 0x34f8 | ext2fs_inode_bitmap_loc_set ();
0x0000936e ldr r3, [pc, 0x35c] |
0x00009370 add r3, pc | r3 = 0x12a42;
0x00009372 str.w r0, [r3, 0x188] | __asm ("str.w r0, [r3, 0x188]");
0x00009376 ldr r3, [sp, 0x2c] | r3 = var_2ch;
0x00009378 ldrb r3, [r3] | r3 = *(r3);
0x0000937a cmp r3, 0 |
| if (r3 == 0) {
0x0000937c beq.w 0x8ebc | goto label_0;
| }
0x00009380 ldr r2, [pc, 0x2c4] | r2 = *(0x9648);
0x00009382 mov r3, sb | r3 = sb;
0x00009384 movs r1, 1 | r1 = 1;
0x00009386 adds r6, 1 | r6++;
0x00009388 ldr.w r2, [r8, r2] | r2 = *((r8 + r2));
0x0000938c ldr r0, [r2] | r0 = *(0x9648);
0x0000938e ldr r2, [pc, 0x340] |
0x00009390 add r2, pc | r2 = 0x12a66;
0x00009392 blx 0x3684 | ext2fs_write_inode ();
0x00009396 b 0x8ebc | goto label_0;
| label_32:
0x00009398 ldr r1, [pc, 0x338] |
0x0000939a mov r0, sl | r0 = sl;
0x0000939c add r1, pc | r1 = 0x12a74;
0x0000939e blx 0x2f98 | r0 = fcn_00002f98 ();
| if (r0 == 0) {
0x000093a2 cbnz r0, 0x93b6 |
0x000093a4 ldr r2, [pc, 0x330] |
0x000093a6 add r2, pc | r2 = 0x12a82;
0x000093a8 ldr.w r3, [r2, 0x178] | r3 = *(0x12bfa);
0x000093ac orr r3, r3, 4 | r3 |= 4;
0x000093b0 str.w r3, [r2, 0x178] | __asm ("str.w r3, [r2, 0x178]");
0x000093b4 b 0x8ebc | goto label_0;
| }
0x000093b6 ldr r1, [pc, 0x324] |
0x000093b8 mov r0, sl | r0 = sl;
0x000093ba add r1, pc | r1 = 0x12a9c;
0x000093bc blx 0x2f98 | r0 = fcn_00002f98 ();
0x000093c0 mov r2, r0 | r2 = r0;
| if (r0 == 0) {
0x000093c2 cbnz r0, 0x93f4 |
0x000093c4 cmp.w sb, 0 |
| if (sb == 0) {
0x000093c8 beq 0x9446 | goto label_36;
| }
0x000093ca mov r0, sb | r0 = sb;
0x000093cc add r1, sp, 0x2c | r1 += var_2ch;
0x000093ce blx 0x34f8 | ext2fs_inode_bitmap_loc_set ();
0x000093d2 ldr r3, [pc, 0x30c] |
0x000093d4 add r3, pc | r3 = 0x12aba;
0x000093d6 str.w r0, [r3, 0x430] | __asm ("str.w r0, [r3, 0x430]");
0x000093da b 0x8ebc | goto label_0;
| label_33:
0x000093dc ldr r2, [pc, 0x268] | r2 = *(0x9648);
0x000093de mov r3, sb | r3 = sb;
0x000093e0 movs r1, 1 | r1 = 1;
0x000093e2 adds r6, 1 | r6++;
0x000093e4 ldr.w r2, [r8, r2] | r2 = *((r8 + r2));
0x000093e8 ldr r0, [r2] | r0 = *(0x9648);
0x000093ea ldr r2, [pc, 0x2f8] |
0x000093ec add r2, pc | r2 = 0x12ad6;
0x000093ee blx 0x3684 | ext2fs_write_inode ();
0x000093f2 b 0x8ebc | goto label_0;
| }
0x000093f4 ldr r1, [pc, 0x2f0] |
0x000093f6 mov r0, sl | r0 = sl;
0x000093f8 add r1, pc | r1 = 0x12ae4;
0x000093fa blx 0x2f98 | r0 = fcn_00002f98 ();
0x000093fe mov r2, r0 | r2 = r0;
0x00009400 cmp r0, 0 |
| if (r0 != 0) {
0x00009402 bne 0x94c4 | goto label_37;
| }
0x00009404 cmp.w sb, 0 |
| if (sb == 0) {
0x00009408 beq 0x94b6 | goto label_38;
| }
0x0000940a add r1, sp, 0x2c | r1 += var_2ch;
0x0000940c mov r0, sb | r0 = sb;
0x0000940e blx 0x34f8 | ext2fs_inode_bitmap_loc_set ();
0x00009412 ldr r1, [pc, 0x2d8] |
0x00009414 subs r2, r0, 0 | r2 = r0 - 0;
0x00009416 it ne |
| if (r2 == r0) {
0x00009418 movne r2, 1 | r2 = 1;
| }
0x0000941a add r1, pc | r1 = 0x12b0c;
0x0000941c ldr r3, [r1] | r3 = *(0x12b0c);
0x0000941e orr.w r3, r3, r2, lsl 1 | r3 |= (r2 << 1);
0x00009422 str r3, [r1] | *(r1) = r3;
0x00009424 b 0x8ebc | goto label_0;
| label_35:
0x00009426 ldr r3, [pc, 0x220] |
0x00009428 movs r2, 0x3b | r2 = 0x3b;
0x0000942a ldr r0, [pc, 0x2c4] |
0x0000942c movs r1, 1 | r1 = 1;
0x0000942e ldr.w r3, [r8, r3] | r3 = *((r8 + r3));
0x00009432 add r0, pc | r0 = 0x12b28;
0x00009434 ldr r3, [r3] | r3 = *(0x964a);
| do {
0x00009436 blx 0x3324 | strcat (r0, r1)
0x0000943a mov r0, fp | r0 = fp;
0x0000943c blx 0x3098 | fcn_00003098 ();
0x00009440 movs r0, 1 | r0 = 1;
0x00009442 blx 0x34b0 | feof (r0);
| label_36:
0x00009446 ldr r3, [pc, 0x2ac] |
0x00009448 movs r2, 1 | r2 = 1;
0x0000944a add r3, pc | r3 = 0x12b44;
0x0000944c str.w r2, [r3, 0x430] | __asm ("str.w r2, [r3, 0x430]");
0x00009450 b 0x8ebc | goto label_0;
| label_34:
0x00009452 ldr r3, [pc, 0x1f4] |
0x00009454 movs r2, 0x3d | r2 = 0x3d;
0x00009456 ldr r0, [pc, 0x2a0] |
0x00009458 movs r1, 1 | r1 = 1;
0x0000945a adds r6, 1 | r6++;
0x0000945c ldr.w r3, [r8, r3] | r3 = *((r8 + r3));
0x00009460 add r0, pc | r0 = 0x12b5e;
0x00009462 ldr r3, [r3] | r3 = *(0x964a);
0x00009464 blx 0x3324 | strcat (r0, r1)
0x00009468 b 0x8ebc | goto label_0;
| label_16:
0x0000946a blx 0x31f4 | fcn_000031f4 ();
| label_15:
0x0000946e ldr r3, [pc, 0x1d8] |
0x00009470 movs r2, 0x4c | r2 = 0x4c;
0x00009472 ldr r0, [pc, 0x288] |
0x00009474 movs r1, 1 | r1 = 1;
0x00009476 ldr.w r3, [r8, r3] | r3 = *((r8 + r3));
0x0000947a add r0, pc | r0 = 0x12b7c;
0x0000947c ldr r3, [r3] | r3 = *(0x964a);
0x0000947e b 0x9436 |
| } while (1);
| label_12:
0x00009480 ldr r3, [pc, 0x1c4] | r3 = *(0x9648);
0x00009482 ldr.w r3, [r8, r3] | r3 = *((r8 + r3));
0x00009486 ldr r0, [r3] | r0 = *(0x9648);
0x00009488 ldr r3, [sp, 8] | r3 = var_8h;
0x0000948a cbz r3, 0x94ae |
| while (1) {
0x0000948c ldr r2, [pc, 0x270] |
0x0000948e ldr r3, [sp, 8] | r3 = var_8h;
0x00009490 add r2, pc | r2 = "uname";
0x00009492 b 0x9184 | goto label_5;
| label_7:
0x00009494 ldr r3, [pc, 0x1b0] |
0x00009496 movs r2, 0x2b | r2 = 0x2b;
0x00009498 ldr r0, [pc, 0x268] |
0x0000949a movs r1, 1 | r1 = 1;
0x0000949c ldr.w r3, [r8, r3] | r3 = *((r8 + r3));
0x000094a0 add r0, pc | r0 = "Invalid filesystem option set: %s\n";
0x000094a2 ldr r3, [r3] | r3 = *(0x9648);
0x000094a4 blx 0x3324 | strcat ("Invalid filesystem option set: %s\n", r1)
0x000094a8 movs r0, 1 | r0 = 1;
0x000094aa blx 0x34b0 | feof (r0);
0x000094ae ldr r3, [pc, 0x258] |
0x000094b0 add r3, pc | r3 = 0x12bbe;
0x000094b2 str r3, [sp, 8] | var_8h = r3;
0x000094b4 b 0x948c |
| }
| label_38:
0x000094b6 ldr r2, [pc, 0x254] |
0x000094b8 add r2, pc | r2 = 0x12bca;
0x000094ba ldr r3, [r2] | r3 = *(0x12bca);
0x000094bc orr r3, r3, 2 | r3 |= 2;
0x000094c0 str r3, [r2] | *(r2) = r3;
0x000094c2 b 0x8ebc | goto label_0;
| label_37:
0x000094c4 ldr r1, [pc, 0x248] |
0x000094c6 mov r0, sl | r0 = sl;
0x000094c8 add r1, pc | r1 = 0x12bdc;
0x000094ca blx 0x2f98 | r0 = fcn_00002f98 ();
0x000094ce mov r2, r0 | r2 = r0;
| if (r0 == 0) {
0x000094d0 cbnz r0, 0x9512 |
0x000094d2 cmp.w sb, 0 |
| if (sb == 0) {
0x000094d6 beq 0x9556 | goto label_39;
| }
0x000094d8 add r1, sp, 0x2c | r1 += var_2ch;
0x000094da ldr.w sl, [pc, 0x238] | sl = *(0x00009714);
0x000094de strd r1, r0, [sp, 0x20] | __asm ("strd r1, r0, [var_20h]");
0x000094e2 mov r0, sb | r0 = sb;
0x000094e4 blx 0x34f8 | ext2fs_inode_bitmap_loc_set ();
0x000094e8 ldr r3, [sp, 0x2c] | r3 = var_2ch;
0x000094ea add sl, pc | sl += pc;
0x000094ec str.w r0, [sl, 0x418] | __asm ("str.w r0, [sl, 0x418]");
0x000094f0 ldrd r1, r2, [sp, 0x20] | __asm ("ldrd r1, r2, [var_20h]");
0x000094f4 ldrb r0, [r3] | r0 = *(r3);
0x000094f6 cmp r0, 0x3a |
| if (r0 == 0x3a) {
0x000094f8 beq 0x9528 | goto label_40;
| }
0x000094fa ldr r2, [pc, 0x14c] | r2 = *(0x964a);
0x000094fc mov r3, sb | r3 = sb;
0x000094fe movs r1, 1 | r1 = 1;
0x00009500 adds r6, 1 | r6++;
0x00009502 ldr.w r2, [r8, r2] | r2 = *((r8 + r2));
0x00009506 ldr r0, [r2] | r0 = *(0x964a);
0x00009508 ldr r2, [pc, 0x20c] |
0x0000950a add r2, pc | r2 = 0x12c26;
0x0000950c blx 0x3684 | ext2fs_write_inode ();
0x00009510 b 0x8ebc | goto label_0;
| }
0x00009512 ldr r1, [pc, 0x208] |
0x00009514 mov r0, sl | r0 = sl;
0x00009516 add r1, pc | r1 = 0x12c38;
0x00009518 blx 0x2f98 | r0 = fcn_00002f98 ();
| if (r0 != 0) {
0x0000951c cbnz r0, 0x956e | goto label_41;
| }
0x0000951e ldr r3, [pc, 0x200] |
0x00009520 movs r2, 1 | r2 = 1;
0x00009522 add r3, pc | r3 = 0x12c48;
0x00009524 str r2, [r3, 0x20] | *((r3 + 0x20)) = r2;
0x00009526 b 0x8ebc | goto label_0;
| label_40:
0x00009528 adds r0, r3, 1 | r0 = r3 + 1;
0x0000952a str r0, [sp, 0x2c] | var_2ch = r0;
0x0000952c blx 0x34f8 | ext2fs_inode_bitmap_loc_set ();
0x00009530 ldr r3, [sp, 0x2c] | r3 = var_2ch;
0x00009532 str.w r0, [sl, 0x41c] | __asm ("str.w r0, [sl, 0x41c]");
0x00009536 ldrb r3, [r3] | r3 = *(r3);
0x00009538 cmp r3, 0 |
| if (r3 == 0) {
0x0000953a beq.w 0x8ebc | goto label_0;
| }
0x0000953e ldr r2, [pc, 0x108] | r2 = *(0x964a);
0x00009540 mov r3, sb | r3 = sb;
0x00009542 movs r1, 1 | r1 = 1;
0x00009544 adds r6, 1 | r6++;
0x00009546 ldr.w r2, [r8, r2] | r2 = *((r8 + r2));
0x0000954a ldr r0, [r2] | r0 = *(0x964a);
0x0000954c ldr r2, [pc, 0x1d4] |
0x0000954e add r2, pc | r2 = 0x12c76;
0x00009550 blx 0x3684 | ext2fs_write_inode ();
0x00009554 b 0x8ebc | goto label_0;
| label_39:
0x00009556 ldr.w sb, [pc, 0x1d0] | sb = *(0x00009728);
0x0000955a blx 0x3064 | fcn_00003064 ();
0x0000955e add sb, pc | sb += pc;
0x00009560 str.w r0, [sb, 0x418] | __asm ("str.w r0, [sb, 0x418]");
0x00009564 blx 0x35a0 | memset (r0, r1, r2);
0x00009568 str.w r0, [sb, 0x41c] | __asm ("str.w r0, [sb, 0x41c]");
0x0000956c b 0x8ebc | goto label_0;
| label_41:
0x0000956e ldr r1, [pc, 0x1bc] |
0x00009570 mov r0, sl | r0 = sl;
0x00009572 add r1, pc | r1 = 0x12ca4;
0x00009574 blx 0x2f98 | r0 = fcn_00002f98 ();
0x00009578 cmp r0, 0 |
| if (r0 != 0) {
0x0000957a bne.w 0x8f66 | goto label_6;
| }
0x0000957e ldr r2, [pc, 0x1b0] |
0x00009580 add r2, pc | r2 = 0x12cb6;
0x00009582 str r0, [r2, 0x20] | *((r2 + 0x20)) = r0;
0x00009584 b 0x8ebc | goto label_0;
| label_21:
0x00009586 ldr r1, [pc, 0x1ac] |
0x00009588 mov r0, sl | r0 = sl;
0x0000958a add r1, pc | r1 = 0x12cc4;
0x0000958c blx 0x2f98 | r0 = fcn_00002f98 ();
| if (r0 == 0) {
0x00009590 cbnz r0, 0x95ae |
0x00009592 ldr r3, [pc, 0x1a4] |
0x00009594 movs r2, 1 | r2 = 1;
0x00009596 add r3, pc | r3 = 0x12cd4;
0x00009598 str.w r2, [r3, 0x434] | __asm ("str.w r2, [r3, 0x434]");
0x0000959c b 0x8ebc | goto label_0;
| label_22:
0x0000959e ldr r3, [pc, 0x19c] |
0x000095a0 ldr r2, [pc, 0x19c] |
0x000095a2 add r3, pc | r3 = 0x12ce4;
0x000095a4 ldr r0, [r3] | r0 = *(0x12ce4);
0x000095a6 add r2, pc | r2 = 0x12cea;
0x000095a8 blx 0x32cc | fcn_000032cc ();
0x000095ac b 0x8fba | goto label_1;
| }
0x000095ae ldr r1, [pc, 0x194] |
0x000095b0 mov r0, sl | r0 = sl;
0x000095b2 add r1, pc | r1 = 0x12cfc;
0x000095b4 blx 0x2f98 | r0 = fcn_00002f98 ();
| if (r0 == 0) {
0x000095b8 cbnz r0, 0x95dc |
0x000095ba cmp.w sb, 0 |
| if (sb == 0) {
0x000095be beq 0x9610 | goto label_42;
| }
0x000095c0 mov r0, sb | r0 = sb;
0x000095c2 blx 0x3558 | r0 = ext2fs_expand_dir ();
0x000095c6 cmp r0, 0 |
| if (r0 < 0) {
0x000095c8 blt 0x95f8 | goto label_43;
| }
0x000095ca ldr r3, [pc, 0x17c] |
0x000095cc add r3, pc | r3 = 0x12d1a;
0x000095ce ldr r2, [r3, 0x78] | r2 = *(0x12d92);
0x000095d0 strh.w r0, [r3, 0x294] | *((r3 + 0x294)) = r0;
0x000095d4 orr r2, r2, 0x20000 | r2 |= 0x20000;
0x000095d8 str r2, [r3, 0x78] | *((r3 + 0x78)) = r2;
0x000095da b 0x8ebc | goto label_0;
| }
0x000095dc ldr r1, [pc, 0x16c] |
0x000095de mov r0, sl | r0 = sl;
0x000095e0 add r1, pc | r1 = 0x12d30;
0x000095e2 blx 0x2f98 | r0 = fcn_00002f98 ();
0x000095e6 cmp r0, 0 |
| if (r0 != 0) {
0x000095e8 bne.w 0x8fba | goto label_1;
| }
0x000095ec cmp.w sb, 0 |
| if (sb != 0) {
0x000095f0 beq 0x9610 |
0x000095f2 str.w sb, [sp, 0xc] | __asm ("str.w sb, [var_ch]");
0x000095f6 b 0x8ebc | goto label_0;
| label_43:
0x000095f8 ldr r2, [pc, 0x4c] | r2 = *(0x9648);
0x000095fa mov r3, sb | r3 = sb;
0x000095fc movs r1, 1 | r1 = 1;
0x000095fe adds r6, 1 | r6++;
0x00009600 ldr.w r2, [r8, r2] | r2 = *((r8 + r2));
0x00009604 ldr r0, [r2] | r0 = *(0x9648);
0x00009606 ldr r2, [pc, 0x148] |
0x00009608 add r2, pc | r2 = 0x12d5e;
0x0000960a blx 0x3684 | ext2fs_write_inode ();
0x0000960e b 0x8ebc | goto label_0;
| }
| label_42:
0x00009610 adds r6, 1 | r6++;
0x00009612 b 0x8ebc | goto label_0;
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/sbin/mkfs.ext3 @ 0x9b04 */
| #include <stdint.h>
|
; (fcn) fcn.00009b04 () | void fcn_00009b04 (int16_t arg1) {
| size_t size;
| int16_t var_4h;
| int16_t var_ch;
| int16_t var_10ch;
| r0 = arg1;
0x00009b04 push {r4, r5, r6, lr} |
0x00009b06 sub sp, 0x110 |
0x00009b08 ldr r4, [pc, 0xec] |
0x00009b0a mov r6, r0 | r6 = r0;
0x00009b0c ldr r1, [pc, 0xec] |
0x00009b0e ldr r2, [pc, 0xf0] | r2 = *(0x9c02);
0x00009b10 add r4, pc |
0x00009b12 str r4, [sp] | *(sp) = r4;
0x00009b14 mov r5, r4 | r5 = r4;
0x00009b16 add r1, pc | r1 = 0x13716;
0x00009b18 ldr r3, [pc, 0xe8] | r3 = *(0x9c04);
0x00009b1a ldr r2, [r1, r2] |
0x00009b1c ldr r2, [r2] | r2 = *(0x13716);
0x00009b1e str r2, [sp, 0x10c] | var_10ch = r2;
0x00009b20 mov.w r2, 0 | r2 = 0;
0x00009b24 str r0, [sp, 4] | var_4h = r0;
0x00009b26 ldr r4, [r4, r3] | r4 = *(0x1370c);
0x00009b28 ldr r0, [r4] | r0 = *(0x1370c);
0x00009b2a blx 0x3040 | fcn_00003040 ();
0x00009b2e ldr r3, [pc, 0xd8] | r3 = *(0x9c0a);
0x00009b30 ldr r3, [r5, r3] | r3 = *((r5 + r3));
0x00009b32 ldr r0, [r3] | r0 = *(0x9c0a);
0x00009b34 blx 0x3040 | fcn_00003040 ();
0x00009b38 cmp r6, 0 |
| if (r6 <= 0) {
0x00009b3a ble 0x9bcc | goto label_2;
| }
0x00009b3c ldr r0, [pc, 0xcc] |
0x00009b3e add r0, pc | r0 = 0x1374e;
0x00009b40 blx 0x3070 | r0 = fcn_00003070 ();
| if (r0 != 0) {
0x00009b44 cbnz r0, 0x9ba4 | goto label_3;
| }
0x00009b46 ldr r1, [pc, 0xc8] |
0x00009b48 movs r0, 0xe | r0 = 0xe;
0x00009b4a add r1, pc | r1 = 0x13760;
0x00009b4c blx 0x3128 | fcn_00003128 ();
0x00009b4e invalid |
0x00009b52 movs r0, 1 | r0 = 1;
0x00009b54 ldr r1, [pc, 0xbc] |
0x00009b56 mov r2, r4 | r2 = r4;
0x00009b58 add r1, pc | r1 = 0x13770;
0x00009b5a blx 0x3620 | fcn_00003620 ();
0x00009b5e mov r0, r4 | r0 = r4;
0x00009b60 blx 0x320c | fcn_0000320c ();
0x00009b62 invalid |
| do {
0x00009b64 movs r2, 0 | r2 = 0;
0x00009b66 ldr r3, [pc, 0xb0] | r3 = *(0x9c1a);
0x00009b68 strb.w r2, [sp, 0xc] | var_ch = r2;
0x00009b6c add r4, sp, 0xc | r4 += var_ch;
0x00009b6e ldr r2, [sp] | r2 = *(sp);
0x00009b70 mov.w r1, 0x100 | r1 = 0x100;
0x00009b74 mov r0, r4 | r0 = r4;
0x00009b76 ldr r3, [r2, r3] | r3 = *((r2 + r3));
0x00009b78 ldr r2, [r3] | r2 = *(0x9c1a);
0x00009b7a blx 0x30bc | r0 = fcn_000030bc ();
| if (r0 != 0) {
0x00009b7e cbz r0, 0x9b90 |
0x00009b80 ldrb.w r4, [sp, 0xc] | r4 = var_ch;
0x00009b84 ldr r0, [pc, 0x94] |
0x00009b86 mov r1, r4 | r1 = r4;
0x00009b88 add r0, pc | r0 = 0x137a8;
0x00009b8a blx 0x3534 | r0 = ext2fs_bg_free_blocks_count_set ();
| if (r0 == 0) {
0x00009b8e cbz r0, 0x9bdc | goto label_4;
| }
| }
| label_0:
0x00009b90 ldr r2, [sp] | r2 = *(sp);
0x00009b92 movs r0, 0xa | r0 = 0xa;
0x00009b94 ldr r3, [pc, 0x6c] | r3 = *(0x9c04);
0x00009b96 ldr r3, [r2, r3] | r3 = *((r2 + r3));
0x00009b98 ldr r1, [r3] | r1 = *(0x9c04);
0x00009b9a blx 0x3834 | qsort ();
0x00009b9e movs r0, 1 | r0 = 1;
0x00009ba0 blx 0x34b0 | feof (r0);
0x00009ba2 invalid |
| label_3:
0x00009ba4 movs r1, 1 | r1 = 1;
0x00009ba6 movs r0, 0xe | r0 = 0xe;
0x00009ba8 blx 0x3128 | fcn_00003128 ();
0x00009bac ldr r0, [pc, 0x70] |
0x00009bae add r0, pc | r0 = 0x137d2;
0x00009bb0 blx 0x341c | fcn_0000341c ();
| label_1:
0x00009bb4 ldr r2, [pc, 0x6c] |
0x00009bb6 ldr r3, [pc, 0x48] | r3 = *(0x9c02);
0x00009bb8 add r2, pc | r2 = 0x137e0;
0x00009bba ldr r3, [r2, r3] | r3 = *(0x137e0);
0x00009bbc ldr r2, [r3] | r2 = *(0x137e0);
0x00009bbe ldr r3, [sp, 0x10c] | r3 = var_10ch;
0x00009bc0 eors r2, r3 | r2 ^= r3;
0x00009bc2 mov.w r3, 0 | r3 = 0;
| if (r2 != r3) {
0x00009bc6 bne 0x9bf4 | goto label_5;
| }
0x00009bc8 add sp, 0x110 |
0x00009bca pop {r4, r5, r6, pc} |
| label_2:
0x00009bcc ldr r0, [pc, 0x58] |
0x00009bce movs r2, 0x16 | r2 = 0x16;
0x00009bd0 ldr r3, [r4] | r3 = *(r4);
0x00009bd2 movs r1, 1 | r1 = 1;
0x00009bd4 add r0, pc | r0 = 0x13800;
0x00009bd6 blx 0x3324 | strcat (r0, r1)
0x00009bda b 0x9b64 |
| } while (1);
| label_4:
0x00009bdc ldr r0, [pc, 0x4c] |
0x00009bde mov r1, r4 | r1 = r4;
0x00009be0 add r0, pc | r0 = 0x13810;
0x00009be2 blx 0x3534 | r0 = ext2fs_bg_free_blocks_count_set ();
0x00009be6 cmp r0, 0 |
| if (r0 == 0) {
0x00009be8 beq 0x9b90 | goto label_0;
| }
0x00009bea movs r1, 1 | r1 = 1;
0x00009bec movs r0, 0xe | r0 = 0xe;
0x00009bee blx 0x3128 | fcn_00003128 ();
0x00009bf2 b 0x9bb4 | goto label_1;
| label_5:
0x00009bf4 blx 0x31f4 | fcn_000031f4 ();
0x00009bf8 b 0x9da4 | return void (*0x9da4)() ();
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/sbin/mkfs.ext3 @ 0x9c30 */
| #include <stdint.h>
|
; (fcn) fcn.00009c30 () | void fcn_00009c30 (int16_t arg1, int16_t arg2, int16_t arg3) {
| int16_t var_4h_2;
| int16_t var_ch;
| int16_t var_0h;
| int16_t var_4h;
| r0 = arg1;
| r1 = arg2;
| r2 = arg3;
0x00009c30 push.w {r4, r5, r6, r7, r8, lr} |
0x00009c34 mov r6, r2 | r6 = r2;
0x00009c36 ldr r2, [pc, 0xc0] |
0x00009c38 sub sp, 8 |
0x00009c3a mov r8, r1 | r8 = r1;
0x00009c3c mov r1, sp | r1 = sp;
0x00009c3e ldr r3, [pc, 0xbc] | r3 = *(0x9cfe);
0x00009c40 mov r7, r0 | r7 = r0;
0x00009c42 add r2, pc | r2 = 0x13940;
0x00009c44 ldr r4, [pc, 0xb8] |
0x00009c46 ldr r3, [r2, r3] |
0x00009c48 add r4, pc | r4 = 0x1394c;
0x00009c4a ldr r3, [r3] | r3 = *(0x13940);
0x00009c4c str r3, [sp, 4] | var_4h = r3;
0x00009c4e mov.w r3, 0 | r3 = 0;
0x00009c50 lsls r0, r0, 0xc | r0 <<= 0xc;
0x00009c52 blx 0x3314 | r0 = fcn_00003314 ();
| if (r0 != 0) {
0x00009c56 cbnz r0, 0x9ca4 | goto label_1;
| }
0x00009c58 ldr r5, [sp] | r5 = *(sp);
0x00009c5a lsls r2, r5, 0x1f | r2 = r5 << 0x1f;
| if (r2 < r5) {
0x00009c5c bmi 0x9c7c | goto label_2;
| }
0x00009c5e lsls r3, r5, 0x1b | r3 = r5 << 0x1b;
| if (r3 < r5) {
0x00009c60 bmi 0x9cb6 | goto label_3;
| }
| do {
| label_0:
0x00009c62 ldr r2, [pc, 0xa0] |
0x00009c64 ldr r3, [pc, 0x94] | r3 = *(0x9cfc);
0x00009c66 add r2, pc | r2 = 0x13970;
0x00009c68 ldr r3, [r2, r3] | r3 = *(0x13970);
0x00009c6a ldr r2, [r3] | r2 = *(0x13970);
0x00009c6c ldr r3, [sp, 4] | r3 = var_4h;
0x00009c6e eors r2, r3 | r2 ^= r3;
0x00009c70 mov.w r3, 0 | r3 = 0;
| if (r2 != r3) {
0x00009c74 bne 0x9cde | goto label_4;
| }
0x00009c76 add sp, 8 |
0x00009c78 pop.w {r4, r5, r6, r7, r8, pc} |
0x00009c7a strh r0, [r6, 0xe] | *((r6 + 0xe)) = r0;
| label_2:
0x00009c7c ldr r2, [pc, 0x88] | r2 = *(0x9d08);
0x00009c7e mov r3, r7 | r3 = r7;
0x00009c80 movs r1, 1 | r1 = 1;
0x00009c82 ldr r4, [r4, r2] | r4 = *((r4 + r2));
0x00009c84 ldr r2, [pc, 0x84] |
0x00009c86 ldr r0, [r4] | r0 = *(r4);
0x00009c88 add r2, pc | r2 = 0x13998;
0x00009c8a blx 0x3684 | ext2fs_write_inode ();
0x00009c8e cmp.w r8, 1 |
| if (r8 <= 1) {
0x00009c92 ble 0x9ce2 | goto label_5;
| }
0x00009c94 ldr r0, [pc, 0x78] |
0x00009c96 movs r2, 0x34 | r2 = 0x34;
0x00009c98 ldr r3, [r4] | r3 = *(r4);
0x00009c9a movs r1, 1 | r1 = 1;
0x00009c9c add r0, pc | r0 = 0x139b0;
0x00009c9e blx 0x3324 | strcat (r0, r1)
0x00009ca2 b 0x9c62 |
| } while (1);
| label_1:
0x00009ca4 mov r1, r0 | r1 = r0;
0x00009ca6 ldr r2, [pc, 0x6c] |
0x00009ca8 ldr r0, [pc, 0x6c] |
0x00009caa mov r3, r7 | r3 = r7;
0x00009cac add r2, pc | r2 = 0x139c6;
0x00009cae add r0, pc | r0 = 0x139ca;
0x00009cb0 blx 0x32cc | fcn_000032cc ();
0x00009cb4 b 0x9c62 | goto label_0;
| label_3:
0x00009cb6 ldr r2, [pc, 0x50] | r2 = *(0x9d0a);
0x00009cb8 mov r3, r7 | r3 = r7;
0x00009cba movs r1, 1 | r1 = 1;
0x00009cbc ldr r4, [r4, r2] | r4 = *((r4 + r2));
0x00009cbe ldr r2, [pc, 0x5c] |
0x00009cc0 ldr r0, [r4] | r0 = *(r4);
0x00009cc2 add r2, pc | r2 = 0x139e4;
0x00009cc4 blx 0x3684 | ext2fs_write_inode ();
0x00009cc8 cmp.w r8, 1 |
| if (r8 > 1) {
0x00009ccc ble 0x9ce2 |
0x00009cce ldr r0, [pc, 0x50] |
0x00009cd0 movs r2, 0x16 | r2 = 0x16;
0x00009cd2 ldr r3, [r4] | r3 = *(r4);
0x00009cd4 movs r1, 1 | r1 = 1;
0x00009cd6 add r0, pc | r0 = 0x139fc;
0x00009cd8 blx 0x3324 | strcat (r0, r1)
0x00009cdc b 0x9c62 | goto label_0;
| label_4:
0x00009cde blx 0x31f4 | fcn_000031f4 ();
| }
| label_5:
0x00009ce2 ldr r2, [pc, 0x40] |
0x00009ce4 mov r3, r6 | r3 = r6;
0x00009ce6 ldr r0, [r4] | r0 = *(r4);
0x00009ce8 movs r1, 1 | r1 = 1;
0x00009cea add r2, pc | r2 = 0x13a14;
0x00009cec blx 0x3684 | ext2fs_write_inode ();
0x00009cf0 movs r0, 1 | r0 = 1;
0x00009cf2 blx 0x34b0 | feof (r0);
0x00009cf6 nop |
0x00009cf8 svc 0xa2 | __asm ("svc 0xa2");
0x00009cfa movs r1, r0 | r1 = r0;
0x00009cfc lsls r4, r5, 0xe | r4 = r5 << 0xe;
0x00009cfe movs r0, r0 |
0x00009d00 svc 0x9c | __asm ("svc 0x9c");
0x00009d02 movs r1, r0 | r1 = r0;
0x00009d04 svc 0x7e | __asm ("svc 0x7e");
0x00009d06 movs r1, r0 | r1 = r0;
0x00009d08 lsls r0, r0, 0xf | r0 <<= 0xf;
0x00009d0a movs r0, r0 |
0x00009d0c push {r4, r5, r7, lr} |
0x00009d0e movs r0, r0 |
0x00009d10 push {r2, r3, r5, r7, lr} |
0x00009d12 movs r0, r0 |
0x00009d14 push {r3, r6, lr} |
0x00009d16 movs r0, r0 |
0x00009d18 push {r1, r4, r5, r6, lr} |
0x00009d1a movs r0, r0 |
0x00009d1c push {r1, r3, r4, r6, r7, lr} |
0x00009d1e movs r0, r0 |
0x00009d20 push {r1, r2, r3, r5, r6, r7, lr} |
0x00009d22 movs r0, r0 |
0x00009d24 push {r1, r2, r4, r7, lr} |
0x00009d26 movs r0, r0 |
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/sbin/mkfs.ext3 @ 0x9d28 */
| #include <stdint.h>
|
; (fcn) fcn.00009d28 () | void fcn_00009d28 (int16_t arg1) {
| int16_t var_4h;
| int16_t var_8h;
| int16_t var_ch;
| r0 = arg1;
0x00009d28 blmi 0x1a9c6d4 | __asm ("blmi 0x1a9c6d4");
0x00009d2c push.w {r4, r5, r6, r7, r8, sb, sl, fp, lr} |
0x00009d30 sub sp, 0x14 |
0x00009d32 add r2, pc | r2 += pc;
0x00009d34 ldr.w r8, [pc, 0x1a0] | r8 = *(0x00009ed8);
0x00009d38 mov r5, r0 | r5 = r0;
0x00009d3a ldr r3, [r2, r3] | r3 = *((r2 + r3));
0x00009d3c add r8, pc | r8 += pc;
0x00009d3e ldr r3, [r3] | r3 = *(r3);
0x00009d40 str r3, [sp, 0xc] | var_ch = r3;
0x00009d42 mov.w r3, 0 | r3 = 0;
0x00009d46 blx 0x3504 | r0 = e2p_os2string ();
0x00009d4a adds r4, r0, 1 | r4 = r0 + 1;
0x00009d4c mov r0, r4 | r0 = r4;
0x00009d4e blx 0x3450 | strerror (r0);
0x00009d52 str r0, [sp, 4] | var_4h = r0;
0x00009d54 cmp r0, 0 |
| if (r0 == 0) {
0x00009d56 beq.w 0x9e90 | goto label_3;
| }
0x00009d5a mov r2, r4 | r2 = r4;
0x00009d5c mov r1, r5 | r1 = r5;
0x00009d5e blx 0x30e0 | fcn_000030e0 ();
0x00009d62 ldr.w sl, [sp, 4] | sl = var_4h;
0x00009d66 movs r6, 0 | r6 = 0;
0x00009d68 ldr r7, [pc, 0x170] |
0x00009d6a ldr.w sb, [pc, 0x174] |
0x00009d6e ldrb.w r2, [sl] | r2 = *(sl);
0x00009d72 ldr.w fp, [pc, 0x170] |
0x00009d76 add r7, pc | r7 = 0x13c56;
0x00009d78 add sb, pc | sb = 0x13c5e;
0x00009d7a add fp, pc | fp = 0x13c64;
| if (r2 == 0) {
0x00009d7c cbz r2, 0x9de6 | goto label_4;
| }
| do {
0x00009d7e movs r1, 0x2c | r1 = 0x2c;
0x00009d80 mov r0, sl | r0 = sl;
0x00009d82 blx 0x3534 | r0 = ext2fs_bg_free_blocks_count_set ();
0x00009d86 mov r4, r0 | r4 = r0;
0x00009d88 str r0, [sp, 8] | var_8h = r0;
| if (r0 != 0) {
0x00009d8a cbz r0, 0x9d94 |
0x00009d8c movs r2, 0 | r2 = 0;
0x00009d8e strb r2, [r0] | *(r0) = r2;
0x00009d90 ldr r4, [sp, 8] | r4 = var_8h;
0x00009d92 adds r4, 1 | r4++;
| }
0x00009d94 movs r1, 0x3d | r1 = 0x3d;
0x00009d96 mov r0, sl | r0 = sl;
0x00009d98 blx 0x3534 | r0 = ext2fs_bg_free_blocks_count_set ();
0x00009d9c mov r5, r0 | r5 = r0;
| if (r0 != 0) {
0x00009d9e cbz r0, 0x9da6 |
0x00009da0 movs r2, 0 | r2 = 0;
0x00009da2 invalid |
0x00009da4 cmp r3, 1 |
| }
0x00009da6 mov r1, r7 | r1 = r7;
0x00009da8 mov r0, sl | r0 = sl;
0x00009daa blx 0x2f98 | r0 = fcn_00002f98 ();
0x00009dae mov r2, r0 | r2 = r0;
0x00009db0 cmp r0, 0 |
| if (r0 == 0) {
0x00009db2 beq 0x9e26 | goto label_5;
| }
0x00009db4 mov r1, sb | r1 = sb;
0x00009db6 mov r0, sl | r0 = sl;
0x00009db8 blx 0x2f98 | r0 = fcn_00002f98 ();
| if (r0 != 0) {
0x00009dbc cbnz r0, 0x9e0a | goto label_6;
| }
| if (r5 != 0) {
0x00009dbe cbz r5, 0x9dd8 |
0x00009dc0 mov r2, r0 | r2 = r0;
0x00009dc2 add r1, sp, 8 | r1 += var_8h;
0x00009dc4 mov r0, r5 | r0 = r5;
0x00009dc6 blx 0x34f8 | ext2fs_inode_bitmap_loc_set ();
0x00009dca ldr r3, [pc, 0x11c] | r3 = *(0x9eea);
| label_1:
0x00009dcc ldr.w r3, [r8, r3] | r3 = *((r8 + r3));
0x00009dd0 str r0, [r3] | *(r3) = r0;
0x00009dd2 ldr r3, [sp, 8] | r3 = var_8h;
0x00009dd4 ldrb r3, [r3] | r3 = *(r3);
| if (r3 == 0) {
0x00009dd6 cbz r3, 0x9dda | goto label_2;
| }
| }
| label_0:
0x00009dd8 adds r6, 1 | r6++;
| if (r4 == 0) {
| label_2:
0x00009dda cbz r4, 0x9de6 | goto label_4;
| }
0x00009ddc mov sl, r4 | sl = r4;
0x00009dde ldrb.w r2, [sl] | r2 = *(sl);
0x00009de2 cmp r2, 0 |
0x00009de4 bne 0x9d7e |
| } while (r2 != 0);
| label_4:
0x00009de6 cmp r6, 0 |
| if (r6 != 0) {
0x00009de8 bne 0x9eae | goto label_7;
| }
0x00009dea ldr r2, [pc, 0x100] |
0x00009dec ldr r3, [pc, 0xe4] | r3 = *(0x9ed4);
0x00009dee add r2, pc | r2 = 0x13ce0;
0x00009df0 ldr r3, [r2, r3] | r3 = *(0x13ce0);
0x00009df2 ldr r2, [r3] | r2 = *(0x13ce0);
0x00009df4 ldr r3, [sp, 0xc] | r3 = var_ch;
0x00009df6 eors r2, r3 | r2 ^= r3;
0x00009df8 mov.w r3, 0 | r3 = 0;
0x00009dfa lsls r0, r0, 0xc | r0 <<= 0xc;
| if (r0 != r0) {
0x00009dfc bne 0x9eaa | goto label_8;
| }
0x00009dfe ldr r0, [sp, 4] | r0 = var_4h;
0x00009e00 add sp, 0x14 |
0x00009e02 pop.w {r4, r5, r6, r7, r8, sb, sl, fp, lr} |
0x00009e06 b.w 0x3094 | void (*0x3094)() ();
| if (r5 != 0) {
0x00009e08 cbnz r5, 0x9e1c | goto label_9;
| }
| label_6:
0x00009e0a mov r1, fp | r1 = fp;
0x00009e0c mov r0, sl | r0 = sl;
0x00009e0e blx 0x2f98 | r0 = fcn_00002f98 ();
| if (r0 != 0) {
0x00009e12 cbnz r0, 0x9e52 | goto label_10;
| }
0x00009e14 cmp r5, 0 |
| if (r5 == 0) {
0x00009e16 beq 0x9dd8 | goto label_0;
| }
0x00009e18 mov r2, r0 | r2 = r0;
0x00009e1a add r1, sp, 8 | r1 += var_8h;
| label_9:
0x00009e1c mov r0, r5 | r0 = r5;
0x00009e1e blx 0x34f8 | ext2fs_inode_bitmap_loc_set ();
0x00009e22 ldr r3, [pc, 0xcc] | r3 = *(0x9ef2);
0x00009e24 b 0x9dcc | goto label_1;
| label_5:
0x00009e26 mov r1, r5 | r1 = r5;
0x00009e28 blx 0x3434 | fcn_00003434 ();
0x00009e2c ldr r3, [pc, 0xc4] | r3 = *(0x9ef4);
0x00009e2e ldr.w r3, [r8, r3] | r3 = *((r8 + r3));
0x00009e32 str r0, [r3] | *(r3) = r0;
0x00009e34 cmp r0, 0 |
| if (r0 != 0) {
0x00009e36 bne 0x9dda | goto label_2;
| }
0x00009e38 cmp r5, 0 |
| if (r5 == 0) {
0x00009e3a beq 0x9dd8 | goto label_0;
| }
0x00009e3c ldr r2, [pc, 0xb8] | r2 = *(0x9ef8);
0x00009e3e mov r3, r5 | r3 = r5;
0x00009e40 movs r1, 1 | r1 = 1;
0x00009e42 ldr.w r2, [r8, r2] | r2 = *((r8 + r2));
0x00009e46 ldr r0, [r2] | r0 = *(0x9ef8);
0x00009e48 ldr r2, [pc, 0xb0] |
0x00009e4a add r2, pc | r2 = 0x13d4a;
0x00009e4c blx 0x3684 | ext2fs_write_inode ();
0x00009e50 b 0x9dd8 | goto label_0;
| label_10:
0x00009e52 ldr r1, [pc, 0xac] |
0x00009e54 mov r0, sl | r0 = sl;
0x00009e56 add r1, pc | r1 = 0x13d5c;
0x00009e58 blx 0x2f98 | r0 = fcn_00002f98 ();
| if (r0 != 0) {
0x00009e5c cbnz r0, 0x9e72 | goto label_11;
| }
0x00009e5e cmp r5, 0 |
| if (r5 == 0) {
0x00009e60 beq 0x9dd8 | goto label_0;
| }
0x00009e62 mov r0, r5 | r0 = r5;
0x00009e64 blx 0x31dc | fcn_000031dc ();
0x00009e68 ldr r3, [pc, 0x98] |
0x00009e6a add r3, pc | r3 = 0x13d72;
0x00009e6c str.w r0, [r3, 0x188] | __asm ("str.w r0, [r3, 0x188]");
0x00009e70 b 0x9dda | goto label_2;
| label_11:
0x00009e72 ldr r1, [pc, 0x94] |
0x00009e74 mov r0, sl | r0 = sl;
0x00009e76 add r1, pc | r1 = 0x13d84;
0x00009e78 blx 0x2f98 | r0 = fcn_00002f98 ();
0x00009e7c cmp r0, 0 |
| if (r0 != 0) {
0x00009e7e bne 0x9dd8 | goto label_0;
| }
0x00009e80 ldr r3, [pc, 0x88] | r3 = *(0x9f0c);
0x00009e82 ldr.w r2, [r8, r3] | r2 = *((r8 + r3));
0x00009e86 ldr r3, [r2] | r3 = *(r2);
0x00009e88 orr r3, r3, 1 | r3 |= 1;
0x00009e8c str r3, [r2] | *(r2) = r3;
0x00009e8e b 0x9dda | goto label_2;
| label_3:
0x00009e90 ldr r3, [pc, 0x64] |
0x00009e92 movs r2, 0x33 | r2 = 0x33;
0x00009e94 ldr r0, [pc, 0x78] |
0x00009e96 movs r1, 1 | r1 = 1;
0x00009e98 ldr.w r3, [r8, r3] | r3 = *((r8 + r3));
0x00009e9c add r0, pc | r0 = 0x13db0;
0x00009e9e ldr r3, [r3] | r3 = *(0x9ef8);
0x00009ea0 blx 0x3324 | strcat (r0, r1)
0x00009ea4 movs r0, 1 | r0 = 1;
0x00009ea6 blx 0x34b0 | r0 = feof (r0);
| label_8:
0x00009eaa blx 0x31f4 | fcn_000031f4 ();
| label_7:
0x00009eae ldr r3, [pc, 0x48] |
0x00009eb0 mov.w r2, 0x14a | r2 = 0x14a;
0x00009eb4 ldr r0, [pc, 0x5c] |
0x00009eb6 movs r1, 1 | r1 = 1;
0x00009eb8 ldr.w r3, [r8, r3] | r3 = *((r8 + r3));
0x00009ebc add r0, pc | r0 = 0x13dd4;
0x00009ebe ldr r3, [r3] | r3 = *(0x9efa);
0x00009ec0 blx 0x3324 | strcat (r0, r1)
0x00009ec4 ldr r0, [sp, 4] | r0 = var_4h;
0x00009ec6 blx 0x3098 | fcn_00003098 ();
0x00009eca movs r0, 1 | r0 = 1;
0x00009ecc blx 0x34b0 | feof (r0);
0x00009ed0 udf 0xb2 | __asm ("udf 0xb2");
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/sbin/mkfs.ext3 @ 0x9f18 */
| #include <stdint.h>
|
; (fcn) fcn.00009f18 () | void fcn_00009f18 (int16_t arg1, int16_t arg2, int16_t arg3, int16_t arg4) {
| r0 = arg1;
| r1 = arg2;
| r2 = arg3;
| r3 = arg4;
| do {
0x00003320 invalid | void (*0x3324)() ();
0x00009f18 push.w {r4, r5, r6, r7, r8, sb, sl, fp, lr} |
0x00009f1c mov r5, r1 | r5 = r1;
0x00009f1e ldr r7, [pc, 0xe4] |
0x00009f20 sub sp, 4 |
0x00009f22 mov r1, r3 | r1 = r3;
0x00009f24 mov r4, r3 | r4 = r3;
0x00009f26 mov r6, r0 | r6 = r0;
0x00009f28 mov r8, r2 | r8 = r2;
0x00009f2a add r7, pc | r7 = 0x13f34;
0x00009f2c blx 0x3888 | r0 = e2p_get_encoding_flags ();
0x00009f30 cmp r0, 0 |
| if (r0 == 0) {
0x00009f32 bne 0x9fb0 |
0x00009f34 ldr.w sl, [r4, 0x10] | sl = *((r4 + 0x10));
0x00009f38 cmp r5, 0 |
0x00009f3a ldr.w r3, [sl, 0x5c] | r3 = *((sl + 0x5c));
0x00009f3e and sb, r3, 0x400 | sb = r3 & 0x400;
| if (r5 > 0) {
0x00009f42 ble 0x9f9e |
0x00009f44 ldr.w fp, [r4, 0x14] | fp = *((r4 + 0x14));
0x00009f48 lsls r0, r5, 0xa | r0 = r5 << 0xa;
0x00009f4a lsr.w r1, fp, 0xa | r1 = fp >> 0xa;
0x00009f4e bl 0x11768 | r0 = fcn_00011768 (r0, r1, r2);
0x00009f52 mov r4, r0 | r4 = r0;
0x00009f54 str r0, [r6] | *(r6) = r0;
0x00009f56 cmp.w sb, 0 |
| if (sb != 0) {
0x00009f5a bne 0x9fc8 | goto label_2;
| }
0x00009f5c str.w sb, [r6, 4] | __asm ("str.w sb, [r6, 4]");
| label_0:
0x00009f60 mov.w r3, 0x3c00 | r3 = 0x3c00;
0x00009f64 sub.w r2, r4, 0x400 | r2 = r4 - 0x400;
0x00009f68 movt r3, 0x9c | r3 = (r3 & 0xFFFF) | 0x9c0000;
0x00009f6c cmp r2, r3 |
| if (r2 > r3) {
0x00009f6e bhi 0x9fea | goto label_3;
| }
0x00009f70 mov r0, sl | r0 = sl;
0x00009f72 blx 0x396c | r0 = snprintf_chk ();
0x00009f76 lsrs r0, r0, 1 | r0 >>= 1;
0x00009f78 orr.w r0, r0, r1, lsl 31 | r0 |= (r1 << 31);
| label_1:
0x00009f7c lsrs r1, r1, 1 | r1 >>= 1;
0x00009f7e cmp r0, r4 |
0x00009f80 sbcs r1, r1, 0 | __asm ("sbcs r1, r1, 0");
| if (r0 >= r4) {
0x00009f84 bhs 0x9faa | goto label_4;
| }
0x00009f86 ldr r3, [pc, 0x80] |
0x00009f88 movs r2, 0x2c | r2 = 0x2c;
0x00009f8a ldr r0, [pc, 0x80] |
0x00009f8c movs r1, 1 | r1 = 1;
0x00009f8e ldr r3, [r7, r3] | r3 = *((r7 + r3));
0x00009f90 add r0, pc | r0 = 0x13fa2;
0x00009f92 ldr r3, [r3] | r3 = *(0xa00a);
0x00009f94 blx 0x3324 | strcat (r0, r1)
0x00009f98 movs r0, 1 | r0 = 1;
0x00009f9a blx 0x34b0 | feof (r0);
0x00009f9c invalid |
| }
0x00009f9e cmp.w sb, 0 |
0x00009fa2 it ne |
| if (sb != 0) {
0x00009fa4 cmpne r8, 0 | __asm ("cmpne r8, 0");
| }
| if (sb > 0) {
0x00009fa8 bgt 0x9fd4 | goto label_5;
| }
| label_4:
0x00009faa add sp, 4 |
0x00009fac pop.w {r4, r5, r6, r7, r8, sb, sl, fp, pc} |
0x00009fae ldrh r0, [r6, 0x3e] | r0 = *((r6 + 0x3e));
| }
0x00009fb0 ldr r3, [pc, 0x54] |
0x00009fb2 movs r2, 0x24 | r2 = 0x24;
0x00009fb4 ldr r0, [pc, 0x58] |
0x00009fb6 movs r1, 1 | r1 = 1;
0x00009fb8 ldr r3, [r7, r3] | r3 = *((r7 + r3));
0x00009fba add r0, pc | r0 = 0x13fce;
0x00009fbc ldr r3, [r3] | r3 = *(0xa008);
0x00009fbe add sp, 4 |
0x00009fc0 pop.w {r4, r5, r6, r7, r8, sb, sl, fp, lr} |
0x00009fc4 b.w 0x3320 |
| } while (1);
| label_2:
0x00009fc8 cmp.w r8, 0 |
| if (r8 <= 0) {
0x00009fcc bgt 0x9fda |
0x00009fce ldr r3, [r6, 4] | r3 = *((r6 + 4));
0x00009fd0 add r4, r3 | r4 += r3;
0x00009fd2 b 0x9f60 | goto label_0;
| label_5:
0x00009fd4 ldr.w fp, [r4, 0x14] | fp = *((r4 + 0x14));
0x00009fd8 ldr r4, [r6] | r4 = *(r6);
| }
0x00009fda lsl.w r0, r8, 0xa | r0 = r8 << 0xa;
0x00009fde mov r1, fp | r1 = fp;
0x00009fe0 bl 0x11768 | r0 = fcn_00011768 (r0, r1, r2);
0x00009fe4 add r4, r0 | r4 += r0;
0x00009fe6 str r0, [r6, 4] | *((r6 + 4)) = r0;
0x00009fe8 b 0x9f60 | goto label_0;
| label_3:
0x00009fea ldr r0, [pc, 0x1c] |
0x00009fec mov r3, r4 | r3 = r4;
0x00009fee ldr r2, [pc, 0x24] |
0x00009ff0 movs r1, 1 | r1 = 1;
0x00009ff2 ldr r0, [r7, r0] | r0 = *((r7 + r0));
0x00009ff4 add r2, pc | r2 = 0x1400e;
0x00009ff6 ldr r0, [r0] | r0 = *(0xa00a);
0x00009ff8 blx 0x3684 | ext2fs_write_inode ();
0x00009ffc movs r0, 1 | r0 = 1;
0x00009ffe blx 0x34b0 | feof (r0);
0x0000a002 nop |
| if (r0 > 1) {
0x0000a004 bgt 0x9f7c | goto label_1;
| }
0x0000a006 movs r1, r0 | r1 = r0;
0x0000a008 lsls r0, r0, 0xf | r0 <<= 0xf;
0x0000a00a movs r0, r0 |
0x0000a00c push {r3, r4, r5, r7, lr} |
0x0000a00e movs r0, r0 |
0x0000a010 push {r1, r3, r4, r5, r6, r7} |
0x0000a012 movs r0, r0 |
0x0000a014 push {r3, r5, r6, r7} |
0x0000a016 movs r0, r0 |
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/sbin/mkfs.ext3 @ 0xa4b8 */
| #include <stdint.h>
|
; (fcn) fcn.0000a4b8 () | void fcn_0000a4b8 (int16_t arg_0h, int16_t arg_4h, int16_t arg_5ch, int16_t arg_64h, int16_t arg_68h, int16_t arg_6ch, int16_t arg_70h, int16_t arg_74h, int16_t c, int16_t arg_7ch, int16_t arg_80h, int16_t arg_84h, int16_t arg_88h, int16_t arg_8ch, int16_t arg_90h, int16_t arg_94h, int16_t arg_9ch, int16_t arg_9eh, int16_t arg_a0h, int16_t arg_b4h, int16_t arg_b6h, int16_t arg_114h, int16_t arg_116h, int16_t arg_11ch, int16_t arg1, int16_t arg2) {
| int16_t var_38h;
| int16_t var_11ch;
| int16_t var_0h_2;
| int16_t var_4h_2;
| int16_t var_8h_2;
| int16_t var_ch_2;
| int16_t var_10h;
| int16_t var_1ch;
| int16_t var_20h;
| int16_t var_24h;
| int16_t var_28h;
| int16_t var_2ch;
| int16_t var_0h;
| int16_t var_4h;
| char * s2;
| int16_t var_ch;
| int16_t var_40h;
| int16_t var_44h;
| int16_t var_48h;
| int16_t var_4ch;
| int16_t var_50h;
| int16_t var_54h;
| int16_t var_58h;
| int16_t var_5ch;
| r0 = arg1;
| r1 = arg2;
0x0000a4b8 push.w {r4, r5, r6, r7, r8, sb, sl, fp, lr} |
0x0000a4bc sub sp, 0x124 |
0x0000a4be ldr.w r5, [pc, 0xa9c] | r5 = *(0x0000af5c);
0x0000a4c2 mov sl, r0 | sl = r0;
0x0000a4c4 ldr.w r4, [pc, 0xa98] | r4 = *(0x0000af60);
0x0000a4c8 ldr.w r2, [pc, 0xa98] |
0x0000a4ca cmp r2, 0x98 |
0x0000a4cc add r5, pc | r5 += pc;
0x0000a4ce str r5, [sp, 0x38] | var_38h = r5;
0x0000a4d0 add r4, pc | r4 += pc;
0x0000a4d2 ldr.w r3, [pc, 0xa94] | r3 = *(0xaf6a);
0x0000a4d6 ldr r2, [r4, r2] | r2 = *((r4 + r2));
0x0000a4d8 mov r4, r1 | r4 = r1;
0x0000a4da ldr.w r1, [pc, 0xa90] |
0x0000a4de ldr r2, [r2] | r2 = *(0xaf64);
0x0000a4e0 str r2, [sp, 0x11c] | var_11ch = r2;
0x0000a4e2 mov.w r2, 0 | r2 = 0;
0x0000a4e6 movs r2, 0 | r2 = 0;
0x0000a4e8 ldr r6, [r5, r3] | r6 = *((r5 + r3));
0x0000a4ea add r1, pc | r1 = 0x1545c;
0x0000a4ec ldr r0, [r6] | r0 = *(r6);
0x0000a4ee bl 0x9a48 | r0 = fcn_00009a48 (r0, r1, r2, r3, r4);
0x0000a4f2 mov fp, r0 |
0x0000a4f4 cmp r0, 0 |
| if (r0 == 0) {
0x0000a4f6 beq.w 0xa82a | goto label_2;
| }
0x0000a4fa ldr.w r3, [sl, 0x10] | r3 = *((sl + 0x10));
0x0000a4fe ldr r3, [r3, 0x60] | r3 = *((r3 + 0x60));
0x0000a500 lsls r3, r3, 0x19 | r3 <<= 0x19;
| if (r3 >= r3) {
0x0000a502 bpl.w 0xa822 | goto label_21;
| }
0x0000a504 strh r6, [r1, 0xc] | *((r1 + 0xc)) = r6;
0x0000a506 ldr.w r1, [pc, 0xa68] |
0x0000a50a movs r2, 0 | r2 = 0;
0x0000a50c ldr.w r5, [pc, 0xa64] | r5 = *(0x0000af74);
0x0000a510 ldr r0, [r6] | r0 = *(r6);
0x0000a512 add r1, pc |
0x0000a514 bl 0x98d0 | fcn_000098d0 (r0, r1, r2, r3, r4, r5, r6);
0x0000a516 invalid |
0x0000a51a subs r4, r3, r1 | r4 = r3 - r1;
0x0000a51c add r5, pc | r5 += pc;
0x0000a51e str r0, [r5] | *(r5) = r0;
0x0000a520 movs r2, 0 | r2 = 0;
0x0000a522 ldr r0, [r6] | r0 = *(r6);
0x0000a524 add r1, pc | r1 = 0x1f9b0;
0x0000a526 bl 0x98d0 | fcn_000098d0 (r0, r1, r2, r3, r4, r5, r6);
0x0000a52a ldr.w r1, [pc, 0xa50] |
0x0000a52e movs r2, 0x3f | r2 = 0x3f;
0x0000a530 str r0, [r5, 4] | *((r5 + 4)) = r0;
0x0000a532 ldr r0, [r6] | r0 = *(r6);
0x0000a534 add r1, pc | r1 = 0x154b6;
0x0000a536 bl 0x98d0 | fcn_000098d0 (r0, r1, r2, r3, r4, r5, r6);
0x0000a53a ldr.w r1, [pc, 0xa44] |
0x0000a53e movs r2, 0 | r2 = 0;
0x0000a540 str.w r0, [sl, 0x5c] | __asm ("str.w r0, [sl, 0x5c]");
0x0000a544 ldr r0, [r6] | r0 = *(r6);
0x0000a546 add r1, pc | r1 = 0x154cc;
0x0000a548 bl 0x98d0 | fcn_000098d0 (r0, r1, r2, r3, r4, r5, r6);
0x0000a54c ldr.w r2, [pc, 0xa34] |
0x0000a550 ldr.w r1, [pc, 0xa34] |
0x0000a552 subs r4, r6, r0 | r4 = r6 - r0;
0x0000a554 str r0, [r5, 8] | *((r5 + 8)) = r0;
0x0000a556 add r2, pc | r2 = 0x154de;
0x0000a558 ldr r0, [r6] | r0 = *(r6);
0x0000a55a add r1, pc | r1 = 0x154e6;
0x0000a55c bl 0x9808 | fcn_00009808 (r0, r1, r2);
0x0000a560 ldr.w r3, [sl, 0x10] | r3 = *((sl + 0x10));
0x0000a564 mov r7, r0 | r7 = r0;
0x0000a566 ldr r1, [r3, 0x18] | r1 = *((r3 + 0x18));
0x0000a568 blx 0x314c | fcn_0000314c ();
0x0000a56c strd r0, r1, [r5, 0x10] | __asm ("strd r0, r1, [r5, 0x10]");
0x0000a570 mov r0, r7 | r0 = r7;
0x0000a572 ldr.w r7, [pc, 0xa18] |
0x0000a576 blx 0x3098 | fcn_00003098 ();
0x0000a57a ldr.w r1, [pc, 0xa14] |
0x0000a57e add r7, pc | r7 = 0x15510;
0x0000a580 ldr r0, [r6] | r0 = *(r6);
0x0000a582 mov r2, r7 | r2 = r7;
0x0000a584 add r1, pc | r1 = 0x1551a;
0x0000a586 bl 0x9808 | fcn_00009808 (r0, r1, r2);
0x0000a58a ldr.w r3, [sl, 0x10] | r3 = *((sl + 0x10));
0x0000a58e mov r8, r0 | r8 = r0;
0x0000a590 ldr r1, [r3, 0x18] | r1 = *((r3 + 0x18));
0x0000a592 blx 0x314c | fcn_0000314c ();
0x0000a596 strd r0, r1, [r5, 0x18] | __asm ("strd r0, r1, [r5, 0x18]");
0x0000a59a mov r0, r8 | r0 = r8;
0x0000a59c blx 0x3098 | fcn_00003098 ();
0x0000a5a0 ldr.w r1, [pc, 0x9f0] |
0x0000a5a4 mov r2, r7 | r2 = r7;
0x0000a5a6 ldr r0, [r6] | r0 = *(r6);
0x0000a5a8 add r1, pc | r1 = 0x15540;
0x0000a5aa bl 0x9808 | fcn_00009808 (r0, r1, r2);
0x0000a5ae ldr.w r3, [sl, 0x10] | r3 = *((sl + 0x10));
0x0000a5b0 adds r0, 0x10 | r0 += 0x10;
0x0000a5b2 mov r5, r0 | r5 = r0;
0x0000a5b4 ldr r1, [r3, 0x18] | r1 = *((r3 + 0x18));
0x0000a5b6 blx 0x314c | r0 = fcn_0000314c ();
0x0000a5ba mov r3, r0 | r3 = r0;
0x0000a5bc mov r0, r5 | r0 = r5;
0x0000a5be str r3, [sp, 0x20] | var_20h = r3;
0x0000a5c0 blx 0x3098 | fcn_00003098 ();
0x0000a5c4 ldr.w r1, [pc, 0x9d0] |
0x0000a5c8 movs r2, 0 | r2 = 0;
0x0000a5ca ldr r0, [r6] | r0 = *(r6);
0x0000a5cc add r1, pc | r1 = 0x15568;
0x0000a5ce bl 0x9a48 | r0 = fcn_00009a48 (r0, r1, r2, r3, r4);
0x0000a5d2 cmp r0, 0 |
| if (r0 != 0) {
0x0000a5d4 bne.w 0xa86e | goto label_22;
| }
0x0000a5d8 movs r3, 0 | r3 = 0;
0x0000a5da str r3, [sp, 0x24] | var_24h = r3;
0x0000a5dc str r3, [sp, 0x30] | var_0h = r3;
| label_3:
0x0000a5de ldr.w r3, [pc, 0x9bc] | r3 = *(0x0000af9c);
0x0000a5e2 ldr r7, [sp, 0x20] | r7 = var_20h;
0x0000a5e4 add r3, pc | r3 += pc;
0x0000a5e6 ldrd r4, r5, [r3, 0x18] | __asm ("ldrd r4, r5, [r3, 0x18]");
| if (r7 != 0) {
0x0000a5ea cbz r7, 0xa5fe |
0x0000a5ec mov r2, r7 | r2 = r7;
0x0000a5ee movs r3, 0 | r3 = 0;
0x0000a5f0 mov r0, r4 | r0 = r4;
0x0000a5f2 mov r1, r5 | r1 = r5;
0x0000a5f4 bl 0x120a8 | fcn_000120a8 (r0, r1, r2, r3);
0x0000a5f8 cmp r2, 0 |
| if (r2 != 0) {
0x0000a5fa bne.w 0xa85c | goto label_23;
| }
| }
| label_1:
0x0000a5fe ldr.w r7, [pc, 0x9a0] | r7 = *(0x0000afa0);
0x0000a602 ldr.w r3, [pc, 0x9a0] | r3 = *(0x0000afa4);
0x0000a606 ldr.w r1, [pc, 0x9a0] |
0x0000a60a add r7, pc | r7 += pc;
0x0000a60c ldr r0, [r6] | r0 = *(r6);
0x0000a60e add r3, pc | r3 += pc;
0x0000a610 ldr r2, [r7] | r2 = *(r7);
0x0000a612 add r1, pc | r1 = 0x155c0;
0x0000a614 strd r4, r5, [r3, 0x18] | __asm ("strd r4, r5, [r3, 0x18]");
0x0000a616 cmp r6, r0 |
0x0000a618 bl 0x9a48 | fcn_00009a48 (r0, r1, r2, r3, r4);
0x0000a61a uxtah r8, r6, pc, ror 8 | __asm ("uxtah r8, r6, pc, ror 8");
0x0000a61e cmp r1, 0x8c |
0x0000a620 ldr.w r1, [pc, 0x98c] |
0x0000a624 str r0, [r7] | *(r7) = r0;
0x0000a626 add r2, pc | r2 += pc;
0x0000a628 ldr r0, [r6] | r0 = *(r6);
0x0000a62a add r1, pc | r1 = 0x155de;
0x0000a62c bl 0x9808 | fcn_00009808 (r0, r1, r2);
0x0000a630 str r0, [sp, 0x10] | var_10h = r0;
0x0000a632 blx 0x3504 | r0 = e2p_os2string ();
0x0000a636 adds r4, r0, 1 | r4 = r0 + 1;
0x0000a638 mov r0, r4 | r0 = r4;
0x0000a63a blx 0x3450 | r0 = strerror (r0);
0x0000a63e mov sb, r0 | sb = r0;
0x0000a640 cmp r0, 0 |
| if (r0 == 0) {
0x0000a642 beq.w 0xaf50 | goto label_24;
| }
0x0000a646 ldr.w r7, [pc, 0x96c] | r7 = *(0x0000afb4);
0x0000a64a mov r2, r4 | r2 = r4;
0x0000a64c add.w r8, sp, 0x80 | r8 += arg_80h;
0x0000a650 ldr r1, [sp, 0x10] | r1 = var_10h;
0x0000a652 mov r5, r0 | r5 = r0;
0x0000a654 movs r4, 2 | r4 = 2;
0x0000a656 add r7, pc | r7 += pc;
0x0000a658 blx 0x30e0 | fcn_000030e0 ();
0x0000a65c mov r3, r8 | r3 = r8;
0x0000a65e mov fp, r7 |
0x0000a660 mov r8, r6 | r8 = r6;
0x0000a662 mov r7, r4 | r7 = r4;
0x0000a664 mov r6, r3 | r6 = r3;
0x0000a666 b 0xa67a |
| while (r0 != 0) {
0x0000a668 movs r3, 0 | r3 = 0;
0x0000a66a strb r3, [r4], 1 | *(r4) = r3;
| r4++;
0x0000a66e ldrb r3, [r5] | r3 = *(r5);
| if (r3 != 0) {
0x0000a670 cbnz r3, 0xa68c | goto label_25;
| }
| label_0:
0x0000a672 ldrb r3, [r4] | r3 = *(r4);
0x0000a674 mov r5, r4 | r5 = r4;
0x0000a676 cmp r3, 0 |
| if (r3 == 0) {
0x0000a678 beq 0xa6f8 | goto label_26;
| }
0x0000a67a movs r1, 0x2f | r1 = 0x2f;
0x0000a67c mov r0, r5 | r0 = r5;
0x0000a67e blx 0x3534 | r0 = ext2fs_bg_free_blocks_count_set ();
0x0000a682 mov r4, r0 | r4 = r0;
0x0000a684 cmp r0, 0 |
0x0000a686 bne 0xa668 |
| }
0x0000a688 ldrb r3, [r5] | r3 = *(r5);
| if (r3 == 0) {
0x0000a68a cbz r3, 0xa6f8 | goto label_26;
| }
| label_25:
0x0000a68c movs r3, 0 | r3 = 0;
0x0000a68e mov.w r2, 0x4000 | r2 = 0x4000;
0x0000a692 mov r1, r7 | r1 = r7;
0x0000a694 mov r0, sl | r0 = sl;
0x0000a696 str r6, [sp] | *(sp) = r6;
0x0000a698 blx 0x336c | r0 = strcpy (r0, r1);
0x0000a69c cmp r0, 0 |
| if (r0 != 0) {
0x0000a69e bne.w 0xa84c | goto label_27;
| }
0x0000a6a2 ldr r2, [sp, 0x80] | r2 = *(arg_80h);
0x0000a6a4 mov r3, r5 | r3 = r5;
0x0000a6a6 mov r1, r7 | r1 = r7;
0x0000a6a8 mov r0, sl | r0 = sl;
0x0000a6aa blx 0x36f0 | r0 = ext2fs_close_free ();
0x0000a6ae cmp r0, 0 |
| if (r0 != 0) {
0x0000a6b0 bne.w 0xa84c | goto label_27;
| }
0x0000a6b4 ldr r7, [sp, 0x80] | r7 = *(arg_80h);
0x0000a6b6 add r5, sp, 0x9c | r5 += arg_9ch;
0x0000a6b8 mov r2, r5 | r2 = r5;
0x0000a6ba mov r0, sl | r0 = sl;
0x0000a6bc mov r1, r7 | r1 = r7;
0x0000a6be blx 0x2f58 | r0 = ext2fs_read_inode ();
0x0000a6c2 cmp r0, 0 |
| if (r0 != 0) {
0x0000a6c4 bne.w 0xa84c | goto label_27;
| }
0x0000a6c8 ldr.w r3, [fp] | r3 = *(fp);
0x0000a6cc mov r2, r5 | r2 = r5;
0x0000a6ce mov r1, r7 | r1 = r7;
0x0000a6d0 mov r0, sl | r0 = sl;
0x0000a6d2 strh.w r3, [sp, 0x9e] | *(arg_9eh) = r3;
0x0000a6d6 lsrs r3, r3, 0x10 | r3 >>= 0x10;
0x0000a6d8 strh.w r3, [sp, 0x114] | *(arg_114h) = r3;
0x0000a6dc ldr.w r3, [fp, 4] | r3 = *(arg_4h);
0x0000a6e0 strh.w r3, [sp, 0xb4] | *(arg_b4h) = r3;
0x0000a6e4 lsrs r3, r3, 0x10 | r3 >>= 0x10;
0x0000a6e6 strh.w r3, [sp, 0x116] | *(arg_116h) = r3;
0x0000a6ea blx 0x36a8 | r0 = ext2fs_file_llseek ();
0x0000a6ee cmp r0, 0 |
| if (r0 != 0) {
0x0000a6f0 bne.w 0xa84c | goto label_27;
| }
0x0000a6f4 cmp r4, 0 |
| if (r4 != 0) {
0x0000a6f6 bne 0xa672 | goto label_0;
| }
| label_26:
0x0000a6f8 mov r0, sb | r0 = sb;
0x0000a6fa str r7, [sp, 0x6c] | *(arg_6ch) = r7;
0x0000a6fc blx 0x3098 | fcn_00003098 ();
0x0000a6fe stcl p8, c9, [ip], {4} | __asm ("stcl p8, c9, [ip], {4}");
0x0000a702 blx 0x3098 | fcn_00003098 ();
0x0000a706 ldr.w r2, [pc, 0x8b0] |
0x0000a70a ldr.w r1, [pc, 0x8b0] |
0x0000a70e ldr.w r4, [pc, 0x8b0] | r4 = *(0x0000afc0);
0x0000a712 add r2, pc | r2 = 0x156d0;
0x0000a714 ldr.w r0, [r8] | r0 = *(r8);
0x0000a716 movs r0, r0 |
0x0000a718 add r1, pc | r1 = 0x156da;
0x0000a71a bl 0x9808 | fcn_00009808 (r0, r1, r2);
0x0000a71e ldr.w r1, [pc, 0x8a4] |
0x0000a722 add r4, pc | r4 += pc;
0x0000a724 movs r2, 5 | r2 = 5;
0x0000a726 str r0, [r4, 0x38] | *((r4 + 0x38)) = r0;
0x0000a728 ldr.w r0, [r8] | r0 = *(r8);
0x0000a72c add r1, pc | r1 = 0x156f6;
0x0000a72e bl 0x98d0 | fcn_000098d0 (r0, r1, r2, r3, r4, r5, r6);
0x0000a732 movs r1, 0 | r1 = 0;
0x0000a734 str r0, [r4, 0x30] | *((r4 + 0x30)) = r0;
0x0000a736 ldr r0, [r4, 8] | r0 = *((r4 + 8));
0x0000a738 bl 0x97a4 | fcn_000097a4 (r0, r1);
0x0000a73c ldr r7, [r4, 0x38] | r7 = *((r4 + 0x38));
0x0000a73e mov r5, r0 | r5 = r0;
0x0000a740 adds r5, 1 | r5++;
0x0000a742 mov r0, r7 | r0 = r7;
0x0000a744 blx 0x3504 | e2p_os2string ();
0x0000a748 ldr r3, [r4, 0x30] | r3 = *((r4 + 0x30));
0x0000a74a mov r6, r0 | r6 = r0;
0x0000a74c adds r0, 0x10 | r0 += 0x10;
0x0000a74e cmp r5, r3 |
0x0000a750 ite ge |
| if (r5 < r3) {
0x0000a752 addge r0, r0, r5 | r0 += r5;
| }
| if (r5 >= r3) {
0x0000a754 addlt r0, r0, r3 | r0 += r3;
| }
0x0000a756 blx 0x3450 | r0 = strerror (r0);
0x0000a75a mov r5, r0 | r5 = r0;
0x0000a75c str r0, [r4, 0x34] | *((r4 + 0x34)) = r0;
0x0000a75e cmp r0, 0 |
| if (r0 == 0) {
0x0000a760 beq.w 0xaf44 | goto label_28;
| }
0x0000a764 adds r2, r6, 1 | r2 = r6 + 1;
0x0000a766 mov r1, r7 | r1 = r7;
0x0000a768 blx 0x30e0 | fcn_000030e0 ();
0x0000a76c add r5, r6 | r5 += r6;
0x0000a76e mov r0, r7 | r0 = r7;
0x0000a770 str r5, [r4, 0x20] | *((r4 + 0x20)) = r5;
0x0000a772 blx 0x3098 | fcn_00003098 ();
0x0000a776 ldr.w r0, [sl, 0x10] | r0 = *((sl + 0x10));
0x0000a77a blx 0x396c | snprintf_chk ();
0x0000a77e ldrd r8, r2, [r4, 0x10] | __asm ("ldrd r8, r2, [r4, 0x10]");
0x0000a782 ldr r3, [sp, 0x20] | r3 = var_20h;
0x0000a784 str r2, [sp, 0x10] | var_10h = r2;
0x0000a786 adds.w r3, r8, r3 | r3 = r8 + r3;
0x0000a78a adc r2, r2, 0 | __asm ("adc r2, r2, 0");
0x0000a78e cmp r0, r3 |
0x0000a790 sbcs.w r5, r1, r2 | __asm ("sbcs.w r5, r1, r2");
| if (r0 <= r3) {
0x0000a794 blo 0xa868 | goto label_4;
| }
0x0000a796 ldrd sb, r5, [r4, 0x18] | __asm ("ldrd sb, r5, [r4, 0x18]");
0x0000a79a subs r0, r0, r3 | r0 -= r3;
0x0000a79c sbc.w r2, r1, r2 | __asm ("sbc.w r2, r1, r2");
0x0000a7a0 str r0, [sp, 0x28] | var_28h = r0;
0x0000a7a2 str r2, [sp, 0x2c] | var_2ch = r2;
0x0000a7a4 orrs.w r3, sb, r5 | r3 = sb | r5;
| if (r3 != sb) {
0x0000a7a8 bne.w 0xa8d2 | goto label_29;
| }
0x0000a7ac ldr r7, [r4, 8] | r7 = *((r4 + 8));
0x0000a7ae cmp r7, 0 |
| if (r7 == 0) {
0x0000a7b0 beq.w 0xaef0 | goto label_30;
| }
0x0000a7b4 lsrs r3, r7, 4 | r3 = r7 >> 4;
0x0000a7b6 cmp r7, 1 |
0x0000a7b8 it eq |
| if (r7 == 1) {
0x0000a7ba ldrdeq sb, r5, [sp, 0x28] | __asm ("ldrdeq sb, r5, [var_28h]");
| }
0x0000a7be mov.w r6, 0 | r6 = 0;
0x0000a7c2 add.w fp, r3, 1 |
| if (r7 == 1) {
0x0000a7c6 beq.w 0xa932 | goto label_15;
| }
0x0000a7ca ldr r0, [sp, 0x28] | r0 = var_28h;
0x0000a7cc mov r2, r7 | r2 = r7;
0x0000a7ce ldr r3, [sp, 0x2c] | r3 = var_2ch;
0x0000a7d0 subs.w r5, r0, fp | r5 = r0 - fp;
0x0000a7d4 sbc sb, r3, 0 | __asm ("sbc sb, r3, 0");
0x0000a7d8 mov r1, r3 | r1 = r3;
0x0000a7da mov r3, r6 | r3 = r6;
0x0000a7dc bl 0x120a8 | r0 = fcn_000120a8 (r0, r1, r2, r3);
0x0000a7e0 mov r2, r0 | r2 = r0;
0x0000a7e2 mov r3, r1 | r3 = r1;
0x0000a7e4 mov r0, sl | r0 = sl;
0x0000a7e6 bl 0xa0d8 | r0 = fcn_0000a0d8 (r0, r1, r2);
0x0000a7ea umull r0, r3, r0, r7 | r0:r3 = r0 * r7;
0x0000a7ee mov r2, r7 | r2 = r7;
0x0000a7f0 mla r3, r7, r1, r3 | __asm ("mla r3, r7, r1, r3");
0x0000a7f4 subs r1, r5, r0 | r1 = r5 - r0;
0x0000a7f6 mov r0, r1 | r0 = r1;
0x0000a7f8 str r1, [sp, 0x28] | var_28h = r1;
0x0000a7fa sbc.w r5, sb, r3 | __asm ("sbc.w r5, sb, r3");
0x0000a7fe mov r3, r6 | r3 = r6;
0x0000a800 mov r1, r5 | r1 = r5;
0x0000a802 str r5, [sp, 0x2c] | var_2ch = r5;
0x0000a804 bl 0x120a8 | fcn_000120a8 (r0, r1, r2, r3);
0x0000a808 ldr r2, [sp, 0x28] | r2 = var_28h;
0x0000a80a mov r5, r1 | r5 = r1;
0x0000a80c strd r0, r1, [r4, 0x18] | __asm ("strd r0, r1, [r4, 0x18]");
0x0000a810 mov sb, r0 | sb = r0;
0x0000a812 ldr r1, [sp, 0x2c] | r1 = var_2ch;
0x0000a814 cmp r2, r7 |
0x0000a816 sbcs r3, r1, 0 | __asm ("sbcs r3, r1, 0");
0x0000a81a itt lo |
| if (r2 >= r7) {
0x0000a81c movlo sb, r2 | sb = r2;
| }
| if (r2 >= r7) {
0x0000a81e movlo r5, r1 | r5 = r1;
| }
0x0000a820 b 0xa932 | goto label_15;
| label_21:
0x0000a822 movw fp, 0xb785 |
0x0000a826 movt fp, 0x7f2b | fp = 0x7f2bb785;
| do {
| label_2:
0x0000a82a ldr.w r2, [pc, 0x79c] | r2 = *(0x0000afc8);
0x0000a82e ldr.w r3, [pc, 0x734] | r3 = *(0xaf66);
0x0000a832 add r2, pc | r2 += pc;
0x0000a834 ldr r3, [r2, r3] | r3 = *((r2 + r3));
0x0000a836 ldr r2, [r3] | r2 = *(0xaf66);
0x0000a838 ldr r3, [sp, 0x11c] | r3 = var_11ch;
0x0000a83a eors r2, r3 | r2 ^= r3;
0x0000a83c mov.w r3, 0 | r3 = 0;
| if (r2 != r3) {
0x0000a840 bne.w 0xaf3a | goto label_31;
| }
0x0000a844 mov r0, fp | r0 = fp;
0x0000a846 add sp, 0x124 |
0x0000a848 pop.w {r4, r5, r6, r7, r8, sb, sl, fp, pc} |
| label_27:
0x0000a84c mov fp, r0 |
0x0000a84e mov r0, sb | r0 = sb;
0x0000a850 blx 0x3098 | fcn_00003098 ();
0x0000a854 ldr r0, [sp, 0x10] | r0 = var_10h;
0x0000a856 blx 0x3098 | fcn_00003098 ();
0x0000a85a b 0xa82a |
| } while (1);
| label_23:
0x0000a85c subs r2, r7, r2 | r2 = r7 - r2;
0x0000a85e adds r2, r2, r4 | r2 += r4;
0x0000a860 mov r4, r2 | r4 = r2;
0x0000a862 adc r5, r5, 0 | __asm ("adc r5, r5, 0");
0x0000a866 b 0xa5fe | goto label_1;
| label_4:
0x0000a868 mov.w fp, 0x1c |
0x0000a86c b 0xa82a | goto label_2;
| label_22:
0x0000a86e mov r0, r4 | r0 = r4;
0x0000a870 movs r7, 1 | r7 = 1;
0x0000a872 bl 0xa194 | fcn_0000a194 (r0, r1);
0x0000a876 ldr.w r8, [sl, 0x14] | r8 = *((sl + 0x14));
0x0000a878 strh r4, [r2] | *(r2) = r4;
0x0000a87a movs r3, 0 | r3 = 0;
0x0000a87c lsr.w r2, r8, 9 | r2 = r8 >> 9;
0x0000a880 bl 0x120a8 | fcn_000120a8 (r0, r1, r2, r3);
0x0000a884 ldr.w r2, [sl, 0x64] | r2 = *((sl + 0x64));
0x0000a888 mov r5, r0 | r5 = r0;
0x0000a88a mov r4, r1 | r4 = r1;
0x0000a88c str r0, [sp, 0x24] | var_24h = r0;
0x0000a88e str r1, [sp, 0x30] | var_0h = r1;
0x0000a890 lsl.w r2, r7, r2 | r2 = r7 << r2;
0x0000a894 asrs r3, r2, 0x1f | r3 = r2 >> 0x1f;
0x0000a896 bl 0x120a8 | fcn_000120a8 (r0, r1, r2, r3);
0x0000a89a orrs r2, r3 | r2 |= r3;
| if (r2 == r3) {
0x0000a89c beq.w 0xa5de | goto label_3;
| }
0x0000a89e add r6, sp, 0x27c | r6 = sp + 0x27c;
0x0000a8a0 ldr.w r3, [sl, 0x10] | r3 = *((sl + 0x10));
0x0000a8a4 ldr r2, [sp, 0x38] | r2 = s2;
0x0000a8a6 ldr r1, [r3, 0x1c] | r1 = *((r3 + 0x1c));
0x0000a8a8 ldr.w r3, [pc, 0x720] | r3 = *(0xafcc);
0x0000a8ac ldr r3, [r2, r3] | r3 = *((r2 + r3));
0x0000a8ae str.w r8, [sp, 8] | __asm ("str.w r8, [var_8h_2]");
0x0000a8b2 str r5, [sp] | *(sp) = r5;
0x0000a8b4 str r4, [sp, 4] | var_4h_2 = r4;
0x0000a8b6 ldr.w r2, [pc, 0x718] |
0x0000a8ba ldr r0, [r3] | r0 = *(0xafcc);
0x0000a8bc mov.w r3, 0x400 | r3 = 0x400;
0x0000a8c0 lsls r3, r1 | r3 <<= r1;
0x0000a8c2 mov r1, r7 | r1 = r7;
0x0000a8c4 add r2, pc | r2 = 0x1589a;
0x0000a8c6 str r3, [sp, 0xc] | var_ch_2 = r3;
0x0000a8c8 blx 0x3684 | ext2fs_write_inode ();
0x0000a8cc mov r0, r7 | r0 = r7;
0x0000a8ce blx 0x34b0 | r0 = feof (r0);
| label_29:
0x0000a8d2 cmp r0, sb |
0x0000a8d4 sbcs.w r3, r2, r5 | __asm ("sbcs.w r3, r2, r5");
| if (r0 <= sb) {
0x0000a8d8 blo 0xa868 | goto label_4;
| }
0x0000a8da ldr r7, [r4, 8] | r7 = *((r4 + 8));
| if (r7 == 0) {
0x0000a8dc cbnz r7, 0xa92a |
0x0000a8de mov r2, sb | r2 = sb;
0x0000a8e0 mov r3, r5 | r3 = r5;
0x0000a8e2 mov r0, sl | r0 = sl;
0x0000a8e4 bl 0xa0d8 | r0 = fcn_0000a0d8 (r0, r1, r2);
0x0000a8e8 mov r7, r0 | r7 = r0;
0x0000a8ea ldrd r0, fp, [sp, 0x28] | __asm ("ldrd r0, fp, [var_28h]");
0x0000a8ee mov r6, r1 | r6 = r1;
0x0000a8f0 mov r2, sb | r2 = sb;
0x0000a8f2 mov r3, r5 | r3 = r5;
0x0000a8f4 mov r1, fp | r1 = fp;
0x0000a8f6 bl 0x120a8 | r0 = fcn_000120a8 (r0, r1, r2, r3);
0x0000a8fa umull r7, r1, r0, r7 | r7:r1 = r0 * r7;
0x0000a8fe mov r3, r0 | r3 = r0;
0x0000a900 mov r2, sb | r2 = sb;
0x0000a902 mla r1, r6, r3, r1 | __asm ("mla r1, r6, r3, r1");
0x0000a906 lsrs r3, r0, 4 | r3 = r0 >> 4;
0x0000a908 ldr r0, [sp, 0x28] | r0 = var_28h;
0x0000a90a adds r3, 1 | r3++;
0x0000a90c subs r3, r0, r3 | r3 = r0 - r3;
0x0000a90e sbc r0, fp, 0 | __asm ("sbc r0, arg_0h");
0x0000a912 subs r6, r3, r7 | r6 = r3 - r7;
0x0000a914 sbc.w r3, r0, r1 | __asm ("sbc.w r3, r0, r1");
0x0000a916 lsls r1, r0, 0xc | r1 = r0 << 0xc;
0x0000a918 mov r0, r6 | r0 = r6;
0x0000a91a mov r1, r3 | r1 = r3;
0x0000a91c str r3, [sp, 0x2c] | var_2ch = r3;
0x0000a91e mov r3, r5 | r3 = r5;
0x0000a920 str r6, [sp, 0x28] | var_28h = r6;
0x0000a922 bl 0x120a8 | r0 = fcn_000120a8 (r0, r1, r2, r3);
0x0000a926 mov r7, r0 | r7 = r0;
0x0000a928 str r0, [r4, 8] | *((r4 + 8)) = r0;
| }
0x0000a92a lsrs r3, r7, 4 | r3 = r7 >> 4;
0x0000a92c movs r6, 0 | r6 = 0;
0x0000a92e add.w fp, r3, 1 |
| label_15:
0x0000a932 mov r2, sb | r2 = sb;
0x0000a934 mov r3, r5 | r3 = r5;
0x0000a936 mov r0, sl | r0 = sl;
0x0000a938 bl 0xa0d8 | r0 = fcn_0000a0d8 (r0, r1, r2);
0x0000a93c mul r6, r0, r6 | r6 = r0 * r6;
0x0000a940 ldr r2, [sp, 0x10] | r2 = var_10h;
0x0000a942 adds.w r3, r8, fp | r3 = r8 + fp;
0x0000a946 adc r2, r2, 0 | __asm ("adc r2, r2, 0");
0x0000a94a mla r6, r7, r1, r6 | __asm ("mla r6, r7, r1, r6");
0x0000a94e umull r0, r7, r0, r7 | r0:r7 = r0 * r7;
0x0000a952 adds r5, r0, r3 | r5 = r0 + r3;
0x0000a954 ldr.w r3, [pc, 0x67c] | r3 = *(0x0000afd4);
0x0000a958 ldr.w r0, [sl, 0x10] | r0 = *((sl + 0x10));
0x0000a95c add r6, r7 | r6 += r7;
0x0000a95e adc.w r6, r6, r2 | __asm ("adc.w r6, r6, r2");
0x0000a962 movs r7, 0 | r7 = 0;
0x0000a964 add r3, pc | r3 += pc;
0x0000a966 strd r5, r6, [r3, 0x10] | __asm ("strd r5, r6, [r3, 0x10]");
0x0000a968 ldrsb r4, [r0, r0] | r4 = *((r0 + r0));
0x0000a96a ldr r4, [r0, 0x14] | r4 = *((r0 + 0x14));
0x0000a96c blx 0x33dc | r0 = fcn_000033dc ();
0x0000a970 adds.w r8, r0, -1 | r8 = r0 + -1;
0x0000a974 sbc sb, r1, 0 | __asm ("sbc sb, r1, 0");
0x0000a978 orrs.w r3, r5, r6 | r3 = r5 | r6;
| if (r3 == r5) {
0x0000a97c beq 0xa9ea | goto label_18;
| }
0x0000a97e add r3, sp, 0x80 | r3 += arg_80h;
0x0000a980 mov fp, r5 |
0x0000a982 str r3, [sp, 0x1c] | var_1ch = r3;
0x0000a984 mov r3, r8 | r3 = r8;
0x0000a986 mov r8, r7 | r8 = r7;
0x0000a988 mov r7, r3 | r7 = r3;
| do {
0x0000a98a ldr r5, [sp, 0x1c] | r5 = var_1ch;
0x0000a98c mov r2, r4 | r2 = r4;
0x0000a98e strd r7, sb, [sp] | __asm ("strd r7, sb, [sp]");
0x0000a992 mov r3, r8 | r3 = r8;
0x0000a994 str r5, [sp, 8] | var_8h_2 = r5;
0x0000a996 ldr.w r0, [sl, 0x30] | r0 = *((sl + 0x30));
0x0000a99a blx 0x3864 | r0 = ext2fs_get_journal_params ();
| if (r0 != 0) {
0x0000a99e cbnz r0, 0xa9e8 | goto label_32;
| }
0x0000a9a0 str r5, [sp, 8] | var_8h_2 = r5;
0x0000a9a2 ldrd r5, r3, [sp, 0x80] | __asm ("ldrd r5, r3, [arg_80h]");
0x0000a9a6 strd r7, sb, [sp] | __asm ("strd r7, sb, [sp]");
0x0000a9aa ldr.w r0, [sl, 0x30] | r0 = *((sl + 0x30));
0x0000a9ae mov r2, r5 | r2 = r5;
0x0000a9b0 str r3, [sp, 0x10] | var_10h = r3;
0x0000a9b2 blx 0x384c | ext2fs_block_alloc_stats_range ();
0x0000a9b6 ldr r3, [sp, 0x10] | r3 = var_10h;
0x0000a9b8 ldrd r4, r8, [sp, 0x80] | __asm ("ldrd r4, r8, [arg_80h]");
| if (r0 != 0) {
0x0000a9bc cbz r0, 0xa9c2 |
0x0000a9be mov r4, r7 | r4 = r7;
0x0000a9c0 mov r8, sb | r8 = sb;
| }
0x0000a9c2 subs r0, r4, r5 | r0 = r4 - r5;
0x0000a9c4 sbc.w r2, r8, r3 | __asm ("sbc.w r2, r8, r3");
0x0000a9c8 cmp fp, r0 |
0x0000a9ca sbcs.w r2, r6, r2 | __asm ("sbcs.w r2, r6, r2");
| if (fp <= r0) {
0x0000a9ce blo.w 0xaf16 | goto label_33;
| }
0x0000a9d0 strh r2, [r4, 0x14] | *((r4 + 0x14)) = r2;
0x0000a9d2 subs r5, r5, r4 | r5 -= r4;
0x0000a9d4 sbc.w r1, r3, r8 | __asm ("sbc.w r1, r3, r8");
0x0000a9d8 adds.w r5, r5, fp | r5 += fp;
0x0000a9dc adc.w r6, r6, r1 | __asm ("adc.w r6, r6, r1");
0x0000a9e0 mov fp, r5 |
0x0000a9e2 orrs.w r2, r5, r6 | r2 = r5 | r6;
0x0000a9e4 lsls r6, r0, 8 | r6 = r0 << 8;
0x0000a9e6 bne 0xa98a |
| } while (r6 != r0);
| label_32:
0x0000a9e8 mov r7, r8 | r7 = r8;
| label_18:
0x0000a9ea ldr r5, [sp, 0x20] | r5 = var_20h;
| if (r5 != 0) {
0x0000a9ec cbz r5, 0xaa0e |
0x0000a9ee ldr r0, [sp, 0x24] | r0 = var_24h;
0x0000a9f0 mov r2, r5 | r2 = r5;
0x0000a9f2 ldr r1, [sp, 0x30] | r1 = var_0h;
0x0000a9f4 movs r3, 0 | r3 = 0;
0x0000a9f6 bl 0x120a8 | fcn_000120a8 (r0, r1, r2, r3);
0x0000a9fa adds r0, r2, r4 | r0 = r2 + r4;
0x0000a9fc mov r2, r5 | r2 = r5;
0x0000a9fe adc.w r1, r7, r3 | __asm ("adc.w r1, r7, r3");
0x0000aa02 movs r3, 0 | r3 = 0;
0x0000aa04 bl 0x120a8 | fcn_000120a8 (r0, r1, r2, r3);
0x0000aa08 cmp r2, 0 |
| if (r2 != 0) {
0x0000aa0a bne.w 0xaee4 | goto label_34;
| }
| }
| label_14:
0x0000aa0e ldr.w r3, [pc, 0x5c8] | r3 = *(0x0000afd8);
0x0000aa12 mov.w r0, -0x80000000 | r0 = -0x80000000;
0x0000aa16 add r3, pc | r3 += pc;
0x0000aa18 ldr r2, [r3, 0x18] | r2 = *((r3 + 0x18));
0x0000aa1a ldr r1, [r3, 0x1c] | r1 = *((r3 + 0x1c));
0x0000aa1c strd r4, r7, [r3, 0x28] | __asm ("strd r4, r7, [r3, 0x28]");
0x0000aa20 str r2, [sp, 0x20] | var_20h = r2;
0x0000aa22 orrs.w r3, r2, r1 | r3 = r2 | r1;
0x0000aa26 str r1, [sp, 0x24] | var_24h = r1;
0x0000aa28 it ne |
| if (r3 != r2) {
0x0000aa2a strdne r2, r1, [sp, 0x28] | __asm ("strdne r2, r1, [sp, 0x28]");
| }
0x0000aa2e ldr.w r1, [sl, 0x14] | r1 = *((sl + 0x14));
0x0000aa30 asrs r4, r2, 0x20 | r4 = r2 >> 0x20;
0x0000aa32 bl 0x11768 | fcn_00011768 (r0, r1, r2);
0x0000aa36 ldr r2, [sp, 0x28] | r2 = var_28h;
0x0000aa38 movs r3, 0 | r3 = 0;
0x0000aa3a cmp r0, r2 |
0x0000aa3c ldr r2, [sp, 0x2c] | r2 = var_2ch;
0x0000aa3e sbcs r3, r2 | __asm ("sbcs r3, r2");
0x0000aa40 itttt lo |
| if (r0 >= r2) {
0x0000aa42 ldrlo r2, [sl, 0x10] | r2 = *((sl + 0x10));
| }
| if (r0 >= r2) {
0x0000aa46 ldrlo r3, [r2, 0x64] | r3 = *((r2 + 0x64));
| }
| if (r0 >= r2) {
0x0000aa48 orrlo r3, r3, 2 | r3 |= 2;
| }
| if (r0 < r2) {
0x0000aa4c str r3, [r2, 0x64] | *((r2 + 0x64)) = r3;
| }
0x0000aa4e ldr.w r3, [pc, 0x58c] |
0x0000aa52 ldr r2, [sp, 0x38] | r2 = s2;
0x0000aa54 ldr r3, [r2, r3] | r3 = *((r2 + r3));
0x0000aa56 str r3, [sp, 0x70] | *(arg_70h) = r3;
0x0000aa58 ldr r3, [r3] | r3 = *(0xafde);
0x0000aa5a cmp r3, 0 |
| if (r3 != 0) {
0x0000aa5c bne.w 0xaeb0 | goto label_35;
| }
0x0000aa60 ldr.w r3, [pc, 0x57c] | r3 = *(0x0000afe0);
0x0000aa64 add r3, pc | r3 += pc;
0x0000aa66 ldr r3, [r3] | r3 = *(r3);
| if (r3 != 0) {
0x0000aa68 cbz r3, 0xaa7e |
0x0000aa6a ldr.w r3, [pc, 0x578] |
0x0000aa6e ldr r3, [r2, r3] | r3 = *((r2 + r3));
0x0000aa70 ldr r3, [r3] | r3 = *(0xafe6);
| if (r3 == 0) {
0x0000aa72 cbz r3, 0xaa7e | goto label_36;
| }
0x0000aa74 ldr.w r0, [pc, 0x570] |
0x0000aa78 add r0, pc | r0 = 0x15a64;
0x0000aa7a blx 0x341c | fcn_0000341c ();
| }
| label_36:
0x0000aa7e ldr.w r4, [pc, 0x56c] | r4 = *(0x0000afec);
0x0000aa82 movs r0, 1 | r0 = 1;
0x0000aa84 ldr.w r1, [pc, 0x568] |
0x0000aa88 add r4, pc | r4 += pc;
0x0000aa8a ldr r2, [r4, 8] | r2 = *((r4 + 8));
0x0000aa8c add r1, pc | r1 = 0x15a80;
0x0000aa8e blx 0x3620 | fcn_00003620 ();
0x0000aa92 ldrd r2, r3, [r4, 0x18] | __asm ("ldrd r2, r3, [r4, 0x18]");
0x0000aa96 orrs.w r1, r2, r3 | r1 = r2 | r3;
| if (r1 != r2) {
0x0000aa9a bne.w 0xaf0a | goto label_37;
| }
| label_17:
0x0000aa9e ldr r2, [sp, 0x38] | r2 = s2;
0x0000aaa0 movs r1, 1 | r1 = 1;
0x0000aaa2 ldr.w r3, [pc, 0x550] |
0x0000aaa6 ldr.w r0, [pc, 0x550] |
0x0000aaaa ldr r3, [r2, r3] | r3 = *((r2 + r3));
0x0000aaac movs r2, 2 | r2 = 2;
0x0000aaae add r0, pc | r0 = 0x15aac;
0x0000aab0 ldr r3, [r3] |
0x0000aab2 blx 0x3324 | strcat (r0, r1)
0x0000aab6 ldr.w r3, [pc, 0x544] | r3 = *(0x0000affc);
0x0000aaba add r3, pc | r3 = 0x15ab4;
0x0000aabc ldr r2, [r3, 8] | r2 = *(0x15abc);
0x0000aabe cmp r2, 0 |
| if (r2 == 0) {
0x0000aac0 beq.w 0xaec2 | goto label_38;
| }
0x0000aac4 ldr r2, [r3, 0x18] | r2 = *((r3 + 0x18));
0x0000aac6 ldr r3, [r3, 0x1c] | r3 = *((r3 + 0x1c));
0x0000aac8 str r2, [sp, 0x20] | var_20h = r2;
0x0000aaca str r3, [sp, 0x24] | var_24h = r3;
| label_12:
0x0000aacc ldr.w r3, [pc, 0x530] | r3 = *(0x0000b000);
0x0000aad0 mov fp, sl |
0x0000aad2 add r3, pc | r3 += pc;
0x0000aad4 str r3, [sp, 0x64] | *(arg_4h) = r3;
0x0000aad6 ldr.w r3, [pc, 0x52c] | r3 = *(0x0000b004);
0x0000aada add r3, pc | r3 += pc;
0x0000aadc str r3, [sp, 0x68] | *(arg_68h) = r3;
0x0000aade mov.w r3, 0x8000 |
0x0000aae2 movt r3, 0xffff | r3 = 0x-8000;
0x0000aae6 str r3, [sp, 0x54] | var_54h = r3;
0x0000aae8 movw r3, 0xb726 |
0x0000aaec movt r3, 0x7f2b | r3 = 0x7f2bb726;
0x0000aaf0 str r3, [sp, 0x74] | *(arg_74h) = r3;
0x0000aaf2 movs r3, 0 | r3 = 0;
0x0000aaf4 str r3, [sp, 0x1c] | var_1ch = r3;
0x0000aaf6 add r3, sp, 0x78 | r3 += c;
0x0000aaf8 str r3, [sp, 0x30] | var_0h = r3;
| label_8:
0x0000aafa ldr r3, [sp, 0x30] | r3 = var_0h;
0x0000aafc mov.w r2, 0x8000 | r2 = 0x8000;
0x0000ab00 mov r0, fp | r0 = fp;
0x0000ab02 str r3, [sp] | *(sp) = r3;
0x0000ab04 movs r3, 0 | r3 = 0;
0x0000ab06 mov r1, r3 | r1 = r3;
0x0000ab08 blx 0x336c | r0 = strcpy (r0, r1);
0x0000ab0c cmp r0, 0 |
| if (r0 != 0) {
0x0000ab0e bne.w 0xace6 | goto label_39;
| }
0x0000ab12 mov r1, r0 | r1 = r0;
0x0000ab14 movs r2, 0x7c | r2 = 0x7c;
0x0000ab16 add r0, sp, 0xa0 | r0 += arg_a0h;
0x0000ab18 movs r4, 1 | r4 = 1;
0x0000ab1a blx 0x35bc | fcn_000035bc ();
0x0000ab1e ldr.w r3, [fp, 0x5c] | r3 = *(arg_5ch);
0x0000ab22 mov r0, fp | r0 = fp;
0x0000ab24 ldr r1, [sp, 0x54] | r1 = var_54h;
0x0000ab26 ldr.w r2, [pc, 0x4e0] | r2 = *(0x0000b008);
0x0000ab2a mvns r3, r3 | r3 = ~r3;
0x0000ab2c strh.w r4, [sp, 0xb6] | *(arg_b6h) = r4;
0x0000ab30 and r3, r3, 0x1b6 | r3 &= 0x1b6;
0x0000ab34 orrs r3, r1 | r3 |= r1;
0x0000ab36 add r2, pc | r2 += pc;
0x0000ab38 strh.w r3, [sp, 0x9c] | *(arg_9ch) = r3;
0x0000ab3c ldrd r2, r3, [r2] | __asm ("ldrd r2, r3, [r2]");
0x0000ab40 ldr r1, [sp, 0x78] | r1 = *(c);
0x0000ab42 strh.w r3, [sp, 0xb4] | *(arg_b4h) = r3;
0x0000ab46 lsrs r3, r3, 0x10 | r3 >>= 0x10;
0x0000ab48 strh.w r2, [sp, 0x9e] | *(arg_9eh) = r2;
0x0000ab4c lsrs r2, r2, 0x10 | r2 >>= 0x10;
0x0000ab4e strh.w r3, [sp, 0x116] | *(arg_116h) = r3;
0x0000ab52 add r3, sp, 0x9c | r3 += arg_9ch;
0x0000ab54 strh.w r2, [sp, 0x114] | *(arg_114h) = r2;
0x0000ab58 mov r2, r3 | r2 = r3;
0x0000ab5a mov r5, r3 | r5 = r3;
0x0000ab5c str r3, [sp, 0x58] | var_58h = r3;
0x0000ab5e blx 0x3400 | r0 = fcn_00003400 ();
0x0000ab62 cmp r0, 0 |
| if (r0 != 0) {
0x0000ab64 bne.w 0xace6 | goto label_39;
| }
0x0000ab68 mov r3, r0 | r3 = r0;
0x0000ab6a ldr r1, [sp, 0x78] | r1 = *(c);
0x0000ab6c mov r2, r4 | r2 = r4;
0x0000ab6e mov r0, fp | r0 = fp;
0x0000ab70 blx 0x3798 | strrchr (r0, r1);
0x0000ab74 ldr r1, [sp, 0x78] | r1 = *(c);
0x0000ab76 add r3, sp, 0x7c | r3 += arg_7ch;
0x0000ab78 mov r2, r5 | r2 = r5;
0x0000ab7a mov r0, fp | r0 = fp;
0x0000ab7c blx 0x3644 | r0 = fcn_00003644 ();
0x0000ab80 cmp r0, 0 |
| if (r0 != 0) {
0x0000ab82 bne.w 0xace6 | goto label_39;
| }
0x0000ab86 ldr r3, [sp, 0x20] | r3 = var_20h;
0x0000ab88 ldr r2, [sp, 0x24] | r2 = var_24h;
0x0000ab8a str.w fp, [sp, 0x28] | __asm ("str.w fp, [var_28h]");
0x0000ab8e str r3, [sp, 0x3c] | var_ch = r3;
0x0000ab90 orrs r3, r2 | r3 |= r2;
0x0000ab92 ldr.w r3, [pc, 0x478] | r3 = *(0x0000b00c);
0x0000ab96 str r2, [sp, 0x40] | var_40h = r2;
0x0000ab98 it eq |
| if (r3 == r2) {
0x0000ab9a strdeq r4, r0, [sp, 0x3c] | __asm ("strdeq r4, r0, [sp, 0x3c]");
| }
0x0000ab9e add r3, pc | r3 += pc;
0x0000aba0 str r3, [sp, 0x48] | var_48h = r3;
0x0000aba2 movs r3, 0 | r3 = 0;
0x0000aba4 mov sb, r3 | sb = r3;
0x0000aba6 mov sl, r3 | sl = r3;
0x0000aba8 mov r7, sb | r7 = sb;
0x0000abaa strd r3, r3, [sp, 0x4c] | __asm ("strd r3, r3, [sp, 0x4c]");
0x0000abae strd r3, r3, [sp, 0x5c] | __asm ("strd r3, r3, [sp, 0x5c]");
0x0000abb2 add r3, sp, 0x80 | r3 += arg_80h;
0x0000abb4 str r3, [sp, 0x34] | var_4h = r3;
| label_5:
0x0000abb6 ldr r3, [sp, 0x28] | r3 = var_28h;
0x0000abb8 ldr r4, [r3, 0x30] | r4 = *((r3 + 0x30));
0x0000abba ldr r0, [r3, 0x10] | r0 = *((r3 + 0x10));
0x0000abbc ldr r3, [sp, 0x48] | r3 = var_48h;
0x0000abbe ldrd r2, r3, [r3, 0x28] | __asm ("ldrd r2, r3, [r3, 0x28]");
0x0000abc2 strd r2, r3, [sp, 0x10] | __asm ("strd r2, r3, [sp, 0x10]");
0x0000abc6 blx 0x33dc | r0 = fcn_000033dc ();
0x0000abca mov r5, r0 | r5 = r0;
0x0000abcc ldrd r2, r3, [sp, 0x10] | __asm ("ldrd r2, r3, [var_10h]");
0x0000abd0 subs r5, 1 | r5--;
0x0000abd2 mov r0, r4 | r0 = r4;
0x0000abd4 sbc r1, r1, 0 | __asm ("sbc r1, r1, 0");
0x0000abd8 str r5, [sp] | *(sp) = r5;
0x0000abda str r1, [sp, 4] | var_4h_2 = r1;
0x0000abdc ldr r1, [sp, 0x34] | r1 = var_4h;
0x0000abde str r1, [sp, 8] | var_8h_2 = r1;
0x0000abe0 blx 0x3864 | r0 = ext2fs_get_journal_params ();
| if (r0 != 0) {
0x0000abe4 cbz r0, 0xabf4 |
| label_6:
0x0000abe6 mov fp, r0 |
0x0000abe8 ldr r0, [sp, 0x7c] | r0 = *(arg_7ch);
| label_20:
0x0000abea cmp r0, 0 |
| if (r0 == 0) {
0x0000abec beq 0xace8 | goto label_40;
| }
0x0000abee blx 0x37f8 | ext2fs_numeric_progress_close ();
0x0000abf2 b 0xace8 | goto label_40;
| }
0x0000abf4 ldr r3, [sp, 0x28] | r3 = var_28h;
0x0000abf6 ldrd r8, sb, [sp, 0x80] | __asm ("ldrd r8, sb, [arg_80h]");
0x0000abfa ldr r4, [r3, 0x30] | r4 = *((r3 + 0x30));
0x0000abfc ldr r0, [r3, 0x10] | r0 = *((r3 + 0x10));
0x0000abfe ldr r3, [sp, 0x48] | r3 = var_48h;
0x0000ac00 strd r8, sb, [r3, 0x28] | __asm ("strd r8, sb, [r3, 0x28]");
0x0000ac04 blx 0x33dc | fcn_000033dc ();
0x0000ac08 subs r0, 1 | r0--;
0x0000ac0a mov r2, r8 | r2 = r8;
0x0000ac0c sbc r1, r1, 0 | __asm ("sbc r1, r1, 0");
0x0000ac10 str r0, [sp] | *(sp) = r0;
0x0000ac12 str r1, [sp, 4] | var_4h_2 = r1;
0x0000ac14 mov r3, sb | r3 = sb;
0x0000ac16 ldr r1, [sp, 0x34] | r1 = var_4h;
0x0000ac18 mov r0, r4 | r0 = r4;
0x0000ac1a str r1, [sp, 8] | var_8h_2 = r1;
0x0000ac1c blx 0x384c | r0 = ext2fs_block_alloc_stats_range ();
0x0000ac20 cmp r0, 0 |
| if (r0 != 0) {
0x0000ac22 bne.w 0xae0c | goto label_41;
| }
0x0000ac26 ldr r3, [sp, 0x80] | r3 = *(arg_80h);
0x0000ac28 str r3, [sp, 0x4c] | var_4ch = r3;
0x0000ac2a ldr r3, [sp, 0x84] | r3 = *(arg_84h);
0x0000ac2c str r3, [sp, 0x50] | var_50h = r3;
| label_9:
0x0000ac2e ldrd r3, r2, [sp, 0x20] | __asm ("ldrd r3, r2, [var_20h]");
0x0000ac32 orrs r3, r2 | r3 |= r2;
| if (r3 != r2) {
0x0000ac34 bne.w 0xae26 | goto label_42;
| }
| label_16:
0x0000ac38 ldr r3, [sp, 0x68] | r3 = *(arg_68h);
0x0000ac3a ldr r2, [sp, 0x50] | r2 = var_50h;
0x0000ac3c ldrd r6, fp, [r3, 0x28] | __asm ("ldrd r6, fp, [r3, 0x28]");
0x0000ac40 ldr r3, [sp, 0x4c] | r3 = var_4ch;
0x0000ac42 mov r1, r2 | r1 = r2;
0x0000ac44 mov r0, r3 | r0 = r3;
0x0000ac46 subs r3, r3, r6 | r3 -= r6;
0x0000ac48 str r3, [sp, 0x2c] | var_2ch = r3;
0x0000ac4a sbc.w r3, r2, fp | __asm ("sbc.w r3, r2, fp");
0x0000ac4e str r3, [sp, 0x44] | var_44h = r3;
| label_10:
0x0000ac50 ldr r2, [pc, 0x3bc] |
0x0000ac52 ldr r3, [sp, 0x2c] | r3 = var_2ch;
0x0000ac54 add r2, pc | r2 = "while allocating inode \"%s\";
0x0000ac56 str r3, [sp] | *(sp) = r3;
0x0000ac58 mov r3, fp | r3 = fp;
0x0000ac5a strd r0, r1, [r2, 0x28] | __asm ("strd r0, r1, [r2, 0x28]");
0x0000ac5e movs r2, 1 | r2 = 1;
0x0000ac60 str r2, [sp, 4] | var_4h_2 = r2;
0x0000ac62 mov r2, r6 | r2 = r6;
0x0000ac64 ldr r0, [sp, 0x28] | r0 = var_28h;
0x0000ac66 blx 0x3870 | ext2fs_allocate_tables ();
0x0000ac6a ldr r2, [pc, 0x3a8] |
0x0000ac6c add r2, pc |
0x0000ac6e ldr r2, [r2] | r2 = *(0x15c86);
0x0000ac70 cmp r2, 0 |
| if (r2 != 0) {
0x0000ac72 bne.w 0xae60 | goto label_43;
| }
| label_11:
0x0000ac76 ldr r5, [sp, 0x2c] | r5 = var_2ch;
0x0000ac78 ldr r3, [sp, 0x44] | r3 = var_44h;
0x0000ac7a orrs.w r2, r5, r3 | r2 = r5 | r3;
| if (r2 == r5) {
0x0000ac7e beq 0xad0a | goto label_44;
| }
0x0000ac80 mov r8, r3 | r8 = r3;
0x0000ac82 mov r3, r7 | r3 = r7;
0x0000ac84 mov r7, fp | r7 = fp;
0x0000ac86 ldr.w fp, [sp, 0x34] | fp = var_4h;
0x0000ac8a b 0xaca8 |
| while (r0 == 0) {
0x0000ac8c ldr r3, [sp, 0x10] | r3 = var_10h;
0x0000ac8e adds r6, r4, r6 | r6 = r4 + r6;
0x0000ac90 adc.w r7, sb, r7 | __asm ("adc.w r7, sb, r7");
0x0000ac94 adds r3, r4, r3 | r3 = r4 + r3;
0x0000ac96 adc.w sl, sb, sl | __asm ("adc.w sl, sb, sl");
0x0000ac9a subs r4, r5, r4 | r4 = r5 - r4;
0x0000ac9c sbc.w r8, r8, sb | __asm ("sbc.w r8, r8, sb");
0x0000aca0 mov r5, r4 | r5 = r4;
0x0000aca2 orrs.w r2, r4, r8 | r2 = r4 | r8;
| if (r2 == r4) {
0x0000aca6 beq 0xad08 | goto label_45;
| }
0x0000aca8 movw r2, 0x8001 | r2 = 0x8001;
0x0000acac mov r4, r5 | r4 = r5;
0x0000acae cmp r5, r2 |
0x0000acb0 str r3, [sp, 0x88] | *(arg_88h) = r3;
0x0000acb2 sbcs r2, r8, 0 | __asm ("sbcs r2, r8, 0");
0x0000acb6 str r3, [sp, 0x10] | var_10h = r3;
0x0000acb8 it hs |
| if (r5 < r2) {
0x0000acba movhs r4, 0x8000 | r4 = 0x8000;
| }
0x0000acbe mov.w r3, 0 | r3 = 0;
0x0000acc2 ldr r0, [sp, 0x7c] | r0 = *(arg_7ch);
0x0000acc4 mov r2, fp | r2 = fp;
0x0000acc6 mov.w r1, 1 | r1 = 1;
0x0000acca mov sb, r8 | sb = r8;
0x0000accc str r4, [sp, 0x90] | *(arg_90h) = r4;
0x0000acce it hs |
| if (r5 < r2) {
0x0000acd0 movhs sb, 0 | sb = 0;
| }
0x0000acd4 strd r6, r7, [sp, 0x80] | __asm ("strd r6, r7, [sp, 0x80]");
0x0000acd8 str.w sl, [sp, 0x8c] | __asm ("str.w sl, [arg_8ch]");
0x0000acdc str r3, [sp, 0x94] | *(arg_94h) = r3;
0x0000acde blx 0x2f40 | r0 = ext2fs_extent_insert ();
0x0000ace2 cmp r0, 0 |
0x0000ace4 beq 0xac8c |
| }
| label_39:
0x0000ace6 mov fp, r0 |
| label_40:
0x0000ace8 ldr r0, [sp, 0x38] | r0 = s2;
0x0000acea ldr r1, [pc, 0x32c] | r1 = *(0xb01a);
0x0000acec ldr r2, [pc, 0x32c] |
0x0000acee ldr r3, [sp, 0x1c] | r3 = var_1ch;
0x0000acf0 ldr r1, [r0, r1] | r1 = *((r0 + r1));
0x0000acf2 add r2, pc | r2 = 0x15d12;
0x0000acf4 ldr r0, [r1] | r0 = *(0xb01a);
0x0000acf6 mov r1, fp | r1 = fp;
0x0000acf8 blx 0x32cc | fcn_000032cc ();
| label_13:
0x0000acfc ldr r3, [pc, 0x320] |
0x0000acfe add r3, pc | r3 = 0x15d22;
0x0000ad00 ldr r0, [r3, 0x34] | r0 = *(0x15d56);
0x0000ad02 blx 0x3098 | fcn_00003098 ();
0x0000ad06 b 0xa82a | goto label_2;
| label_45:
0x0000ad08 mov r7, r3 | r7 = r3;
| label_44:
0x0000ad0a ldr r2, [sp, 0x5c] | r2 = var_5ch;
0x0000ad0c ldr r3, [sp, 0x2c] | r3 = var_2ch;
0x0000ad0e ldr r1, [sp, 0x44] | r1 = var_44h;
0x0000ad10 adds r3, r3, r2 | r3 += r2;
0x0000ad12 ldr r2, [sp, 0x60] | r2 = *(arg_0h);
0x0000ad14 adc.w r2, r2, r1 | __asm ("adc.w r2, r2, r1");
0x0000ad16 lsls r1, r0, 8 | r1 = r0 << 8;
0x0000ad18 strd r3, r2, [sp, 0x5c] | __asm ("strd r3, r2, [sp, 0x5c]");
0x0000ad1c ldrd r3, r2, [sp, 0x3c] | __asm ("ldrd r3, r2, [var_ch]");
0x0000ad20 orrs r3, r2 | r3 |= r2;
| if (r3 != r2) {
0x0000ad22 bne.w 0xabb6 | goto label_5;
| }
0x0000ad26 ldr.w fp, [sp, 0x28] | fp = var_28h;
0x0000ad2a ldr r1, [sp, 0x78] | r1 = *(c);
0x0000ad2c ldr r2, [sp, 0x58] | r2 = var_58h;
0x0000ad2e mov r0, fp | r0 = fp;
0x0000ad30 blx 0x2f58 | r0 = ext2fs_read_inode ();
0x0000ad34 cmp r0, 0 |
| if (r0 != 0) {
0x0000ad36 bne.w 0xabe6 | goto label_6;
| }
0x0000ad3a ldr.w r2, [fp, 0x64] | r2 = *(arg_64h);
0x0000ad3e movs r4, 1 | r4 = 1;
0x0000ad40 ldrd r0, r1, [sp, 0x5c] | __asm ("ldrd r0, r1, [var_5ch]");
0x0000ad44 lsl.w r2, r4, r2 | r2 = r4 << r2;
0x0000ad48 asrs r3, r2, 0x1f | r3 = r2 >> 0x1f;
0x0000ad4a bl 0x120a8 | r0 = fcn_000120a8 (r0, r1, r2, r3);
0x0000ad4e mov r2, r0 | r2 = r0;
0x0000ad50 mov r3, r1 | r3 = r1;
0x0000ad52 mov r0, fp | r0 = fp;
0x0000ad54 ldr r1, [sp, 0x58] | r1 = var_58h;
0x0000ad56 blx 0x3708 | r0 = e2p_edit_feature ();
0x0000ad5a cmp r0, 0 |
| if (r0 != 0) {
0x0000ad5c bne.w 0xabe6 | goto label_6;
| }
0x0000ad60 ldr.w r3, [fp, 0x14] | r3 = *(arg_74h);
0x0000ad64 mov r0, fp | r0 = fp;
0x0000ad66 ldr r2, [sp, 0x5c] | r2 = var_5ch;
0x0000ad68 ldr r6, [sp, 0x60] | r6 = *(arg_0h);
0x0000ad6a ldr r1, [sp, 0x58] | r1 = var_58h;
0x0000ad6c umull r2, r5, r3, r2 | r2:r5 = r3 * r2;
0x0000ad70 mla r3, r3, r6, r5 | __asm ("mla r3, r3, r6, r5");
0x0000ad74 blx 0x32f0 | r0 = fcn_000032f0 ();
0x0000ad78 cmp r0, 0 |
| if (r0 != 0) {
0x0000ad7a bne.w 0xabe6 | goto label_6;
| }
0x0000ad7e ldr r2, [sp, 0x58] | r2 = var_58h;
0x0000ad80 mov r0, fp | r0 = fp;
0x0000ad82 ldr r1, [sp, 0x78] | r1 = *(c);
0x0000ad84 blx 0x3400 | r0 = fcn_00003400 ();
0x0000ad88 cmp r0, 0 |
| if (r0 != 0) {
0x0000ad8a bne.w 0xabe6 | goto label_6;
| }
0x0000ad8e ldr r3, [pc, 0x294] |
0x0000ad90 add r3, pc | r3 = 0x15dba;
0x0000ad92 ldr r2, [r3, 0x30] | r2 = *(0x15dea);
0x0000ad94 cmp r2, 0 |
| if (r2 != 0) {
0x0000ad96 bne.w 0xaf22 | goto label_46;
| }
0x0000ad9a ldr r2, [r3, 8] | r2 = *((r3 + 8));
0x0000ad9c cmp r2, 1 |
| if (r2 >= 1) {
0x0000ad9e bls 0xadb4 |
0x0000ada0 ldr r0, [r3, 0x20] | r0 = *((r3 + 0x20));
0x0000ada2 mov r1, r4 | r1 = r4;
0x0000ada4 ldr r3, [sp, 0x1c] | r3 = var_1ch;
0x0000ada6 mov.w r2, -1 | r2 = -1;
0x0000adaa str r3, [sp] | *(sp) = r3;
0x0000adac ldr r3, [pc, 0x278] |
0x0000adae add r3, pc | r3 = 0x15dda;
0x0000adb0 blx 0x3594 | ext2fs_open2 ();
| }
| label_19:
0x0000adb4 ldr r5, [pc, 0x274] |
0x0000adb6 movs r4, 1 | r4 = 1;
0x0000adb8 ldr r6, [sp, 0x6c] | r6 = *(arg_6ch);
0x0000adba add r5, pc | r5 = 0x15dea;
0x0000adbc b 0xadcc | goto label_47;
| label_7:
0x0000adbe mov r1, r6 | r1 = r6;
0x0000adc0 mov r0, fp | r0 = fp;
0x0000adc2 blx 0x3570 | r0 = ext2fs_init_csum_seed ();
0x0000adc6 cmp r0, 0 |
| if (r0 != 0) {
0x0000adc8 bne.w 0xabe6 | goto label_6;
| }
| label_47:
0x0000adcc ldr r3, [sp, 0x78] | r3 = *(c);
0x0000adce mov r1, r6 | r1 = r6;
0x0000add0 str r4, [sp] | *(sp) = r4;
0x0000add2 mov r0, fp | r0 = fp;
0x0000add4 ldr r2, [r5, 0x34] | r2 = *((r5 + 0x34));
0x0000add6 blx 0x387c | uuid_generate_time ();
0x0000add8 vldr d25, [r2, -0x74] | __asm ("vldr d25, [r2, -0x74]");
0x0000addc cmp r0, r3 |
| if (r0 == r3) {
0x0000adde beq 0xadbe | goto label_7;
| }
0x0000ade0 ldr r3, [sp, 0x7c] | r3 = *(arg_7ch);
0x0000ade2 cmp r0, 0 |
| if (r0 != 0) {
0x0000ade4 bne.w 0xaf3e | goto label_48;
| }
| if (r3 != 0) {
0x0000ade8 cbz r3, 0xadf0 |
0x0000adea mov r0, r3 | r0 = r3;
0x0000adec blx 0x37f8 | ext2fs_numeric_progress_close ();
| }
0x0000adf0 ldr r3, [sp, 0x1c] | r3 = var_1ch;
0x0000adf2 adds r3, 1 | r3++;
0x0000adf4 mov r1, r3 | r1 = r3;
0x0000adf6 str r3, [sp, 0x1c] | var_1ch = r3;
0x0000adf8 ldr r3, [pc, 0x234] |
0x0000adfa add r3, pc | r3 = 0x15e2e;
0x0000adfc ldr r2, [r3, 8] | r2 = *(0x15e36);
0x0000adfe cmp r2, r1 |
| if (r2 < r1) {
0x0000ae00 bls 0xaec2 | goto label_38;
| }
0x0000ae02 ldr r2, [r3, 0x18] | r2 = *((r3 + 0x18));
0x0000ae04 ldr r3, [r3, 0x1c] | r3 = *((r3 + 0x1c));
0x0000ae06 str r2, [sp, 0x20] | var_20h = r2;
0x0000ae08 str r3, [sp, 0x24] | var_24h = r3;
0x0000ae0a b 0xaafa | goto label_8;
| label_41:
0x0000ae0c cmp r0, 2 |
| if (r0 != 2) {
0x0000ae0e bne.w 0xac2e | goto label_9;
| }
0x0000ae12 ldr r3, [sp, 0x28] | r3 = var_28h;
0x0000ae14 ldr r0, [r3, 0x10] | r0 = *((r3 + 0x10));
0x0000ae16 blx 0x33dc | fcn_000033dc ();
0x0000ae1a ldrd r3, r2, [sp, 0x20] | __asm ("ldrd r3, r2, [var_20h]");
0x0000ae1e strd r0, r1, [sp, 0x4c] | __asm ("strd r0, r1, [sp, 0x4c]");
0x0000ae22 orrs r3, r2 | r3 |= r2;
| if (r3 == r2) {
0x0000ae24 beq 0xaf00 | goto label_49;
| }
| label_42:
0x0000ae26 ldr r3, [sp, 0x64] | r3 = *(arg_4h);
0x0000ae28 ldr r2, [sp, 0x50] | r2 = var_50h;
0x0000ae2a ldr r1, [sp, 0x3c] | r1 = var_ch;
0x0000ae2c ldrd r6, fp, [r3, 0x28] | __asm ("ldrd r6, fp, [r3, 0x28]");
0x0000ae30 ldr r3, [sp, 0x4c] | r3 = var_4ch;
0x0000ae32 subs r3, r3, r6 | r3 -= r6;
0x0000ae34 sbc.w r2, r2, fp | __asm ("sbc.w r2, r2, fp");
0x0000ae38 str r3, [sp, 0x2c] | var_2ch = r3;
0x0000ae3a cmp r3, r1 |
0x0000ae3c ldr r3, [sp, 0x40] | r3 = var_40h;
0x0000ae3e str r2, [sp, 0x44] | var_44h = r2;
0x0000ae40 sbcs r2, r3 | __asm ("sbcs r2, r3");
| if (r3 >= r1) {
0x0000ae42 bhs 0xae98 | goto label_50;
| }
0x0000ae44 ldr r0, [sp, 0x4c] | r0 = var_4ch;
0x0000ae46 ldr r4, [sp, 0x3c] | r4 = var_ch;
0x0000ae48 ldr r3, [sp, 0x50] | r3 = var_50h;
0x0000ae4a subs r2, r6, r0 | r2 = r6 - r0;
0x0000ae4c sbc.w r1, fp, r3 | __asm ("sbc.w r1, fp, r3");
0x0000ae50 adds r2, r2, r4 | r2 += r4;
0x0000ae52 ldr r4, [sp, 0x40] | r4 = var_40h;
0x0000ae54 adc.w r1, r4, r1 | __asm ("adc.w r1, r4, r1");
0x0000ae56 lsls r1, r0, 4 | r1 = r0 << 4;
0x0000ae58 strd r2, r1, [sp, 0x3c] | __asm ("strd r2, r1, [sp, 0x3c]");
0x0000ae5c mov r1, r3 | r1 = r3;
0x0000ae5e b 0xac50 | goto label_10;
| label_43:
0x0000ae60 ldr r3, [sp, 0x34] | r3 = var_4h;
0x0000ae62 movs r2, 0 | r2 = 0;
0x0000ae64 str r2, [sp, 8] | var_8h_2 = r2;
0x0000ae66 mov r2, r6 | r2 = r6;
0x0000ae68 ldr r0, [sp, 0x28] | r0 = var_28h;
0x0000ae6a str r3, [sp, 4] | var_4h_2 = r3;
0x0000ae6c ldr r3, [sp, 0x2c] | r3 = var_2ch;
0x0000ae6e str r3, [sp] | *(sp) = r3;
0x0000ae70 mov r3, fp | r3 = fp;
0x0000ae72 blx 0x2f1c | r0 = ext2fs_zero_blocks2 ();
0x0000ae76 cmp r0, 0 |
| if (r0 == 0) {
0x0000ae78 beq.w 0xac76 | goto label_11;
| }
0x0000ae7c ldr r3, [sp, 0x38] | r3 = s2;
0x0000ae7e mov r1, r0 | r1 = r0;
0x0000ae80 ldr r2, [pc, 0x194] | r2 = *(0xb018);
0x0000ae82 ldrd r4, r5, [sp, 0x80] | __asm ("ldrd r4, r5, [arg_80h]");
0x0000ae86 ldr r2, [r3, r2] | r2 = *((r3 + r2));
0x0000ae88 ldr r0, [r2] | r0 = *(0xb018);
0x0000ae8a ldr r2, [pc, 0x1a8] |
0x0000ae8c strd r4, r5, [sp] | __asm ("strd r4, r5, [sp]");
0x0000ae90 add r2, pc | r2 = 0x15eca;
0x0000ae92 blx 0x32cc | fcn_000032cc ();
0x0000ae96 b 0xac76 | goto label_11;
| label_50:
0x0000ae98 ldr r3, [sp, 0x3c] | r3 = var_ch;
0x0000ae9a ldr r2, [sp, 0x40] | r2 = var_40h;
0x0000ae9c adds r0, r6, r3 | r0 = r6 + r3;
0x0000ae9e str r3, [sp, 0x2c] | var_2ch = r3;
0x0000aea0 mov.w r3, 0 | r3 = 0;
0x0000aea4 adc.w r1, fp, r2 | __asm ("adc.w r1, fp, r2");
0x0000aea8 str r3, [sp, 0x3c] | var_ch = r3;
0x0000aeaa strd r3, r2, [sp, 0x40] | __asm ("strd r3, r2, [sp, 0x40]");
0x0000aeae b 0xac50 | goto label_10;
| label_35:
0x0000aeb0 ldr r3, [pc, 0x184] |
0x0000aeb2 add r3, pc |
0x0000aeb4 ldr r3, [r3, 8] | r3 = *(0x15ef6);
0x0000aeb6 cmp r3, 0 |
| if (r3 != 0) {
0x0000aeb8 bne.w 0xaacc | goto label_12;
| }
| do {
0x0000aebc mov.w fp, 0 |
0x0000aec0 b 0xacfc | goto label_13;
| label_38:
0x0000aec2 ldr r3, [sp, 0x70] | r3 = *(arg_70h);
0x0000aec4 ldr.w fp, [r3] | fp = *(r3);
0x0000aec8 cmp.w fp, 0 |
0x0000aecc bne 0xaebc |
| } while (fp != 0);
0x0000aece ldr r1, [sp, 0x38] | r1 = s2;
0x0000aed0 movs r2, 5 | r2 = 5;
0x0000aed2 ldr r3, [pc, 0x120] |
0x0000aed4 ldr r0, [pc, 0x164] |
0x0000aed6 ldr r3, [r1, r3] | r3 = *((r1 + r3));
0x0000aed8 movs r1, 1 | r1 = 1;
0x0000aeda add r0, pc | r0 = 0x15f1a;
0x0000aedc ldr r3, [r3] | r3 = *(0xaff6);
0x0000aede blx 0x3324 | strcat (r0, r1)
0x0000aee2 b 0xacfc | goto label_13;
| label_34:
0x0000aee4 subs r2, r5, r2 | r2 = r5 - r2;
0x0000aee6 adds r2, r2, r4 | r2 += r4;
0x0000aee8 mov r4, r2 | r4 = r2;
0x0000aeea adc r7, r7, 0 | __asm ("adc r7, r7, 0");
0x0000aeee b 0xaa0e | goto label_14;
| label_30:
0x0000aef0 movs r3, 1 | r3 = 1;
0x0000aef2 mov r6, r7 | r6 = r7;
0x0000aef4 ldrd sb, r5, [sp, 0x28] | __asm ("ldrd sb, r5, [var_28h]");
0x0000aef8 mov fp, r3 |
0x0000aefa mov r7, r3 | r7 = r3;
0x0000aefc str r3, [r4, 8] | *((r4 + 8)) = r3;
0x0000aefe b 0xa932 | goto label_15;
| label_49:
0x0000af00 ldr r3, [sp, 0x20] | r3 = var_20h;
0x0000af02 str r3, [sp, 0x3c] | var_ch = r3;
0x0000af04 ldr r3, [sp, 0x24] | r3 = var_24h;
0x0000af06 str r3, [sp, 0x40] | var_40h = r3;
0x0000af08 b 0xac38 | goto label_16;
| label_37:
0x0000af0a ldr r1, [pc, 0x134] |
0x0000af0c movs r0, 1 | r0 = 1;
0x0000af0e add r1, pc | r1 = 0x15f54;
0x0000af10 blx 0x3620 | fcn_00003620 ();
0x0000af14 b 0xaa9e | goto label_17;
| label_33:
0x0000af16 mov r2, r5 | r2 = r5;
0x0000af18 mov r5, fp | r5 = fp;
0x0000af1a adds r4, r2, r5 | r4 = r2 + r5;
0x0000af1c adc.w r7, r6, r3 | __asm ("adc.w r7, r6, r3");
0x0000af20 b 0xa9ea | goto label_18;
| label_46:
0x0000af22 str r2, [sp] | *(sp) = r2;
0x0000af24 mov r1, r4 | r1 = r4;
0x0000af26 ldr r0, [r3, 0x20] | r0 = *((r3 + 0x20));
0x0000af28 mov.w r2, -1 | r2 = -1;
0x0000af2c ldr r3, [sp, 0x1c] | r3 = var_1ch;
0x0000af2e str r3, [sp, 4] | var_4h_2 = r3;
0x0000af30 ldr r3, [pc, 0x110] |
0x0000af32 add r3, pc | r3 = 0x15f7a;
0x0000af34 blx 0x3594 | ext2fs_open2 ();
0x0000af38 b 0xadb4 | goto label_19;
| label_31:
0x0000af3a blx 0x31f4 | r0 = fcn_000031f4 ();
| label_48:
0x0000af3e mov fp, r0 |
0x0000af40 mov r0, r3 | r0 = r3;
0x0000af42 b 0xabea | goto label_20;
| label_28:
0x0000af44 mov r0, r7 | r0 = r7;
0x0000af46 mov.w fp, 0xc |
0x0000af4a blx 0x3098 | fcn_00003098 ();
0x0000af4e b 0xa82a | goto label_2;
| label_24:
0x0000af50 ldr r0, [sp, 0x10] | r0 = var_10h;
0x0000af52 mov.w fp, 0xc |
0x0000af56 blx 0x3098 | fcn_00003098 ();
0x0000af5a b 0xa82a | goto label_2;
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/sbin/mkfs.ext3 @ 0xd300 */
| #include <stdint.h>
|
; (fcn) fcn.0000d300 () | void fcn_0000d300 (int16_t arg_1c8h, int16_t arg_318h, int16_t arg_348h, int16_t arg1, int16_t arg2, int16_t arg3) {
| int16_t var_0h;
| int16_t var_4h;
| int16_t var_8h;
| char * s1;
| int16_t var_18h;
| int16_t var_1ch;
| int16_t var_20h;
| int16_t var_30h;
| int16_t var_8ch;
| r0 = arg1;
| r1 = arg2;
| r2 = arg3;
0x0000d300 push.w {r4, r5, r6, r7, r8, sb, lr} |
0x0000d304 mov r6, r2 | r6 = r2;
0x0000d306 ldr r2, [pc, 0x2c0] |
0x0000d308 sub sp, 0x94 |
0x0000d30a mov r5, r1 | r5 = r1;
0x0000d30c movs r1, 0 | r1 = 0;
0x0000d30e ldr r3, [pc, 0x2bc] | r3 = *(0xd5ce);
0x0000d310 mov r7, r0 | r7 = r0;
0x0000d312 add r2, pc | r2 = 0x1a8e0;
0x0000d314 ldr.w r8, [pc, 0x2b8] | r8 = *(0x0000d5d0);
0x0000d316 strh r0, [r7, 0x14] | *((r7 + 0x14)) = r0;
0x0000d318 ldr r3, [r2, r3] |
0x0000d31a mov.w r2, 0x1b6 | r2 = 0x1b6;
0x0000d31e add r8, pc | r8 += pc;
0x0000d320 ldr r3, [r3] | r3 = *(0x1a8e0);
0x0000d322 str r3, [sp, 0x8c] | var_8ch = r3;
0x0000d324 mov.w r3, 0 | r3 = 0;
0x0000d328 str r1, [sp, 0x14] | s1 = r1;
0x0000d32a blx 0x39a8 | r0 = fcn_000039a8 ();
0x0000d32e subs r4, r0, 0 | r4 = r0 - 0;
| if (r4 < r0) {
0x0000d330 blt 0xd39a | goto label_10;
| }
| label_5:
0x0000d332 add r1, sp, 0x20 | r1 += var_20h;
0x0000d334 mov r0, r4 | r0 = r4;
0x0000d336 blx 0x3614 | r0 = fcn_00003614 ();
0x0000d33a cmp r0, 0 |
| if (r0 < 0) {
0x0000d33c blt.w 0xd59e | goto label_11;
| }
0x0000d340 mov r0, r4 | r0 = r4;
0x0000d342 blx 0x3960 | ext2fs_inode_table_loc ();
0x0000d346 ldr r3, [sp, 0x30] | r3 = var_30h;
0x0000d348 and r3, r3, 0xf000 | r3 &= 0xf000;
0x0000d34c cmp.w r3, 0x6000 |
| if (r3 == 0x6000) {
0x0000d350 beq 0xd38c | goto label_12;
| }
0x0000d352 and r3, r5, 1 | r3 = r5 & 1;
0x0000d356 cmp r6, 0 |
| if (r6 == 0) {
0x0000d358 beq 0xd42a | goto label_13;
| }
0x0000d35a movs r2, 0 | r2 = 0;
0x0000d35c str r2, [r6] | *(r6) = r2;
| if (r3 == 0) {
0x0000d35e cbz r3, 0xd392 | goto label_1;
| }
| label_2:
0x0000d360 ldr r1, [pc, 0x270] |
0x0000d362 mov r2, r7 | r2 = r7;
0x0000d364 movs r0, 1 | r0 = 1;
0x0000d366 movs r4, 0 | r4 = 0;
0x0000d368 add r1, pc | r1 = 0x1a940;
0x0000d36a blx 0x3620 | fcn_00003620 ();
| do {
| label_3:
0x0000d36e ldr r2, [pc, 0x268] |
0x0000d370 ldr r3, [pc, 0x258] | r3 = *(0xd5cc);
0x0000d372 add r2, pc | r2 = 0x1a950;
0x0000d374 ldr r3, [r2, r3] | r3 = *(0x1a950);
0x0000d376 ldr r2, [r3] | r2 = *(0x1a950);
0x0000d378 ldr r3, [sp, 0x8c] | r3 = var_8ch;
0x0000d37a eors r2, r3 | r2 ^= r3;
0x0000d37c mov.w r3, 0 | r3 = 0;
| if (r2 != r3) {
0x0000d380 bne.w 0xd5a8 | goto label_14;
| }
0x0000d384 mov r0, r4 | r0 = r4;
0x0000d386 add sp, 0x94 |
0x0000d388 pop.w {r4, r5, r6, r7, r8, sb, pc} |
| if (r6 != 0) {
| label_12:
0x0000d38c cbz r6, 0xd392 |
0x0000d38e movs r3, 1 | r3 = 1;
0x0000d390 str r3, [r6] | *(r6) = r3;
| }
| label_1:
0x0000d392 lsls r3, r5, 0x1d | r3 = r5 << 0x1d;
| if (r3 < r5) {
0x0000d394 bmi 0xd3d4 | goto label_15;
| }
| label_0:
0x0000d396 movs r4, 1 | r4 = 1;
0x0000d398 b 0xd36e |
| } while (1);
| label_10:
0x0000d39a blx 0x357c | r0 = sprintf_chk ();
0x0000d39e mov sb, r0 | sb = r0;
0x0000d3a0 ldr r0, [r0] | r0 = *(r0);
0x0000d3a2 cmp r0, 2 |
| if (r0 == 2) {
0x0000d3a4 beq.w 0xd4dc | goto label_16;
| }
| label_4:
0x0000d3a8 ldr r3, [pc, 0x230] | r3 = *(0xd5dc);
0x0000d3aa ldr.w r4, [r8, r3] | r4 = *((r8 + r3));
0x0000d3ac ands r3, r0 | r3 &= r0;
0x0000d3ae ldr r5, [r4] | r5 = *(r4);
0x0000d3b0 blx 0x362c | fcn_0000362c ();
0x0000d3b4 ldr r2, [pc, 0x228] |
0x0000d3b6 mov r3, r7 | r3 = r7;
0x0000d3b8 str r0, [sp] | *(sp) = r0;
0x0000d3ba movs r1, 1 | r1 = 1;
0x0000d3bc mov r0, r5 | r0 = r5;
0x0000d3be add r2, pc | r2 = 0x1a9a2;
0x0000d3c0 blx 0x3684 | ext2fs_write_inode ();
0x0000d3c4 ldr.w r3, [sb] | r3 = *(sb);
0x0000d3c8 cmp r3, 2 |
| if (r3 == 2) {
0x0000d3ca beq.w 0xd530 | goto label_17;
| }
| label_7:
0x0000d3ce movs r0, 1 | r0 = 1;
0x0000d3d0 blx 0x34b0 | feof (r0);
| label_15:
0x0000d3d4 movs r1, 0 | r1 = 0;
0x0000d3d6 add r0, sp, 0x14 | r0 += s1;
0x0000d3d8 blx 0x3900 | r0 = strncmp (r0, r1, r2);
0x0000d3dc cmp r0, 0 |
| if (r0 >= 0) {
0x0000d3de bge 0xd430 | goto label_18;
| }
| label_6:
0x0000d3e0 mov r0, r7 | r0 = r7;
0x0000d3e2 blx 0x301c | r0 = fcn_0000301c ();
0x0000d3e6 mov r5, r0 | r5 = r0;
0x0000d3e8 cmp r0, 0 |
| if (r0 == 0) {
0x0000d3ea beq 0xd396 | goto label_0;
| }
0x0000d3ec movs r1, 1 | r1 = 1;
0x0000d3ee blx 0x30d4 | r0 = fcn_000030d4 ();
0x0000d3f2 cmp r0, 0 |
| if (r0 >= 0) {
0x0000d3f4 blt 0xd420 |
0x0000d3f6 movs r1, 0 | r1 = 0;
0x0000d3f8 mov r0, r5 | r0 = r5;
0x0000d3fa blx 0x30a4 | r0 = fcn_000030a4 ();
0x0000d3fe cmp r0, 0 |
| if (r0 < 0) {
0x0000d400 blt 0xd420 | goto label_19;
| }
0x0000d402 mov r0, r5 | r0 = r5;
0x0000d404 blx 0x345c | r0 = ext2fs_badblocks_list_test ();
0x0000d408 cmp r0, 0 |
| if (r0 < 0) {
0x0000d40a blt 0xd420 | goto label_19;
| }
0x0000d40c ldr r1, [pc, 0x1d4] |
0x0000d40e movs r3, 0 | r3 = 0;
0x0000d410 add r2, sp, 0x1c | r2 += var_1ch;
0x0000d412 mov r0, r5 | r0 = r5;
0x0000d414 add r1, pc | r1 = 0x1a9fc;
0x0000d416 blx 0x2fe0 | r0 = fcn_00002fe0 ();
0x0000d41a mov r4, r0 | r4 = r0;
0x0000d41c cmp r0, 0 |
| if (r0 == 0) {
0x0000d41e beq 0xd512 | goto label_20;
| }
| }
| label_19:
0x0000d420 mov r0, r5 | r0 = r5;
0x0000d422 movs r4, 1 | r4 = 1;
0x0000d424 blx 0x3774 | ext2fs_inode_alloc_stats2 ();
0x0000d426 invalid |
| label_13:
0x0000d42a cmp r3, 0 |
| if (r3 == 0) {
0x0000d42c beq 0xd392 | goto label_1;
| }
0x0000d42e b 0xd360 | goto label_2;
| label_18:
0x0000d430 ldr r1, [pc, 0x1b4] |
0x0000d432 mov r2, r7 | r2 = r7;
0x0000d434 ldr r0, [sp, 0x14] | r0 = s1;
0x0000d436 add r1, pc | r1 = 0x1aa22;
0x0000d438 blx 0x3248 | r0 = fcn_00003248 ();
0x0000d43c mov r4, r0 | r4 = r0;
0x0000d43e cmp r0, 0 |
| if (r0 == 0) {
0x0000d440 beq 0xd50a | goto label_21;
| }
0x0000d442 ldr r1, [pc, 0x1a8] |
0x0000d444 mov r2, r7 | r2 = r7;
0x0000d446 ldr r0, [sp, 0x14] | r0 = s1;
0x0000d448 add r1, pc | r1 = 0x1aa3a;
0x0000d44a blx 0x3248 | r0 = fcn_00003248 ();
0x0000d44e mov r5, r0 | r5 = r0;
0x0000d450 ldr r0, [sp, 0x14] | r0 = s1;
0x0000d452 blx 0x3194 | fcn_00003194 ();
0x0000d456 mov r3, r4 | r3 = r4;
0x0000d458 cmp r5, 0 |
| if (r5 == 0) {
0x0000d45a beq 0xd540 | goto label_22;
| }
0x0000d45c ldr r1, [pc, 0x190] |
0x0000d45e mov r2, r7 | r2 = r7;
0x0000d460 movs r0, 1 | r0 = 1;
0x0000d462 str r5, [sp] | *(sp) = r5;
0x0000d464 add r1, pc | r1 = 0x1aa58;
0x0000d466 blx 0x3620 | fcn_00003620 ();
| label_8:
0x0000d46a ldrb r3, [r4] | r3 = *(r4);
0x0000d46c cmp r3, 0x65 |
| if (r3 == 0x65) {
0x0000d46e bne 0xd4cc |
0x0000d470 ldrb r3, [r4, 1] | r3 = *((r4 + 1));
0x0000d472 cmp r3, 0x78 |
| if (r3 != 0x78) {
0x0000d474 bne 0xd4cc | goto label_23;
| }
0x0000d476 ldrb r3, [r4, 2] | r3 = *((r4 + 2));
0x0000d478 subs r3, 0x74 | r3 -= 0x74;
| if (r3 != 0x74) {
0x0000d47a bne 0xd4cc | goto label_23;
| }
0x0000d47c ldr r2, [pc, 0x174] |
0x0000d47e add r6, sp, 0x18 | r6 += var_18h;
0x0000d480 str r6, [sp, 8] | var_8h = r6;
0x0000d482 mov r0, r7 | r0 = r7;
0x0000d484 mov r1, r3 | r1 = r3;
0x0000d486 ldr.w r2, [r8, r2] | r2 = *((r8 + r2));
0x0000d48a str r3, [sp] | *(sp) = r3;
0x0000d48c ldr r2, [r2] | r2 = *(0xd5f4);
0x0000d48e str r2, [sp, 4] | var_4h = r2;
0x0000d490 mov.w r2, 0x20000 | r2 = 0x20000;
0x0000d494 blx 0x35ac | r0 = putchar (r0);
| if (r0 != 0) {
0x0000d498 cbnz r0, 0xd4cc | goto label_23;
| }
0x0000d49a ldr r3, [sp, 0x18] | r3 = var_18h;
0x0000d49c ldr r7, [r3, 0x10] | r7 = *((r3 + 0x10));
0x0000d49e ldr r3, [r7, 0x2c] | r3 = *((r7 + 0x2c));
0x0000d4a0 cmp r3, 0 |
| if (r3 == 0) {
0x0000d4a2 beq 0xd554 | goto label_24;
| }
0x0000d4a4 str r3, [sp, 0x1c] | var_1ch = r3;
0x0000d4a6 add r0, sp, 0x1c | r0 += var_1ch;
0x0000d4a8 ldrb.w r3, [r7, 0x88] | r3 = *((r7 + 0x88));
0x0000d4ac cmp r3, 0 |
| if (r3 == 0) {
0x0000d4ae beq 0xd576 | goto label_25;
| }
0x0000d4b0 blx 0x31b8 | fcn_000031b8 ();
0x0000d4b4 ldr r1, [pc, 0x140] |
0x0000d4b6 add.w r3, r7, 0x88 | r3 = r7 + 0x88;
0x0000d4ba str r0, [sp] | *(sp) = r0;
0x0000d4bc movs r2, 0x40 | r2 = 0x40;
0x0000d4be movs r0, 1 | r0 = 1;
0x0000d4c0 add r1, pc | r1 = 0x1aabc;
0x0000d4c2 blx 0x3620 | fcn_00003620 ();
| label_9:
0x0000d4c6 mov r0, r6 | r0 = r6;
0x0000d4c8 blx 0x3714 | ext2fs_test_generic_bmap ();
| }
| label_23:
0x0000d4cc mov r0, r4 | r0 = r4;
0x0000d4ce movs r4, 0 | r4 = 0;
0x0000d4d0 blx 0x3098 | fcn_00003098 ();
0x0000d4d4 mov r0, r5 | r0 = r5;
0x0000d4d6 blx 0x3098 | fcn_00003098 ();
0x0000d4da b 0xd36e | goto label_3;
| label_16:
0x0000d4dc lsls r4, r5, 0x1b | r4 = r5 << 0x1b;
| if (r4 < r5) {
0x0000d4de bmi 0xd5ac | goto label_26;
| }
0x0000d4e0 lsls r1, r5, 0x1e | r1 = r5 << 0x1e;
| if (r1 >= r5) {
0x0000d4e2 bpl.w 0xd3a8 | goto label_4;
| }
0x0000d4e6 mov.w r2, 0x1b6 | r2 = 0x1b6;
0x0000d4ea movs r1, 0x40 | r1 = 0x40;
0x0000d4ec mov r0, r7 | r0 = r7;
0x0000d4ee blx 0x39a8 | r0 = fcn_000039a8 ();
0x0000d4f2 subs r4, r0, 0 | r4 = r0 - 0;
| if (r4 < r0) {
0x0000d4f4 blt 0xd54e | goto label_27;
| }
0x0000d4f6 lsls r2, r5, 0x1c | r2 = r5 << 0x1c;
| if (r2 >= r5) {
0x0000d4f8 bpl.w 0xd332 | goto label_5;
| }
0x0000d4fc ldr r1, [pc, 0xfc] |
0x0000d4fe mov r2, r7 | r2 = r7;
0x0000d500 movs r0, 1 | r0 = 1;
0x0000d502 add r1, pc | r1 = 0x1ab02;
0x0000d504 blx 0x3620 | fcn_00003620 ();
0x0000d508 b 0xd332 | goto label_5;
| label_21:
0x0000d50a ldr r0, [sp, 0x14] | r0 = s1;
0x0000d50c blx 0x3194 | fcn_00003194 ();
0x0000d510 b 0xd3e0 | goto label_6;
| label_20:
0x0000d512 ldr r3, [pc, 0xc8] | r3 = *(0xd5de);
0x0000d514 movs r1, 1 | r1 = 1;
0x0000d516 ldr.w r2, [r8, r3] | r2 = *((r8 + r3));
0x0000d51a str r7, [sp] | *(sp) = r7;
0x0000d51c ldr r3, [sp, 0x1c] | r3 = var_1ch;
0x0000d51e ldr r0, [r2] | r0 = *(r2);
0x0000d520 ldr r2, [pc, 0xdc] |
0x0000d522 add r2, pc | r2 = 0x1ab26;
0x0000d524 blx 0x3684 | ext2fs_write_inode ();
0x0000d526 stm.w lr!, {r3, r5, sb, sl, lr} | *(lr!) = r3;
| *((lr! + 4)) = r5;
| *((lr! + 8)) = sb;
| *((lr! + 12)) = sl;
| *((lr! + 16)) = lr;
0x0000d52a blx 0x3774 | ext2fs_inode_alloc_stats2 ();
0x0000d52e b 0xd36e | goto label_3;
| label_17:
0x0000d530 ldr r0, [pc, 0xd0] |
0x0000d532 movs r2, 0x45 | r2 = 0x45;
0x0000d534 ldr r3, [r4] | r3 = *(r4);
0x0000d536 movs r1, 1 | r1 = 1;
0x0000d538 add r0, pc | r0 = 0x1ab40;
0x0000d53a blx 0x3324 | strcat (r0, r1)
0x0000d53e b 0xd3ce | goto label_7;
| label_22:
0x0000d540 ldr r1, [pc, 0xc4] |
0x0000d542 mov r2, r7 | r2 = r7;
0x0000d544 movs r0, 1 | r0 = 1;
0x0000d546 add r1, pc | r1 = 0x1ab52;
0x0000d548 blx 0x3620 | fcn_00003620 ();
0x0000d54c b 0xd46a | goto label_8;
| label_27:
0x0000d54e ldr.w r0, [sb] | r0 = *(sb);
0x0000d552 b 0xd3a8 | goto label_4;
| label_24:
0x0000d554 ldr.w r3, [r7, 0x108] | r3 = *((r7 + 0x108));
| if (r3 != 0) {
0x0000d558 cbnz r3, 0xd588 | goto label_28;
| }
0x0000d55a ldr r3, [r7, 0x30] | r3 = *((r7 + 0x30));
0x0000d55c cmp r3, 0 |
| if (r3 == 0) {
0x0000d55e beq 0xd4c6 | goto label_9;
| }
0x0000d560 add r0, sp, 0x1c | r0 += var_1ch;
0x0000d562 str r3, [sp, 0x1c] | var_1ch = r3;
0x0000d564 blx 0x31b8 | fcn_000031b8 ();
0x0000d568 ldr r1, [pc, 0xa0] |
0x0000d56a mov r2, r0 | r2 = r0;
0x0000d56c movs r0, 1 | r0 = 1;
0x0000d56e add r1, pc | r1 = 0x1ab7e;
0x0000d570 blx 0x3620 | fcn_00003620 ();
0x0000d574 b 0xd4c6 | goto label_9;
| label_25:
0x0000d576 blx 0x31b8 | fcn_000031b8 ();
0x0000d57a ldr r1, [pc, 0x94] |
0x0000d57c mov r2, r0 | r2 = r0;
0x0000d57e movs r0, 1 | r0 = 1;
0x0000d580 add r1, pc | r1 = 0x1ab96;
0x0000d582 blx 0x3620 | fcn_00003620 ();
0x0000d586 b 0xd4c6 | goto label_9;
| label_28:
0x0000d588 add r0, sp, 0x1c | r0 += var_1ch;
0x0000d58a str r3, [sp, 0x1c] | var_1ch = r3;
0x0000d58c blx 0x31b8 | fcn_000031b8 ();
0x0000d590 ldr r1, [pc, 0x80] |
0x0000d592 mov r2, r0 | r2 = r0;
0x0000d594 movs r0, 1 | r0 = 1;
0x0000d596 add r1, pc | r1 = 0x1abae;
0x0000d598 blx 0x3620 | fcn_00003620 ();
0x0000d59c b 0xd4c6 | goto label_9;
| label_11:
0x0000d59e ldr r0, [pc, 0x78] |
0x0000d5a0 add r0, pc | r0 = 0x1abbe;
0x0000d5a2 blx 0x32d8 | fcn_000032d8 ();
0x0000d5a6 b 0xd3ce | goto label_7;
| label_14:
0x0000d5a8 blx 0x31f4 | fcn_000031f4 ();
| label_26:
0x0000d5ac ldr r0, [pc, 0x2c] |
0x0000d5ae mov r3, r7 | r3 = r7;
0x0000d5b0 ldr r2, [pc, 0x68] |
0x0000d5b2 movs r1, 1 | r1 = 1;
0x0000d5b4 ldr.w r0, [r8, r0] | r0 = *((r8 + r0));
0x0000d5b8 add r2, pc | r2 = 0x1abd8;
0x0000d5ba ldr r0, [r0] | r0 = *(0xd5dc);
0x0000d5bc blx 0x3684 | ext2fs_write_inode ();
0x0000d5c0 movs r0, 1 | r0 = 1;
0x0000d5c2 blx 0x34b0 | feof (r0);
0x0000d5c6 nop |
0x0000d5c8 add r0, sp, 0x348 | r0 += arg_348h;
0x0000d5ca movs r1, r0 | r1 = r0;
0x0000d5cc lsls r4, r5, 0xe | r4 = r5 << 0xe;
0x0000d5ce movs r0, r0 |
0x0000d5d0 add r0, sp, 0x318 | r0 += arg_318h;
0x0000d5d2 movs r1, r0 | r1 = r0;
0x0000d5d4 ldrh r4, [r6, 0x38] | r4 = *((r6 + 0x38));
0x0000d5d6 movs r0, r0 |
0x0000d5d8 add r0, sp, 0x1c8 | r0 += arg_1c8h;
0x0000d5da movs r1, r0 | r1 = r0;
0x0000d5dc lsls r0, r0, 0xf | r0 <<= 0xf;
0x0000d5de movs r0, r0 |
0x0000d5e0 ldrh r2, [r4, 0x3e] | r2 = *((r4 + 0x3e));
0x0000d5e2 movs r0, r0 |
0x0000d5e4 ldrh r0, [r4, 0x3a] | r0 = *((r4 + 0x3a));
0x0000d5e6 movs r0, r0 |
0x0000d5e8 ldrh r2, [r1, 0x34] | r2 = *((r1 + 0x34));
0x0000d5ea movs r0, r0 |
0x0000d5ec ldrh r0, [r0, 0x34] | r0 = *((r0 + 0x34));
0x0000d5ee movs r0, r0 |
0x0000d5f0 ldrh r4, [r5, 0x32] | r4 = *((r5 + 0x32));
0x0000d5f2 movs r0, r0 |
0x0000d5f4 lsls r4, r5, 0xf | r4 = r5 << 0xf;
0x0000d5f6 movs r0, r0 |
0x0000d5f8 ldrh r4, [r3, 0x32] | r4 = *((r3 + 0x32));
0x0000d5fa movs r0, r0 |
0x0000d5fc str r2, [r4, 0x34] | *((r4 + 0x34)) = r2;
0x0000d5fe movs r0, r0 |
0x0000d600 ldrh r2, [r3, 0x32] | r2 = *((r3 + 0x32));
0x0000d602 movs r0, r0 |
0x0000d604 ldrh r4, [r2, 0x28] | r4 = *((r2 + 0x28));
0x0000d606 movs r0, r0 |
0x0000d608 ldrh r6, [r6, 0x2c] | r6 = *((r6 + 0x2c));
0x0000d60a movs r0, r0 |
0x0000d60c ldrh r6, [r5, 0x2e] | r6 = *((r5 + 0x2e));
0x0000d60e movs r0, r0 |
0x0000d610 ldrh r0, [r7, 0x2c] | r0 = *((r7 + 0x2c));
0x0000d612 movs r0, r0 |
0x0000d614 ldrh r6, [r6, 0x2c] | r6 = *((r6 + 0x2c));
0x0000d616 movs r0, r0 |
0x0000d618 ldrh r4, [r6, 0x26] | r4 = *((r6 + 0x26));
0x0000d61a movs r0, r0 |
0x0000d61c str r4, [r6, 0x24] | *((r6 + 0x24)) = r4;
0x0000d61e movs r0, r0 |
| }
[*] Function strcat used 14 times mkfs.ext3