[*] Binary protection state of mkfs.ext3
Full RELRO Canary found NX enabled PIE enabled No RPATH No RUNPATH No Symbols
[*] Function sprintf 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 @ 0x8564 */
| #include <stdint.h>
|
; (fcn) fcn.00008564 () | void fcn_00008564 (int16_t arg_1ch, int16_t arg_41ch, int16_t arg1, int16_t arg2) {
| int16_t var_0h;
| int16_t var_ch;
| int16_t var_10h;
| int16_t var_14h;
| r0 = arg1;
| r1 = arg2;
0x00008564 ldr r3, [pc, 0x10c] |
0x00008566 push.w {r4, r5, r6, r7, r8, sb, lr} |
0x00008568 mvns r0, r6 | r0 = ~r6;
0x0000856a mov r6, r1 | r6 = r1;
0x0000856c ldr r1, [pc, 0x108] |
0x0000856e subw sp, sp, 0x424 | __asm ("subw sp, sp, 0x424");
0x00008572 add r3, pc |
0x00008574 mov r4, r0 | r4 = r0;
0x00008576 ldr r2, [pc, 0x104] | r2 = *(0x867e);
0x00008578 add r1, pc | r1 = 0x10bf4;
0x0000857a ldr r3, [r3, 8] | r3 = *(0x10bf2);
0x0000857c ldr r5, [r0, 0x14] | r5 = *(arg_1chx14);
0x0000857e ldr r2, [r1, r2] |
0x00008580 ldr r2, [r2] | r2 = *(0x10bf4);
0x00008582 str.w r2, [sp, 0x41c] | __asm ("str.w r2, [arg_41ch]");
0x00008586 mov.w r2, 0 | r2 = 0;
0x0000858a cmp r3, 0 |
| if (r3 != 0) {
0x0000858c bne 0x861c | goto label_2;
| }
0x0000858e ldr.w r8, [pc, 0xf0] |
0x00008592 add r8, pc | r8 = 0x10c18;
| do {
0x00008594 ldr r3, [pc, 0xec] |
0x00008596 add r3, pc |
0x00008598 ldr r3, [r3, 0xc] | r3 = *(0x10c2a);
0x0000859a cmp r3, 1 |
| if (r3 <= 1) {
0x0000859c ble 0x8624 | goto label_3;
| }
0x0000859e ldr.w sb, [pc, 0xe8] |
0x000085a2 add sb, pc | sb = 0x10c30;
| label_0:
0x000085a4 ldrd r7, r0, [r4, 0xc] | __asm ("ldrd r7, r0, [r4, 0xc]");
0x000085a8 blx 0x33dc | fcn_000033dc ();
0x000085ac ldr r3, [pc, 0xdc] |
0x000085ae subs r0, 1 | r0--;
0x000085b0 sbc r1, r1, 0 | __asm ("sbc r1, r1, 0");
0x000085b4 str r7, [sp, 0xc] | var_ch = r7;
0x000085b6 add r7, sp, 0x1c | r7 += arg_1ch;
0x000085b8 str r0, [sp, 0x10] | var_10h = r0;
0x000085ba add r3, pc | r3 = 0x10c4a;
0x000085bc str r1, [sp, 0x14] | var_14h = r1;
0x000085be mov.w r2, 0x400 | r2 = 0x400;
0x000085c2 movs r1, 1 | r1 = 1;
0x000085c4 mov r0, r7 | r0 = r7;
0x000085c6 strd r8, sb, [sp, 4] | __asm ("strd r8, sb, [sp, 4]");
0x000085ca str r5, [sp] | *(sp) = r5;
0x000085cc blx 0x3594 | ext2fs_open2 ();
0x000085d0 ldr r3, [pc, 0xbc] |
0x000085d2 add r3, pc |
0x000085d4 ldr r3, [r3, 0x10] | r3 = *(0x10c76);
| if (r3 != 0) {
0x000085d6 cbnz r3, 0x862c | goto label_4;
| }
| label_1:
0x000085d8 ldr r1, [pc, 0xb8] |
0x000085da mov r0, r7 | r0 = r7;
0x000085dc add r1, pc | r1 = 0x10c74;
0x000085de blx 0x3780 | r0 = e2p_string2hash ();
0x000085e2 mov r5, r0 | r5 = r0;
| if (r0 == 0) {
0x000085e4 cbz r0, 0x863a | goto label_5;
| }
0x000085e6 ldr r3, [pc, 0xb0] |
0x000085e8 mov r1, r0 | r1 = r0;
0x000085ea mov r2, r6 | r2 = r6;
0x000085ec mov r0, r4 | r0 = r4;
0x000085ee add r3, pc | r3 = 0x10c8c;
0x000085f0 blx 0x3564 | r0 = errno_location ();
0x000085f4 mov r4, r0 | r4 = r0;
0x000085f6 mov r0, r5 | r0 = r5;
0x000085f8 blx 0x39b4 | fcn_000039b4 ();
| if (r4 != 0) {
0x000085fc cbnz r4, 0x865a | goto label_6;
| }
0x000085fe ldr r2, [pc, 0x9c] |
0x00008600 ldr r3, [pc, 0x78] | r3 = *(0x867c);
0x00008602 add r2, pc | r2 = 0x10ca4;
0x00008604 ldr r3, [r2, r3] | r3 = *(0x10ca4);
0x00008606 ldr r2, [r3] | r2 = *(0x10ca4);
0x00008608 ldr.w r3, [sp, 0x41c] | r3 = *(arg_41ch);
0x0000860c eors r2, r3 | r2 ^= r3;
0x0000860e mov.w r3, 0 | r3 = 0;
| if (r2 != r3) {
0x00008612 bne 0x8656 | goto label_7;
| }
0x00008614 addw sp, sp, 0x424 | __asm ("addw sp, var_0h");
0x00008618 pop.w {r4, r5, r6, r7, r8, sb, pc} |
| label_2:
0x0000861c ldr.w r8, [pc, 0x80] |
0x00008620 add r8, pc | r8 = 0x10cc4;
0x00008622 b 0x8594 |
| } while (1);
| label_3:
0x00008624 ldr.w sb, [pc, 0x7c] |
0x00008628 add sb, pc | sb = 0x10cd0;
0x0000862a b 0x85a4 | goto label_0;
| label_4:
0x0000862c ldr r1, [pc, 0x78] |
0x0000862e mov r2, r7 | r2 = r7;
0x00008630 movs r0, 1 | r0 = 1;
0x00008632 add r1, pc | r1 = 0x10cde;
0x00008634 blx 0x3620 | fcn_00003620 ();
0x00008638 b 0x85d8 | goto label_1;
| label_5:
0x0000863a blx 0x357c | sprintf_chk ()
0x0000863e ldr r2, [pc, 0x6c] |
0x00008640 mov r1, r0 | r1 = r0;
0x00008642 ldr r0, [pc, 0x6c] |
0x00008644 mov r3, r7 | r3 = r7;
0x00008646 ldr r1, [r1] | r1 = *(r1);
0x00008648 add r2, pc | r2 = 0x10cfa;
0x0000864a add r0, pc | r0 = 0x10d00;
0x0000864c blx 0x32cc | fcn_000032cc ();
0x00008650 movs r0, 1 | r0 = 1;
0x00008652 blx 0x34b0 | r0 = feof (r0);
| label_7:
0x00008656 blx 0x31f4 | fcn_000031f4 ();
| label_6:
0x0000865a ldr r0, [pc, 0x58] |
0x0000865c mov r1, r4 | r1 = r4;
0x0000865e ldr r3, [pc, 0x58] |
0x00008660 ldr r2, [pc, 0x58] |
0x00008662 add r0, pc | r0 = 0x10d1c;
0x00008664 add r3, pc | r3 = 0x10d22;
0x00008666 add r2, pc | r2 = 0x10d26;
0x00008668 blx 0x32cc | fcn_000032cc ();
0x0000866c movs r0, 1 | r0 = 1;
0x0000866e blx 0x34b0 | feof (r0);
0x00008672 nop |
0x00008674 smlabb r0, sl, r1, r0 | __asm ("smlabb r0, sl, r1, r0");
0x00008678 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 @ 0xb048 */
| #include <stdint.h>
|
; (fcn) fcn.0000b048 () | void fcn_0000b048 (int16_t arg_60h, int16_t arg_64h, int16_t arg_68h, int16_t arg_6ch, int16_t arg_70h, int16_t arg_74h, int16_t arg1, int16_t arg2, int16_t arg3) {
| int16_t var_0h_2;
| int16_t var_4h;
| int16_t var_8h;
| int16_t var_ch_2;
| 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_28h;
| int16_t var_2ch;
| int16_t var_30h;
| int16_t var_34h;
| r0 = arg1;
| r1 = arg2;
| r2 = arg3;
0x0000b048 svcmi 0xf0e92d | __asm ("svcmi 0xf0e92d");
0x0000b04c sub sp, 0x3c |
0x0000b04e ldr r4, [pc, 0x124] |
0x0000b050 mov sb, r2 | sb = r2;
0x0000b052 ldr r5, [sp, 0x60] | r5 = *(arg_60h);
0x0000b054 ldr r6, [sp, 0x64] | r6 = *(arg_64h);
0x0000b056 add r4, pc | r4 = 0x161d0;
0x0000b058 ldr r3, [pc, 0x11c] | r3 = *(0xb178);
0x0000b05a str r5, [sp, 0x14] | var_14h = r5;
0x0000b05c str r6, [sp, 0x18] | var_18h = r6;
0x0000b05e ldr r3, [r4, r3] |
0x0000b060 ldr r2, [sp, 0x6c] | r2 = *(arg_6ch);
0x0000b062 ldr r3, [r3] | r3 = *(0x161d0);
0x0000b064 str r3, [sp, 0x34] | var_34h = r3;
0x0000b066 mov.w r3, 0 | r3 = 0;
0x0000b06a ldr r3, [sp, 0x68] | r3 = *(arg_68h);
0x0000b06c strd r0, r1, [sp, 0x20] | __asm ("strd r0, r1, [var_24h]");
0x0000b070 ldr r1, [sp, 0x70] | r1 = *(arg_70h);
0x0000b072 cmp r5, r3 |
0x0000b074 str r3, [sp, 0x28] | var_28h = r3;
0x0000b076 sbcs.w r3, r6, r2 | __asm ("sbcs.w r3, r6, r2");
0x0000b07a str r2, [sp, 0x2c] | var_2ch = r2;
0x0000b07c str r1, [sp, 0x1c] | var_1ch = r1;
0x0000b07e ldr r1, [sp, 0x74] | r1 = *(arg_74h);
0x0000b080 str r1, [sp, 0x10] | var_10h = r1;
| if (r5 >= r3) {
0x0000b082 bge 0xb10a | goto label_4;
| }
| label_0:
0x0000b084 ldr r3, [sp, 0x14] | r3 = var_14h;
0x0000b086 mov.w r2, 0x10000 | r2 = 0x10000;
0x0000b08a ldr r1, [sp, 0x1c] | r1 = var_1ch;
0x0000b08c ldr r0, [sp, 0x24] | r0 = var_24h;
0x0000b08e str r3, [sp] | *(sp) = r3;
0x0000b090 ldr r3, [sp, 0x18] | r3 = var_18h;
0x0000b092 str r3, [sp, 4] | var_4h = r3;
0x0000b094 blx 0x3384 | r0 = blkid_topology_get_alignment_offset ();
0x0000b098 subs.w r8, r0, 0 | r8 = r0 - 0;
| if (r8 < r0) {
0x0000b09c blt 0xb166 | goto label_5;
| }
0x0000b09e asr.w fp, r8, 0x1f |
| if (r8 == r0) {
0x0000b0a2 beq 0xb0ee | goto label_6;
| }
0x0000b0a4 ldr r3, [sp, 0x20] | r3 = var_20h;
0x0000b0a6 movs r6, 0 | r6 = 0;
0x0000b0a8 ldr r5, [sp, 0x1c] | r5 = var_1ch;
0x0000b0aa mov r7, r6 | r7 = r6;
0x0000b0ac add.w sl, sp, 0x30 | sl += var_30h;
0x0000b0b0 ldr r3, [r3, 0x14] | r3 = *((r3 + 0x14));
| do {
0x0000b0b2 subs.w r2, r8, r6 | r2 = r8 - r6;
0x0000b0b6 asr.w r1, r3, 0x1f | r1 = r3 >> 0x1f;
0x0000b0ba sbc.w r0, fp, r7 | __asm ("sbc.w r0, fp, r7");
0x0000b0be cmp r2, r3 |
0x0000b0c0 mov r4, r3 | r4 = r3;
0x0000b0c2 sbcs r0, r1 | __asm ("sbcs r0, r1");
0x0000b0c4 ldr r1, [sp, 0x10] | r1 = var_10h;
0x0000b0c6 it ge |
| if (r2 < r3) {
0x0000b0c8 movge r2, r3 | r2 = r3;
| }
0x0000b0ca mov r0, r5 | r0 = r5;
0x0000b0cc it lt |
| if (r2 >= r3) {
0x0000b0ce movlt r4, r2 | r4 = r2;
| }
0x0000b0d0 strd r2, r3, [sp, 8] | __asm ("strd r2, r3, [var_8h]");
0x0000b0d4 blx 0x3170 | r0 = fcn_00003170 ();
| if (r0 != 0) {
0x0000b0d8 cbnz r0, 0xb126 | goto label_7;
| }
0x0000b0da ldr r2, [sp, 8] | r2 = var_8h;
0x0000b0dc ldr r3, [sp, 0xc] | r3 = var_ch_2;
0x0000b0de add r5, r2 | r5 += r2;
| label_3:
0x0000b0e0 adds r6, r3, r6 | r6 = r3 + r6;
0x0000b0e2 adc r7, r7, 0 | __asm ("adc r7, r7, 0");
0x0000b0e6 cmp r6, r8 |
0x0000b0e8 sbcs.w r2, r7, fp | __asm ("sbcs.w r2, r7, fp");
0x0000b0ec blt 0xb0b2 |
| } while (r6 < r8);
| label_6:
0x0000b0ee ldr r3, [sp, 0x14] | r3 = var_14h;
0x0000b0f0 ldr r2, [sp, 0x18] | r2 = var_18h;
0x0000b0f2 ldr r1, [sp, 0x28] | r1 = var_28h;
0x0000b0f4 adds.w r3, r3, 0x10000 | r3 += 0x10000;
0x0000b0f8 adc r2, r2, 0 | __asm ("adc r2, r2, 0");
0x0000b0fc str r3, [sp, 0x14] | var_14h = r3;
0x0000b0fe cmp r3, r1 |
0x0000b100 ldr r3, [sp, 0x2c] | r3 = var_2ch;
0x0000b102 str r2, [sp, 0x18] | var_18h = r2;
0x0000b104 sbcs.w r3, r2, r3 | __asm ("sbcs.w r3, r2, r3");
| if (r3 < r1) {
0x0000b108 blt 0xb084 | goto label_0;
| }
| label_4:
0x0000b10a movs r0, 0 | r0 = 0;
| do {
| label_1:
0x0000b10c ldr r2, [pc, 0x6c] |
0x0000b10e ldr r3, [pc, 0x68] | r3 = *(0xb17a);
0x0000b110 add r2, pc | r2 = 0x16290;
0x0000b112 ldr r3, [r2, r3] | r3 = *(0x16290);
0x0000b114 ldr r2, [r3] | r2 = *(0x16290);
0x0000b116 ldr r3, [sp, 0x34] | r3 = var_34h;
0x0000b118 eors r2, r3 | r2 ^= r3;
0x0000b11a mov.w r3, 0 | r3 = 0;
| if (r2 != r3) {
0x0000b11e bne 0xb16e | goto label_8;
| }
0x0000b120 add sp, 0x3c |
0x0000b122 pop.w {r4, r5, r6, r7, r8, sb, sl, fp, pc} |
| label_7:
0x0000b126 movs r3, 0 | r3 = 0;
0x0000b128 mov r0, sb | r0 = sb;
0x0000b12a strd r3, r3, [sp] | __asm ("strd r3, r3, [sp]");
0x0000b12e ldr r3, [sp, 0x14] | r3 = var_14h;
0x0000b130 adds r2, r3, r6 | r2 = r3 + r6;
0x0000b132 ldr r3, [sp, 0x18] | r3 = var_18h;
0x0000b134 adc.w r3, r7, r3 | __asm ("adc.w r3, r7, r3");
0x0000b138 blx 0x36cc | r0 = ext2fs_mkdir ();
| if (r0 == 0) {
0x0000b13c cbz r0, 0xb158 | goto label_9;
| }
0x0000b13e b 0xb10c |
| } while (1);
| label_2:
0x0000b140 mov r3, sl | r3 = sl;
0x0000b142 mov r2, r4 | r2 = r4;
0x0000b144 mov r1, r5 | r1 = r5;
0x0000b146 mov r0, sb | r0 = sb;
0x0000b148 blx 0x2fec | r0 = fcn_00002fec ();
0x0000b14c cmp r0, 0 |
| if (r0 != 0) {
0x0000b14e bne 0xb10c | goto label_1;
| }
0x0000b150 ldr r3, [sp, 0x30] | r3 = var_30h;
| if (r3 == 0) {
0x0000b152 cbz r3, 0xb162 | goto label_10;
| }
0x0000b154 subs r4, r4, r3 | r4 -= r3;
0x0000b156 add r5, r3 | r5 += r3;
| label_9:
0x0000b158 cmp r4, 0 |
| if (r4 > 0) {
0x0000b15a bgt 0xb140 | goto label_2;
| }
0x0000b15c ldr r3, [sp, 0x20] | r3 = var_20h;
0x0000b15e ldr r3, [r3, 0x14] | r3 = *((r3 + 0x14));
0x0000b160 b 0xb0e0 | goto label_3;
| label_10:
0x0000b162 movs r0, 5 | r0 = 5;
0x0000b164 b 0xb10c | goto label_1;
| label_5:
0x0000b166 blx 0x357c | r0 = sprintf_chk ()
0x0000b16a ldr r0, [r0] | r0 = *(r0);
0x0000b16c b 0xb10c | goto label_1;
| label_8:
0x0000b16e blx 0x31f4 | fcn_000031f4 ();
0x0000b172 nop |
0x0000b174 ldm r3, {r1, r2, r3, r7} | r1 = *(r3);
| r2 = *((r3 + 4));
| r3 = *((r3 + 8));
| r7 = *((r3 + 12));
0x0000b176 movs r1, r0 | r1 = r0;
0x0000b178 lsls r4, r5, 0xe | r4 = r5 << 0xe;
0x0000b17a movs r0, r0 |
0x0000b17c ldm r2, {r2, r4, r6, r7} | r2 = *(r2);
| r4 = *((r2 + 4));
| r6 = *((r2 + 8));
| r7 = *((r2 + 12));
0x0000b17e movs r1, r0 | r1 = 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 @ 0xb180 */
| #include <stdint.h>
|
; (fcn) fcn.0000b180 () | void fcn_0000b180 (int16_t arg1, int16_t arg2, int16_t arg3) {
| int16_t var_0h;
| int16_t var_ch;
| int16_t var_10h_2;
| int16_t var_14h_2;
| r0 = arg1;
| r1 = arg2;
| r2 = arg3;
0x0000b180 svcmi 0xf0e92d | __asm ("svcmi 0xf0e92d");
0x0000b184 sub sp, 0x1c |
0x0000b186 ldr r5, [pc, 0x264] |
0x0000b188 ldr r3, [pc, 0x264] | r3 = *(0xb3f0);
0x0000b18a add r5, pc | r5 = "Bad magic value in profile iterator";
0x0000b18c ldr r4, [pc, 0x264] |
0x0000b18e ldr.w ip, [pc, 0x268] | ip = *(0xb3fa);
0x0000b190 stm r2!, {r3, r5, r6} | *(r2!) = r3;
| *((r2! + 4)) = r5;
| *((r2! + 8)) = r6;
0x0000b192 ldr r3, [r5, r3] |
0x0000b194 add r4, pc | r4 = 0x1658c;
0x0000b196 ldr r3, [r3] | r3 = "Bad magic value in profile iterator";
0x0000b198 str r3, [sp, 0x14] | var_14h_2 = r3;
0x0000b19a mov.w r3, 0 | r3 = 0;
0x0000b19e ldr.w r3, [r4, ip] | r3 = *(0x1658c);
0x0000b1a2 ldr r6, [r3] | r6 = *(0x1658c);
0x0000b1a4 cbz r6, 0xb1c6 |
| while (r0 == 0) {
| label_0:
0x0000b1a6 movs r4, 0 | r4 = 0;
| label_1:
0x0000b1a8 ldr r2, [pc, 0x250] |
0x0000b1aa ldr r3, [pc, 0x244] | r3 = *(0xb3f2);
0x0000b1ac add r2, pc | r2 = 0x165ac;
0x0000b1ae ldr r3, [r2, r3] | r3 = *(0x165ac);
0x0000b1b0 ldr r2, [r3] | r2 = *(0x165ac);
0x0000b1b2 ldr r3, [sp, 0x14] | r3 = var_14h_2;
0x0000b1b4 eors r2, r3 | r2 ^= r3;
0x0000b1b6 mov.w r3, 0 | r3 = 0;
| if (r2 != r3) {
0x0000b1ba bne.w 0xb3ca | goto label_4;
| }
0x0000b1be mov r0, r4 | r0 = r4;
0x0000b1c0 add sp, 0x1c |
0x0000b1c2 pop.w {r4, r5, r6, r7, r8, sb, sl, fp, pc} |
0x0000b1c6 mov r5, r2 | r5 = r2;
0x0000b1c8 mov sb, r0 | sb = r0;
0x0000b1ca mov r7, r1 | r7 = r1;
0x0000b1cc mov r2, r6 | r2 = r6;
0x0000b1ce mov r1, r6 | r1 = r6;
0x0000b1d0 mov r0, r5 | r0 = r5;
0x0000b1d2 blx 0x36b4 | r0 = set_undo_io_backup_file ();
0x0000b1d6 cmp.w r0, -1 |
0x0000b1da mov r8, r0 | r8 = r0;
| if (r0 == -1) {
0x0000b1dc beq.w 0xb2ee | goto label_5;
| }
0x0000b1e0 cmp r0, 0 |
0x0000b1e2 beq 0xb1a6 |
| }
0x0000b1e4 mov r0, sb | r0 = sb;
0x0000b1e6 add.w sb, sp, 0x10 | sb += var_10h_2;
0x0000b1ea mov r2, sb | r2 = sb;
0x0000b1ec mov r1, r7 | r1 = r7;
0x0000b1ee blx 0x30c8 | r0 = fcn_000030c8 ();
0x0000b1f2 mov r4, r0 | r4 = r0;
| if (r0 == 0) {
0x0000b1f4 cbz r0, 0xb214 | goto label_6;
| }
0x0000b1f6 movw r3, 0xb7a4 |
0x0000b1fa movt r3, 0x7f2b | r3 = 0x7f2bb7a4;
0x0000b1fe cmp r0, r3 |
| if (r0 == r3) {
0x0000b200 beq 0xb1a6 | goto label_0;
| }
0x0000b202 ldr r2, [pc, 0x1fc] |
0x0000b204 mov r3, r7 | r3 = r7;
0x0000b206 ldr r0, [pc, 0x1fc] |
0x0000b208 mov r1, r4 | r1 = r4;
0x0000b20a add r2, pc | r2 = "Profile section header not at top level";
0x0000b20c add r0, pc | r0 = 0x16616;
0x0000b20e blx 0x32cc | fcn_000032cc ();
0x0000b212 b 0xb1a8 | goto label_1;
| label_6:
0x0000b214 ldr r0, [sp, 0x10] | r0 = var_10h_2;
0x0000b216 blx 0x2f34 | r0 = ext2fs_xattrs_read ();
0x0000b21a mov r4, r0 | r4 = r0;
0x0000b21c cmp r0, 0 |
| if (r0 != 0) {
0x0000b21e bne 0xb306 | goto label_7;
| }
0x0000b220 mov r0, r8 | r0 = r8;
0x0000b222 blx 0x3450 | r0 = strerror (r0);
0x0000b226 mov r6, r0 | r6 = r0;
0x0000b228 cmp r0, 0 |
| if (r0 == 0) {
0x0000b22a beq.w 0xb33a | goto label_8;
| }
0x0000b22e mov r1, r0 | r1 = r0;
0x0000b230 mov r2, r8 | r2 = r8;
0x0000b232 mov r0, r5 | r0 = r5;
0x0000b234 blx 0x36b4 | r0 = set_undo_io_backup_file ();
0x0000b238 mov r3, r0 | r3 = r0;
0x0000b23a str r0, [sp, 0xc] | var_ch = r0;
0x0000b23c adds r0, r3, 1 | r0 = r3 + 1;
| if (r0 == r3) {
0x0000b23e beq.w 0xb3b2 | goto label_9;
| }
0x0000b242 cmp r3, 0 |
| if (r3 > 0) {
0x0000b244 bgt 0xb294 | goto label_10;
| }
0x0000b246 b 0xb358 | goto label_11;
| do {
0x0000b248 blx 0x3450 | r0 = strerror (r0);
0x0000b24c mov r8, r0 | r8 = r0;
0x0000b24e cmp r0, 0 |
| if (r0 == 0) {
0x0000b250 beq.w 0xb3ce | goto label_12;
| }
0x0000b254 mov r2, r0 | r2 = r0;
0x0000b256 mov r3, r4 | r3 = r4;
0x0000b258 mov r1, fp | r1 = fp;
0x0000b25a mov r0, r5 | r0 = r5;
0x0000b25c blx 0x36fc | r0 = io_channel_write_blk64 ();
0x0000b260 adds r2, r0, 1 | r2 = r0 + 1;
0x0000b262 mov r3, r0 | r3 = r0;
| if (r2 == r0) {
0x0000b264 beq.w 0xb37e | goto label_13;
| }
0x0000b268 ldr r0, [sp, 0x10] | r0 = var_10h_2;
0x0000b26a mov r2, r8 | r2 = r8;
0x0000b26c mov r1, fp | r1 = fp;
0x0000b26e blx 0x3828 | r0 = ext2fs_find_first_set_generic_bmap ();
0x0000b272 mov r4, r0 | r4 = r0;
0x0000b274 mov r0, r8 | r0 = r8;
0x0000b276 blx 0x3098 | fcn_00003098 ();
0x0000b27a cmp r4, 0 |
| if (r4 != 0) {
0x0000b27c bne.w 0xb39e | goto label_14;
| }
0x0000b280 mov r0, fp | r0 = fp;
0x0000b282 add.w sl, sl, 1 | sl++;
0x0000b286 blx 0x3504 | e2p_os2string ();
0x0000b28a ldr r3, [sp, 0xc] | r3 = var_ch;
0x0000b28c add.w r4, sl, r0 | r4 = sl + r0;
0x0000b290 cmp r3, r4 |
| if (r3 <= r4) {
0x0000b292 ble 0xb358 | goto label_11;
| }
| label_10:
0x0000b294 movs r3, 0 | r3 = 0;
0x0000b296 add.w fp, r6, r4 |
0x0000b29a mov r1, fp | r1 = fp;
0x0000b29c mov r2, r3 | r2 = r3;
0x0000b29e mov r0, r5 | r0 = r5;
0x0000b2a0 mov sl, r4 | sl = r4;
0x0000b2a2 blx 0x36fc | r0 = io_channel_write_blk64 ();
0x0000b2a6 adds r1, r0, 1 | r1 = r0 + 1;
0x0000b2a8 mov r4, r0 | r4 = r0;
0x0000b2aa bne 0xb248 |
| } while (r1 != r0);
0x0000b2ac blx 0x357c | sprintf_chk ()
0x0000b2b0 ldr r2, [pc, 0x154] |
0x0000b2b2 mov r3, fp | r3 = fp;
0x0000b2b4 ldr r4, [r0] | r4 = *(r0);
0x0000b2b6 ldr r0, [pc, 0x154] |
0x0000b2b8 add r2, pc | r2 = "Bad magic value in profile_t";
0x0000b2ba str r5, [sp] | *(sp) = r5;
0x0000b2bc mov r1, r4 | r1 = r4;
0x0000b2be add r0, pc | r0 = 0x166d0;
0x0000b2c0 blx 0x32cc | fcn_000032cc ();
| label_3:
0x0000b2c4 mov r0, r6 | r0 = r6;
0x0000b2c6 blx 0x3098 | fcn_00003098 ();
0x0000b2ca mov r0, sb | r0 = sb;
0x0000b2cc blx 0x3918 | r0 = ext2fs_punch ();
0x0000b2d0 cmp r0, 0 |
| if (r0 == 0) {
0x0000b2d2 beq.w 0xb1a8 | goto label_1;
| }
0x0000b2d6 mov r1, r4 | r1 = r4;
0x0000b2d8 ldr r2, [pc, 0x134] |
0x0000b2da cmp r4, 0 |
0x0000b2dc it eq |
| if (r4 != 0) {
0x0000b2de moveq r4, r0 | r4 = r0;
| }
0x0000b2e0 ldr r0, [pc, 0x130] |
0x0000b2e2 mov r3, r7 | r3 = r7;
0x0000b2e4 add r2, pc | r2 = 0x166f8;
0x0000b2e6 add r0, pc | r0 = 0x166fe;
0x0000b2e8 blx 0x32cc | fcn_000032cc ();
0x0000b2ec b 0xb1a8 | goto label_1;
| label_5:
0x0000b2ee blx 0x357c | sprintf_chk ()
0x0000b2f2 ldr r2, [pc, 0x124] |
0x0000b2f4 mov r3, r5 | r3 = r5;
0x0000b2f6 ldr r4, [r0] | r4 = *(r0);
0x0000b2f8 ldr r0, [pc, 0x120] |
0x0000b2fa add r2, pc | r2 = 0x16718;
0x0000b2fc mov r1, r4 | r1 = r4;
0x0000b2fe add r0, pc | r0 = 0x1671e;
0x0000b300 blx 0x32cc | fcn_000032cc ();
0x0000b304 b 0xb1a8 | goto label_1;
| label_7:
0x0000b306 ldr r2, [pc, 0x118] |
0x0000b308 mov r3, r7 | r3 = r7;
0x0000b30a ldr r0, [pc, 0x118] |
0x0000b30c mov r1, r4 | r1 = r4;
0x0000b30e add r2, pc | r2 = 0x16734;
0x0000b310 add r0, pc | r0 = 0x1673a;
0x0000b312 blx 0x32cc | fcn_000032cc ();
| label_2:
0x0000b316 mov r0, r6 | r0 = r6;
0x0000b318 blx 0x3098 | fcn_00003098 ();
0x0000b31c mov r0, sb | r0 = sb;
0x0000b31e blx 0x3918 | r0 = ext2fs_punch ();
0x0000b322 cmp r0, 0 |
| if (r0 == 0) {
0x0000b324 beq.w 0xb1a8 | goto label_1;
| }
0x0000b328 ldr r2, [pc, 0xfc] |
0x0000b32a mov r3, r7 | r3 = r7;
0x0000b32c ldr r0, [pc, 0xfc] |
0x0000b32e mov r1, r4 | r1 = r4;
0x0000b330 add r2, pc | r2 = 0x1675c;
0x0000b332 add r0, pc | r0 = 0x16762;
0x0000b334 blx 0x32cc | fcn_000032cc ();
0x0000b338 b 0xb1a8 | goto label_1;
| label_8:
0x0000b33a ldr r2, [pc, 0xf4] |
0x0000b33c movw r1, 0xb746 |
0x0000b340 ldr r0, [pc, 0xf0] |
0x0000b342 movt r1, 0x7f2b | r1 = 0x7f2bb746;
0x0000b346 movw r4, 0xb746 |
0x0000b34a add r2, pc | r2 = 0x16780;
0x0000b34c movt r4, 0x7f2b | r4 = 0x7f2bb746;
0x0000b350 add r0, pc | r0 = 0x16788;
0x0000b352 blx 0x32cc | fcn_000032cc ();
0x0000b356 b 0xb316 | goto label_2;
| label_11:
0x0000b358 mov r0, r6 | r0 = r6;
0x0000b35a blx 0x3098 | fcn_00003098 ();
0x0000b35e mov r0, sb | r0 = sb;
0x0000b360 blx 0x3918 | r0 = ext2fs_punch ();
0x0000b364 mov r4, r0 | r4 = r0;
0x0000b366 cmp r0, 0 |
| if (r0 == 0) {
0x0000b368 beq.w 0xb1a8 | goto label_1;
| }
0x0000b36c ldr r2, [pc, 0xc8] |
0x0000b36e mov r3, r7 | r3 = r7;
0x0000b370 ldr r0, [pc, 0xc8] |
0x0000b372 movs r1, 0 | r1 = 0;
0x0000b374 add r2, pc | r2 = 0x167b0;
0x0000b376 add r0, pc | r0 = 0x167b6;
0x0000b378 blx 0x32cc | fcn_000032cc ();
0x0000b37c b 0xb1a8 | goto label_1;
| label_13:
0x0000b37e mov r0, r8 | r0 = r8;
0x0000b380 blx 0x3098 | fcn_00003098 ();
0x0000b384 blx 0x357c | sprintf_chk ()
0x0000b388 ldr r2, [pc, 0xb4] |
0x0000b38a mov r3, fp | r3 = fp;
0x0000b38c ldr r4, [r0] | r4 = *(r0);
0x0000b38e ldr r0, [pc, 0xb4] |
0x0000b390 add r2, pc | r2 = 0x167d4;
0x0000b392 str r5, [sp] | *(sp) = r5;
0x0000b394 mov r1, r4 | r1 = r4;
0x0000b396 add r0, pc | r0 = 0x167e0;
0x0000b398 blx 0x32cc | fcn_000032cc ();
0x0000b39c b 0xb2c4 | goto label_3;
| label_14:
0x0000b39e ldr r2, [pc, 0xa8] |
0x0000b3a0 mov r3, fp | r3 = fp;
0x0000b3a2 ldr r0, [pc, 0xa8] |
0x0000b3a4 mov r1, r4 | r1 = r4;
0x0000b3a6 str r7, [sp] | *(sp) = r7;
0x0000b3a8 add r2, pc | r2 = 0x167f6;
0x0000b3aa add r0, pc | r0 = 0x167fc;
0x0000b3ac blx 0x32cc | fcn_000032cc ();
0x0000b3b0 b 0xb316 | goto label_2;
| label_9:
0x0000b3b2 blx 0x357c | sprintf_chk ()
0x0000b3b6 ldr r2, [pc, 0x98] |
0x0000b3b8 mov r3, r5 | r3 = r5;
0x0000b3ba ldr r4, [r0] | r4 = *(r0);
0x0000b3bc ldr r0, [pc, 0x94] |
0x0000b3be add r2, pc | r2 = 0x16814;
0x0000b3c0 mov r1, r4 | r1 = r4;
0x0000b3c2 add r0, pc | r0 = 0x1681a;
0x0000b3c4 blx 0x32cc | fcn_000032cc ();
0x0000b3c8 b 0xb2c4 | goto label_3;
| label_4:
0x0000b3ca blx 0x31f4 | fcn_000031f4 ();
| label_12:
0x0000b3ce ldr r2, [pc, 0x88] |
0x0000b3d0 movw r1, 0xb746 |
0x0000b3d4 ldr r0, [pc, 0x84] |
0x0000b3d6 movt r1, 0x7f2b | r1 = 0x7f2bb746;
0x0000b3da movw r4, 0xb746 |
0x0000b3de add r2, pc | r2 = "Bad magic value in profile_file_data_t";
0x0000b3e0 movt r4, 0x7f2b | r4 = 0x7f2bb746;
0x0000b3e4 add r0, pc | r0 = 0x16844;
0x0000b3e6 blx 0x32cc | fcn_000032cc ();
0x0000b3ea b 0xb316 | 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 @ 0xb860 */
| #include <stdint.h>
|
| #define BIT_MASK(t,v) ((t)(-((v)!= 0)))&(((t)-1)>>((sizeof(t)*CHAR_BIT)-(v)))
|
; (fcn) fcn.0000b860 () | void fcn_0000b860 (int16_t arg1, int16_t arg2, int16_t arg3, int16_t arg4) {
| int16_t var_0h_3;
| int16_t var_4h;
| int16_t var_8h_3;
| int16_t var_ch_3;
| int16_t var_18h;
| int16_t var_1ch;
| int16_t c;
| char * src;
| int16_t var_2ch;
| int16_t var_30h;
| int16_t var_40h;
| int16_t var_60h;
| int16_t var_9ch;
| int16_t var_a4h;
| int16_t var_b6h;
| int16_t var_bch;
| int16_t var_11ch;
| int16_t var_0h_2;
| r0 = arg1;
| r1 = arg2;
| r2 = arg3;
| r3 = arg4;
0x0000b860 push.w {r4, r5, r6, r7, r8, sb, sl, fp, lr} |
0x0000b864 mov r4, r1 | r4 = r1;
0x0000b866 ldr.w r1, [pc, 0x4cc] | r1 = *(0x0000bd34);
0x0000b86a mov r7, r3 | r7 = r3;
0x0000b86c mov r8, r2 | r8 = r2;
0x0000b86e movs r2, 0 | r2 = 0;
0x0000b870 ldr.w r3, [pc, 0x4c4] |
0x0000b874 sub sp, 0x124 |
0x0000b876 add r1, pc | r1 += pc;
0x0000b878 mov r6, r0 | r6 = r0;
0x0000b87a mov r0, r8 | r0 = r8;
0x0000b87c ldr r3, [r1, r3] | r3 = *((r1 + r3));
0x0000b87e mov r1, r2 | r1 = r2;
0x0000b880 ldr r3, [r3] | r3 = *(0xbd38);
0x0000b882 str r3, [sp, 0x11c] | var_11ch = r3;
0x0000b884 mov.w r3, 0 | r3 = 0;
0x0000b888 blx 0x39a8 | r0 = fcn_000039a8 ();
0x0000b88c subs r5, r0, 0 | r5 = r0 - 0;
| if (r5 < r0) {
0x0000b88e blt 0xb92c | goto label_12;
| }
0x0000b890 add r1, sp, 0x30 | r1 += var_30h;
0x0000b892 blx 0x38b8 | r0 = scandir64 ();
0x0000b896 cmp r0, 0 |
| if (r0 < 0) {
0x0000b898 blt.w 0xbad2 | goto label_13;
| }
0x0000b89c movs r1, 0x2f | r1 = 0x2f;
0x0000b89e mov r0, r7 | r0 = r7;
0x0000b8a0 blx 0x37bc | r0 = ext2fs_bg_itable_unused ();
0x0000b8a4 mov r8, r0 | r8 = r0;
0x0000b8a6 cmp r0, 0 |
| if (r0 == 0) {
0x0000b8a8 beq 0xb928 | goto label_14;
| }
0x0000b8aa movs r3, 0 | r3 = 0;
0x0000b8ac mov r2, r4 | r2 = r4;
0x0000b8ae strb r3, [r0] | *(r0) = r3;
0x0000b8b0 add r3, sp, 0x28 | r3 += src;
0x0000b8b2 str r3, [sp] | *(sp) = r3;
0x0000b8b4 mov r0, r6 | r0 = r6;
0x0000b8b6 ldr r1, [sp, 0x148] | r1 = var_0h_2;
0x0000b8b8 mov r3, r7 | r3 = r7;
0x0000b8ba blx 0x3110 | r0 = fcn_00003110 ();
0x0000b8be mov r4, r0 | r4 = r0;
0x0000b8c0 cmp r0, 0 |
| if (r0 != 0) {
0x0000b8c2 bne.w 0xbada | goto label_15;
| }
0x0000b8c6 ldr r4, [sp, 0x28] | r4 = src;
0x0000b8c8 add.w r7, r8, 1 | r7 = r8 + 1;
| do {
0x0000b8cc add.w r8, sp, 0x24 | r8 += c;
0x0000b8d0 mov r2, r4 | r2 = r4;
0x0000b8d2 ldr r1, [sp, 0x148] | r1 = var_0h_2;
0x0000b8d4 mov r3, r7 | r3 = r7;
0x0000b8d6 mov r0, r6 | r0 = r6;
0x0000b8d8 movw r4, 0xb79b |
0x0000b8dc str.w r8, [sp] | __asm ("str.w r8, [sp]");
0x0000b8e0 movt r4, 0x7f2b | r4 = 0x7f2bb79b;
0x0000b8e4 blx 0x3110 | r0 = fcn_00003110 ();
| if (r0 != 0) {
0x0000b8e8 cbz r0, 0xb900 |
0x0000b8ea ldr r1, [sp, 0x28] | r1 = src;
0x0000b8ec movs r3, 0 | r3 = 0;
0x0000b8ee movw r2, 0x11ed | r2 = 0x11ed;
0x0000b8f2 mov r0, r6 | r0 = r6;
0x0000b8f4 str.w r8, [sp] | __asm ("str.w r8, [sp]");
0x0000b8f8 blx 0x336c | r0 = strcpy (r0, r1);
0x0000b8fc mov r4, r0 | r4 = r0;
| if (r0 == 0) {
0x0000b8fe cbz r0, 0xb94a | goto label_16;
| }
| }
| label_1:
0x0000b900 mov r0, r5 | r0 = r5;
0x0000b902 blx 0x3960 | ext2fs_inode_table_loc ();
| label_0:
0x0000b906 ldr.w r2, [pc, 0x434] | r2 = *(0x0000bd3c);
0x0000b90a ldr.w r3, [pc, 0x42c] | r3 = *(0xbd3a);
0x0000b90e add r2, pc | r2 += pc;
0x0000b910 ldr r3, [r2, r3] | r3 = *((r2 + r3));
0x0000b912 ldr r2, [r3] | r2 = *(0xbd3a);
0x0000b914 ldr r3, [sp, 0x11c] | r3 = var_11ch;
0x0000b916 eors r2, r3 | r2 ^= r3;
0x0000b918 mov.w r3, 0 | r3 = 0;
| if (r2 != r3) {
0x0000b91c bne.w 0xbb62 | goto label_17;
| }
0x0000b920 mov r0, r4 | r0 = r4;
0x0000b922 add sp, 0x124 |
0x0000b924 pop.w {r4, r5, r6, r7, r8, sb, sl, fp, pc} |
| label_14:
0x0000b928 str r4, [sp, 0x28] | src = r4;
0x0000b92a b 0xb8cc |
| } while (1);
| label_12:
0x0000b92c blx 0x357c | r0 = sprintf_chk ()
0x0000b930 ldr r4, [r0] | r4 = *(r0);
0x0000b932 mov r3, r8 | r3 = r8;
0x0000b934 ldr.w r0, [pc, 0x408] |
0x0000b938 ldr.w r2, [pc, 0x408] |
0x0000b93c mov r1, r4 | r1 = r4;
0x0000b93e add r0, pc | r0 = 0x17682;
0x0000b940 add r2, pc | r2 = 0x17688;
0x0000b942 adds r0, 0x38 | r0 += 0x38;
0x0000b944 blx 0x32cc | fcn_000032cc ();
0x0000b948 b 0xb906 | goto label_0;
| label_16:
0x0000b94a mov.w r8, 1 | r8 = 1;
0x0000b94e ldr r3, [sp, 0x24] | r3 = c;
0x0000b950 ldr r1, [sp, 0x28] | r1 = src;
0x0000b952 mov r2, r7 | r2 = r7;
0x0000b954 mov r0, r6 | r0 = r6;
0x0000b956 str.w r8, [sp] | __asm ("str.w r8, [sp]");
0x0000b95a blx 0x387c | uuid_generate_time ();
0x0000b95e movw r3, 0xb726 |
0x0000b962 mov r4, r0 | r4 = r0;
0x0000b964 movt r3, 0x7f2b | r3 = 0x7f2bb726;
0x0000b968 cmp r0, r3 |
| if (r0 == r3) {
0x0000b96a beq.w 0xbaea | goto label_18;
| }
| label_2:
0x0000b96e cmp r4, 0 |
| if (r4 != 0) {
0x0000b970 bne 0xb900 | goto label_1;
| }
0x0000b972 ldr r2, [sp, 0x24] | r2 = c;
0x0000b974 mov r3, r4 | r3 = r4;
0x0000b976 ldr r0, [r6, 0x2c] | r0 = *((r6 + 0x2c));
0x0000b978 blx 0x3738 | r0 = ext2fs_block_bitmap_loc_set ();
0x0000b97c cmp r0, 0 |
| if (r0 != 0) {
0x0000b97e bne.w 0xbb14 | goto label_19;
| }
| label_4:
0x0000b982 movs r3, 0 | r3 = 0;
0x0000b984 ldr r1, [sp, 0x24] | r1 = c;
0x0000b986 movs r2, 1 | r2 = 1;
0x0000b988 mov r0, r6 | r0 = r6;
0x0000b98a add r7, sp, 0x9c | r7 += var_9ch;
0x0000b98c blx 0x3798 | strrchr (r0, r1);
0x0000b990 movs r2, 0x80 | r2 = 0x80;
0x0000b992 movs r1, 0 | r1 = 0;
0x0000b994 mov r0, r7 | r0 = r7;
0x0000b996 blx 0x35bc | fcn_000035bc ();
0x0000b99a ldr r3, [sp, 0x40] | r3 = var_40h;
0x0000b99c ldr r0, [r6, 0x60] | r0 = *((r6 + 0x60));
0x0000b99e ubfx r3, r3, 0, 0xc | r3 = (r3 >> 0) & ((1 << 0xc) - 1);
0x0000b9a2 mvn.w r3, r3, lsl 17 | r3 = ~r3;
0x0000b9a6 mvn.w r3, r3, lsr 17 | r3 = ~r3;
0x0000b9aa strh.w r3, [sp, 0x9c] | var_9ch = r3;
0x0000b9ae cmp r0, 0 |
| if (r0 == 0) {
0x0000b9b0 beq.w 0xbb0e | goto label_20;
| }
| label_3:
0x0000b9b4 movs r3, 1 | r3 = 1;
0x0000b9b6 strd r0, r0, [sp, 0xa8] | __asm ("strd r0, r0, [sp, 0xa8]");
0x0000b9ba str r0, [sp, 0xa4] | var_a4h = r0;
0x0000b9bc mov r1, r7 | r1 = r7;
0x0000b9be strh.w r3, [sp, 0xb6] | var_b6h = r3;
0x0000b9c2 mov r0, r6 | r0 = r6;
0x0000b9c4 ldrd r2, r3, [sp, 0x60] | __asm ("ldrd r2, r3, [var_60h]");
0x0000b9c8 blx 0x32f0 | r0 = fcn_000032f0 ();
0x0000b9cc mov r4, r0 | r4 = r0;
0x0000b9ce cmp r0, 0 |
| if (r0 != 0) {
0x0000b9d0 bne 0xb900 | goto label_1;
| }
0x0000b9d2 ldr r3, [r6, 0x10] | r3 = *((r6 + 0x10));
0x0000b9d4 ldr r1, [sp, 0x24] | r1 = c;
0x0000b9d6 ldr r3, [r3, 0x60] | r3 = *((r3 + 0x60));
0x0000b9d8 lsls r2, r3, 0x10 | r2 = r3 << 0x10;
| if (r2 >= r3) {
0x0000b9da bpl.w 0xbb26 | goto label_21;
| }
0x0000b9de ldr r3, [sp, 0xbc] | r3 = var_bch;
0x0000b9e0 orr r3, r3, 0x10000000 | r3 |= 0x10000000;
0x0000b9e4 str r3, [sp, 0xbc] | var_bch = r3;
| label_5:
0x0000b9e6 mov r2, r7 | r2 = r7;
0x0000b9e8 mov r0, r6 | r0 = r6;
0x0000b9ea blx 0x3400 | r0 = fcn_00003400 ();
0x0000b9ee mov r4, r0 | r4 = r0;
0x0000b9f0 cmp r0, 0 |
| if (r0 != 0) {
0x0000b9f2 bne 0xb900 | goto label_1;
| }
0x0000b9f4 ldr r3, [sp, 0xbc] | r3 = var_bch;
0x0000b9f6 lsls r7, r3, 3 | r7 = r3 << 3;
| if (r7 < r3) {
0x0000b9f8 bmi.w 0xbb50 | goto label_22;
| }
| label_6:
0x0000b9fc ldrh.w r3, [sp, 0x9c] | r3 = var_9ch;
0x0000ba00 and r3, r3, 0xf000 | r3 &= 0xf000;
0x0000ba04 cmp.w r3, 0x8000 |
| if (r3 != 0x8000) {
0x0000ba08 bne.w 0xb900 | goto label_1;
| }
0x0000ba0c ldr r1, [sp, 0x24] | r1 = c;
0x0000ba0e add r3, sp, 0x2c | r3 += var_2ch;
0x0000ba10 movs r2, 1 | r2 = 1;
0x0000ba12 mov r0, r6 | r0 = r6;
0x0000ba14 blx 0x30f8 | r0 = fcn_000030f8 ();
0x0000ba16 sbcs.w r6, r0, r4, lsl 16 | __asm ("sbcs.w r6, r0, r4, lsl 16");
0x0000ba1a cmp r0, 0 |
| if (r0 != 0) {
0x0000ba1c bne.w 0xb900 | goto label_1;
| }
0x0000ba20 mov.w r0, 0x10000 | r0 = 0x10000;
0x0000ba24 blx 0x3450 | strerror (r0);
0x0000ba28 ldr r3, [sp, 0x2c] | r3 = var_2ch;
0x0000ba2a mov r8, r0 | r8 = r0;
0x0000ba2c str r3, [sp, 0x18] | var_18h = r3;
0x0000ba2e cmp r0, 0 |
| if (r0 == 0) {
0x0000ba30 beq.w 0xbd1c | goto label_23;
| }
0x0000ba34 ldr r0, [r6, 0x14] | r0 = *((r6 + 0x14));
0x0000ba36 movs r1, 1 | r1 = 1;
0x0000ba38 blx 0x2f10 | r0 = calloc (r0, r1);
0x0000ba3c mov sl, r0 | sl = r0;
0x0000ba3e cmp r0, 0 |
| if (r0 == 0) {
0x0000ba40 beq.w 0xbd1c | goto label_23;
| }
0x0000ba44 mov r7, r4 | r7 = r4;
0x0000ba46 mov sb, r4 | sb = r4;
0x0000ba48 b 0xbab0 |
| while (r7 < r2) {
0x0000ba4a movs r1, 3 | r1 = 3;
0x0000ba4c mov r2, r7 | r2 = r7;
0x0000ba4e mov r3, sb | r3 = sb;
0x0000ba50 mov r0, r5 | r0 = r5;
0x0000ba52 str r1, [sp] | *(sp) = r1;
0x0000ba54 blx 0x3348 | ext2fs_inline_data_init ();
0x0000ba58 subs.w fp, r1, 0 |
0x0000ba5c mov r4, r0 | r4 = r0;
| if (fp < r1) {
0x0000ba5e blt.w 0xbcec | goto label_24;
| }
0x0000ba62 movs r3, 4 | r3 = 4;
0x0000ba64 mov r2, r0 | r2 = r0;
0x0000ba66 str r3, [sp] | *(sp) = r3;
0x0000ba68 mov r0, r5 | r0 = r5;
0x0000ba6a mov r3, fp | r3 = fp;
0x0000ba6c blx 0x3348 | ext2fs_inline_data_init ();
0x0000ba70 subs.w sb, r1, 0 | sb = r1 - 0;
0x0000ba74 mov r7, r0 | r7 = r0;
| if (sb < r1) {
0x0000ba76 blt.w 0xbb88 | goto label_25;
| }
0x0000ba7a str.w fp, [sp, 4] | __asm ("str.w fp, [var_4h]");
0x0000ba7e mov r1, r5 | r1 = r5;
0x0000ba80 strd r8, sl, [sp, 0x10] | __asm ("strd r8, sl, [sp, 0x10]");
0x0000ba84 mov r0, r6 | r0 = r6;
0x0000ba86 ldr.w ip, [r6, 0x14] | ip = *((r6 + 0x14));
0x0000ba8a ldr r2, [sp, 0x18] | r2 = var_18h;
0x0000ba8c add.w r3, ip, -1 | r3 = ip + -1;
0x0000ba90 rsb.w ip, ip, 0 |
0x0000ba94 adds r3, r7, r3 | r3 = r7 + r3;
0x0000ba96 and.w r4, r4, ip | r4 &= ip;
0x0000ba9a and.w r3, r3, ip | r3 &= ip;
0x0000ba9e str r4, [sp] | *(sp) = r4;
0x0000baa0 str r3, [sp, 8] | var_8h_3 = r3;
0x0000baa2 adc r3, sb, 0 | __asm ("adc r3, sb, 0");
0x0000baa6 str r3, [sp, 0xc] | var_ch_3 = r3;
0x0000baa8 bl 0xb048 | r0 = fcn_0000b048 (r0, r1, r2, r3, r4, r5, r6);
0x0000baac cmp r0, 0 |
| if (r0 != 0) {
0x0000baae bne 0xbb66 | goto label_26;
| }
0x0000bab0 ldrd r2, r3, [sp, 0x60] | __asm ("ldrd r2, r3, [var_60h]");
0x0000bab4 cmp r7, r2 |
0x0000bab6 sbcs.w r3, sb, r3 | __asm ("sbcs.w r3, sb, r3");
0x0000baba blt 0xba4a |
| }
| label_9:
0x0000babc mov r0, sl | r0 = sl;
0x0000babe blx 0x3098 | fcn_00003098 ();
0x0000bac2 mov r0, r8 | r0 = r8;
0x0000bac4 blx 0x3098 | fcn_00003098 ();
0x0000bac8 ldr r0, [sp, 0x2c] | r0 = var_2ch;
0x0000baca blx 0x304c | r0 = fcn_0000304c ();
0x0000bace mov r4, r0 | r4 = r0;
0x0000bad0 b 0xb900 | goto label_1;
| label_13:
0x0000bad2 blx 0x357c | r0 = sprintf_chk ()
0x0000bad6 ldr r4, [r0] | r4 = *(r0);
0x0000bad8 b 0xb900 | goto label_1;
| label_15:
0x0000bada ldr r2, [pc, 0x26c] |
0x0000badc mov r3, r7 | r3 = r7;
0x0000bade mov r0, r7 | r0 = r7;
0x0000bae0 mov r1, r4 | r1 = r4;
0x0000bae2 add r2, pc | r2 = 0x17830;
0x0000bae4 blx 0x32cc | fcn_000032cc ();
0x0000bae8 b 0xb900 | goto label_1;
| label_18:
0x0000baea ldr r1, [sp, 0x28] | r1 = src;
0x0000baec mov r0, r6 | r0 = r6;
0x0000baee blx 0x3570 | r0 = ext2fs_init_csum_seed ();
0x0000baf2 mov r4, r0 | r4 = r0;
0x0000baf4 cmp r0, 0 |
| if (r0 != 0) {
0x0000baf6 bne.w 0xb900 | goto label_1;
| }
0x0000bafa ldr r3, [sp, 0x24] | r3 = c;
0x0000bafc mov r2, r7 | r2 = r7;
0x0000bafe ldr r1, [sp, 0x28] | r1 = src;
0x0000bb00 mov r0, r6 | r0 = r6;
0x0000bb02 str.w r8, [sp] | __asm ("str.w r8, [sp]");
0x0000bb06 blx 0x387c | r0 = uuid_generate_time ();
0x0000bb0a mov r4, r0 | r4 = r0;
0x0000bb0c b 0xb96e | goto label_2;
| label_20:
0x0000bb0e blx 0x3134 | fcn_00003134 ();
0x0000bb12 b 0xb9b4 | goto label_3;
| label_19:
0x0000bb14 ldr r0, [pc, 0x234] |
0x0000bb16 mov r1, r4 | r1 = r4;
0x0000bb18 ldr r2, [pc, 0x234] |
0x0000bb1a add r0, pc | r0 = 0x1786a;
0x0000bb1c add r2, pc | r2 = 0x17870;
0x0000bb1e adds r0, 0x38 | r0 += 0x38;
0x0000bb20 blx 0x32cc | fcn_000032cc ();
0x0000bb24 b 0xb982 | goto label_4;
| label_21:
0x0000bb26 lsls r3, r3, 0x19 | r3 <<= 0x19;
| if (r3 >= r3) {
0x0000bb28 bpl.w 0xb9e6 | goto label_5;
| }
0x0000bb2c ldr r3, [sp, 0xbc] | r3 = var_bch;
0x0000bb2e mov r2, r7 | r2 = r7;
0x0000bb30 mov r0, r6 | r0 = r6;
0x0000bb32 bic r3, r3, 0x80000 | r3 = BIT_MASK (r3, 0x80000);
0x0000bb36 str r3, [sp, 0xbc] | var_bch = r3;
0x0000bb38 add r3, sp, 0x2c | r3 += var_2ch;
0x0000bb3a blx 0x3644 | r0 = fcn_00003644 ();
0x0000bb3e mov r4, r0 | r4 = r0;
0x0000bb40 cmp r0, 0 |
| if (r0 != 0) {
0x0000bb42 bne.w 0xb900 | goto label_1;
| }
0x0000bb46 ldr r0, [sp, 0x2c] | r0 = var_2ch;
0x0000bb48 blx 0x37f8 | ext2fs_numeric_progress_close ();
0x0000bb4c ldr r1, [sp, 0x24] | r1 = c;
0x0000bb4e b 0xb9e6 | goto label_5;
| label_22:
0x0000bb50 ldr r1, [sp, 0x24] | r1 = c;
0x0000bb52 mov r0, r6 | r0 = r6;
0x0000bb54 blx 0x3354 | r0 = ext2fs_open_inode_scan ();
0x0000bb58 cmp r0, 0 |
| if (r0 == 0) {
0x0000bb5a beq.w 0xb9fc | goto label_6;
| }
0x0000bb5e mov r4, r0 | r4 = r0;
0x0000bb60 b 0xb900 | goto label_1;
| label_17:
0x0000bb62 blx 0x31f4 | fcn_000031f4 ();
| label_26:
0x0000bb66 movw r3, 0xb750 |
0x0000bb6a mov r4, r0 | r4 = r0;
0x0000bb6c movt r3, 0x7f2b | r3 = 0x7f2bb750;
0x0000bb70 cmp r0, r3 |
| if (r0 != r3) {
0x0000bb72 beq 0xbb88 |
| label_11:
0x0000bb74 mov r0, sl | r0 = sl;
0x0000bb76 blx 0x3098 | fcn_00003098 ();
0x0000bb7a mov r0, r8 | r0 = r8;
0x0000bb7c blx 0x3098 | fcn_00003098 ();
0x0000bb80 ldr r0, [sp, 0x2c] | r0 = var_2ch;
0x0000bb82 blx 0x304c | fcn_0000304c ();
0x0000bb86 b 0xb900 | goto label_1;
| }
| label_25:
0x0000bb88 ldr r3, [sp, 0x2c] | r3 = var_2ch;
0x0000bb8a str r3, [sp, 0x18] | var_18h = r3;
| label_10:
0x0000bb8c movs r1, 1 | r1 = 1;
0x0000bb8e movw r0, 0x7020 | r0 = 0x7020;
0x0000bb92 blx 0x2f10 | r0 = calloc (r0, r1);
0x0000bb96 mov r7, r0 | r7 = r0;
0x0000bb98 cmp r0, 0 |
| if (r0 == 0) {
0x0000bb9a beq.w 0xbd12 | goto label_27;
| }
0x0000bb9e add.w r2, r0, 0x20 | r2 = r0 + 0x20;
0x0000bba2 vmov.i8 d16, 0xff | __asm ("vmov.i8 d16, 0xff");
0x0000bba6 movs r3, 0 | r3 = 0;
0x0000bba8 movw fp, 0x660b |
0x0000bbac movs r1, 1 | r1 = 1;
0x0000bbae str r2, [sp, 0x1c] | var_1ch = r2;
0x0000bbb0 movt fp, 0xc020 | fp = 0xc020660b;
0x0000bbb4 mov r2, r3 | r2 = r3;
0x0000bbb6 str r1, [r0, 0x10] | *((r0 + 0x10)) = r1;
0x0000bbb8 mov.w r1, 0x200 | r1 = 0x200;
0x0000bbbc vstr d16, [r0, 8] | __asm ("vstr d16, [r0, 8]");
0x0000bbc0 str r1, [r0, 0x18] | *((r0 + 0x18)) = r1;
| label_8:
0x0000bbc2 strd r3, r2, [r7] | __asm ("strd r3, r2, [r7]");
0x0000bbc6 movs r1, 0 | r1 = 0;
0x0000bbc8 mov.w r2, 0x7000 | r2 = 0x7000;
0x0000bbcc ldr r0, [sp, 0x1c] | r0 = var_1ch;
0x0000bbce blx 0x35bc | fcn_000035bc ();
0x0000bbd2 mov r2, r7 | r2 = r7;
0x0000bbd4 mov r1, fp | r1 = fp;
0x0000bbd6 mov r0, r5 | r0 = r5;
0x0000bbd8 blx 0x333c | r0 = lseek64 ();
0x0000bbdc subs.w sb, r0, 0 | sb = r0 - 0;
| if (sb < r0) {
0x0000bbe0 blt 0xbc82 | goto label_28;
| }
0x0000bbe2 ldr r3, [r7, 0x14] | r3 = *((r7 + 0x14));
| if (r3 == 0) {
0x0000bbe4 cbz r3, 0xbc52 | goto label_29;
| }
0x0000bbe6 add.w sb, r7, 0x58 | sb = r7 + 0x58;
0x0000bbea movs r4, 0 | r4 = 0;
0x0000bbec b 0xbbfa |
| while (r0 == 0) {
0x0000bbee ldr r0, [r7, 0x14] | r0 = *((r7 + 0x14));
0x0000bbf0 adds r4, 1 | r4++;
0x0000bbf2 add.w sb, sb, 0x38 | sb += 0x38;
0x0000bbf6 cmp r4, r0 |
| if (r4 >= r0) {
0x0000bbf8 bhs 0xbcbe | goto label_30;
| }
0x0000bbfa ldrd r1, r3, [sb, -0x38] | __asm ("ldrd r1, r3, [sb, -0x38]");
0x0000bbfe strd r8, sl, [sp, 0x10] | __asm ("strd r8, sl, [sp, 0x10]");
0x0000bc02 ldr r2, [sb, -0x28] | r2 = *((sb - 0x28));
0x0000bc06 ldr r0, [sb, -0x24] | r0 = *((sb - 0x24));
0x0000bc0a strd r1, r3, [sp] | __asm ("strd r1, r3, [sp]");
0x0000bc0e adds r2, r1, r2 | r2 = r1 + r2;
0x0000bc10 mov r1, r5 | r1 = r5;
0x0000bc12 adc.w r3, r3, r0 | __asm ("adc.w r3, r3, r0");
0x0000bc16 str r2, [sp, 8] | var_8h_3 = r2;
0x0000bc18 mov r0, r6 | r0 = r6;
0x0000bc1a ldr r2, [sp, 0x18] | r2 = var_18h;
0x0000bc1c str r3, [sp, 0xc] | var_ch_3 = r3;
0x0000bc1e bl 0xb048 | fcn_0000b048 (r0, r1, r2, r3, r4, r5, r6);
0x0000bc22 mov r1, sb | r1 = sb;
0x0000bc24 cmp r0, 0 |
0x0000bc26 beq 0xbbee |
| }
0x0000bc28 mov r4, r0 | r4 = r0;
0x0000bc2a mov r0, r7 | r0 = r7;
0x0000bc2c blx 0x3098 | fcn_00003098 ();
0x0000bc30 movw r3, 0xb750 |
0x0000bc34 ldr r7, [sp, 0x2c] | r7 = var_2ch;
0x0000bc36 movt r3, 0x7f2b | r3 = 0x7f2bb750;
0x0000bc3a cmp r4, r3 |
| if (r4 == r3) {
0x0000bc3c beq 0xbc9c | goto label_31;
| }
0x0000bc3e mov r0, sl | r0 = sl;
0x0000bc40 blx 0x3098 | fcn_00003098 ();
0x0000bc44 mov r0, r8 | r0 = r8;
0x0000bc46 blx 0x3098 | fcn_00003098 ();
0x0000bc4a mov r0, r7 | r0 = r7;
0x0000bc4c blx 0x304c | fcn_0000304c ();
0x0000bc50 b 0xb900 | goto label_1;
| do {
| label_29:
0x0000bc52 mov r0, r7 | r0 = r7;
0x0000bc54 blx 0x3098 | r0 = fcn_00003098 ();
0x0000bc56 bic.w r2, r0, fp, lsl 29 | r2 = BIT_MASK (r0, fp);
0x0000bc5a strb r0, [r2, 0xd] | *((r2 + 0xd)) = r0;
0x0000bc5c movt r3, 0x7f2b | r3 = (r3 & 0xFFFF) | 0x7f2b0000;
0x0000bc60 cmp sb, r3 |
| if (sb == r3) {
0x0000bc62 beq 0xbc9c | goto label_31;
| }
| label_7:
0x0000bc64 mov r0, sl | r0 = sl;
0x0000bc66 blx 0x3098 | fcn_00003098 ();
0x0000bc6a mov r0, r8 | r0 = r8;
0x0000bc6c blx 0x3098 | fcn_00003098 ();
0x0000bc70 ldr r0, [sp, 0x2c] | r0 = var_2ch;
0x0000bc72 blx 0x304c | fcn_0000304c ();
0x0000bc76 cmp.w sb, 0 |
0x0000bc7a ite ne |
| if (sb == 0) {
0x0000bc7c movne r4, sb | r4 = sb;
| }
| if (sb != 0) {
0x0000bc7e moveq r4, r0 | r4 = r0;
| }
0x0000bc80 b 0xb900 | goto label_1;
| label_28:
0x0000bc82 blx 0x357c | r0 = sprintf_chk ()
0x0000bc86 ldr.w sb, [r0] | sb = *(r0);
0x0000bc8a cmp.w sb, 0x5f |
| if (sb == 0x5f) {
0x0000bc8e beq 0xbc96 | goto label_32;
| }
0x0000bc90 cmp.w sb, 0x19 |
0x0000bc94 bne 0xbc52 |
| } while (sb != 0x19);
| label_32:
0x0000bc96 mov r0, r7 | r0 = r7;
0x0000bc98 blx 0x3098 | fcn_00003098 ();
| label_31:
0x0000bc9c vmov.i32 d16, 0 | __asm ("vmov.i32 d16, 0");
0x0000bca0 mov r0, r6 | r0 = r6;
0x0000bca2 ldrd r6, r7, [sp, 0x60] | __asm ("ldrd r6, r7, [var_60h]");
0x0000bca6 mov r1, r5 | r1 = r5;
0x0000bca8 ldr r2, [sp, 0x2c] | r2 = var_2ch;
0x0000bcaa strd r8, sl, [sp, 0x10] | __asm ("strd r8, sl, [sp, 0x10]");
0x0000bcae vstr d16, [sp] | __asm ("vstr d16, [sp]");
0x0000bcb2 strd r6, r7, [sp, 8] | __asm ("strd r6, r7, [sp, 8]");
0x0000bcb6 bl 0xb048 | r0 = fcn_0000b048 (r0, r1, r2, r3, r4, r5, r6);
0x0000bcba mov sb, r0 | sb = r0;
0x0000bcbc b 0xbc64 | goto label_7;
| label_30:
0x0000bcbe ldr r2, [r1, -0x28] | r2 = *((r1 - 0x28));
0x0000bcc2 ldr r3, [r1, -0x38] | r3 = *((r1 - 0x38));
0x0000bcc6 ldr r4, [r1, -0x24] | r4 = *((r1 - 0x24));
0x0000bcc8 ldr r4, [pc, 0x90] | r4 = *(0xbd5c);
0x0000bcca adds r3, r3, r2 | r3 += r2;
0x0000bccc ldr r2, [r1, -0x34] | r2 = *((r1 - 0x34));
0x0000bcd0 adc.w r2, r2, r4 | __asm ("adc.w r2, r2, r4");
0x0000bcd4 cmp.w r0, 0x200 |
| if (r0 != 0x200) {
0x0000bcd8 bne 0xbce4 | goto label_33;
| }
0x0000bcda ldr r1, [r1, -0x10] | r1 = *((r1 - 0x10));
0x0000bcde lsls r1, r1, 0x1f | r1 <<= 0x1f;
| if (r1 >= r1) {
0x0000bce0 bpl.w 0xbbc2 | goto label_8;
| }
| label_33:
0x0000bce4 mov r0, r7 | r0 = r7;
0x0000bce6 blx 0x3098 | fcn_00003098 ();
0x0000bcea b 0xbabc | goto label_9;
| label_24:
0x0000bcec blx 0x357c | r0 = sprintf_chk ()
0x0000bcf0 ldr r3, [r0] | r3 = *(r0);
0x0000bcf2 ldr r2, [sp, 0x2c] | r2 = var_2ch;
0x0000bcf4 cmp r3, 6 |
0x0000bcf6 str r2, [sp, 0x18] | var_18h = r2;
| if (r3 != 6) {
0x0000bcf8 bne.w 0xbb8c | goto label_10;
| }
0x0000bcfc mov r0, sl | r0 = sl;
0x0000bcfe blx 0x3098 | fcn_00003098 ();
0x0000bd02 mov r0, r8 | r0 = r8;
0x0000bd04 blx 0x3098 | fcn_00003098 ();
0x0000bd08 ldr r0, [sp, 0x18] | r0 = var_18h;
0x0000bd0a blx 0x304c | r0 = fcn_0000304c ();
0x0000bd0e mov r4, r0 | r4 = r0;
0x0000bd10 b 0xb900 | goto label_1;
| label_27:
0x0000bd12 movw r4, 0xb746 |
0x0000bd16 movt r4, 0x7f2b | r4 = 0x7f2bb746;
0x0000bd1a b 0xbb74 | goto label_11;
| label_23:
0x0000bd1c mov r0, r8 | r0 = r8;
0x0000bd1e movw r4, 0xb746 |
0x0000bd22 blx 0x3098 | fcn_00003098 ();
0x0000bd26 ldr r0, [sp, 0x18] | r0 = var_18h;
0x0000bd28 movt r4, 0x7f2b | r4 = 0x7f2bb746;
0x0000bd2c blx 0x304c | fcn_0000304c ();
0x0000bd30 b 0xb900 | goto label_1;
| }
; 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 @ 0xbd54 */
| #include <stdint.h>
|
| #define BIT_MASK(t,v) ((t)(-((v)!= 0)))&(((t)-1)>>((sizeof(t)*CHAR_BIT)-(v)))
|
; (fcn) fcn.0000bd54 () | void fcn_0000bd54 (int16_t arg_158h, int16_t arg_15ch, int16_t arg1, int16_t arg2, int16_t arg3, int16_t arg4) {
| int16_t var_0h;
| int16_t var_4h;
| int32_t var_4h_2;
| int16_t var_14h;
| int16_t var_18h;
| int16_t var_1ch;
| int16_t var_20h;
| int16_t var_24h;
| int16_t var_28h;
| int16_t var_2ch;
| int16_t var_30h;
| int16_t var_34h;
| int16_t var_38h;
| int16_t var_3ch;
| int16_t var_40h;
| int32_t var_40h_2;
| int16_t var_50h;
| int16_t var_54h;
| int16_t var_58h;
| int16_t var_5ch;
| int16_t var_60h;
| int16_t var_70h;
| int32_t var_70h_2;
| int16_t var_88h;
| int16_t var_90h;
| int16_t var_98h;
| int16_t var_a0h;
| int32_t var_a0h_2;
| int16_t var_ach;
| int16_t var_aeh;
| int16_t var_b4h;
| int16_t var_b8h;
| int16_t var_bch;
| int16_t var_c4h;
| int16_t var_c6h;
| int16_t var_124h;
| int16_t var_126h;
| int16_t var_12ch;
| r0 = arg1;
| r1 = arg2;
| r2 = arg3;
| r3 = arg4;
0x0000bd54 push.w {r4, r5, r6, r7, r8, sb, sl, fp, lr} |
0x0000bd58 sub sp, 0x134 |
0x0000bd5a mov r4, r2 | r4 = r2;
0x0000bd5c ldr r2, [sp, 0x158] | r2 = *(arg_158h);
0x0000bd5e mov fp, r0 |
0x0000bd60 mov r0, r4 | r0 = r4;
0x0000bd62 str r3, [sp, 0x20] | var_20h = r3;
0x0000bd64 mov r5, r1 | r5 = r1;
0x0000bd66 str r2, [sp, 0x24] | var_24h = r2;
0x0000bd68 ldr.w r2, [pc, 0x7c8] | r2 = *(0x0000c534);
0x0000bd6c ldr.w r3, [pc, 0x7c8] |
0x0000bd70 add r2, pc | r2 += pc;
0x0000bd72 ldr r3, [r2, r3] | r3 = *((r2 + r3));
0x0000bd74 ldr r3, [r3] | r3 = *(0xc538);
0x0000bd76 str r3, [sp, 0x12c] | var_12ch = r3;
0x0000bd78 mov.w r3, 0 | r3 = 0;
0x0000bd7c ldrd sl, r3, [sp, 0x15c] | __asm ("ldrd sl, r3, [arg_15ch]");
0x0000bd80 str r3, [sp, 0x1c] | var_1ch = r3;
0x0000bd82 blx 0x329c | fcn_0000329c ();
0x0000bd86 ldr.w r3, [pc, 0x7b4] | r3 = *(0x0000c53c);
0x0000bd8a cmp r0, 0 |
0x0000bd8c add r3, pc | r3 += pc;
| if (r0 < 0) {
0x0000bd8e blt.w 0xc2e0 | goto label_18;
| }
0x0000bd92 ldr.w r2, [pc, 0x7ac] | r2 = *(0xc542);
0x0000bd96 add r1, sp, 0x38 | r1 += var_38h;
0x0000bd98 ldr.w r0, [pc, 0x7a8] |
0x0000bd9c ldr r3, [r3, r2] | r3 = *((r3 + r2));
0x0000bd9e movs r2, 0 | r2 = 0;
0x0000bda0 add r0, pc | r0 = 0x182e8;
0x0000bda2 blx 0x38dc | r0 = blkid_get_cache ();
0x0000bda6 subs r7, r0, 0 | r7 = r0 - 0;
| if (r7 < r0) {
0x0000bda8 blt.w 0xc3b4 | goto label_19;
| }
| if (r7 == r0) {
0x0000bdac beq.w 0xc0f6 | goto label_20;
| }
0x0000bdb0 ldr.w r3, [pc, 0x794] |
0x0000bdb4 movs r4, 0 | r4 = 0;
0x0000bdb6 mov sb, r5 | sb = r5;
0x0000bdb8 str r7, [sp, 0x18] | var_18h = r7;
0x0000bdba add r3, pc | r3 = 0x18306;
0x0000bdbc adds r3, 0x4c | r3 += 0x4c;
0x0000bdbe str r3, [sp, 0x2c] | var_2ch = r3;
0x0000bdc0 movw r3, 0xb726 |
0x0000bdc4 movt r3, 0x7f2b | r3 = 0x7f2bb726;
0x0000bdc8 str r3, [sp, 0x30] | var_30h = r3;
0x0000bdca b 0xbdde |
| while (r3 == 0x2e) {
0x0000bdcc ldrb r3, [r5, 1] | r3 = *((r5 + 1));
| if (r3 != 0) {
0x0000bdce cbnz r3, 0xbdf2 | goto label_21;
| }
| label_0:
0x0000bdd0 blx 0x3098 | fcn_00003098 ();
0x0000bdd4 ldr r3, [sp, 0x18] | r3 = var_18h;
0x0000bdd6 adds r4, 1 | r4++;
0x0000bdd8 cmp r3, r4 |
| if (r3 == r4) {
0x0000bdda beq.w 0xc0f6 | goto label_20;
| }
| label_2:
0x0000bdde ldr r3, [sp, 0x38] | r3 = var_38h;
0x0000bde0 lsls r2, r4, 2 | r2 = r4 << 2;
0x0000bde2 str r2, [sp, 0x14] | var_14h = r2;
0x0000bde4 ldr.w r0, [r3, r4, lsl 2] | offset_0 = r4 << 2;
| r0 = *((r3 + offset_0));
0x0000bde8 ldrb r3, [r0, 0x13] | r3 = *((r0 + 0x13));
0x0000bdea add.w r5, r0, 0x13 | r5 = r0 + 0x13;
0x0000bdee cmp r3, 0x2e |
0x0000bdf0 beq 0xbdcc |
| }
| label_21:
0x0000bdf2 ldrb r3, [r5] | r3 = *(r5);
0x0000bdf4 cmp r3, 0x2e |
| if (r3 != 0x2e) {
0x0000bdf6 bne 0xbe04 | goto label_22;
| }
0x0000bdf8 ldrb r3, [r5, 1] | r3 = *((r5 + 1));
0x0000bdfa cmp r3, 0x2e |
| if (r3 != 0x2e) {
0x0000bdfc bne 0xbe04 | goto label_22;
| }
0x0000bdfe ldrb r3, [r5, 2] | r3 = *((r5 + 2));
0x0000be00 cmp r3, 0 |
| if (r3 == 0) {
0x0000be02 beq 0xbdd0 | goto label_0;
| }
| label_22:
0x0000be04 add r1, sp, 0x40 | r1 += var_40h;
0x0000be06 mov r0, r5 | r0 = r5;
0x0000be08 blx 0x311c | r0 = fcn_0000311c ();
0x0000be0c cmp r0, 0 |
| if (r0 != 0) {
0x0000be0e bne.w 0xc3ce | goto label_23;
| }
0x0000be12 ldr r3, [sp, 0x50] | r3 = var_50h;
0x0000be14 and r3, r3, 0xf000 | r3 &= 0xf000;
0x0000be16 muls r0, r6, r0 | r0 = r6 * r0;
0x0000be18 cmp.w r3, 0x4000 |
0x0000be1c it ne |
| if (r3 != 0x4000) {
0x0000be1e cmpne r3, 0xa000 | __asm ("cmpne r3, 0xa000");
| }
0x0000be22 ite ne |
| if (r3 == 0x4000) {
0x0000be24 movne r3, 1 | r3 = 1;
| }
| if (r3 != 0x4000) {
0x0000be26 moveq r3, 0 | r3 = 0;
| }
| if (r3 == 0x4000) {
0x0000be28 beq.w 0xbf38 | goto label_24;
| }
0x0000be2c ldr r3, [sp, 0x54] | r3 = var_54h;
0x0000be2e cmp r3, 1 |
| if (r3 < 1) {
0x0000be30 bls.w 0xc1d2 | goto label_25;
| }
0x0000be34 ldr r3, [sp, 0x24] | r3 = var_24h;
0x0000be36 ldrd r7, r2, [sp, 0x40] | __asm ("ldrd r7, r2, [var_40h]");
0x0000be3a ldrd r1, r8, [sp, 0xa0] | __asm ("ldrd r1, r8, [var_a0h]");
0x0000be3e ldr r6, [r3] | r6 = *(r3);
0x0000be40 cmp r6, 0 |
| if (r6 <= 0) {
0x0000be42 ble 0xbf36 | goto label_26;
| }
0x0000be44 ldr r3, [r3, 8] | r3 = *((r3 + 8));
0x0000be46 mov lr, r5 | lr = r5;
0x0000be48 mov ip, r4 |
0x0000be4a b 0xbe56 |
| while (r2 != r4) {
| label_1:
0x0000be4c adds r0, 1 | r0++;
0x0000be4e adds r3, 0x18 | r3 += 0x18;
0x0000be50 cmp r0, r6 |
| if (r0 == r6) {
0x0000be52 beq.w 0xc1c8 | goto label_27;
| }
0x0000be56 ldrd r5, r4, [r3] | __asm ("ldrd r5, r4, [r3]");
0x0000be5a cmp r2, r4 |
0x0000be5c it eq |
| if (r2 == r4) {
0x0000be5e cmpeq r7, r5 | __asm ("cmpeq r7, r5");
| }
0x0000be60 bne 0xbe4c |
| }
0x0000be62 ldrd r5, r4, [r3, 8] | __asm ("ldrd r5, r4, [r3, 8]");
0x0000be66 cmp r8, r4 |
0x0000be68 it eq |
| if (r8 != r4) {
0x0000be6a cmpeq r1, r5 | __asm ("cmpeq r1, r5");
| goto label_28;
| }
| if (r8 != r4) {
| label_28:
0x0000be6c bne 0xbe4c | goto label_1;
| }
0x0000be6e ldr r6, [r3, 0x10] | r6 = *((r3 + 0x10));
0x0000be70 add r7, sp, 0xac | r7 += var_ach;
0x0000be72 mov r2, r7 | r2 = r7;
0x0000be74 mov r0, fp | r0 = fp;
0x0000be76 mov r5, lr | r5 = lr;
0x0000be78 mov r4, ip | r4 = ip;
0x0000be7a mov r1, r6 | r1 = r6;
0x0000be7c blx 0x2f58 | r0 = ext2fs_read_inode ();
0x0000be80 mov r3, r0 | r3 = r0;
0x0000be82 cmp r0, 0 |
| if (r0 != 0) {
0x0000be84 bne.w 0xc39a | goto label_29;
| }
0x0000be88 ldrh.w r2, [sp, 0xac] | r2 = var_ach;
0x0000be8c and r2, r2, 0xf000 | r2 &= 0xf000;
0x0000be90 cmp.w r2, 0x8000 |
0x0000be94 it eq |
| if (r2 != 0x8000) {
0x0000be96 moveq r3, 1 | r3 = 1;
| }
| if (r2 != 0x8000) {
0x0000be98 beq 0xbeca |
0x0000be9a cmp.w r2, 0x4000 |
| if (r2 == 0x4000) {
0x0000be9e beq.w 0xc3ea | goto label_30;
| }
0x0000bea2 cmp.w r2, 0x2000 |
| if (r2 == 0x2000) {
0x0000bea6 beq.w 0xc44e | goto label_31;
| }
0x0000beaa cmp.w r2, 0x6000 |
| if (r2 == 0x6000) {
0x0000beae beq.w 0xc452 | goto label_32;
| }
0x0000beb2 cmp.w r2, 0xa000 |
| if (r2 == 0xa000) {
0x0000beb6 beq.w 0xc456 | goto label_33;
| }
0x0000beba cmp.w r2, 0x1000 |
| if (r2 == 0x1000) {
0x0000bebe beq.w 0xc45a | goto label_34;
| }
0x0000bec2 cmp.w r2, 0xc000 |
0x0000bec6 it eq |
| if (r2 == 0xc000) {
0x0000bec8 moveq r3, 6 | r3 = 6;
| goto label_16;
| }
| }
| label_16:
0x0000beca mov r2, r5 | r2 = r5;
0x0000becc str r3, [sp] | *(sp) = r3;
0x0000bece mov r1, sb | r1 = sb;
0x0000bed0 mov r3, r6 | r3 = r6;
0x0000bed2 mov r0, fp | r0 = fp;
0x0000bed4 blx 0x387c | uuid_generate_time ();
0x0000bed8 ldr r2, [sp, 0x30] | r2 = var_30h;
0x0000beda mov r3, r0 | r3 = r0;
0x0000bedc cmp r0, r2 |
| if (r0 == r2) {
0x0000bede beq.w 0xc312 | goto label_35;
| }
0x0000bee2 cmp r3, 0 |
| if (r3 != 0) {
0x0000bee4 bne.w 0xc2fa | goto label_14;
| }
| label_13:
0x0000bee8 ldrh.w r3, [sp, 0xc6] | r3 = var_c6h;
0x0000beec mov r2, r7 | r2 = r7;
0x0000beee mov r1, r6 | r1 = r6;
0x0000bef0 mov r0, fp | r0 = fp;
0x0000bef2 adds r3, 1 | r3++;
0x0000bef4 strh.w r3, [sp, 0xc6] | var_c6h = r3;
0x0000bef8 blx 0x36a8 | r0 = ext2fs_file_llseek ();
0x0000befc cmp r0, 0 |
| if (r0 != 0) {
0x0000befe beq.w 0xc0e2 |
0x0000bf00 strh r0, [r6, 6] | *((r6 + 6)) = r0;
0x0000bf02 mov r8, r6 | r8 = r6;
0x0000bf04 mov r6, r0 | r6 = r0;
0x0000bf06 ldr.w r0, [pc, 0x644] |
0x0000bf0a mov r3, r8 | r3 = r8;
0x0000bf0c ldr.w r2, [pc, 0x640] |
0x0000bf10 mov r1, r6 | r1 = r6;
0x0000bf12 ldr r7, [sp, 0x18] | r7 = var_18h;
0x0000bf14 add r0, pc | r0 = 0x18466;
0x0000bf16 adds r0, 0x5c | r0 += 0x5c;
0x0000bf18 add r2, pc | r2 = 0x1846c;
0x0000bf1a blx 0x32cc | fcn_000032cc ();
| label_12:
0x0000bf1e ldr.w r0, [pc, 0x634] |
0x0000bf22 mov r3, r5 | r3 = r5;
0x0000bf24 ldr.w r2, [pc, 0x630] |
0x0000bf28 mov r1, r6 | r1 = r6;
0x0000bf2a add r0, pc | r0 = 0x18484;
0x0000bf2c adds r0, 0x4c | r0 += 0x4c;
0x0000bf2e add r2, pc | r2 = 0x1848a;
0x0000bf30 blx 0x32cc | fcn_000032cc ();
0x0000bf34 b 0xc200 | goto label_10;
| label_26:
0x0000bf36 movs r3, 1 | r3 = 1;
| label_24:
0x0000bf38 str r3, [sp, 0x28] | var_28h = r3;
| label_7:
0x0000bf3a ldr.w r7, [sl, 4] | r7 = *((sl + 4));
0x0000bf3e mov r0, r5 | r0 = r5;
0x0000bf40 blx 0x3504 | e2p_os2string ();
0x0000bf44 ldr.w r1, [sl, 8] | r1 = *((sl + 8));
0x0000bf48 adds r2, r7, 1 | r2 = r7 + 1;
0x0000bf4a ldr.w r3, [sl] | r3 = *(sl);
0x0000bf4e add r2, r0 | r2 += r0;
0x0000bf50 cmp r2, r1 |
| if (r2 < r1) {
0x0000bf52 bls.w 0xc1c4 | goto label_36;
| }
0x0000bf56 lsls r1, r1, 1 | r1 <<= 1;
0x0000bf58 mov r0, r3 | r0 = r3;
0x0000bf5a str.w r1, [sl, 8] | __asm ("str.w r1, [sl, 8]");
0x0000bf5e blx 0x3254 | r0 = fcn_00003254 ();
0x0000bf62 mov r3, r0 | r3 = r0;
0x0000bf64 cmp r0, 0 |
| if (r0 == 0) {
0x0000bf66 beq.w 0xc4fc | goto label_37;
| }
0x0000bf6a str.w r0, [sl] | __asm ("str.w r0, [sl]");
0x0000bf6e ldr.w r0, [sl, 4] | r0 = *((sl + 4));
| label_6:
0x0000bf72 add r0, r3 | r0 += r3;
0x0000bf74 ldr.w r3, [pc, 0x5e4] |
0x0000bf78 mov.w r2, -1 | r2 = -1;
0x0000bf7c movs r1, 1 | r1 = 1;
0x0000bf7e str r5, [sp] | *(sp) = r5;
0x0000bf80 add r3, pc | r3 = 0x184e0;
0x0000bf82 blx 0x3594 | ext2fs_open2 ();
0x0000bf84 add.w r8, r8, sl, lsr 31 | r8 += (sl >> 31);
0x0000bf88 adds r0, 4 | r0 += 4;
0x0000bf8a add r3, r0 | r3 += r0;
0x0000bf8c str.w r3, [sl, 4] | __asm ("str.w r3, [sl, 4]");
0x0000bf90 ldr r3, [sp, 0x1c] | r3 = var_1ch;
| if (r3 != 0) {
0x0000bf92 cbz r3, 0xbfba |
0x0000bf94 ldr r3, [sp, 0x1c] | r3 = var_1ch;
0x0000bf96 ldr r6, [r3] | r6 = *(r3);
0x0000bf98 ldr r3, [sp, 0x50] | r3 = var_50h;
| if (r6 == 0) {
0x0000bf9a cbz r6, 0xbfbc | goto label_38;
| }
0x0000bf9c and r3, r3, 0xf000 | r3 &= 0xf000;
0x0000bfa0 mov r2, r5 | r2 = r5;
0x0000bfa2 str r3, [sp, 4] | var_4h = r3;
0x0000bfa4 mov r0, fp | r0 = fp;
0x0000bfa6 ldr r3, [sp, 0x20] | r3 = var_20h;
0x0000bfa8 str r3, [sp] | *(sp) = r3;
0x0000bfaa mov r3, sb | r3 = sb;
0x0000bfac ldr.w r1, [sl] | r1 = *(sl);
0x0000bfb0 blx r6 | r0 = uint32_t (*r6)(uint32_t, uint32_t, uint32_t, uint32_t) (r0, r1, r2, r3);
0x0000bfb2 mov r3, r0 | r3 = r0;
0x0000bfb4 cmp r0, 0 |
| if (r0 != 0) {
0x0000bfb6 bne.w 0xc41c | goto label_39;
| }
| }
0x0000bfba ldr r3, [sp, 0x50] | r3 = var_50h;
| label_38:
0x0000bfbc and r2, r3, 0xf000 | r2 = r3 & 0xf000;
0x0000bfc0 cmp.w r2, 0x8000 |
| if (r2 == 0x8000) {
0x0000bfc4 beq.w 0xc232 | goto label_40;
| }
| if (r2 > 0x8000) {
0x0000bfc8 bhi.w 0xc130 | goto label_41;
| }
0x0000bfcc cmp.w r2, 0x4000 |
| if (r2 == 0x4000) {
0x0000bfd0 beq.w 0xc25e | goto label_42;
| }
| if (r2 < 0x4000) {
0x0000bfd4 bls.w 0xc120 | goto label_43;
| }
0x0000bfd8 cmp.w r2, 0x6000 |
| if (r2 == 0x6000) {
0x0000bfdc beq.w 0xc19a | goto label_44;
| }
| label_3:
0x0000bfe0 ldr.w r2, [pc, 0x57c] |
0x0000bfe4 mov r3, r5 | r3 = r5;
0x0000bfe6 ldr r0, [sp, 0x2c] | r0 = var_2ch;
0x0000bfe8 movs r1, 0 | r1 = 0;
0x0000bfea add r6, sp, 0x3c | r6 += var_3ch;
0x0000bfec add r2, pc | r2 = 0x18550;
0x0000bfee blx 0x32cc | fcn_000032cc ();
| label_4:
0x0000bff2 ldr r1, [sp, 0x20] | r1 = var_20h;
0x0000bff4 mov r3, r5 | r3 = r5;
0x0000bff6 mov r2, sb | r2 = sb;
0x0000bff8 mov r0, fp | r0 = fp;
0x0000bffa str r6, [sp] | *(sp) = r6;
0x0000bffc blx 0x3110 | r0 = fcn_00003110 ();
0x0000c000 cmp r0, 0 |
| if (r0 != 0) {
0x0000c002 bne.w 0xc422 | goto label_45;
| }
0x0000c006 ldr r6, [sp, 0x3c] | r6 = var_3ch;
0x0000c008 add.w r8, sp, 0xac | r8 += var_ach;
0x0000c00c mov r2, r8 | r2 = r8;
0x0000c00e mov r0, fp | r0 = fp;
0x0000c010 mov r1, r6 | r1 = r6;
0x0000c012 blx 0x2f58 | r0 = ext2fs_read_inode ();
0x0000c016 cmp r0, 0 |
| if (r0 != 0) {
0x0000c018 bne.w 0xc1d6 | goto label_46;
| }
0x0000c01a strh r5, [r3, 6] | *((r3 + 6)) = r5;
0x0000c01c ldr r3, [sp, 0x58] | r3 = var_58h;
0x0000c01e mov r2, r8 | r2 = r8;
0x0000c020 ldr r1, [sp, 0x50] | r1 = var_50h;
0x0000c022 mov r0, fp | r0 = fp;
0x0000c024 strh.w r3, [sp, 0xae] | var_aeh = r3;
0x0000c028 lsrs r3, r3, 0x10 | r3 >>= 0x10;
0x0000c02a ubfx r1, r1, 0, 0xc | r1 = (r1 >> 0) & ((1 << 0xc) - 1);
0x0000c02e strh.w r3, [sp, 0x124] | var_124h = r3;
0x0000c032 ldr r3, [sp, 0x5c] | r3 = var_5ch;
0x0000c034 strh.w r3, [sp, 0xc4] | var_c4h = r3;
0x0000c038 lsrs r3, r3, 0x10 | r3 >>= 0x10;
0x0000c03a strh.w r3, [sp, 0x126] | var_126h = r3;
0x0000c03e ldrh.w r3, [sp, 0xac] | r3 = var_ach;
0x0000c042 bic r3, r3, 0xff0 | r3 = BIT_MASK (r3, 0xff0);
0x0000c044 str r7, [r7, 0x34] | *((r7 + 0x34)) = r7;
0x0000c046 bic r3, r3, 0xf | r3 = BIT_MASK (r3, 0xf);
0x0000c04a orrs r3, r1 | r3 |= r1;
0x0000c04c mov r1, r6 | r1 = r6;
0x0000c04e strh.w r3, [sp, 0xac] | var_ach = r3;
0x0000c052 ldr r3, [sp, 0x88] | r3 = var_88h;
0x0000c054 str r3, [sp, 0xb4] | var_b4h = r3;
0x0000c056 ldr r3, [sp, 0x90] | r3 = var_90h;
0x0000c058 str r3, [sp, 0xbc] | var_bch = r3;
0x0000c05a ldr r3, [sp, 0x98] | r3 = var_98h;
0x0000c05c str r3, [sp, 0xb8] | var_b8h = r3;
0x0000c05e blx 0x36a8 | r0 = ext2fs_file_llseek ();
0x0000c062 cmp r0, 0 |
| if (r0 != 0) {
0x0000c064 bne.w 0xc218 | goto label_47;
| }
0x0000c068 ldr r1, [sp, 0x3c] | r1 = var_3ch;
0x0000c06a mov r2, r5 | r2 = r5;
0x0000c06c mov r0, fp | r0 = fp;
0x0000c06e bl 0xb180 | r0 = fcn_0000b180 (r0, r1, r2);
0x0000c072 cmp r0, 0 |
| if (r0 != 0) {
0x0000c074 bne.w 0xc436 | goto label_48;
| }
0x0000c078 ldr r3, [sp, 0x1c] | r3 = var_1ch;
| if (r3 != 0) {
0x0000c07a cbz r3, 0xc0a2 |
0x0000c07c ldr r3, [sp, 0x1c] | r3 = var_1ch;
0x0000c07e ldr r6, [r3, 4] | r6 = *((r3 + 4));
| if (r6 == 0) {
0x0000c080 cbz r6, 0xc0a2 | goto label_49;
| }
0x0000c082 ldr r3, [sp, 0x20] | r3 = var_20h;
0x0000c084 mov r2, r5 | r2 = r5;
0x0000c086 mov r0, fp | r0 = fp;
0x0000c088 str r3, [sp] | *(sp) = r3;
0x0000c08a ldr r3, [sp, 0x50] | r3 = var_50h;
0x0000c08c and r3, r3, 0xf000 | r3 &= 0xf000;
0x0000c090 str r3, [sp, 4] | var_4h = r3;
0x0000c092 mov r3, sb | r3 = sb;
0x0000c094 ldr.w r1, [sl] | r1 = *(sl);
0x0000c098 blx r6 | r0 = uint32_t (*r6)(uint32_t, uint32_t, uint32_t, uint32_t) (r0, r1, r2, r3);
0x0000c09a mov r3, r0 | r3 = r0;
0x0000c09c cmp r0, 0 |
| if (r0 != 0) {
0x0000c09e bne.w 0xc41c | goto label_39;
| }
| }
| label_49:
0x0000c0a2 ldr r3, [sp, 0x28] | r3 = var_28h;
| if (r3 != 0) {
0x0000c0a4 cbz r3, 0xc0d6 |
0x0000c0a6 ldr r1, [sp, 0x24] | r1 = var_24h;
0x0000c0a8 ldrd r3, r2, [r1] | __asm ("ldrd r3, r2, [r1]");
0x0000c0ac ldr r0, [r1, 8] | r0 = *((r1 + 8));
0x0000c0ae cmp r3, r2 |
| if (r3 == r2) {
0x0000c0b0 beq.w 0xc37a | goto label_50;
| }
| label_15:
0x0000c0b4 add.w r2, r3, r3, lsl 1 | r2 = r3 + (r3 << 1);
0x0000c0b8 ldr r1, [sp, 0x3c] | r1 = var_3ch;
0x0000c0ba vldr d16, [sp, 0xa0] | __asm ("vldr d16, [sp, 0xa0]");
0x0000c0be adds r3, 1 | r3++;
0x0000c0c0 add.w r2, r0, r2, lsl 3 | r2 = r0 + (r2 << 3);
0x0000c0c4 str r1, [r2, 0x10] | *((r2 + 0x10)) = r1;
0x0000c0c6 ldrd r0, r1, [sp, 0x40] | __asm ("ldrd r0, r1, [var_40h]");
0x0000c0ca vstr d16, [r2, 8] | __asm ("vstr d16, [r2, 8]");
0x0000c0ce strd r0, r1, [r2] | __asm ("strd r0, r1, [r2]");
0x0000c0d2 ldr r2, [sp, 0x24] | r2 = var_24h;
0x0000c0d4 str r3, [r2] | *(r2) = r3;
| }
0x0000c0d6 ldr.w r3, [sl] | r3 = *(sl);
0x0000c0da movs r2, 0 | r2 = 0;
0x0000c0dc str.w r7, [sl, 4] | __asm ("str.w r7, [sl, 4]");
0x0000c0e0 strb r2, [r3, r7] | *((r3 + r7)) = r2;
| }
0x0000c0e2 ldr r3, [sp, 0x38] | r3 = var_38h;
0x0000c0e4 adds r4, 1 | r4++;
0x0000c0e6 ldr r2, [sp, 0x14] | r2 = var_14h;
0x0000c0e8 ldr r0, [r3, r2] | r0 = *((r3 + r2));
0x0000c0ea blx 0x3098 | fcn_00003098 ();
0x0000c0ee ldr r3, [sp, 0x18] | r3 = var_18h;
0x0000c0f0 cmp r3, r4 |
| if (r3 != r4) {
0x0000c0f2 bne.w 0xbdde | goto label_2;
| }
| label_20:
0x0000c0f6 movs r6, 0 | r6 = 0;
| label_8:
0x0000c0f8 ldr r0, [sp, 0x38] | r0 = var_38h;
0x0000c0fa blx 0x3098 | fcn_00003098 ();
| label_11:
0x0000c0fe ldr.w r2, [pc, 0x464] | r2 = *(0x0000c564);
0x0000c102 ldr.w r3, [pc, 0x434] | r3 = *(0xc53a);
0x0000c106 add r2, pc | r2 += pc;
0x0000c108 ldr r3, [r2, r3] | r3 = *((r2 + r3));
0x0000c10a ldr r2, [r3] | r2 = *(0xc53a);
0x0000c10c ldr r3, [sp, 0x12c] | r3 = var_12ch;
0x0000c10e eors r2, r3 | r2 ^= r3;
0x0000c110 mov.w r3, 0 | r3 = 0;
| if (r2 != r3) {
0x0000c114 bne.w 0xc4da | goto label_51;
| }
0x0000c116 strh r1, [r4, 0xe] | *((r4 + 0xe)) = r1;
0x0000c118 mov r0, r6 | r0 = r6;
0x0000c11a add sp, 0x134 |
0x0000c11c pop.w {r4, r5, r6, r7, r8, sb, sl, fp, pc} |
| label_43:
0x0000c120 sub.w r2, r2, 0x1000 | r2 -= 0x1000;
0x0000c124 bic r2, r2, 0x1000 | r2 = BIT_MASK (r2, 0x1000);
0x0000c126 strh r0, [r0, r2] | *((r0 + r2)) = r0;
0x0000c128 cmp r2, 0 |
| if (r2 != 0) {
0x0000c12a bne.w 0xbfe0 | goto label_3;
| }
0x0000c12e b 0xc19a | goto label_44;
| label_41:
0x0000c130 cmp.w r2, 0xa000 |
| if (r2 == 0xa000) {
0x0000c134 bne 0xc192 |
0x0000c136 ldr r2, [sp, 0x70] | r2 = var_70h;
0x0000c138 add.w r8, r2, 1 | r8 = r2 + 1;
0x0000c13c mov r0, r8 | r0 = r8;
0x0000c13e blx 0x3450 | r0 = strerror (r0);
0x0000c142 mov r6, r0 | r6 = r0;
0x0000c144 cmp r0, 0 |
| if (r0 == 0) {
0x0000c146 beq.w 0xc520 | goto label_52;
| }
0x0000c14a mov r1, r0 | r1 = r0;
0x0000c14c mov r2, r8 | r2 = r8;
0x0000c14e mov r0, r5 | r0 = r5;
0x0000c150 blx 0x32fc | r0 = fcn_000032fc ();
0x0000c154 adds r3, r0, 1 | r3 = r0 + 1;
| if (r3 == r0) {
0x0000c156 beq.w 0xc47a | goto label_53;
| }
0x0000c15a ldrd r1, r2, [sp, 0x70] | __asm ("ldrd r1, r2, [var_70h]");
0x0000c15e asrs r3, r0, 0x1f | r3 = r0 >> 0x1f;
0x0000c160 cmp r1, r0 |
0x0000c162 sbcs.w r3, r2, r3 | __asm ("sbcs.w r3, r2, r3");
| if (r1 < r0) {
0x0000c166 blt.w 0xc45e | goto label_54;
| }
0x0000c16a movs r3, 0 | r3 = 0;
0x0000c16c mov r2, r5 | r2 = r5;
0x0000c16e strb r3, [r6, r0] | *((r6 + r0)) = r3;
0x0000c170 mov r1, sb | r1 = sb;
0x0000c172 ldr r3, [sp, 0x20] | r3 = var_20h;
0x0000c174 mov r0, fp | r0 = fp;
0x0000c176 str r3, [sp] | *(sp) = r3;
0x0000c178 mov r3, r6 | r3 = r6;
0x0000c17a bl 0xb66c | fcn_0000b66c (r0, r1, r2, r3, r4);
0x0000c17e str r0, [sp, 0x34] | var_34h = r0;
0x0000c180 mov r0, r6 | r0 = r6;
0x0000c182 blx 0x3098 | fcn_00003098 ();
0x0000c186 ldr r3, [sp, 0x34] | r3 = var_34h;
0x0000c188 cmp r3, 0 |
| if (r3 != 0) {
0x0000c18a bne.w 0xc404 | goto label_55;
| }
| label_5:
0x0000c18e add r6, sp, 0x3c | r6 += var_3ch;
0x0000c190 b 0xbff2 | goto label_4;
| }
0x0000c192 cmp.w r2, 0xc000 |
| if (r2 != 0xc000) {
0x0000c196 bne.w 0xbfe0 | goto label_3;
| }
| label_44:
0x0000c19a ldr r2, [sp, 0x60] | r2 = var_60h;
0x0000c19c mov r1, sb | r1 = sb;
0x0000c19e mov r0, fp | r0 = fp;
0x0000c1a0 str r2, [sp] | *(sp) = r2;
0x0000c1a2 mov r2, r5 | r2 = r5;
0x0000c1a4 bl 0xb460 | r0 = fcn_0000b460 (r0, r1, r2, r3, r4, r5, r6);
0x0000c1a8 cmp r0, 0 |
| if (r0 == 0) {
0x0000c1aa beq 0xc18e | goto label_5;
| }
0x0000c1ac mov r6, r0 | r6 = r0;
0x0000c1ae ldr r0, [pc, 0x3b8] |
0x0000c1b0 ldr r2, [pc, 0x3b8] |
0x0000c1b2 mov r3, r5 | r3 = r5;
0x0000c1b4 mov r1, r6 | r1 = r6;
0x0000c1b6 ldr r7, [sp, 0x18] | r7 = var_18h;
0x0000c1b8 add r0, pc | r0 = 0x18726;
0x0000c1ba adds r0, 0x4c | r0 += 0x4c;
0x0000c1bc add r2, pc | r2 = 0x1872c;
0x0000c1be blx 0x32cc | fcn_000032cc ();
0x0000c1c2 b 0xc200 | goto label_10;
| label_36:
0x0000c1c4 mov r0, r7 | r0 = r7;
0x0000c1c6 b 0xbf72 | goto label_6;
| label_27:
0x0000c1c8 movs r3, 1 | r3 = 1;
0x0000c1ca mov r5, lr | r5 = lr;
0x0000c1cc mov r4, ip | r4 = ip;
0x0000c1ce str r3, [sp, 0x28] | var_28h = r3;
0x0000c1d0 b 0xbf3a | goto label_7;
| label_25:
0x0000c1d2 str r0, [sp, 0x28] | var_28h = r0;
0x0000c1d4 b 0xbf3a | goto label_7;
| label_46:
0x0000c1d6 mov sb, r6 | sb = r6;
0x0000c1d8 mov r6, r0 | r6 = r0;
0x0000c1da ldr r0, [pc, 0x394] |
0x0000c1dc mov r3, sb | r3 = sb;
0x0000c1de ldr r2, [pc, 0x394] |
0x0000c1e0 mov r1, r6 | r1 = r6;
0x0000c1e2 ldr r7, [sp, 0x18] | r7 = var_18h;
0x0000c1e4 add r0, pc | r0 = 0x1875a;
0x0000c1e6 adds r0, 0x68 | r0 += 0x68;
0x0000c1e8 add r2, pc | r2 = 0x18762;
0x0000c1ea blx 0x32cc | fcn_000032cc ();
| label_9:
0x0000c1ee ldr r0, [pc, 0x388] |
0x0000c1f0 mov r3, r5 | r3 = r5;
0x0000c1f2 ldr r2, [pc, 0x388] |
0x0000c1f4 mov r1, r6 | r1 = r6;
0x0000c1f6 add r0, pc | r0 = 0x18774;
0x0000c1f8 adds r0, 0x4c | r0 += 0x4c;
0x0000c1fa add r2, pc | r2 = 0x1877c;
0x0000c1fc blx 0x32cc | fcn_000032cc ();
| label_10:
0x0000c200 cmp r7, r4 |
| if (r7 <= r4) {
0x0000c202 ble.w 0xc0f8 | goto label_8;
| }
| do {
0x0000c206 ldr r3, [sp, 0x38] | r3 = var_38h;
0x0000c208 ldr.w r0, [r3, r4, lsl 2] | offset_1 = r4 << 2;
| r0 = *((r3 + offset_1));
0x0000c20c adds r4, 1 | r4++;
0x0000c20e blx 0x3098 | fcn_00003098 ();
0x0000c212 cmp r7, r4 |
0x0000c214 bne 0xc206 |
| } while (r7 != r4);
0x0000c216 b 0xc0f8 | goto label_8;
| label_47:
0x0000c218 mov sb, r6 | sb = r6;
0x0000c21a mov r6, r0 | r6 = r0;
0x0000c21c ldr r0, [pc, 0x360] |
0x0000c21e mov r3, sb | r3 = sb;
0x0000c220 ldr r2, [pc, 0x360] |
0x0000c222 mov r1, r6 | r1 = r6;
0x0000c224 ldr r7, [sp, 0x18] | r7 = var_18h;
0x0000c226 add r0, pc | r0 = 0x187aa;
0x0000c228 adds r0, 0x68 | r0 += 0x68;
0x0000c22a add r2, pc | r2 = 0x187b2;
0x0000c22c blx 0x32cc | fcn_000032cc ();
0x0000c230 b 0xc1ee | goto label_9;
| label_40:
0x0000c232 ldr r3, [sp, 0x20] | r3 = var_20h;
0x0000c234 mov r2, r5 | r2 = r5;
0x0000c236 mov r1, sb | r1 = sb;
0x0000c238 mov r0, fp | r0 = fp;
0x0000c23a str r3, [sp] | *(sp) = r3;
0x0000c23c mov r3, r5 | r3 = r5;
0x0000c23e bl 0xb860 | r0 = fcn_0000b860 (r0, r1, r2, r3);
0x0000c242 cmp r0, 0 |
| if (r0 == 0) {
0x0000c244 beq 0xc18e | goto label_5;
| }
0x0000c246 mov r6, r0 | r6 = r0;
0x0000c248 ldr r0, [pc, 0x33c] |
0x0000c24a ldr r2, [pc, 0x340] |
0x0000c24c mov r3, r5 | r3 = r5;
0x0000c24e mov r1, r6 | r1 = r6;
0x0000c250 ldr r7, [sp, 0x18] | r7 = var_18h;
0x0000c252 add r0, pc | r0 = 0x187de;
0x0000c254 adds r0, 0x4c | r0 += 0x4c;
0x0000c256 add r2, pc | r2 = 0x187e8;
0x0000c258 blx 0x32cc | fcn_000032cc ();
0x0000c25c b 0xc200 | goto label_10;
| label_42:
0x0000c25e cmp.w sb, 2 |
| if (sb == 2) {
0x0000c262 bne 0xc270 |
0x0000c264 ldr r1, [pc, 0x328] |
0x0000c266 mov r0, r5 | r0 = r5;
0x0000c268 add r1, pc | r1 = 0x187fc;
0x0000c26a blx 0x2f98 | r0 = fcn_00002f98 ();
| if (r0 == 0) {
0x0000c26e cbz r0, 0xc282 | goto label_56;
| }
| }
0x0000c270 ldr r3, [sp, 0x20] | r3 = var_20h;
0x0000c272 mov r2, r5 | r2 = r5;
0x0000c274 mov r1, sb | r1 = sb;
0x0000c276 mov r0, fp | r0 = fp;
0x0000c278 bl 0xb764 | r0 = fcn_0000b764 (r0, r1, r2, r3);
0x0000c27c cmp r0, 0 |
| if (r0 != 0) {
0x0000c27e bne.w 0xc4ae | goto label_57;
| }
| label_56:
0x0000c282 add r6, sp, 0x3c | r6 += var_3ch;
0x0000c284 mov r3, r5 | r3 = r5;
0x0000c286 ldr r1, [sp, 0x20] | r1 = var_20h;
0x0000c288 mov r2, sb | r2 = sb;
0x0000c28a mov r0, fp | r0 = fp;
0x0000c28c str r6, [sp] | *(sp) = r6;
0x0000c28e blx 0x3110 | r0 = fcn_00003110 ();
0x0000c292 mov r3, r0 | r3 = r0;
0x0000c294 cmp r0, 0 |
| if (r0 != 0) {
0x0000c296 bne.w 0xc49e | goto label_58;
| }
0x0000c298 strh r2, [r0, 8] | *((r0 + 8)) = r2;
0x0000c29a ldr r3, [sp, 0x1c] | r3 = var_1ch;
0x0000c29c mov r2, r5 | r2 = r5;
0x0000c29e ldr r1, [sp, 0x3c] | r1 = var_3ch;
0x0000c2a0 mov r0, fp | r0 = fp;
0x0000c2a2 strd sl, r3, [sp, 4] | __asm ("strd sl, r3, [var_4h]");
0x0000c2a6 ldr r3, [sp, 0x24] | r3 = var_24h;
0x0000c2a8 str r3, [sp] | *(sp) = r3;
0x0000c2aa ldr r3, [sp, 0x20] | r3 = var_20h;
0x0000c2ac bl 0xbd54 | r0 = fcn_0000bd54 (r0, r1, r2, r3, r4, r5);
0x0000c2b0 mov r3, r0 | r3 = r0;
0x0000c2b2 cmp r0, 0 |
| if (r0 != 0) {
0x0000c2b4 bne.w 0xc41c | goto label_39;
| }
0x0000c2b8 ldr r0, [pc, 0x2d8] |
0x0000c2ba add r0, pc | r0 = 0x18852;
0x0000c2bc blx 0x329c | r0 = fcn_0000329c ();
0x0000c2c0 cmp r0, 0 |
| if (r0 == 0) {
0x0000c2c2 beq.w 0xbff2 | goto label_4;
| }
0x0000c2c6 blx 0x357c | r0 = sprintf_chk ()
0x0000c2ca ldr r6, [r0] | r6 = *(r0);
0x0000c2cc ldr r0, [pc, 0x2c8] |
0x0000c2ce ldr r2, [pc, 0x2cc] |
0x0000c2d0 mov r1, r6 | r1 = r6;
0x0000c2d2 ldr r7, [sp, 0x18] | r7 = var_18h;
0x0000c2d4 add r0, pc | r0 = 0x18870;
0x0000c2d6 add r2, pc | r2 = 0x18878;
0x0000c2d8 adds r0, 0x4c | r0 += 0x4c;
0x0000c2da blx 0x32cc | fcn_000032cc ();
0x0000c2de b 0xc200 | goto label_10;
| label_18:
0x0000c2e0 blx 0x357c | r0 = sprintf_chk ()
0x0000c2e4 ldr r6, [r0] | r6 = *(r0);
0x0000c2e6 mov r3, r4 | r3 = r4;
0x0000c2e8 ldr r0, [pc, 0x2b4] |
0x0000c2ea ldr r2, [pc, 0x2b8] |
0x0000c2ec mov r1, r6 | r1 = r6;
0x0000c2ee add r0, pc | r0 = 0x18892;
0x0000c2f0 add r2, pc | r2 = 0x1889a;
0x0000c2f2 adds r0, 0x4c | r0 += 0x4c;
0x0000c2f4 blx 0x32cc | fcn_000032cc ();
0x0000c2f8 b 0xc0fe | goto label_11;
| label_14:
0x0000c2fa ldr r0, [pc, 0x2ac] |
0x0000c2fc mov r6, r3 | r6 = r3;
0x0000c2fe ldr r2, [pc, 0x2ac] |
0x0000c300 mov r3, r5 | r3 = r5;
0x0000c302 mov r1, r6 | r1 = r6;
0x0000c304 ldr r7, [sp, 0x18] | r7 = var_18h;
0x0000c306 add r0, pc | r0 = 0x188b4;
0x0000c308 adds r0, 0x5c | r0 += 0x5c;
0x0000c30a add r2, pc | r2 = 0x188bc;
0x0000c30c blx 0x32cc | fcn_000032cc ();
0x0000c310 b 0xbf1e | goto label_12;
| label_35:
0x0000c312 mov r1, sb | r1 = sb;
0x0000c314 mov r0, fp | r0 = fp;
0x0000c316 blx 0x3570 | r0 = ext2fs_init_csum_seed ();
0x0000c31a mov r3, r0 | r3 = r0;
0x0000c31c cmp r0, 0 |
| if (r0 != 0) {
0x0000c31e bne 0xc3ee | goto label_59;
| }
0x0000c320 ldrh.w r2, [sp, 0xac] | r2 = var_ach;
0x0000c324 and r2, r2, 0xf000 | r2 &= 0xf000;
0x0000c328 cmp.w r2, 0x8000 |
0x0000c32c it eq |
| if (r2 != 0x8000) {
0x0000c32e moveq r3, 1 | r3 = 1;
| }
| if (r2 != 0x8000) {
0x0000c330 beq 0xc362 |
0x0000c332 cmp.w r2, 0x4000 |
| if (r2 == 0x4000) {
0x0000c336 beq.w 0xc4c6 | goto label_60;
| }
0x0000c33a cmp.w r2, 0x2000 |
| if (r2 == 0x2000) {
0x0000c33e beq.w 0xc4ca | goto label_61;
| }
0x0000c342 cmp.w r2, 0x6000 |
| if (r2 == 0x6000) {
0x0000c346 beq.w 0xc4d2 | goto label_62;
| }
0x0000c34a cmp.w r2, 0xa000 |
| if (r2 == 0xa000) {
0x0000c34e beq.w 0xc4ce | goto label_63;
| }
0x0000c352 cmp.w r2, 0x1000 |
| if (r2 == 0x1000) {
0x0000c356 beq.w 0xc4d6 | goto label_64;
| }
0x0000c35a cmp.w r2, 0xc000 |
0x0000c35e it eq |
| if (r2 == 0xc000) {
0x0000c360 moveq r3, 6 | r3 = 6;
| goto label_17;
| }
| }
| label_17:
0x0000c362 str r3, [sp] | *(sp) = r3;
0x0000c364 mov r2, r5 | r2 = r5;
0x0000c366 mov r3, r6 | r3 = r6;
0x0000c368 mov r1, sb | r1 = sb;
0x0000c36a mov r0, fp | r0 = fp;
0x0000c36c blx 0x387c | r0 = uuid_generate_time ();
0x0000c370 mov r3, r0 | r3 = r0;
0x0000c372 cmp r3, 0 |
| if (r3 == 0) {
0x0000c374 beq.w 0xbee8 | goto label_13;
| }
0x0000c378 b 0xc2fa | goto label_14;
| label_50:
0x0000c37a adds r3, 4 | r3 += 4;
0x0000c37c add.w r3, r3, r3, lsl 1 | r3 += (r3 << 1);
0x0000c380 lsls r1, r3, 3 | r1 = r3 << 3;
0x0000c382 blx 0x3254 | r0 = fcn_00003254 ();
0x0000c386 cmp r0, 0 |
| if (r0 != 0) {
0x0000c388 beq.w 0xc4de |
0x0000c38c ldr r2, [sp, 0x24] | r2 = var_24h;
0x0000c38e ldr r3, [r2, 4] | r3 = *((r2 + 4));
0x0000c390 str r0, [r2, 8] | *((r2 + 8)) = r0;
0x0000c392 adds r3, 4 | r3 += 4;
0x0000c394 str r3, [r2, 4] | *((r2 + 4)) = r3;
0x0000c396 ldr r3, [r2] | r3 = *(r2);
0x0000c398 b 0xc0b4 | goto label_15;
| label_29:
0x0000c39a mov r8, r6 | r8 = r6;
0x0000c39c mov r6, r0 | r6 = r0;
0x0000c39e ldr r0, [pc, 0x210] |
0x0000c3a0 mov r3, r8 | r3 = r8;
0x0000c3a2 ldr r2, [pc, 0x210] |
0x0000c3a4 mov r1, r6 | r1 = r6;
0x0000c3a6 ldr r7, [sp, 0x18] | r7 = var_18h;
0x0000c3a8 add r0, pc | r0 = 0x1895e;
0x0000c3aa adds r0, 0x5c | r0 += 0x5c;
0x0000c3ac add r2, pc | r2 = 0x18966;
0x0000c3ae blx 0x32cc | fcn_000032cc ();
0x0000c3b2 b 0xbf1e | goto label_12;
| label_19:
0x0000c3b4 blx 0x357c | r0 = sprintf_chk ()
0x0000c3b8 ldr r6, [r0] | r6 = *(r0);
0x0000c3ba mov r3, r4 | r3 = r4;
0x0000c3bc ldr r0, [pc, 0x1f8] |
0x0000c3be ldr r2, [pc, 0x1fc] |
0x0000c3c0 mov r1, r6 | r1 = r6;
0x0000c3c2 add r0, pc | r0 = 0x1897e;
0x0000c3c4 add r2, pc | r2 = 0x18986;
0x0000c3c6 adds r0, 0x4c | r0 += 0x4c;
0x0000c3c8 blx 0x32cc | fcn_000032cc ();
0x0000c3ca invalid |
| label_23:
0x0000c3ce blx 0x357c | r0 = sprintf_chk ()
0x0000c3d2 ldr r6, [r0] | r6 = *(r0);
0x0000c3d4 mov r3, r5 | r3 = r5;
0x0000c3d6 ldr r0, [pc, 0x1e8] |
0x0000c3d8 ldr r2, [pc, 0x1e8] |
0x0000c3da mov r1, r6 | r1 = r6;
0x0000c3dc ldr r7, [sp, 0x18] | r7 = var_18h;
0x0000c3de add r0, pc | r0 = 0x189a4;
0x0000c3e0 adds r0, 0x4c | r0 += 0x4c;
0x0000c3e2 add r2, pc | r2 = 0x189aa;
0x0000c3e4 blx 0x32cc | fcn_000032cc ();
0x0000c3e8 b 0xc200 | goto label_10;
| label_30:
0x0000c3ea movs r3, 2 | r3 = 2;
0x0000c3ec b 0xbeca | goto label_16;
| label_59:
0x0000c3ee mov r6, r0 | r6 = r0;
0x0000c3f0 ldr r0, [pc, 0x1d4] |
0x0000c3f2 ldr r2, [pc, 0x1d8] |
0x0000c3f4 mov r1, r3 | r1 = r3;
0x0000c3f6 ldr r7, [sp, 0x18] | r7 = var_18h;
0x0000c3f8 add r0, pc | r0 = 0x189c4;
0x0000c3fa adds r0, 0x5c | r0 += 0x5c;
0x0000c3fc add r2, pc | r2 = 0x189ce;
0x0000c3fe blx 0x32cc | fcn_000032cc ();
0x0000c402 b 0xbf1e | goto label_12;
| label_55:
0x0000c404 ldr r0, [pc, 0x1c8] |
0x0000c406 mov r6, r3 | r6 = r3;
0x0000c408 ldr r2, [pc, 0x1c8] |
0x0000c40a mov r3, r5 | r3 = r5;
0x0000c40c mov r1, r6 | r1 = r6;
0x0000c40e ldr r7, [sp, 0x18] | r7 = var_18h;
0x0000c410 add r0, pc | r0 = 0x189e4;
0x0000c412 adds r0, 0x4c | r0 += 0x4c;
0x0000c414 add r2, pc | r2 = 0x189ec;
0x0000c416 blx 0x32cc | fcn_000032cc ();
0x0000c41a b 0xc200 | goto label_10;
| label_39:
0x0000c41c ldr r7, [sp, 0x18] | r7 = var_18h;
0x0000c41e mov r6, r3 | r6 = r3;
0x0000c420 b 0xc200 | goto label_10;
| label_45:
0x0000c422 ldr r2, [pc, 0x1b4] |
0x0000c424 mov r6, r0 | r6 = r0;
0x0000c426 mov r3, r5 | r3 = r5;
0x0000c428 mov r0, r5 | r0 = r5;
0x0000c42a mov r1, r6 | r1 = r6;
0x0000c42c ldr r7, [sp, 0x18] | r7 = var_18h;
0x0000c42e add r2, pc | r2 = 0x18a0c;
0x0000c430 blx 0x32cc | fcn_000032cc ();
0x0000c434 b 0xc200 | goto label_10;
| label_48:
0x0000c436 mov r6, r0 | r6 = r0;
0x0000c438 ldr r0, [pc, 0x1a0] |
0x0000c43a ldr r2, [pc, 0x1a4] |
0x0000c43c mov r3, r5 | r3 = r5;
0x0000c43e mov r1, r6 | r1 = r6;
0x0000c440 ldr r7, [sp, 0x18] | r7 = var_18h;
0x0000c442 add r0, pc | r0 = 0x18a22;
0x0000c444 adds r0, 0x4c | r0 += 0x4c;
0x0000c446 add r2, pc | r2 = 0x18a2c;
0x0000c448 blx 0x32cc | fcn_000032cc ();
0x0000c44c b 0xc200 | goto label_10;
| label_31:
0x0000c44e movs r3, 3 | r3 = 3;
0x0000c450 b 0xbeca | goto label_16;
| label_32:
0x0000c452 movs r3, 4 | r3 = 4;
0x0000c454 b 0xbeca | goto label_16;
| label_33:
0x0000c456 movs r3, 7 | r3 = 7;
0x0000c458 b 0xbeca | goto label_16;
| label_34:
0x0000c45a movs r3, 5 | r3 = 5;
0x0000c45c b 0xbeca | goto label_16;
| label_54:
0x0000c45e ldr r0, [pc, 0x184] |
0x0000c460 movs r1, 0 | r1 = 0;
0x0000c462 ldr r2, [pc, 0x184] |
0x0000c464 ldr r7, [sp, 0x18] | r7 = var_18h;
0x0000c466 add r0, pc | r0 = 0x18a50;
0x0000c468 add r2, pc | r2 = 0x18a56;
0x0000c46a adds r0, 0x4c | r0 += 0x4c;
0x0000c46c blx 0x32cc | fcn_000032cc ();
0x0000c470 mov r0, r6 | r0 = r6;
0x0000c472 movs r6, 0 | r6 = 0;
0x0000c474 blx 0x3098 | fcn_00003098 ();
0x0000c478 b 0xc200 | goto label_10;
| label_53:
0x0000c47a blx 0x357c | sprintf_chk ()
0x0000c47e mov sb, r6 | sb = r6;
0x0000c480 ldr r6, [r0] | r6 = *(r0);
0x0000c482 ldr r0, [pc, 0x168] |
0x0000c484 mov r3, r5 | r3 = r5;
0x0000c486 ldr r2, [pc, 0x168] |
0x0000c488 mov r1, r6 | r1 = r6;
0x0000c48a ldr r7, [sp, 0x18] | r7 = var_18h;
0x0000c48c add r0, pc | r0 = 0x18a7e;
0x0000c48e adds r0, 0x4c | r0 += 0x4c;
0x0000c490 add r2, pc | r2 = 0x18a86;
0x0000c492 blx 0x32cc | fcn_000032cc ();
0x0000c496 mov r0, sb | r0 = sb;
0x0000c498 blx 0x3098 | fcn_00003098 ();
0x0000c49a ldcl p6, c14, [lr, 0x2c0]! | __asm ("ldcl p6, c14, [lr, 0x2c0]!");
| label_58:
0x0000c49e mov r6, r0 | r6 = r0;
0x0000c4a0 movs r2, 0 | r2 = 0;
0x0000c4a2 mov r0, r5 | r0 = r5;
0x0000c4a4 mov r1, r3 | r1 = r3;
0x0000c4a6 ldr r7, [sp, 0x18] | r7 = var_18h;
0x0000c4a8 blx 0x32cc | fcn_000032cc ();
0x0000c4ac b 0xc200 | goto label_10;
| label_57:
0x0000c4ae mov r6, r0 | r6 = r0;
0x0000c4b0 ldr r0, [pc, 0x140] |
0x0000c4b2 ldr r2, [pc, 0x144] |
0x0000c4b4 mov r3, r5 | r3 = r5;
0x0000c4b6 mov r1, r6 | r1 = r6;
0x0000c4b8 ldr r7, [sp, 0x18] | r7 = var_18h;
0x0000c4ba add r0, pc | r0 = 0x18ab2;
0x0000c4bc adds r0, 0x4c | r0 += 0x4c;
0x0000c4be add r2, pc | r2 = 0x18abc;
0x0000c4c0 blx 0x32cc | fcn_000032cc ();
0x0000c4c4 b 0xc200 | goto label_10;
| label_60:
0x0000c4c6 movs r3, 2 | r3 = 2;
0x0000c4c8 b 0xc362 | goto label_17;
| label_61:
0x0000c4ca movs r3, 3 | r3 = 3;
0x0000c4cc b 0xc362 | goto label_17;
| label_63:
0x0000c4ce movs r3, 7 | r3 = 7;
0x0000c4d0 b 0xc362 | goto label_17;
| label_62:
0x0000c4d2 movs r3, 4 | r3 = 4;
0x0000c4d4 b 0xc362 | goto label_17;
| label_64:
0x0000c4d6 movs r3, 5 | r3 = 5;
0x0000c4d8 b 0xc362 | goto label_17;
| label_51:
0x0000c4da blx 0x31f4 | fcn_000031f4 ();
| }
0x0000c4de ldr r2, [pc, 0x11c] |
0x0000c4e0 movw r1, 0xb746 |
0x0000c4e4 movt r1, 0x7f2b | r1 = 0x7f2bb746;
0x0000c4e8 mov r0, r5 | r0 = r5;
0x0000c4ea movw r6, 0xb746 |
0x0000c4ee ldr r7, [sp, 0x18] | r7 = var_18h;
0x0000c4f0 add r2, pc | r2 = 0x18af2;
0x0000c4f2 movt r6, 0x7f2b | r6 = 0x7f2bb746;
0x0000c4f6 blx 0x32cc | fcn_000032cc ();
0x0000c4fa b 0xc200 | goto label_10;
| label_37:
0x0000c4fc ldr r0, [pc, 0x100] |
0x0000c4fe movw r1, 0xb746 |
0x0000c502 ldr r2, [pc, 0x100] |
0x0000c504 mov r3, r5 | r3 = r5;
0x0000c506 movt r1, 0x7f2b | r1 = 0x7f2bb746;
0x0000c50a movw r6, 0xb746 |
0x0000c50e add r0, pc | r0 = 0x18b12;
0x0000c510 ldr r7, [sp, 0x18] | r7 = var_18h;
0x0000c512 add r2, pc | r2 = 0x18b1c;
0x0000c514 adds r0, 0x4c | r0 += 0x4c;
0x0000c516 movt r6, 0x7f2b | r6 = 0x7f2bb746;
0x0000c51a blx 0x32cc | fcn_000032cc ();
0x0000c51e b 0xc200 | goto label_10;
| label_52:
0x0000c520 ldr r0, [pc, 0xe4] |
0x0000c522 mov r1, r6 | r1 = r6;
0x0000c524 ldr r2, [pc, 0xe4] |
0x0000c526 ldr r7, [sp, 0x18] | r7 = var_18h;
0x0000c528 add r0, pc | r0 = 0x18b34;
0x0000c52a add r2, pc | r2 = 0x18b3a;
0x0000c52c adds r0, 0x4c | r0 += 0x4c;
0x0000c52e blx 0x32cc | fcn_000032cc ();
0x0000c532 b 0xc200 | goto label_10;
| }
; 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 @ 0xc610 */
| #include <stdint.h>
|
; (fcn) fcn.0000c610 () | void fcn_0000c610 (int16_t arg_50h, int16_t arg1, int16_t arg2, int16_t arg3, int16_t arg4) {
| int16_t var_0h;
| int16_t var_4h;
| int16_t var_8h;
| int16_t var_14h;
| int16_t var_18h;
| int16_t var_1ch;
| int16_t var_20h;
| int32_t var_20h_2;
| int16_t var_28h;
| int16_t var_2ch;
| r0 = arg1;
| r1 = arg2;
| r2 = arg3;
| r3 = arg4;
0x0000c610 push.w {r4, r5, r6, r7, r8, sb, lr} |
0x0000c614 mov r5, r0 | r5 = r0;
0x0000c616 ldr r4, [pc, 0xd4] |
0x0000c618 mov r7, r3 | r7 = r3;
0x0000c61a mov r8, r1 | r8 = r1;
0x0000c61c sub sp, 0x34 |
0x0000c61e ldr r0, [pc, 0xd0] | r0 = *(0xc6f2);
0x0000c620 ldr r3, [r5, 8] | r3 = *((r5 + 8));
0x0000c622 add r4, pc | r4 = 0x18d14;
0x0000c624 ldr.w sb, [sp, 0x50] | sb = *(arg_50h);
0x0000c628 ldr r0, [r4, r0] |
0x0000c62a ands r1, r3, 1 | r1 = r3 & 1;
0x0000c62e ldr r0, [r0] | r0 = *(0x18d14);
0x0000c630 str r0, [sp, 0x2c] | var_2ch = r0;
0x0000c632 mov.w r0, 0 | r0 = 0;
| if (r1 == r3) {
0x0000c636 beq 0xc6be | goto label_0;
| }
0x0000c638 movs r3, 4 | r3 = 4;
0x0000c63a movs r4, 0 | r4 = 0;
0x0000c63c movs r0, 0x60 | r0 = 0x60;
0x0000c63e mov r6, r2 | r6 = r2;
0x0000c640 strd r4, r3, [sp, 0x20] | __asm ("strd r4, r3, [var_20h]");
0x0000c644 blx 0x3450 | strerror (r0);
0x0000c648 str r0, [sp, 0x28] | var_28h = r0;
0x0000c64a cmp r0, 0 |
| if (r0 == 0) {
0x0000c64c beq 0xc6d4 | goto label_1;
| }
0x0000c64e movs r0, 0xff | r0 = 0xff;
0x0000c650 movs r1, 1 | r1 = 1;
0x0000c652 str r4, [sp, 0x18] | var_18h = r4;
0x0000c654 str r0, [sp, 0x1c] | var_1ch = r0;
0x0000c656 blx 0x2f10 | calloc (r0, r1);
0x0000c65a mov r2, r6 | r2 = r6;
0x0000c65c str r0, [sp, 0x14] | var_14h = r0;
0x0000c65e mov r1, r7 | r1 = r7;
0x0000c660 mov r0, r5 | r0 = r5;
0x0000c662 bl 0xb180 | r0 = fcn_0000b180 (r0, r1, r2);
0x0000c666 mov r4, r0 | r4 = r0;
| if (r0 != 0) {
0x0000c668 cbnz r0, 0xc6ac | goto label_2;
| }
0x0000c66a add r4, sp, 0x14 | r4 += var_14h;
0x0000c66c mov r3, r7 | r3 = r7;
0x0000c66e str r4, [sp, 4] | var_4h = r4;
0x0000c670 add r4, sp, 0x20 | r4 += var_20h;
0x0000c672 str r4, [sp] | *(sp) = r4;
0x0000c674 mov r2, r6 | r2 = r6;
0x0000c676 mov r1, r8 | r1 = r8;
0x0000c678 mov r0, r5 | r0 = r5;
0x0000c67a str.w sb, [sp, 8] | __asm ("str.w sb, [var_8h]");
0x0000c67e bl 0xbd54 | r0 = fcn_0000bd54 (r0, r1, r2, r3, r4, r5);
0x0000c682 mov r4, r0 | r4 = r0;
0x0000c684 ldr r0, [sp, 0x14] | r0 = var_14h;
0x0000c686 blx 0x3098 | fcn_00003098 ();
0x0000c68a ldr r0, [sp, 0x28] | r0 = var_28h;
0x0000c68c blx 0x3098 | fcn_00003098 ();
| do {
0x0000c690 ldr r2, [pc, 0x60] |
0x0000c692 ldr r3, [pc, 0x5c] | r3 = *(0xc6f2);
0x0000c694 add r2, pc | r2 = 0x18d8c;
0x0000c696 ldr r3, [r2, r3] | r3 = *(0x18d8c);
0x0000c698 ldr r2, [r3] | r2 = *(0x18d8c);
0x0000c69a ldr r3, [sp, 0x2c] | r3 = var_2ch;
0x0000c69c eors r2, r3 | r2 ^= r3;
0x0000c69e mov.w r3, 0 | r3 = 0;
| if (r2 != r3) {
0x0000c6a2 bne 0xc6d0 | goto label_3;
| }
0x0000c6a4 mov r0, r4 | r0 = r4;
0x0000c6a6 add sp, 0x34 |
0x0000c6a8 pop.w {r4, r5, r6, r7, r8, sb, pc} |
| label_2:
0x0000c6ac ldr r0, [pc, 0x48] |
0x0000c6ae mov r1, r4 | r1 = r4;
0x0000c6b0 ldr r2, [pc, 0x48] |
0x0000c6b2 add r0, pc | r0 = 0x18dae;
0x0000c6b4 add r2, pc | r2 = 0x18db4;
0x0000c6b6 adds r0, 0x78 | r0 += 0x78;
0x0000c6b8 blx 0x32cc | fcn_000032cc ();
0x0000c6ba cdp p7, 0, c14, c8, c2, 7 | __asm ("cdp p7, 0, c14, c8, c2, 7");
| label_0:
0x0000c6be ldr r0, [pc, 0x40] |
0x0000c6c0 movs r4, 0x1e | r4 = 0x1e;
0x0000c6c2 ldr r2, [pc, 0x40] |
0x0000c6c4 add r0, pc | r0 = 0x18dca;
0x0000c6c6 add r2, pc | r2 = 0x18dd0;
0x0000c6c8 adds r0, 0x78 | r0 += 0x78;
0x0000c6ca blx 0x32cc | fcn_000032cc ();
0x0000c6ce b 0xc690 |
| } while (1);
| label_3:
0x0000c6d0 blx 0x31f4 | fcn_000031f4 ();
| label_1:
0x0000c6d4 blx 0x357c | r0 = sprintf_chk ()
0x0000c6d8 ldr r4, [r0] | r4 = *(r0);
0x0000c6da ldr r0, [pc, 0x2c] |
0x0000c6dc ldr r2, [pc, 0x2c] |
0x0000c6de mov r1, r4 | r1 = r4;
0x0000c6e0 add r0, pc | r0 = 0x18dee;
0x0000c6e2 add r2, pc | r2 = 0x18df2;
0x0000c6e4 adds r0, 0x78 | r0 += 0x78;
0x0000c6e6 blx 0x32cc | fcn_000032cc ();
0x0000c6e8 ldcl p7, c14, [r2, 0x344]! | __asm ("ldcl p7, c14, [r2, 0x344]!");
| }
; 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 @ 0xccb8 */
| #include <stdint.h>
|
; (fcn) fcn.0000ccb8 () | void fcn_0000ccb8 (uint32_t arg1) {
| int16_t var_0h;
| int16_t var_4h;
| int16_t var_8h;
| int16_t var_14h;
| r0 = arg1;
0x0000ccb8 svcmi 0xf0e92d | __asm ("svcmi 0xf0e92d");
0x0000ccbc sub sp, 0x1c |
0x0000ccbe ldr.w sl, [pc, 0xa4] | sl = *(0x0000cd64);
0x0000ccc2 add sl, pc | sl += pc;
0x0000ccc4 cmp r0, 0 |
| if (r0 == 0) {
0x0000ccc6 beq 0xcd5e | goto label_1;
| }
0x0000ccc8 ldr.w sb, [pc, 0x9c] |
0x0000cccc mov r7, r0 | r7 = r0;
0x0000ccce ldr r6, [r0] | r6 = *(r0);
0x0000ccd0 ldr.w fp, [pc, 0x98] |
0x0000ccd4 add sb, pc | sb = 0x19a40;
0x0000ccd6 adds r4, r6, 4 | r4 = r6 + 4;
0x0000ccd8 add.w r5, r6, 0xc | r5 = r6 + 0xc;
0x0000ccdc add.w sb, sb, 8 | sb += 8;
0x0000cce0 add fp, pc | fp = 0x19a50;
0x0000cce2 add.w r8, r6, 0x10 | r8 = r6 + 0x10;
| do {
0x0000cce6 ldr r3, [r4] | r3 = *(r4);
0x0000cce8 movs r2, 0 | r2 = 0;
0x0000ccea str r2, [r4], 4 | *(r4) = r2;
| r4 += 4;
0x0000ccee mov r0, r3 | r0 = r3;
0x0000ccf0 str r3, [sp, 0x14] | var_14h = r3;
| if (r3 != 0) {
0x0000ccf2 cbz r3, 0xcd00 |
0x0000ccf4 bl 0x1125c | fcn_0001125c (r0);
0x0000ccf8 ldr r3, [sp, 0x14] | r3 = var_14h;
0x0000ccfa mov r0, r3 | r0 = r3;
0x0000ccfc blx 0x3098 | fcn_00003098 ();
| }
0x0000cd00 ldr r1, [r5, 4]! | r1 = *((r5 += 4));
0x0000cd04 mov r0, r6 | r0 = r6;
| if (r1 != 0) {
0x0000cd06 cbz r1, 0xcd0e |
0x0000cd08 bl 0xf4e0 | r0 = fcn_0000f4e0 (r0, r1);
| if (r0 != 0) {
0x0000cd0c cbnz r0, 0xcd22 | goto label_2;
| }
| }
| label_0:
0x0000cd0e cmp r4, r8 |
0x0000cd10 bne 0xcce6 |
| } while (r4 != r8);
0x0000cd12 movs r3, 0 | r3 = 0;
0x0000cd14 mov r0, r6 | r0 = r6;
0x0000cd16 str r3, [r7] | *(r7) = r3;
0x0000cd18 add sp, 0x1c |
0x0000cd1a pop.w {r4, r5, r6, r7, r8, sb, sl, fp, lr} |
0x0000cd1e b.w 0x3094 | void (*0x3094)() ();
| label_2:
0x0000cd22 ldr r3, [pc, 0x4c] |
0x0000cd24 ldr.w r3, [sl, r3] | r3 = *((sl + r3));
0x0000cd28 ldr r3, [r3] | r3 = *(0xcd72);
0x0000cd2a str r3, [sp, 0x14] | var_14h = r3;
0x0000cd2c blx 0x357c | r0 = sprintf_chk ()
0x0000cd30 ldr r0, [r0] | r0 = *(r0);
0x0000cd32 blx 0x3468 | ext2fs_add_journal_inode3 ();
0x0000cd36 ldr r3, [sp, 0x14] | r3 = var_14h;
0x0000cd38 movs r1, 1 | r1 = 1;
0x0000cd3a ldr r2, [pc, 0x38] |
0x0000cd3c str r0, [sp, 8] | var_8h = r0;
0x0000cd3e mov r0, r3 | r0 = r3;
0x0000cd40 movw r3, 0x161 | r3 = 0x161;
0x0000cd44 add r2, pc | r2 = 0x19abe;
0x0000cd46 str r3, [sp] | *(sp) = r3;
0x0000cd48 str.w sb, [sp, 4] | __asm ("str.w sb, [var_4h]");
0x0000cd4c mov r3, fp | r3 = fp;
0x0000cd4e blx 0x3684 | ext2fs_write_inode ();
0x0000cd50 ldc p8, c6, [sl], {0x28} | __asm ("ldc p8, c6, [sl], {0x28}");
0x0000cd54 blx 0x3098 | fcn_00003098 ();
0x0000cd58 movs r3, 0 | r3 = 0;
0x0000cd5a str r3, [r5] | *(r5) = r3;
0x0000cd5c b 0xcd0e | goto label_0;
| label_1:
0x0000cd5e add sp, 0x1c |
0x0000cd60 pop.w {r4, r5, r6, r7, r8, sb, sl, fp, pc} |
| }
; 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 |
| }
; 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 @ 0xdd14 */
| #include <stdint.h>
|
; (fcn) fcn.0000dd14 () | void fcn_0000dd14 (int16_t arg_814h, int16_t arg1) {
| int16_t var_ch_2;
| int16_t var_14h;
| r0 = arg1;
0x0000dd14 mvnsmi lr, 0xb4000 | __asm ("mvnsmi lr, 0xb4000");
0x0000dd18 mov sb, r0 | sb = r0;
0x0000dd1a ldr r0, [pc, 0xdc] |
0x0000dd1c subw sp, sp, 0x81c | __asm ("subw sp, sp, 0x81c");
0x0000dd20 movs r1, 0 | r1 = 0;
0x0000dd22 mov r6, sp | r6 = sp;
0x0000dd24 ldr r3, [pc, 0xd4] | r3 = *(0xddfc);
0x0000dd26 add r2, sp, 0xc | r2 += var_ch_2;
0x0000dd28 add r0, pc | r0 = 0x1bb26;
0x0000dd2a ldr r3, [r0, r3] |
0x0000dd2c ldr r0, [pc, 0xd0] |
0x0000dd2e ldr r3, [r3] | r3 = *(0x1bb26);
0x0000dd30 str.w r3, [sp, 0x814] | __asm ("str.w r3, [arg_814h]");
0x0000dd34 mov.w r3, 0 | r3 = 0;
0x0000dd38 strd r1, r1, [r6] | __asm ("strd r1, r1, [r6]");
0x0000dd3c add r0, pc | r0 = 0x1bb40;
0x0000dd3e strd r1, r1, [r6, 8] | __asm ("strd r1, r1, [r6, 8]");
0x0000dd42 str r1, [r6, 0x10] | *((r6 + 0x10)) = r1;
0x0000dd44 bl 0xd7cc | r0 = fcn_0000d7cc (r0, r1, r2);
0x0000dd48 mov r8, r0 | r8 = r0;
| if (r0 != 0) {
0x0000dd4a cbz r0, 0xdd6c |
| label_0:
0x0000dd4c ldr r2, [pc, 0xb4] |
0x0000dd4e ldr r3, [pc, 0xac] | r3 = *(0xddfe);
0x0000dd50 add r2, pc | r2 = 0x1bb58;
0x0000dd52 ldr r3, [r2, r3] | r3 = *(0x1bb58);
0x0000dd54 ldr r2, [r3] | r2 = *(0x1bb58);
0x0000dd56 ldr.w r3, [sp, 0x814] | r3 = *(arg_814h);
0x0000dd5a eors r2, r3 | r2 ^= r3;
0x0000dd5c mov.w r3, 0 | r3 = 0;
| if (r2 != r3) {
0x0000dd60 bne 0xdde2 | goto label_1;
| }
0x0000dd62 mov r0, r8 | r0 = r8;
0x0000dd64 addw sp, sp, 0x81c | __asm ("addw sp, sp, 0x81c");
0x0000dd68 pop.w {r4, r5, r6, r7, r8, sb, pc} |
| }
0x0000dd6c blx 0x357c | sprintf_chk ()
0x0000dd70 ldr r1, [pc, 0x94] |
0x0000dd72 mov r4, r0 | r4 = r0;
0x0000dd74 str.w r8, [r0] | __asm ("str.w r8, [r0]");
0x0000dd78 ldr.w r0, [sb, 4] | r0 = *((sb + 4));
0x0000dd7c add r1, pc | r1 = 0x1bb88;
0x0000dd7e blx 0x3004 | r0 = fcn_00003004 ();
0x0000dd82 mov r5, r0 | r5 = r0;
| if (r0 == 0) {
0x0000dd84 cbz r0, 0xdde6 | goto label_2;
| }
0x0000dd86 ldr.w r3, [sb, 0x10] | r3 = *((sb + 0x10));
0x0000dd8a add r7, sp, 0x14 | r7 += var_14h;
0x0000dd8c adds r3, 1 | r3++;
0x0000dd8e str.w r3, [sb, 0x10] | __asm ("str.w r3, [sb, 0x10]");
0x0000dd92 b 0xddae |
| while (r0 == 0) {
0x0000dd94 mov r2, r5 | r2 = r5;
0x0000dd96 mov.w r1, 0x800 | r1 = 0x800;
0x0000dd9a mov r0, r7 | r0 = r7;
0x0000dd9c blx 0x30bc | r0 = fcn_000030bc ();
| if (r0 == 0) {
0x0000dda0 cbz r0, 0xddb8 | goto label_3;
| }
0x0000dda2 mov r1, r6 | r1 = r6;
0x0000dda4 mov r0, r7 | r0 = r7;
0x0000dda6 bl 0xd914 | r0 = fcn_0000d914 (r0, r1);
0x0000ddaa mov r4, r0 | r4 = r0;
| if (r0 != 0) {
0x0000ddac cbnz r0, 0xddc6 | goto label_4;
| }
0x0000ddae mov r0, r5 | r0 = r5;
0x0000ddb0 blx 0x34c8 | r0 = ext2fs_update_bb_inode ();
0x0000ddb4 cmp r0, 0 |
0x0000ddb6 beq 0xdd94 |
| }
| label_3:
0x0000ddb8 ldr r3, [r6, 0xc] | r3 = *((r6 + 0xc));
0x0000ddba mov r0, r5 | r0 = r5;
0x0000ddbc str.w r3, [sb, 0x14] | __asm ("str.w r3, [sb, 0x14]");
0x0000ddc0 blx 0x369c | ext2fs_unmark_generic_bmap ();
0x0000ddc4 b 0xdd4c | goto label_0;
| label_4:
0x0000ddc6 ldr r3, [pc, 0x44] |
0x0000ddc8 add r3, pc |
0x0000ddca ldr r3, [r3] | r3 = *(0x1bbda);
| if (r3 != 0) {
0x0000ddcc cbz r3, 0xddd8 |
0x0000ddce ldr r2, [r6, 8] | r2 = *((r6 + 8));
0x0000ddd0 mov r1, r4 | r1 = r4;
0x0000ddd2 ldr.w r0, [sb, 4] | r0 = *((sb + 4));
0x0000ddd6 blx r3 | uint32_t (*r3)(uint32_t, uint32_t, uint32_t) (r0, r1, r2);
| }
0x0000ddd8 mov r0, r5 | r0 = r5;
0x0000ddda mov r8, r4 | r8 = r4;
0x0000dddc blx 0x369c | ext2fs_unmark_generic_bmap ();
0x0000dde0 b 0xdd4c | goto label_0;
| label_1:
0x0000dde2 blx 0x31f4 | fcn_000031f4 ();
| label_2:
0x0000dde6 ldr.w r8, [r4] | r8 = *(r4);
0x0000ddea cmp.w r8, 0 |
0x0000ddee it eq |
| if (r8 != 0) {
0x0000ddf0 moveq r8, 2 | r8 = 2;
| }
0x0000ddf4 b 0xdd4c | 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 @ 0xde10 */
| #include <stdint.h>
|
; (fcn) fcn.0000de10 () | void fcn_0000de10 (int16_t arg1, int16_t arg2) {
| int16_t var_4h;
| r0 = arg1;
| r1 = arg2;
0x0000de10 push.w {r4, r5, r6, r7, r8, sb, lr} |
0x0000de14 mov r6, r0 | r6 = r0;
0x0000de16 sub sp, 0xc |
0x0000de18 movs r0, 0x1c | r0 = 0x1c;
0x0000de1a mov r7, r1 | r7 = r1;
0x0000de1c blx 0x3450 | r0 = strerror (r0);
0x0000de20 cmp r0, 0 |
| if (r0 == 0) {
0x0000de22 beq 0xdef0 | goto label_6;
| }
0x0000de24 movw r1, 0x6019 |
0x0000de28 movs r2, 0 | r2 = 0;
0x0000de2a mov r4, r0 | r4 = r0;
0x0000de2c movt r1, 0xaaca | r1 = 0xaaca6019;
0x0000de30 strd r2, r2, [r0, 4] | __asm ("strd r2, r2, [r0, 4]");
0x0000de34 strd r2, r2, [r0, 0xc] | __asm ("strd r2, r2, [r0, 0xc]");
0x0000de38 strd r2, r2, [r0, 0x14] | __asm ("strd r2, r2, [r0, 0x14]");
0x0000de3c mov r0, r6 | r0 = r6;
0x0000de3e str r1, [r4] | *(r4) = r1;
0x0000de40 blx 0x3504 | e2p_os2string ();
0x0000de44 ldrb r3, [r6] | r3 = *(r6);
0x0000de46 add.w r8, r0, 1 | r8 = r0 + 1;
0x0000de4a cmp r3, 0x7e |
0x0000de4c beq 0xde7c |
| while (r3 != 0x2f) {
| label_0:
0x0000de4e mov r0, r8 | r0 = r8;
0x0000de50 blx 0x3450 | r0 = strerror (r0);
0x0000de54 mov r5, r0 | r5 = r0;
0x0000de56 cmp r0, 0 |
| if (r0 == 0) {
0x0000de58 beq 0xdef4 | goto label_7;
| }
0x0000de5a mov r2, r8 | r2 = r8;
0x0000de5c mov r1, r6 | r1 = r6;
0x0000de5e blx 0x30e0 | fcn_000030e0 ();
| label_1:
0x0000de62 ldr r1, [pc, 0xe4] |
0x0000de64 mov r0, r5 | r0 = r5;
0x0000de66 str r5, [r4, 4] | *((r4 + 4)) = r5;
0x0000de68 add r1, pc | r1 = 0x1bdb6;
0x0000de6a blx 0x2f98 | r0 = fcn_00002f98 ();
| if (r0 != 0) {
0x0000de6e cbnz r0, 0xdeb4 | goto label_8;
| }
| label_2:
0x0000de70 movs r5, 0 | r5 = 0;
0x0000de72 str r4, [r7] | *(r7) = r4;
| label_3:
0x0000de74 mov r0, r5 | r0 = r5;
0x0000de76 add sp, 0xc |
0x0000de78 pop.w {r4, r5, r6, r7, r8, sb, pc} |
0x0000de7c ldrb r3, [r6, 1] | r3 = *((r6 + 1));
0x0000de7e cmp r3, 0x2f |
0x0000de80 bne 0xde4e |
| }
0x0000de82 ldr r0, [pc, 0xc8] |
0x0000de84 add r0, pc | r0 = 0x1bdd6;
0x0000de86 blx 0x33e8 | r0 = fcn_000033e8 ();
0x0000de8a cmp r0, 0 |
| if (r0 == 0) {
0x0000de8c beq 0xde4e | goto label_0;
| }
0x0000de8e str r0, [sp, 4] | var_4h = r0;
0x0000de90 blx 0x3504 | r0 = e2p_os2string ();
0x0000de94 mov sb, r0 | sb = r0;
0x0000de96 add r0, r8 | r0 += r8;
0x0000de98 blx 0x3450 | strerror (r0);
0x0000de9c ldr r1, [sp, 4] | r1 = var_4h;
0x0000de9e mov r5, r0 | r5 = r0;
| if (r0 == 0) {
0x0000dea0 cbz r0, 0xdef4 | goto label_7;
| }
0x0000dea2 mov r2, sb | r2 = sb;
0x0000dea4 blx 0x30e0 | fcn_000030e0 ();
0x0000dea8 adds r1, r6, 1 | r1 = r6 + 1;
0x0000deaa add.w r0, r5, sb | r0 = r5 + sb;
0x0000deae blx 0x3378 | pread64 ();
0x0000deb2 b 0xde62 | goto label_1;
| label_8:
0x0000deb4 ldr r3, [r4, 0xc] | r3 = *((r4 + 0xc));
0x0000deb6 lsls r3, r3, 0x1d | r3 <<= 0x1d;
| if (r3 < r3) {
0x0000deb8 bmi 0xde70 | goto label_2;
| }
0x0000deba ldr r3, [r4, 0x14] | r3 = *((r4 + 0x14));
0x0000debc cmp r3, 0 |
| if (r3 != 0) {
0x0000debe bne 0xde70 | goto label_2;
| }
0x0000dec0 mov r0, r4 | r0 = r4;
0x0000dec2 bl 0xdd14 | r0 = fcn_0000dd14 (r0, r1);
0x0000dec6 mov r5, r0 | r5 = r0;
0x0000dec8 cmp r0, 0 |
| if (r0 == 0) {
0x0000deca beq 0xde70 | goto label_2;
| }
0x0000decc ldr r0, [r4, 0x14] | r0 = *((r4 + 0x14));
| if (r0 != 0) {
0x0000dece cbz r0, 0xdee2 |
0x0000ded0 ldr r2, [r0] | r2 = *(r0);
0x0000ded2 movw r3, 0x6001 |
0x0000ded6 movt r3, 0xaaca | r3 = 0xaaca6001;
0x0000deda cmp r2, r3 |
| if (r2 != r3) {
0x0000dedc bne 0xdee2 | goto label_9;
| }
0x0000dede bl 0xd6c4 | fcn_0000d6c4 (r0, r1);
| }
| label_9:
0x0000dee2 ldr r0, [r4, 4] | r0 = *((r4 + 4));
0x0000dee4 blx 0x3098 | fcn_00003098 ();
0x0000dee8 mov r0, r4 | r0 = r4;
0x0000deea blx 0x3098 | fcn_00003098 ();
0x0000deee b 0xde74 | goto label_3;
| label_6:
0x0000def0 movs r5, 0xc | r5 = 0xc;
0x0000def2 b 0xde74 | goto label_3;
| label_7:
0x0000def4 ldr r5, [r4, 0x14] | r5 = *((r4 + 0x14));
| if (r5 != 0) {
0x0000def6 cbz r5, 0xdf06 |
0x0000def8 ldr r6, [r5] | r6 = *(r5);
0x0000defa movw r3, 0x6001 |
0x0000defe movt r3, 0xaaca | r3 = 0xaaca6001;
0x0000df02 cmp r6, r3 |
| if (r6 == r3) {
0x0000df04 beq 0xdf1a | goto label_10;
| }
| }
| label_5:
0x0000df06 ldr r0, [r4, 4] | r0 = *((r4 + 4));
0x0000df08 blx 0x3098 | fcn_00003098 ();
0x0000df0c mov r0, r4 | r0 = r4;
0x0000df0e blx 0x3098 | fcn_00003098 ();
0x0000df12 blx 0x357c | r0 = sprintf_chk ()
0x0000df16 ldr r5, [r0] | r5 = *(r0);
0x0000df18 b 0xde74 | goto label_3;
| label_10:
0x0000df1a ldr r0, [r5, 4] | r0 = *((r5 + 4));
0x0000df1c blx 0x3098 | fcn_00003098 ();
0x0000df20 ldr r0, [r5, 8] | r0 = *((r5 + 8));
0x0000df22 blx 0x3098 | fcn_00003098 ();
0x0000df26 ldr r0, [r5, 0x14] | r0 = *((r5 + 0x14));
| if (r0 == 0) {
| do {
| label_4:
0x0000df28 cbz r0, 0xdf3e | goto label_11;
| }
0x0000df2a ldr r3, [r0] | r3 = *(r0);
0x0000df2c ldr r7, [r0, 0x1c] | r7 = *((r0 + 0x1c));
0x0000df2e cmp r3, r6 |
| if (r3 == r6) {
0x0000df30 beq 0xdf36 | goto label_12;
| }
0x0000df32 mov r0, r7 | r0 = r7;
0x0000df34 b 0xdf28 |
| } while (1);
| label_12:
0x0000df36 bl 0xd6c4 | fcn_0000d6c4 (r0, r1);
0x0000df3a mov r0, r7 | r0 = r7;
0x0000df3c b 0xdf28 | goto label_4;
| label_11:
0x0000df3e mov r0, r5 | r0 = r5;
0x0000df40 blx 0x3098 | fcn_00003098 ();
0x0000df44 b 0xdf06 | goto label_5;
| }
; 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 @ 0xe318 */
| #include <stdint.h>
|
; (fcn) fcn.0000e318 () | void fcn_0000e318 (int16_t arg1, int16_t arg2) {
| int32_t var_0h;
| int32_t var_0h_2;
| int16_t var_ch;
| int16_t var_10h;
| int16_t var_14h;
| int16_t var_18h;
| int16_t var_1ch;
| int16_t var_24h;
| int16_t var_28h;
| int16_t var_38h;
| int16_t var_84h;
| r0 = arg1;
| r1 = arg2;
0x0000e318 push.w {r4, r5, r6, r7, r8, sb, sl, fp, lr} |
0x0000e31c mov r3, r0 | r3 = r0;
0x0000e31e sub sp, 0x8c |
0x0000e320 ldr r2, [pc, 0x2c4] |
0x0000e322 mov r4, r3 | r4 = r3;
0x0000e324 movs r0, 8 | r0 = 8;
0x0000e326 str r3, [sp, 0xc] | var_ch = r3;
0x0000e328 ldr r3, [pc, 0x2c0] | r3 = *(0xe5ec);
0x0000e32a add r2, pc | r2 = 0x1c916;
0x0000e32c str r1, [sp, 0x18] | var_18h = r1;
0x0000e32e ldr r3, [r2, r3] |
0x0000e330 ldr r3, [r3] | r3 = *(0x1c916);
0x0000e332 str r3, [sp, 0x84] | var_84h = r3;
0x0000e334 mov.w r3, 0 | r3 = 0;
0x0000e338 blx 0x3450 | strerror (r0);
0x0000e33c str r0, [sp, 0x14] | var_14h = r0;
0x0000e33e cmp r0, 0 |
| if (r0 == 0) {
0x0000e340 beq.w 0xe59a | goto label_11;
| }
0x0000e344 movw r3, 0x6012 |
0x0000e348 movs r6, 0 | r6 = 0;
0x0000e34a movt r3, 0xaaca | r3 = 0xaaca6012;
0x0000e34e adds r2, r0, 4 | r2 = r0 + 4;
0x0000e350 strd r3, r6, [r0] | __asm ("strd r3, r6, [r0]");
0x0000e354 cmp r4, 0 |
| if (r4 == 0) {
0x0000e356 beq.w 0xe4ea | goto label_12;
| }
0x0000e35a ldr r3, [r4] | r3 = *(r4);
0x0000e35c cmp r3, 0 |
| if (r3 == 0) {
0x0000e35e beq.w 0xe596 | goto label_13;
| }
0x0000e362 ldr.w fp, [pc, 0x28c] |
0x0000e366 str r2, [sp, 0x10] | var_10h = r2;
0x0000e368 ldr r2, [pc, 0x288] |
0x0000e36a add fp, pc | fp = 0x1c960;
0x0000e36c add r2, pc | r2 = 0x1c964;
0x0000e36e str r2, [sp, 0x1c] | var_1ch = r2;
| label_2:
0x0000e370 ldrb r3, [r3] | r3 = *(r3);
0x0000e372 cmp r3, 0 |
| if (r3 == 0) {
0x0000e374 beq.w 0xe4c8 | goto label_14;
| }
| if (r6 == 0) {
0x0000e378 cbz r6, 0xe392 | goto label_15;
| }
0x0000e37a ldr r0, [r6] | r0 = *(r6);
0x0000e37c mov r4, r6 | r4 = r6;
| if (r0 == 0) {
0x0000e37e cbz r0, 0xe38c | goto label_16;
| }
| do {
0x0000e380 blx 0x3098 | fcn_00003098 ();
0x0000e384 ldr r0, [r4, 4]! | r0 = *((r4 += 4));
0x0000e388 cmp r0, 0 |
0x0000e38a bne 0xe380 |
| } while (r0 != 0);
| label_16:
0x0000e38c mov r0, r6 | r0 = r6;
0x0000e38e blx 0x3098 | fcn_00003098 ();
| label_15:
0x0000e392 ldr r3, [sp, 0xc] | r3 = var_ch;
0x0000e394 mov.w r8, 0 | r8 = 0;
0x0000e398 mov sl, r8 | sl = r8;
0x0000e39a mov sb, r8 | sb = r8;
0x0000e39c ldr r7, [r3] | r7 = *(r3);
0x0000e39e mov r0, r7 | r0 = r7;
0x0000e3a0 blx 0x33d0 | r0 = fcn_000033d0 ();
0x0000e3a4 mov r6, r0 | r6 = r0;
0x0000e3a6 cmp r0, 0 |
| if (r0 == 0) {
0x0000e3a8 beq.w 0xe51e | goto label_17;
| }
| do {
| label_3:
0x0000e3ac mov r0, r6 | r0 = r6;
0x0000e3ae blx 0x37b0 | r0 = uuid_parse ();
0x0000e3b2 cmp r0, 0 |
| if (r0 == 0) {
0x0000e3b4 beq 0xe444 | goto label_18;
| }
| label_1:
0x0000e3b6 ldrb r4, [r0, 0xb] | r4 = *((r0 + 0xb));
0x0000e3b8 add.w r5, r0, 0xb | r5 = r0 + 0xb;
| if (r4 == 0) {
0x0000e3bc cbz r4, 0xe3e8 | goto label_19;
| }
0x0000e3be blx 0x34a4 | r0 = set_undo_io_backing_manager ();
0x0000e3c2 ldr r1, [r0] | r1 = *(r0);
0x0000e3c4 mov r2, r5 | r2 = r5;
| label_0:
0x0000e3c6 ldrh.w r3, [r1, r4, lsl 1] | offset_0 = r4 << 1;
| r3 = *((r1 + offset_0));
0x0000e3ca cmp r4, 0x2d |
0x0000e3cc it ne |
| if (r4 != 0x2d) {
0x0000e3ce cmpne r4, 0x5f | __asm ("cmpne r4, 0x5f");
| }
0x0000e3d0 ite ne |
| if (r4 == 0x2d) {
0x0000e3d2 movne r4, 1 | r4 = 1;
| }
| if (r4 != 0x2d) {
0x0000e3d4 moveq r4, 0 | r4 = 0;
| }
0x0000e3d6 eor r3, r3, 8 | r3 ^= 8;
0x0000e3da ands.w r4, r4, r3, lsr 3 | r4 &= (r3 >> 3);
0x0000e3de bne 0xe3ac |
| } while (r4 != r4);
0x0000e3e0 ldrb r4, [r2, 1]! | r4 = *((r2 += 1));
0x0000e3e4 cmp r4, 0 |
| if (r4 != 0) {
0x0000e3e6 bne 0xe3c6 | goto label_0;
| }
| label_19:
0x0000e3e8 mov r0, r7 | r0 = r7;
0x0000e3ea blx 0x3504 | r0 = e2p_os2string ();
0x0000e3ee mov r4, r0 | r4 = r0;
0x0000e3f0 mov r0, r5 | r0 = r5;
0x0000e3f2 blx 0x3504 | e2p_os2string ();
0x0000e3f6 add r0, r4 | r0 += r4;
0x0000e3f8 adds r0, 2 | r0 += 2;
0x0000e3fa blx 0x3450 | r0 = strerror (r0);
0x0000e3fe mov r4, r0 | r4 = r0;
0x0000e400 cmp r0, 0 |
| if (r0 == 0) {
0x0000e402 beq.w 0xe5a8 | goto label_20;
| }
0x0000e406 mov r3, fp | r3 = fp;
0x0000e408 mov.w r2, -1 | r2 = -1;
0x0000e40c movs r1, 1 | r1 = 1;
0x0000e40e strd r7, r5, [sp] | __asm ("strd r7, r5, [sp]");
0x0000e412 blx 0x3594 | ext2fs_open2 ();
0x0000e416 add r1, sp, 0x28 | r1 += var_28h;
0x0000e418 mov r0, r4 | r0 = r4;
0x0000e41a blx 0x3498 | r0 = exit (r0);
0x0000e41e cmp r0, 0 |
| if (r0 < 0) {
0x0000e420 blt 0xe4f4 | goto label_21;
| }
0x0000e422 ldr r3, [sp, 0x38] | r3 = var_38h;
0x0000e424 and r3, r3, 0xf000 | r3 &= 0xf000;
0x0000e428 cmp.w r3, 0x8000 |
| if (r3 != 0x8000) {
0x0000e42c bne 0xe4f4 | goto label_21;
| }
0x0000e42e cmp r8, sl |
| if (r8 >= sl) {
0x0000e430 bge 0xe4fc | goto label_22;
| }
| label_4:
0x0000e432 str.w r4, [sb, r8, lsl 2] | __asm ("str.w r4, [sb, r8, lsl 2]");
0x0000e436 mov r0, r6 | r0 = r6;
0x0000e438 add.w r8, r8, 1 | r8++;
0x0000e43c blx 0x37b0 | r0 = uuid_parse ();
0x0000e440 cmp r0, 0 |
| if (r0 != 0) {
0x0000e442 bne 0xe3b6 | goto label_1;
| }
| label_18:
0x0000e444 mov r4, r0 | r4 = r0;
0x0000e446 cmp.w sb, 0 |
| if (sb == 0) {
0x0000e44a beq 0xe514 | goto label_23;
| }
0x0000e44c ldr r3, [pc, 0x1a8] |
0x0000e44e movs r2, 4 | r2 = 4;
0x0000e450 mov r1, r8 | r1 = r8;
0x0000e452 mov r0, sb | r0 = sb;
0x0000e454 add r3, pc | r3 = 0x1ca50;
0x0000e456 blx 0x3858 | ext2fs_link ();
0x0000e45a mov r0, r6 | r0 = r6;
0x0000e45c str.w r4, [sb, r8, lsl 2] | __asm ("str.w r4, [sb, r8, lsl 2]");
0x0000e460 blx 0x3978 | ext2fs_badblocks_list_iterate ();
0x0000e464 ldr.w r0, [sb] | r0 = *(sb);
0x0000e468 cmp r0, 0 |
| if (r0 == 0) {
0x0000e46a beq.w 0xe582 | goto label_24;
| }
0x0000e46e ldr r4, [sp, 0x10] | r4 = var_10h;
0x0000e470 mov r5, sb | r5 = sb;
0x0000e472 add r7, sp, 0x24 | r7 += var_24h;
| do {
0x0000e474 mov r1, r7 | r1 = r7;
0x0000e476 bl 0xde10 | r0 = fcn_0000de10 (r0, r1);
0x0000e47a cmp r0, 0xd |
| if (r0 != 0xd) {
0x0000e47c beq 0xe48a |
0x0000e47e cmp r0, 0 |
| if (r0 != 0) {
0x0000e480 bne 0xe544 | goto label_25;
| }
0x0000e482 ldr r3, [sp, 0x24] | r3 = var_24h;
0x0000e484 str r3, [r4] | *(r4) = r3;
0x0000e486 add.w r4, r3, 0x18 | r4 = r3 + 0x18;
| }
0x0000e48a ldr r0, [r5, 4]! | r0 = *((r5 += 4));
0x0000e48e cmp r0, 0 |
0x0000e490 bne 0xe474 |
| } while (r0 != 0);
0x0000e492 ldr r3, [sp, 0xc] | r3 = var_ch;
0x0000e494 mov r6, sb | r6 = sb;
0x0000e496 str r4, [sp, 0x10] | var_10h = r4;
0x0000e498 ldr r5, [r3] | r5 = *(r3);
| label_6:
0x0000e49a mov r1, r7 | r1 = r7;
0x0000e49c mov r0, r5 | r0 = r5;
0x0000e49e bl 0xde10 | r0 = fcn_0000de10 (r0, r1);
0x0000e4a2 cmp r0, 0xd |
0x0000e4a4 it ne |
| if (r0 != 0xd) {
0x0000e4a6 cmpne r0, 2 | __asm ("cmpne r0, 2");
| }
0x0000e4a8 mov r4, r0 | r4 = r0;
| if (r0 != 0xd) {
0x0000e4aa beq 0xe4ba |
0x0000e4ac cmp r0, 0 |
| if (r0 != 0) {
0x0000e4ae bne 0xe58e | goto label_26;
| }
0x0000e4b0 ldr r3, [sp, 0x24] | r3 = var_24h;
0x0000e4b2 ldr r2, [sp, 0x10] | r2 = var_10h;
0x0000e4b4 str r3, [r2] | *(r2) = r3;
0x0000e4b6 adds r3, 0x18 | r3 += 0x18;
0x0000e4b8 str r3, [sp, 0x10] | var_10h = r3;
| }
| label_5:
0x0000e4ba ldr r2, [sp, 0xc] | r2 = var_ch;
0x0000e4bc ldr r3, [r2, 4]! | r3 = *((r2 += 4));
0x0000e4c0 str r2, [sp, 0xc] | var_ch = r2;
0x0000e4c2 cmp r3, 0 |
| if (r3 != 0) {
0x0000e4c4 bne.w 0xe370 | goto label_2;
| }
| label_14:
0x0000e4c8 ldr r3, [sp, 0x14] | r3 = var_14h;
0x0000e4ca ldr r3, [r3, 4] | r3 = *((r3 + 4));
0x0000e4cc cmp r3, 0 |
| if (r3 == 0) {
0x0000e4ce beq 0xe58c | goto label_27;
| }
| if (r6 == 0) {
0x0000e4d0 cbz r6, 0xe4ea | goto label_12;
| }
0x0000e4d2 ldr r0, [r6] | r0 = *(r6);
0x0000e4d4 mov r4, r6 | r4 = r6;
| if (r0 == 0) {
0x0000e4d6 cbz r0, 0xe4e4 | goto label_28;
| }
| do {
0x0000e4d8 blx 0x3098 | fcn_00003098 ();
0x0000e4dc ldr r0, [r4, 4]! | r0 = *((r4 += 4));
0x0000e4e0 cmp r0, 0 |
0x0000e4e2 bne 0xe4d8 |
| } while (r0 != 0);
| label_28:
0x0000e4e4 mov r0, r6 | r0 = r6;
0x0000e4e6 blx 0x3098 | fcn_00003098 ();
| label_12:
0x0000e4ea ldrd r2, r3, [sp, 0x14] | __asm ("ldrd r2, r3, [var_18h]");
0x0000e4ee movs r4, 0 | r4 = 0;
0x0000e4f0 str r2, [r3] | *(r3) = r2;
0x0000e4f2 b 0xe566 | goto label_9;
| label_21:
0x0000e4f4 mov r0, r4 | r0 = r4;
0x0000e4f6 blx 0x3098 | fcn_00003098 ();
0x0000e4fa b 0xe3ac | goto label_3;
| label_22:
0x0000e4fc add.w r1, sl, 0xb | r1 = sl + 0xb;
0x0000e500 mov r0, sb | r0 = sb;
0x0000e502 lsls r1, r1, 2 | r1 <<= 2;
0x0000e504 add.w sl, sl, 0xa | sl += 0xa;
0x0000e508 blx 0x3254 | r0 = fcn_00003254 ();
0x0000e50c cmp r0, 0 |
| if (r0 == 0) {
0x0000e50e beq 0xe5a2 | goto label_29;
| }
0x0000e510 mov sb, r0 | sb = r0;
0x0000e512 b 0xe432 | goto label_4;
| label_23:
0x0000e514 mov r0, r6 | r0 = r6;
0x0000e516 mov r6, sb | r6 = sb;
0x0000e518 blx 0x3978 | ext2fs_badblocks_list_iterate ();
0x0000e51c b 0xe4ba | goto label_5;
| label_17:
0x0000e51e blx 0x357c | r0 = sprintf_chk ()
0x0000e522 ldr r4, [r0] | r4 = *(r0);
0x0000e524 cmp r4, 0 |
| if (r4 == 0) {
0x0000e526 beq 0xe4ba | goto label_5;
| }
0x0000e528 ldr r3, [sp, 0xc] | r3 = var_ch;
0x0000e52a cmp r4, 0x14 |
0x0000e52c ldr r5, [r3] | r5 = *(r3);
0x0000e52e mov r3, r5 | r3 = r5;
| if (r4 != 0x14) {
0x0000e530 beq 0xe540 |
| label_10:
0x0000e532 ldr r1, [sp, 0x1c] | r1 = var_1ch;
0x0000e534 mov r0, r3 | r0 = r3;
0x0000e536 mov r5, r3 | r5 = r3;
0x0000e538 blx 0x2f98 | r0 = fcn_00002f98 ();
0x0000e53c mov r6, r0 | r6 = r0;
| if (r0 != 0) {
0x0000e53e cbnz r0, 0xe560 | goto label_8;
| }
| }
0x0000e540 add r7, sp, 0x24 | r7 += var_24h;
0x0000e542 b 0xe49a | goto label_6;
| label_25:
0x0000e544 mov r4, r0 | r4 = r0;
| label_7:
0x0000e546 ldr.w r0, [sb] | r0 = *(sb);
0x0000e54a mov r5, sb | r5 = sb;
| if (r0 == 0) {
0x0000e54c cbz r0, 0xe55a | goto label_30;
| }
| do {
0x0000e54e blx 0x3098 | fcn_00003098 ();
0x0000e552 ldr r0, [r5, 4]! | r0 = *((r5 += 4));
0x0000e556 cmp r0, 0 |
0x0000e558 bne 0xe54e |
| } while (r0 != 0);
| label_30:
0x0000e55a mov r0, sb | r0 = sb;
0x0000e55c blx 0x3098 | fcn_00003098 ();
| do {
| label_8:
0x0000e560 ldr r0, [sp, 0x14] | r0 = var_14h;
0x0000e562 bl 0xe28c | fcn_0000e28c (r0);
| label_9:
0x0000e566 ldr r2, [pc, 0x94] |
0x0000e568 ldr r3, [pc, 0x80] | r3 = *(0xe5ec);
0x0000e56a add r2, pc | r2 = 0x1cb6c;
0x0000e56c ldr r3, [r2, r3] | r3 = *(0x1cb6c);
0x0000e56e ldr r2, [r3] | r2 = *(0x1cb6c);
0x0000e570 ldr r3, [sp, 0x84] | r3 = var_84h;
0x0000e572 eors r2, r3 | r2 ^= r3;
0x0000e574 mov.w r3, 0 | r3 = 0;
| if (r2 != r3) {
0x0000e578 bne 0xe59e | goto label_31;
| }
0x0000e57a mov r0, r4 | r0 = r4;
0x0000e57c add sp, 0x8c |
0x0000e57e pop.w {r4, r5, r6, r7, r8, sb, sl, fp, pc} |
| label_24:
0x0000e582 ldr r3, [sp, 0xc] | r3 = var_ch;
0x0000e584 mov r6, sb | r6 = sb;
0x0000e586 add r7, sp, 0x24 | r7 += var_24h;
0x0000e588 ldr r5, [r3] | r5 = *(r3);
0x0000e58a b 0xe49a | goto label_6;
| label_27:
0x0000e58c movs r4, 2 | r4 = 2;
| label_26:
0x0000e58e mov sb, r6 | sb = r6;
0x0000e590 cmp r6, 0 |
0x0000e592 beq 0xe560 |
| } while (r6 == 0);
0x0000e594 b 0xe546 | goto label_7;
| label_13:
0x0000e596 movs r4, 2 | r4 = 2;
0x0000e598 b 0xe560 | goto label_8;
| label_11:
0x0000e59a movs r4, 0xc | r4 = 0xc;
0x0000e59c b 0xe566 | goto label_9;
| label_31:
0x0000e59e blx 0x31f4 | fcn_000031f4 ();
| label_29:
0x0000e5a2 mov r0, r4 | r0 = r4;
0x0000e5a4 blx 0x3098 | fcn_00003098 ();
| label_20:
0x0000e5a8 mov r0, r6 | r0 = r6;
0x0000e5aa cmp.w sb, 0 |
| if (sb == 0) {
0x0000e5ae beq 0xe5dc | goto label_32;
| }
0x0000e5b0 movs r3, 0 | r3 = 0;
0x0000e5b2 mov r4, sb | r4 = sb;
0x0000e5b4 str.w r3, [sb, r8, lsl 2] | __asm ("str.w r3, [sb, r8, lsl 2]");
0x0000e5b8 blx 0x3978 | ext2fs_badblocks_list_iterate ();
0x0000e5bc ldr.w r0, [sb] | r0 = *(sb);
| if (r0 == 0) {
0x0000e5c0 cbz r0, 0xe5ce | goto label_33;
| }
| do {
0x0000e5c2 blx 0x3098 | fcn_00003098 ();
0x0000e5c6 ldr r0, [r4, 4]! | r0 = *((r4 += 4));
0x0000e5ca cmp r0, 0 |
0x0000e5cc bne 0xe5c2 |
| } while (r0 != 0);
| label_33:
0x0000e5ce mov r0, sb | r0 = sb;
0x0000e5d0 movs r4, 0xc | r4 = 0xc;
0x0000e5d2 blx 0x3098 | fcn_00003098 ();
0x0000e5d6 ldr r3, [sp, 0xc] | r3 = var_ch;
0x0000e5d8 ldr r3, [r3] | r3 = *(r3);
0x0000e5da b 0xe532 | goto label_10;
| label_32:
0x0000e5dc blx 0x3978 | ext2fs_badblocks_list_iterate ();
0x0000e5e0 ldr r3, [sp, 0xc] | r3 = var_ch;
0x0000e5e2 movs r4, 0xc | r4 = 0xc;
0x0000e5e4 ldr r3, [r3] | r3 = *(r3);
0x0000e5e6 b 0xe532 | goto label_10;
| }
; 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 @ 0xe8b8 */
| #include <stdint.h>
|
; (fcn) fcn.0000e8b8 () | void fcn_0000e8b8 (int16_t arg_30h, int16_t arg_80h, int16_t arg_2d0h, int16_t arg1) {
| int16_t var_30h;
| int16_t var_ch_5;
| int16_t var_10h_4;
| int16_t var_14h;
| r0 = arg1;
0x0000e8b8 push.w {r4, r5, r6, r7, r8, lr} |
0x0000e8bc sub sp, 0x18 |
0x0000e8be ldr r6, [pc, 0xa0] |
0x0000e8c0 mov r4, r0 | r4 = r0;
0x0000e8c2 ldr r5, [pc, 0xa0] | r5 = *(0xe966);
0x0000e8c4 add r6, pc | r6 = 0x1d22a;
0x0000e8c6 ldr r5, [r6, r5] |
0x0000e8c8 ldr r5, [r5] | r5 = *(0x1d22a);
0x0000e8ca str r5, [sp, 0x14] | var_14h = r5;
0x0000e8cc mov.w r5, 0 | r5 = 0;
0x0000e8d0 ldrd r5, r6, [sp, 0x30] | __asm ("ldrd r5, r6, [arg_30h]");
0x0000e8d4 str r5, [r6] | *(r6) = r5;
| if (r0 == 0) {
0x0000e8d6 cbz r0, 0xe92c | goto label_0;
| }
0x0000e8d8 add r4, sp, 0xc | r4 += var_ch_5;
0x0000e8da str r4, [sp] | *(sp) = r4;
0x0000e8dc bl 0xe1b0 | fcn_0000e1b0 (r0, r1, r2, r3, r4, r5, r6);
0x0000e8e0 movw r3, 0x9ffe |
0x0000e8e4 mov r4, r0 | r4 = r0;
0x0000e8e6 movt r3, 0x5535 | r3 = 0x55359ffe;
0x0000e8ea add r3, r0 | r3 += r0;
0x0000e8ec cmp r3, 1 |
0x0000e8ee itt ls |
| if (r3 > 1) {
0x0000e8f0 movls r4, 0 | r4 = 0;
| }
| if (r3 > 1) {
0x0000e8f2 strls r5, [r6] | *(r6) = r5;
| }
| if (r3 < 1) {
0x0000e8f4 bls 0xe92c | goto label_0;
| }
| if (r4 != 0) {
0x0000e8f6 cbnz r4, 0xe92c | goto label_0;
| }
0x0000e8f8 ldr r5, [sp, 0xc] | r5 = var_ch_5;
0x0000e8fa ldrb r3, [r5] | r3 = *(r5);
| if (r3 == 0) {
0x0000e8fc cbz r3, 0xe950 | goto label_1;
| }
0x0000e8fe blx 0x357c | sprintf_chk ()
0x0000e902 mov r2, r4 | r2 = r4;
0x0000e904 str r4, [r0] | *(r0) = r4;
0x0000e906 mov r8, r0 | r8 = r0;
0x0000e908 add r1, sp, 0x10 | r1 += var_10h_4;
0x0000e90a mov r0, r5 | r0 = r5;
0x0000e90c blx 0x2fbc | r0 = fcn_00002fbc ();
0x0000e910 add.w r3, r0, -0x80000000 | r3 = r0 + -0x80000000;
0x0000e914 mov r7, r0 | r7 = r0;
0x0000e916 subs r3, 1 | r3--;
0x0000e918 adds r3, 3 | r3 += 3;
0x0000e91a bhi 0xe948 |
| while (r3 == 0) {
0x0000e91c mov r0, r5 | r0 = r5;
0x0000e91e blx 0x3504 | e2p_os2string ();
0x0000e922 ldr r3, [sp, 0x10] | r3 = var_10h_4;
0x0000e924 add r5, r0 | r5 += r0;
0x0000e926 cmp r3, r5 |
| if (r3 != r5) {
0x0000e928 bne 0xe950 | goto label_1;
| }
0x0000e92a str r7, [r6] | *(r6) = r7;
| label_0:
0x0000e92c ldr r2, [pc, 0x38] |
0x0000e92e ldr r3, [pc, 0x34] | r3 = *(0xe966);
0x0000e930 add r2, pc | r2 = 0x1d29c;
0x0000e932 ldr r3, [r2, r3] | r3 = *(0x1d29c);
0x0000e934 ldr r2, [r3] | r2 = *(0x1d29c);
0x0000e936 ldr r3, [sp, 0x14] | r3 = var_14h;
0x0000e938 eors r2, r3 | r2 ^= r3;
0x0000e93a mov.w r3, 0 | r3 = 0;
| if (r2 != r3) {
0x0000e93e bne 0xe95a | goto label_2;
| }
0x0000e940 mov r0, r4 | r0 = r4;
0x0000e942 add sp, 0x18 |
0x0000e944 pop.w {r4, r5, r6, r7, r8, pc} |
0x0000e948 ldr.w r3, [r8] | r3 = *(r8);
0x0000e94c cmp r3, 0 |
0x0000e94e beq 0xe91c |
| }
| label_1:
0x0000e950 movw r4, 0x601d |
0x0000e954 movt r4, 0xaaca | r4 = 0xaaca601d;
0x0000e958 b 0xe92c | goto label_0;
| label_2:
0x0000e95a blx 0x31f4 | fcn_000031f4 ();
0x0000e95e nop |
0x0000e960 str r3, [sp, 0x80] | *(arg_80h) = r3;
0x0000e962 movs r1, r0 | r1 = r0;
0x0000e964 lsls r4, r5, 0xe | r4 = r5 << 0xe;
0x0000e966 movs r0, r0 |
0x0000e968 str r2, [sp, 0x2d0] | *(arg_2d0h) = r2;
0x0000e96a movs r1, r0 | r1 = 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 @ 0xe96c */
| #include <stdint.h>
|
; (fcn) fcn.0000e96c () | void fcn_0000e96c (int16_t arg_1b0h, int16_t arg1) {
| int16_t var_50h;
| int16_t var_ch_4;
| int16_t var_10h_3;
| int16_t var_14h_2;
| int16_t var_18h;
| int16_t var_30h;
| r0 = arg1;
0x0000e96c mvnsmi lr, sp, lsr 18 | __asm ("mvnsmi lr, sp, lsr 18");
0x0000e970 sub sp, 0x18 |
0x0000e972 ldr r6, [pc, 0x98] |
0x0000e974 mov r4, r0 | r4 = r0;
0x0000e976 ldr r5, [pc, 0x98] | r5 = *(0xea12);
0x0000e978 add r6, pc | r6 = 0x1d38a;
0x0000e97a ldr r5, [r6, r5] |
0x0000e97c ldr r5, [r5] | r5 = *(0x1d38a);
0x0000e97e str r5, [sp, 0x14] | var_14h_2 = r5;
0x0000e980 mov.w r5, 0 | r5 = 0;
0x0000e984 ldrd r5, r6, [sp, 0x30] | __asm ("ldrd r5, r6, [var_30h]");
0x0000e988 str r5, [r6] | *(r6) = r5;
| if (r0 == 0) {
0x0000e98a cbz r0, 0xe9da | goto label_0;
| }
0x0000e98c add r4, sp, 0xc | r4 += var_ch_4;
0x0000e98e str r4, [sp] | *(sp) = r4;
0x0000e990 bl 0xe1b0 | fcn_0000e1b0 (r0, r1, r2, r3, r4, r5, r6);
0x0000e994 movw r3, 0x9ffe |
0x0000e998 mov r4, r0 | r4 = r0;
0x0000e99a movt r3, 0x5535 | r3 = 0x55359ffe;
0x0000e99e add r3, r0 | r3 += r0;
0x0000e9a0 cmp r3, 1 |
0x0000e9a2 itt ls |
| if (r3 > 1) {
0x0000e9a4 movls r4, 0 | r4 = 0;
| }
| if (r3 > 1) {
0x0000e9a6 strls r5, [r6] | *(r6) = r5;
| }
| if (r3 < 1) {
0x0000e9a8 bls 0xe9da | goto label_0;
| }
| if (r4 != 0) {
0x0000e9aa cbnz r4, 0xe9da | goto label_0;
| }
0x0000e9ac ldr r5, [sp, 0xc] | r5 = var_ch_4;
0x0000e9ae ldrb r3, [r5] | r3 = *(r5);
| if (r3 == 0) {
0x0000e9b0 cbz r3, 0xe9fe | goto label_1;
| }
0x0000e9b2 blx 0x357c | sprintf_chk ()
0x0000e9b6 mov r2, r4 | r2 = r4;
0x0000e9b8 str r4, [r0] | *(r0) = r4;
0x0000e9ba mov r8, r0 | r8 = r0;
0x0000e9bc add r1, sp, 0x10 | r1 += var_10h_3;
0x0000e9be mov r0, r5 | r0 = r5;
0x0000e9c0 blx 0x34f8 | r0 = ext2fs_inode_bitmap_loc_set ();
0x0000e9c4 adds r3, r0, 1 | r3 = r0 + 1;
0x0000e9c6 mov r7, r0 | r7 = r0;
0x0000e9c8 beq 0xe9f6 |
| while (r3 == 0) {
0x0000e9ca mov r0, r5 | r0 = r5;
0x0000e9cc blx 0x3504 | e2p_os2string ();
0x0000e9d0 ldr r3, [sp, 0x10] | r3 = var_10h_3;
0x0000e9d2 add r5, r0 | r5 += r0;
0x0000e9d4 cmp r3, r5 |
| if (r3 != r5) {
0x0000e9d6 bne 0xe9fe | goto label_1;
| }
0x0000e9d8 str r7, [r6] | *(r6) = r7;
| label_0:
0x0000e9da ldr r2, [pc, 0x38] |
0x0000e9dc ldr r3, [pc, 0x30] | r3 = *(0xea10);
0x0000e9de add r2, pc | r2 = 0x1d3f8;
0x0000e9e0 ldr r3, [r2, r3] | r3 = *(0x1d3f8);
0x0000e9e2 ldr r2, [r3] | r2 = *(0x1d3f8);
0x0000e9e4 ldr r3, [sp, 0x14] | r3 = var_14h_2;
0x0000e9e6 eors r2, r3 | r2 ^= r3;
0x0000e9e8 mov.w r3, 0 | r3 = 0;
| if (r2 != r3) {
0x0000e9ec bne 0xea08 | goto label_2;
| }
0x0000e9ee mov r0, r4 | r0 = r4;
0x0000e9f0 add sp, 0x18 |
0x0000e9f2 pop.w {r4, r5, r6, r7, r8, pc} |
0x0000e9f6 ldr.w r3, [r8] | r3 = *(r8);
0x0000e9fa cmp r3, 0 |
0x0000e9fc beq 0xe9ca |
| }
| label_1:
0x0000e9fe movw r4, 0x601d |
0x0000ea02 movt r4, 0xaaca | r4 = 0xaaca601d;
0x0000ea06 b 0xe9da | goto label_0;
| label_2:
0x0000ea08 blx 0x31f4 | fcn_000031f4 ();
0x0000ea0c str r2, [sp, 0x1b0] | *(arg_1b0h) = r2;
0x0000ea0e movs r1, r0 | r1 = r0;
0x0000ea10 lsls r4, r5, 0xe | r4 = r5 << 0xe;
0x0000ea12 movs r0, r0 |
0x0000ea14 str r2, [sp, 0x18] | var_18h = r2;
0x0000ea16 movs r1, r0 | r1 = 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 @ 0xea18 */
| #include <stdint.h>
|
; (fcn) fcn.0000ea18 () | void fcn_0000ea18 (int16_t arg_160h, int16_t arg_310h, int16_t arg1) {
| int16_t var_20h;
| int16_t var_ch_3;
| int16_t var_10h_2;
| int16_t var_14h_3;
| int16_t var_38h;
| r0 = arg1;
0x0000ea18 invalid |
0x0000ea1c ldr r6, [pc, 0x9c] |
0x0000ea1e ldr r5, [pc, 0xa0] | r5 = *(0xeac2);
0x0000ea20 add r6, pc | r6 = 0x1d4e0;
0x0000ea22 vpush {d8} | __asm ("vpush {d8}");
0x0000ea26 sub sp, 0x1c |
0x0000ea28 ldr r5, [r6, r5] |
0x0000ea2a ldr r5, [r5] | r5 = *(0x1d4e0);
0x0000ea2c str r5, [sp, 0x14] | var_14h_3 = r5;
0x0000ea2e mov.w r5, 0 | r5 = 0;
0x0000ea32 ldr r5, [sp, 0x38] | r5 = var_38h;
0x0000ea34 vstr d0, [r5] | __asm ("vstr d0, [r5]");
| if (r0 == 0) {
0x0000ea38 cbz r0, 0xea88 | goto label_0;
| }
0x0000ea3a add r4, sp, 0xc | r4 += var_ch_3;
0x0000ea3c vmov.f64 d8, d0 | __asm ("vmov.f64 d8, d0");
0x0000ea40 str r4, [sp] | *(sp) = r4;
0x0000ea42 bl 0xe1b0 | fcn_0000e1b0 (r0, r1, r2, r3, r4, r5, r6);
0x0000ea46 movw r3, 0x9ffe |
0x0000ea4a mov r4, r0 | r4 = r0;
0x0000ea4c movt r3, 0x5535 | r3 = 0x55359ffe;
0x0000ea50 add r3, r0 | r3 += r0;
0x0000ea52 cmp r3, 1 |
| if (r3 < 1) {
0x0000ea54 bls 0xeaa6 | goto label_1;
| }
| if (r0 != 0) {
0x0000ea56 cbnz r0, 0xea88 | goto label_0;
| }
0x0000ea58 ldr r6, [sp, 0xc] | r6 = var_ch_3;
0x0000ea5a ldrb r3, [r6] | r3 = *(r6);
| if (r3 == 0) {
0x0000ea5c cbz r3, 0xeaae | goto label_2;
| }
0x0000ea5e blx 0x357c | sprintf_chk ()
0x0000ea62 add r1, sp, 0x10 | r1 += var_10h_2;
0x0000ea64 str r4, [r0] | *(r0) = r4;
0x0000ea66 mov r7, r0 | r7 = r0;
0x0000ea68 mov r0, r6 | r0 = r6;
0x0000ea6a blx 0x3638 | fcn_00003638 ();
0x0000ea6e ldr r4, [r7] | r4 = *(r7);
0x0000ea70 vmov.f64 d8, d0 | __asm ("vmov.f64 d8, d0");
| if (r4 != 0) {
0x0000ea74 cbnz r4, 0xeaae | goto label_2;
| }
0x0000ea76 mov r0, r6 | r0 = r6;
0x0000ea78 blx 0x3504 | e2p_os2string ();
0x0000ea7c ldr r3, [sp, 0x10] | r3 = var_10h_2;
0x0000ea7e add r6, r0 | r6 += r0;
0x0000ea80 cmp r3, r6 |
| if (r3 != r6) {
0x0000ea82 bne 0xeaae | goto label_2;
| }
0x0000ea84 vstr d8, [r5] | __asm ("vstr d8, [r5]");
| do {
| label_0:
0x0000ea88 ldr r2, [pc, 0x38] |
0x0000ea8a ldr r3, [pc, 0x34] | r3 = *(0xeac2);
0x0000ea8c add r2, pc | r2 = 0x1d554;
0x0000ea8e ldr r3, [r2, r3] | r3 = *(0x1d554);
0x0000ea90 ldr r2, [r3] | r2 = *(0x1d554);
0x0000ea92 ldr r3, [sp, 0x14] | r3 = var_14h_3;
0x0000ea94 eors r2, r3 | r2 ^= r3;
0x0000ea96 mov.w r3, 0 | r3 = 0;
| if (r2 != r3) {
0x0000ea9a bne 0xeab8 | goto label_3;
| }
0x0000ea9c mov r0, r4 | r0 = r4;
0x0000ea9e add sp, 0x1c |
0x0000eaa0 vpop {d8} | __asm ("vpop {d8}");
0x0000eaa4 pop {r4, r5, r6, r7, pc} |
| label_1:
0x0000eaa6 movs r4, 0 | r4 = 0;
0x0000eaa8 vstr d8, [r5] | __asm ("vstr d8, [r5]");
0x0000eaac b 0xea88 |
| } while (1);
| label_2:
0x0000eaae movw r4, 0x601d |
0x0000eab2 movt r4, 0xaaca | r4 = 0xaaca601d;
0x0000eab6 b 0xea88 | goto label_0;
| label_3:
0x0000eab8 blx 0x31f4 | fcn_000031f4 ();
0x0000eabc str r1, [sp, 0x310] | *(arg_310h) = r1;
0x0000eabe movs r1, r0 | r1 = r0;
0x0000eac0 lsls r4, r5, 0xe | r4 = r5 << 0xe;
0x0000eac2 movs r0, r0 |
0x0000eac4 str r1, [sp, 0x160] | *(arg_160h) = r1;
0x0000eac6 movs r1, r0 | r1 = 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 @ 0xfd40 */
| #include <stdint.h>
|
; (fcn) fcn.0000fd40 () | void fcn_0000fd40 (int16_t arg2, int16_t arg3) {
| int32_t var_0h;
| int32_t var_0h_2;
| int32_t var_8h;
| int32_t var_8h_2;
| r1 = arg2;
| r2 = arg3;
0x0000fd40 invalid |
0x0000fd44 str r0, [r0, 0x38] | *((r0 + 0x38)) = r0;
0x0000fd46 sub sp, 0x10 |
0x0000fd48 mov r5, r1 | r5 = r1;
0x0000fd4a mov r4, r2 | r4 = r2;
0x0000fd4c adds r0, 0x10 | r0 += 0x10;
0x0000fd4e ldr r1, [r0, 0xc] | r1 = *((r0 + 0xc));
0x0000fd50 ldr r6, [pc, 0x60] |
0x0000fd52 strd r2, r3, [sp] | __asm ("strd r2, r3, [sp]");
0x0000fd54 movs r3, 0 | r3 = 0;
0x0000fd56 lsls r2, r5, 0xa | r2 = r5 << 0xa;
0x0000fd58 movs r3, 0 | r3 = 0;
0x0000fd5a blx r1 | r0 = uint32_t (*r1)(uint32_t, uint32_t, uint32_t, uint32_t) (r0, r1, r2, r3);
0x0000fd5c cmp r0, 0 |
0x0000fd5e add r6, pc | r6 = 0x1fb16;
| if (r0 >= 0) {
0x0000fd60 blt 0xfd7e |
0x0000fd62 cmp.w r0, 0x400 |
| if (r0 == 0x400) {
0x0000fd66 bne 0xfd6c |
0x0000fd68 add sp, 0x10 |
0x0000fd6a pop {r4, r5, r6, pc} |
| }
0x0000fd6c rsb.w r2, r0, 0x400 | r2 = 0x400 - r0;
0x0000fd70 movs r1, 0 | r1 = 0;
0x0000fd72 add r0, r4 | r0 += r4;
0x0000fd74 add sp, 0x10 |
0x0000fd76 pop.w {r4, r5, r6, lr} |
0x0000fd7a b.w 0x35b8 | void (*0x35b8)() ();
| }
0x0000fd7e ldr r3, [pc, 0x38] | r3 = *(0xfdba);
0x0000fd80 movs r4, 0x45 | r4 = 0x45;
0x0000fd82 ldr r3, [r6, r3] | r3 = *((r6 + r3));
0x0000fd84 ldr r6, [r3] | r6 = *(0xfdba);
0x0000fd86 blx 0x357c | r0 = sprintf_chk ()
0x0000fd8a ldr r0, [r0] | r0 = *(r0);
0x0000fd8c blx 0x3468 | ext2fs_add_journal_inode3 ();
0x0000fd90 ldr r1, [pc, 0x28] |
0x0000fd92 mov r3, r0 | r3 = r0;
0x0000fd94 strd r5, r3, [sp, 8] | __asm ("strd r5, r3, [var_8h]");
0x0000fd98 mov r0, r6 | r0 = r6;
0x0000fd9a ldr r3, [pc, 0x24] |
0x0000fd9c ldr r2, [pc, 0x24] |
0x0000fd9e add r1, pc | r1 = 0x1fb5e;
0x0000fda0 strd r4, r1, [sp] | __asm ("strd r4, r1, [sp]");
0x0000fda4 movs r1, 1 | r1 = 1;
0x0000fda6 add r3, pc | r3 = 0x1fb6c;
0x0000fda8 add r2, pc | r2 = 0x1fb70;
0x0000fdaa blx 0x3684 | ext2fs_write_inode ();
0x0000fdae add sp, 0x10 |
0x0000fdb0 pop {r4, r5, r6, pc} |
| }
; 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 @ 0xfdc8 */
| #include <stdint.h>
|
; (fcn) fcn.0000fdc8 () | void fcn_0000fdc8 (int16_t arg2, int16_t arg3) {
| int32_t var_0h;
| int32_t var_0h_2;
| int16_t var_8h;
| int16_t var_ch;
| r1 = arg2;
| r2 = arg3;
0x0000fdc8 invalid |
0x0000fdcc str r0, [r0, 0x38] | *((r0 + 0x38)) = r0;
0x0000fdce sub sp, 0x10 |
0x0000fdd0 mov r4, r1 | r4 = r1;
0x0000fdd2 adds r0, 0x10 | r0 += 0x10;
0x0000fdd4 ldr r1, [r0, 0x10] | r1 = *((r0 + 0x10));
0x0000fdd6 ldr r5, [pc, 0x64] |
0x0000fdd8 strd r2, r3, [sp] | __asm ("strd r2, r3, [sp]");
0x0000fddc lsls r2, r4, 0xa | r2 = r4 << 0xa;
0x0000fdde movs r3, 0 | r3 = 0;
0x0000fde0 blx r1 | r0 = uint32_t (*r1)(uint32_t, uint32_t, uint32_t, uint32_t) (r0, r1, r2, r3);
0x0000fde2 cmp r0, 0 |
0x0000fde4 add r5, pc | r5 = 0x1fc26;
| if (r0 < 0) {
0x0000fde6 blt 0xfdf8 | goto label_0;
| }
0x0000fde8 cmp.w r0, 0x400 |
0x0000fdec ite ne |
| if (r0 == 0x400) {
0x0000fdee mvnne r0, 0x1b | r0 = ~0x1b;
| }
0x0000fdf2 movs r0, 0 | r0 = 0;
| while (r0 == 0x1c) {
0x0000fdf4 add sp, 0x10 |
0x0000fdf6 pop {r4, r5, r6, pc} |
| label_0:
0x0000fdf8 blx 0x357c | r0 = sprintf_chk ()
0x0000fdfc ldr r0, [r0] | r0 = *(r0);
0x0000fdfe cmp r0, 0x1c |
0x0000fe00 it eq |
| if (r0 != 0x1c) {
0x0000fe02 mvneq r0, 0x1b | r0 = ~0x1b;
| }
0x0000fe06 beq 0xfdf4 |
| }
0x0000fe08 ldr r3, [pc, 0x34] | r3 = *(0xfe40);
0x0000fe0a ldr r3, [r5, r3] | r3 = *((r5 + r3));
0x0000fe0c movs r5, 0x52 | r5 = 0x52;
0x0000fe0e ldr r6, [r3] | r6 = *(0xfe40);
0x0000fe10 blx 0x3468 | ext2fs_add_journal_inode3 ();
0x0000fe14 ldr r1, [pc, 0x2c] |
0x0000fe16 ldr r3, [pc, 0x30] |
0x0000fe18 ldr r2, [pc, 0x30] |
0x0000fe1a add r1, pc | r1 = 0x1fc62;
0x0000fe1c str r0, [sp, 0xc] | var_ch = r0;
0x0000fe1e adds r1, 0xc | r1 += 0xc;
0x0000fe20 mov r0, r6 | r0 = r6;
0x0000fe22 strd r5, r1, [sp] | __asm ("strd r5, r1, [sp]");
0x0000fe26 add r3, pc | r3 = 0x1fc74;
0x0000fe28 add r2, pc | r2 = 0x1fc78;
0x0000fe2a movs r1, 1 | r1 = 1;
0x0000fe2c str r4, [sp, 8] | var_8h = r4;
0x0000fe2e blx 0x3684 | ext2fs_write_inode ();
0x0000fe32 mvn r0, 0x1b | r0 = ~0x1b;
0x0000fe36 add sp, 0x10 |
0x0000fe38 pop {r4, r5, r6, pc} |
| }
; 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 @ 0x10abc */
| #include <stdint.h>
|
; (fcn) fcn.00010abc () | void fcn_00010abc (int16_t arg1) {
| int16_t var_0h_3;
| int16_t var_4h_3;
| int16_t var_8h;
| int16_t var_ch;
| int16_t var_10h;
| int16_t var_14h;
| r0 = arg1;
0x00010abc qaddhs r4, r7, r1 | __asm ("qaddhs r4, r7, r1");
0x00010ac0 ldr r3, [pc, 0x15c] |
0x00010ac2 push.w {r4, r5, r6, r7, r8, sb, sl, lr} |
0x00010ac6 mov r4, r0 | r4 = r0;
0x00010ac8 add r2, pc | r2 += pc;
0x00010aca ldr r6, [r0, 0xc] | r6 = *((r0 + 0xc));
0x00010acc sub sp, 0x18 |
0x00010ace ldr r3, [r2, r3] | r3 = *((r2 + r3));
0x00010ad0 ldr r7, [pc, 0x150] |
0x00010ad2 ldr r0, [r6, 0x3c] | r0 = *((r6 + 0x3c));
0x00010ad4 ldr r3, [r3] | r3 = *(0x10c20);
0x00010ad6 str r3, [sp, 0x14] | var_14h = r3;
0x00010ad8 mov.w r3, 0 | r3 = 0;
0x00010adc add r7, pc | r7 = 0x21704;
0x00010ade blx 0x2f10 | r0 = calloc (r0, r1);
0x00010ae2 cmp r0, 0 |
| if (r0 == 0) {
0x00010ae4 beq 0x10b6c | goto label_2;
| }
0x00010ae6 ldrd r3, r2, [r4, 0x48] | __asm ("ldrd r3, r2, [r4, 0x48]");
0x00010aea mov r5, r0 | r5 = r0;
0x00010aec orrs r3, r2 | r3 |= r2;
0x00010aee beq 0x10bbe |
| while (r0 >= 0) {
| label_0:
0x00010af0 ldr r3, [r6, 0x40] | r3 = *((r6 + 0x40));
0x00010af2 mov r1, r4 | r1 = r4;
0x00010af4 mov r0, r5 | r0 = r5;
0x00010af6 ldr r3, [r3] | r3 = *(r3);
0x00010af8 blx r3 | uint32_t (*r3)(uint32_t, uint32_t, uint32_t) (r0, r1, r3);
0x00010afa ldr r3, [r6, 0x3c] | r3 = *((r6 + 0x3c));
0x00010afc add.w r0, r6, 0x10 | r0 = r6 + 0x10;
0x00010b00 strd r5, r3, [sp] | __asm ("strd r5, r3, [sp]");
0x00010b04 ldr r1, [r6, 0x20] | r1 = *((r6 + 0x20));
0x00010b06 ldrd r2, r3, [r4, 0x48] | __asm ("ldrd r2, r3, [r4, 0x48]");
0x00010b0a blx r1 | uint32_t (*r1)(uint32_t, uint32_t, uint32_t, uint32_t) (r0, r1, r2, r3);
0x00010b0c ldr r3, [r6, 0x3c] | r3 = *((r6 + 0x3c));
0x00010b0e mov r6, r0 | r6 = r0;
0x00010b10 cmp r3, r0 |
| if (r3 != r0) {
0x00010b12 beq 0x10b4c |
0x00010b14 blx 0x357c | sprintf_chk ()
0x00010b18 cmp r6, 0 |
| if (r6 != 0) {
0x00010b1a bne 0x10c10 | goto label_3;
| }
0x00010b1c ldr r0, [r0] | r0 = *(r0);
| label_1:
0x00010b1e ldr r3, [pc, 0x108] | r3 = *(0x10c2a);
0x00010b20 ldr r6, [r4, 4] | r6 = *((r4 + 4));
0x00010b22 ldr r3, [r7, r3] | r3 = *((r7 + r3));
0x00010b24 ldr r4, [r3] | r4 = *(0x10c2a);
0x00010b26 blx 0x3468 | ext2fs_add_journal_inode3 ();
0x00010b2a ldr r2, [pc, 0x100] |
0x00010b2c movw r1, 0x15b | r1 = 0x15b;
0x00010b30 ldr r3, [pc, 0xfc] |
0x00010b32 strd r6, r0, [sp, 8] | __asm ("strd r6, r0, [var_ch]");
0x00010b36 mov r0, r4 | r0 = r4;
0x00010b38 add r2, pc | r2 = 0x2176a;
0x00010b3a adds r2, 0x8c | r2 += 0x8c;
0x00010b3c add r3, pc | r3 = 0x21770;
0x00010b3e strd r1, r2, [sp] | __asm ("strd r1, r2, [sp]");
0x00010b42 movs r1, 1 | r1 = 1;
0x00010b44 ldr r2, [pc, 0xec] |
0x00010b46 add r2, pc | r2 = 0x2177e;
0x00010b48 blx 0x3684 | ext2fs_write_inode ();
0x00010b4a invalid |
| }
0x00010b4c ldr r2, [pc, 0xe8] |
0x00010b4e ldr r3, [pc, 0xd0] | r3 = *(0x10c22);
0x00010b50 add r2, pc | r2 = 0x2178c;
0x00010b52 ldr r3, [r2, r3] | r3 = *(0x2178c);
0x00010b54 ldr r2, [r3] | r2 = *(0x2178c);
0x00010b56 ldr r3, [sp, 0x14] | r3 = var_14h;
0x00010b58 eors r2, r3 | r2 ^= r3;
0x00010b5a mov.w r3, 0 | r3 = 0;
| if (r2 != r3) {
0x00010b5e bne 0x10c18 | goto label_4;
| }
0x00010b60 mov r0, r5 | r0 = r5;
0x00010b62 add sp, 0x18 |
0x00010b64 pop.w {r4, r5, r6, r7, r8, sb, sl, lr} |
0x00010b68 b.w 0x3094 | void (*0x3094)() ();
| label_2:
0x00010b6c blx 0x357c | sprintf_chk ()
0x00010b70 ldr r3, [pc, 0xb4] | r3 = *(0x10c28);
0x00010b72 movs r2, 0xc | r2 = 0xc;
0x00010b74 str r2, [r0] | *(r0) = r2;
0x00010b76 mov r0, r2 | r0 = r2;
0x00010b78 ldr r5, [r4, 4] | r5 = *((r4 + 4));
0x00010b7a movw r4, 0x149 | r4 = 0x149;
0x00010b7e ldr r3, [r7, r3] | r3 = *((r7 + r3));
0x00010b80 ldr r6, [r3] | r6 = *(0x10c28);
0x00010b82 blx 0x3468 | ext2fs_add_journal_inode3 ();
0x00010b86 ldr r1, [pc, 0xb4] |
0x00010b88 ldr r3, [pc, 0xb4] |
0x00010b8a ldr r2, [pc, 0xb8] |
0x00010b8c add r1, pc | r1 = 0x217ce;
0x00010b8e str r0, [sp, 0xc] | var_ch = r0;
0x00010b90 adds r1, 0x8c | r1 += 0x8c;
0x00010b92 add r3, pc | r3 = 0x217d6;
0x00010b94 add r2, pc | r2 = 0x217de;
0x00010b96 strd r4, r1, [sp] | __asm ("strd r4, r1, [sp]");
0x00010b98 asrs r0, r0 | r0 >>= r0;
0x00010b9a mov r0, r6 | r0 = r6;
0x00010b9c movs r1, 1 | r1 = 1;
0x00010b9e str r5, [sp, 8] | var_8h = r5;
0x00010ba0 blx 0x3684 | ext2fs_write_inode ();
0x00010ba4 ldr r2, [pc, 0xa0] |
0x00010ba6 ldr r3, [pc, 0x78] | r3 = *(0x10c22);
0x00010ba8 add r2, pc | r2 = 0x217f4;
0x00010baa ldr r3, [r2, r3] | r3 = *(0x217f4);
0x00010bac ldr r2, [r3] | r2 = *(0x217f4);
0x00010bae ldr r3, [sp, 0x14] | r3 = var_14h;
0x00010bb0 eors r2, r3 | r2 ^= r3;
0x00010bb2 mov.w r3, 0 | r3 = 0;
| if (r2 != r3) {
0x00010bb6 bne 0x10c18 | goto label_4;
| }
0x00010bb8 add sp, 0x18 |
0x00010bba pop.w {r4, r5, r6, r7, r8, sb, sl, pc} |
0x00010bbe mov.w r8, 1 | r8 = 1;
0x00010bc2 movs r3, 0 | r3 = 0;
0x00010bc4 add r2, sp, 0x10 | r2 += var_10h;
0x00010bc6 mov r1, r4 | r1 = r4;
0x00010bc8 mov r0, r6 | r0 = r6;
0x00010bca str.w r8, [sp, 0x10] | __asm ("str.w r8, [var_10h]");
0x00010bce bl 0x10410 | r0 = fcn_00010410 (r0, r1, r2, r3, r4, r5);
0x00010bd2 cmp r0, 0 |
0x00010bd4 bge 0x10af0 |
| }
0x00010bd6 ldr r3, [pc, 0x50] | r3 = *(0x10c2a);
0x00010bd8 ldr r3, [r7, r3] | r3 = *((r7 + r3));
0x00010bda ldr.w sb, [r3] | sb = *(0x10c2a);
0x00010bde blx 0x357c | r0 = sprintf_chk ()
0x00010be2 ldr r0, [r0] | r0 = *(r0);
0x00010be4 ldr.w sl, [r4, 4] | sl = *((r4 + 4));
0x00010be8 blx 0x3468 | ext2fs_add_journal_inode3 ();
0x00010bec ldr r3, [pc, 0x5c] |
0x00010bee mov r1, r8 | r1 = r8;
0x00010bf0 ldr r2, [pc, 0x5c] |
0x00010bf2 strd sl, r0, [sp, 8] | __asm ("strd sl, r0, [var_ch]");
0x00010bf6 mov r0, sb | r0 = sb;
0x00010bf8 add r3, pc | r3 = 0x21848;
0x00010bfa adds r3, 0xa0 | r3 += 0xa0;
0x00010bfc add r2, pc | r2 = 0x21850;
0x00010bfe str r3, [sp, 4] | var_4h_3 = r3;
0x00010c00 mov.w r3, 0x136 | r3 = 0x136;
0x00010c04 str r3, [sp] | *(sp) = r3;
0x00010c06 ldr r3, [pc, 0x4c] |
0x00010c08 add r3, pc | r3 = 0x21862;
0x00010c0a blx 0x3684 | ext2fs_write_inode ();
0x00010c0e b 0x10af0 | goto label_0;
| label_3:
0x00010c10 movs r3, 0x1c | r3 = 0x1c;
0x00010c12 str r3, [r0] | *(r0) = r3;
0x00010c14 mov r0, r3 | r0 = r3;
0x00010c16 b 0x10b1e | goto label_1;
| label_4:
0x00010c18 blx 0x31f4 | fcn_000031f4 ();
0x00010c1c strb r4, [r3, 4] | *((r3 + 4)) = r4;
0x00010c1e movs r1, r0 | r1 = r0;
0x00010c20 lsls r4, r5, 0xe | r4 = r5 << 0xe;
0x00010c22 movs r0, r0 |
0x00010c24 strb r0, [r1, 4] | *((r1 + 4)) = r0;
0x00010c26 movs r1, r0 | r1 = r0;
0x00010c28 lsls r0, r0, 0xf | r0 <<= 0xf;
0x00010c2a movs r0, r0 |
0x00010c2c str r0, [r3, 0x50] | *((r3 + 0x50)) = r0;
0x00010c2e movs r0, r0 |
0x00010c30 str r0, [r1, 0x20] | *((r1 + 0x20)) = r0;
0x00010c32 movs r0, r0 |
0x00010c34 str r2, [r4, 0x44] | *((r4 + 0x44)) = r2;
0x00010c36 movs r0, r0 |
0x00010c38 strb r4, [r2, 2] | *((r2 + 2)) = r4;
0x00010c3a movs r1, r0 | r1 = r0;
0x00010c3c str r4, [r0, 0x4c] | *((r0 + 0x4c)) = r4;
0x00010c3e movs r0, r0 |
0x00010c40 str r2, [r6, 0x18] | *((r6 + 0x18)) = r2;
0x00010c42 movs r0, r0 |
0x00010c44 str r4, [r2, 0x40] | *((r2 + 0x40)) = r4;
0x00010c46 movs r0, r0 |
0x00010c48 strb r4, [r7] | *(r7) = r4;
0x00010c4a movs r1, r0 | r1 = r0;
0x00010c4c str r0, [r3, 0x44] | *((r3 + 0x44)) = r0;
0x00010c4e movs r0, r0 |
0x00010c50 str r0, [r4, 0x3c] | *((r4 + 0x3c)) = r0;
0x00010c52 movs r0, r0 |
0x00010c54 str r4, [r7, 0x10] | *((r7 + 0x10)) = r4;
0x00010c56 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 @ 0x10c58 */
| #include <stdint.h>
|
; (fcn) fcn.00010c58 () | void fcn_00010c58 (int16_t arg1) {
| int16_t var_0h;
| int16_t var_4h;
| int16_t var_0h_2;
| int16_t var_4h_2;
| int16_t var_8h_2;
| int16_t var_ch_2;
| r0 = arg1;
0x00010c58 blmi 0x4a34a4 | __asm ("blmi aav.0x00016f84");
0x00010c5c push {r4, lr} |
0x00010c5e sub sp, 8 |
0x00010c60 add r2, pc | r2 += pc;
0x00010c62 movs r4, 1 | r4 = 1;
0x00010c64 ldr r3, [r2, r3] | r3 = *((r2 + r3));
0x00010c66 ldr r3, [r3] | r3 = *(r3);
0x00010c68 str r3, [sp, 4] | var_4h = r3;
0x00010c6a mov.w r3, 0 | r3 = 0;
0x00010c6e ldrd r3, r2, [r0, 0x48] | __asm ("ldrd r3, r2, [var_0hx48]");
0x00010c72 str r4, [sp] | *(sp) = r4;
0x00010c74 orrs r3, r2 | r3 |= r2;
| if (r3 != r2) {
0x00010c76 beq 0x10c84 |
0x00010c78 mov r1, r0 | r1 = r0;
0x00010c7a movs r3, 0 | r3 = 0;
0x00010c7c ldr r0, [r0, 0xc] | r0 = *(var_0hxc);
0x00010c7e mov r2, sp | r2 = sp;
0x00010c80 bl 0x107a0 | fcn_000107a0 (r0, r1, r2, r3);
| }
0x00010c84 ldr r2, [pc, 0x20] |
0x00010c86 ldr r3, [pc, 0x1c] | r3 = *(0x10ca6);
0x00010c88 add r2, pc | r2 = 0x21934;
0x00010c8a ldr r3, [r2, r3] | r3 = *(0x21934);
0x00010c8c ldr r2, [r3] | r2 = *(0x21934);
0x00010c8e ldr r3, [sp, 4] | r3 = var_4h;
0x00010c90 eors r2, r3 | r2 ^= r3;
0x00010c92 mov.w r3, 0 | r3 = 0;
| if (r2 == r3) {
0x00010c96 bne 0x10c9c |
0x00010c98 add sp, 8 |
0x00010c9a pop {r4, pc} |
| }
0x00010c9c blx 0x31f4 | fcn_000031f4 ();
0x00010ca0 ldr r4, [r0, 0x78] | r4 = *((r0 + 0x78));
0x00010ca2 movs r1, r0 | r1 = r0;
0x00010ca4 lsls r4, r5, 0xe | r4 = r5 << 0xe;
0x00010ca6 movs r0, r0 |
0x00010ca8 ldr r4, [r3, 0x74] | r4 = *((r3 + 0x74));
0x00010caa movs r1, r0 | r1 = r0;
0x00010cac push.w {r4, r5, r6, r7, r8, lr} |
0x00010cb0 sub sp, 0x10 |
0x00010cb2 ldr r7, [pc, 0xcc] |
0x00010cb4 mov r5, r0 | r5 = r0;
0x00010cb6 mov r8, r1 | r8 = r1;
0x00010cb8 bl 0xf788 | fcn_0000f788 ();
0x00010cbc add r7, pc | r7 = 0x21a42;
0x00010cbe mov r4, r0 | r4 = r0;
0x00010cc0 cmp r0, 0 |
| if (r0 == 0) {
0x00010cc2 beq 0x10d60 | goto label_0;
| }
0x00010cc4 ldr r0, [r5, 0x3c] | r0 = *((r5 + 0x3c));
0x00010cc6 blx 0x3450 | r0 = strerror (r0);
0x00010cca mov r6, r0 | r6 = r0;
0x00010ccc cmp r0, 0 |
| if (r0 == 0) {
0x00010cce beq 0x10d70 | goto label_1;
| }
0x00010cd0 movs r2, 0x40 | r2 = 0x40;
0x00010cd2 movs r1, 0 | r1 = 0;
0x00010cd4 add.w r0, r4, 0x10 | r0 = r4 + 0x10;
0x00010cd8 str.w r8, [r4, 4] | __asm ("str.w r8, [r4, 4]");
0x00010cdc str r5, [r4, 0xc] | *((r4 + 0xc)) = r5;
0x00010cde blx 0x35bc | fcn_000035bc ();
0x00010ce2 movs r3, 0 | r3 = 0;
0x00010ce4 movs r2, 1 | r2 = 1;
0x00010ce6 mov r1, r4 | r1 = r4;
0x00010ce8 mov r0, r5 | r0 = r5;
0x00010cea bl 0x10284 | fcn_00010284 (r0, r1, r2, r3, r4);
0x00010cee mov r3, r1 | r3 = r1;
0x00010cf0 cmp r0, 1 |
0x00010cf2 sbcs r1, r3, 0 | __asm ("sbcs r1, r3, 0");
| if (r0 < 1) {
0x00010cf6 blt 0x10d5a | goto label_2;
| }
0x00010cf8 strd r0, r3, [r4, 0x48] | __asm ("strd r0, r3, [r4, 0x48]");
0x00010cfc mov r2, r0 | r2 = r0;
0x00010cfe str r6, [sp] | *(sp) = r6;
0x00010d00 add.w r0, r5, 0x10 | r0 = r5 + 0x10;
0x00010d04 ldr r1, [r5, 0x3c] | r1 = *((r5 + 0x3c));
0x00010d06 str r1, [sp, 4] | var_4h_2 = r1;
0x00010d08 ldr r1, [r5, 0x1c] | r1 = *((r5 + 0x1c));
0x00010d0a blx r1 | uint32_t (*r1)(uint32_t, uint32_t, uint32_t) (r0, r1, r2);
0x00010d0c ldr r3, [r5, 0x3c] | r3 = *((r5 + 0x3c));
0x00010d0e mov r8, r0 | r8 = r0;
0x00010d10 cmp r3, r0 |
| if (r3 == r0) {
0x00010d12 beq 0x10d50 | goto label_3;
| }
0x00010d14 blx 0x357c | sprintf_chk ()
0x00010d18 cmp.w r8, 0 |
| if (r8 != 0) {
0x00010d1c bne 0x10d68 | goto label_4;
| }
0x00010d1e ldr r0, [r0] | r0 = *(r0);
| do {
0x00010d20 ldr r3, [pc, 0x60] | r3 = *(0x10d84);
0x00010d22 ldr r3, [r7, r3] | r3 = *((r7 + r3));
0x00010d24 ldr r7, [r4, 4] | r7 = *((r4 + 4));
0x00010d26 ldr.w r8, [r3] | r8 = *(0x10d84);
0x00010d2a blx 0x3468 | ext2fs_add_journal_inode3 ();
0x00010d2e ldr r3, [pc, 0x58] |
0x00010d30 movs r1, 1 | r1 = 1;
0x00010d32 ldr r2, [pc, 0x58] |
0x00010d34 str r0, [sp, 0xc] | var_ch_2 = r0;
0x00010d36 mov r0, r8 | r0 = r8;
0x00010d38 add r3, pc | r3 = 0x21ac6;
0x00010d3a str r7, [sp, 8] | var_8h_2 = r7;
0x00010d3c adds r3, 0xb0 | r3 += 0xb0;
0x00010d3e add r2, pc | r2 = 0x21ad0;
0x00010d40 str r3, [sp, 4] | var_4h_2 = r3;
0x00010d42 movw r3, 0x216 | r3 = 0x216;
0x00010d46 str r3, [sp] | *(sp) = r3;
0x00010d48 ldr r3, [pc, 0x44] |
0x00010d4a add r3, pc | r3 = 0x21ade;
0x00010d4c blx 0x3684 | ext2fs_write_inode ();
| label_3:
0x00010d50 ldr r3, [r5, 0x40] | r3 = *((r5 + 0x40));
0x00010d52 mov r1, r6 | r1 = r6;
0x00010d54 mov r0, r4 | r0 = r4;
0x00010d56 ldr r3, [r3, 4] | r3 = *((r3 + 4));
0x00010d58 blx r3 | uint32_t (*r3)(uint32_t, uint32_t, uint32_t) (r0, r1, r3);
| label_2:
0x00010d5a mov r0, r6 | r0 = r6;
0x00010d5c blx 0x3098 | fcn_00003098 ();
| label_0:
0x00010d60 mov r0, r4 | r0 = r4;
0x00010d62 add sp, 0x10 |
0x00010d64 pop.w {r4, r5, r6, r7, r8, pc} |
| label_4:
0x00010d68 movs r3, 5 | r3 = 5;
0x00010d6a str r3, [r0] | *(r0) = r3;
0x00010d6c mov r0, r3 | r0 = r3;
0x00010d6e b 0x10d20 |
| } while (1);
| label_1:
0x00010d70 mov r0, r4 | r0 = r4;
0x00010d72 mov r4, r6 | r4 = r6;
0x00010d74 blx 0x3098 | fcn_00003098 ();
0x00010d78 mov r0, r4 | r0 = r4;
0x00010d7a add sp, 0x10 |
0x00010d7c pop.w {r4, r5, r6, r7, r8, pc} |
| }
[*] Function sprintf used 31 times mkfs.ext3