[*] Binary protection state of debugfs
Full RELRO Canary found NX enabled PIE enabled No RPATH No RUNPATH No Symbols
[*] Function strcat tear down of debugfs
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/sbin/debugfs @ 0x12a64 */
| #include <stdint.h>
|
| #define BIT_MASK(t,v) ((t)(-((v)!= 0)))&(((t)-1)>>((sizeof(t)*CHAR_BIT)-(v)))
|
; (fcn) fcn.00012a64 () | void fcn_00012a64 (int16_t arg_b0h, int16_t arg1, int16_t arg2, int16_t arg3, int16_t arg4) {
| int16_t var_0h;
| int16_t var_8h;
| int16_t var_ch;
| int16_t var_14h;
| int32_t var_18h;
| int32_t var_18h_2;
| int16_t var_26h;
| int32_t var_34h;
| int32_t var_34h_2;
| int16_t var_8ch;
| r0 = arg1;
| r1 = arg2;
| r2 = arg3;
| r3 = arg4;
0x00012a64 push.w {r4, r5, r6, r7, r8, sb, lr} |
0x00012a68 and r7, r3, 0xf000 | r7 = r3 & 0xf000;
0x00012a6c ldr r4, [pc, 0x1e4] |
0x00012a6e cmp.w r7, 0x6000 |
0x00012a72 sub sp, 0x94 |
0x00012a74 mov r5, r0 | r5 = r0;
0x00012a76 ldr r3, [pc, 0x1e0] | r3 = *(0x12c5a);
0x00012a78 mov r6, r1 | r6 = r1;
0x00012a7a add r4, pc | r4 = 0x256d2;
0x00012a7c mov r8, r2 | r8 = r2;
0x00012a7e ldr r3, [r4, r3] |
0x00012a80 ldr r3, [r3] | r3 = *(0x256d2);
0x00012a82 str r3, [sp, 0x8c] | var_8ch = r3;
0x00012a84 mov.w r3, 0 | r3 = 0;
| if (r7 == 0x6000) {
0x00012a88 beq.w 0x12bd6 | goto label_5;
| }
| if (r7 > 0x6000) {
0x00012a8c bhi.w 0x12ba4 | goto label_6;
| }
0x00012a90 cmp.w r7, 0x1000 |
| if (r7 == 0x1000) {
0x00012a94 beq.w 0x12bbc | goto label_7;
| }
0x00012a98 cmp.w r7, 0x2000 |
0x00012a9c it eq |
| if (r7 != 0x2000) {
0x00012a9e moveq sb, 3 | sb = 3;
| }
| if (r7 != 0x2000) {
0x00012aa2 bne.w 0x12bb2 | goto label_8;
| }
| do {
| label_1:
0x00012aa6 add r3, sp, 8 | r3 += var_8h;
0x00012aa8 movw r2, 0x11ed | r2 = 0x11ed;
0x00012aaa asrs r5, r5, 0xb | r5 >>= 0xb;
0x00012aac str r3, [sp] | *(sp) = r3;
0x00012aae mov r1, r6 | r1 = r6;
0x00012ab0 movs r3, 0 | r3 = 0;
0x00012ab2 mov r0, r5 | r0 = r5;
0x00012ab4 blx 0x51a8 | r0 = strcpy (r0, r1);
0x00012ab8 mov r4, r0 | r4 = r0;
0x00012aba cmp r0, 0 |
| if (r0 != 0) {
0x00012abc bne.w 0x12bc2 | goto label_9;
| }
0x00012ac0 ldr r1, [pc, 0x198] |
0x00012ac2 movs r0, 1 | r0 = 1;
0x00012ac4 ldr r2, [sp, 8] | r2 = var_8h;
0x00012ac6 add r1, pc | r1 = 0x25726;
0x00012ac8 blx 0x54bc | fcn_000054bc ();
0x00012acc ldr r3, [sp, 8] | r3 = var_8h;
0x00012ace mov r2, r8 | r2 = r8;
0x00012ad0 mov r1, r6 | r1 = r6;
0x00012ad2 mov r0, r5 | r0 = r5;
0x00012ad4 str.w sb, [sp] | __asm ("str.w sb, [sp]");
0x00012ad8 blx 0x577c | fcn_0000577c ();
0x00012adc movw r3, 0xb726 |
0x00012ae0 mov r4, r0 | r4 = r0;
0x00012ae2 movt r3, 0x7f2b | r3 = 0x7f2bb726;
0x00012ae6 cmp r0, r3 |
| if (r0 == r3) {
0x00012ae8 beq 0x12bdc | goto label_10;
| }
0x00012aea cmp r4, 0 |
| if (r4 != 0) {
0x00012aec bne.w 0x12c00 | goto label_11;
| }
| label_2:
0x00012af0 ldr r2, [sp, 8] | r2 = var_8h;
0x00012af2 mov r3, r4 | r3 = r4;
0x00012af4 ldr r0, [r5, 0x2c] | r0 = *((r5 + 0x2c));
0x00012af6 blx 0x55ec | r0 = list_super2 ();
0x00012afa cmp r0, 0 |
| if (r0 != 0) {
0x00012afc bne.w 0x12c10 | goto label_12;
| }
| label_3:
0x00012b00 ldr r1, [sp, 8] | r1 = var_8h;
0x00012b02 movs r3, 0 | r3 = 0;
0x00012b04 movs r2, 1 | r2 = 1;
0x00012b06 mov r0, r5 | r0 = r5;
0x00012b08 add r6, sp, 0xc | r6 += var_ch;
0x00012b0a blx 0x564c | ext2fs_xattr_remove ();
0x00012b0e movs r2, 0x80 | r2 = 0x80;
0x00012b10 movs r1, 0 | r1 = 0;
0x00012b12 mov r0, r6 | r0 = r6;
0x00012b14 blx 0x5440 | fcn_00005440 ();
0x00012b18 ldr r0, [r5, 0x60] | r0 = *((r5 + 0x60));
0x00012b1a strh.w r7, [sp, 0xc] | var_ch = r7;
0x00012b1e cmp r0, 0 |
| if (r0 == 0) {
0x00012b20 beq.w 0x12c36 | goto label_13;
| }
| label_4:
0x00012b24 ldr r3, [sp, 0xb0] | r3 = *(arg_b0h);
0x00012b26 mov r7, r0 | r7 = r0;
0x00012b28 ldr r2, [sp, 0xb0] | r2 = *(arg_b0h);
0x00012b2a strd r7, r7, [sp, 0x18] | __asm ("strd r7, r7, [var_18h]");
0x00012b2e str r7, [sp, 0x14] | var_14h = r7;
0x00012b30 lsrs r1, r3, 8 | r1 = r3 >> 8;
0x00012b32 lsrs r3, r3, 0xc | r3 >>= 0xc;
0x00012b34 uxtb r2, r2 | r2 = (int8_t) r2;
0x00012b36 bic r3, r3, 0xff | r3 = BIT_MASK (r3, 0xff);
0x00012b3a orrs r3, r2 | r3 |= r2;
0x00012b3c ubfx r0, r1, 0, 0xc | r0 = (r1 >> 0) & ((1 << 0xc) - 1);
0x00012b40 and r1, r1, 0xf00 | r1 &= 0xf00;
0x00012b44 cmp r3, 0xff |
0x00012b46 it ls |
| if (r3 <= 0xff) {
0x00012b48 cmpls r1, 0 | __asm ("cmpls r1, 0");
| }
0x00012b4a itttt ne |
| if (r3 == 0xff) {
0x00012b4c movne r1, 0 | r1 = 0;
| }
| if (r3 != 0xff) {
0x00012b4e uxtbne r2, r3 | __asm ("uxtbne r2, r3");
| }
| if (r3 != 0xff) {
0x00012b50 movtne r1, 0xfff0 | __asm ("movtne r1, 0xfff0");
| }
| if (r3 != 0xff) {
0x00012b54 orr.w r2, r2, r0, lsl 8 | r2 |= (r0 << 8);
| }
0x00012b58 iteet ne |
| if (r3 == 0xff) {
0x00012b5a andne r1, r1, r3, lsl 12 | r1 &= (r3 << 12);
| }
| if (r3 != 0xff) {
0x00012b5e moveq r4, 1 | r4 = 1;
| }
| if (r3 == 0xff) {
0x00012b60 addne r4, r3, r0, lsl 8 | r4 = r3 + (r0 << 8);
| }
| if (r3 != 0xff) {
0x00012b64 orr.w r3, r2, r1 | r3 = r2 | r1;
| }
0x00012b68 ldr r1, [sp, 8] | r1 = var_8h;
0x00012b6a ite ne |
| if (r3 == 0xff) {
0x00012b6c movne r4, 0 | r4 = 0;
| }
| if (r3 != 0xff) {
0x00012b6e moveq r3, 0 | r3 = 0;
| }
0x00012b70 mov r0, r5 | r0 = r5;
0x00012b72 mov r2, r6 | r2 = r6;
0x00012b74 movs r5, 1 | r5 = 1;
0x00012b76 strd r4, r3, [sp, 0x34] | __asm ("strd r4, r3, [var_34h]");
0x00012b7a strh.w r5, [sp, 0x26] | var_26h = r5;
0x00012b7e blx 0x5260 | r0 = fcn_00005260 ();
0x00012b82 mov r4, r0 | r4 = r0;
0x00012b84 cmp r0, 0 |
| if (r0 != 0) {
0x00012b86 bne 0x12c22 | goto label_14;
| }
| label_0:
0x00012b88 ldr r2, [pc, 0xd4] |
0x00012b8a ldr r3, [pc, 0xcc] | r3 = *(0x12c5a);
0x00012b8c add r2, pc | r2 = 0x257f0;
0x00012b8e ldr r3, [r2, r3] | r3 = *(0x257f0);
0x00012b90 ldr r2, [r3] | r2 = *(0x257f0);
0x00012b92 ldr r3, [sp, 0x8c] | r3 = var_8ch;
0x00012b94 eors r2, r3 | r2 ^= r3;
0x00012b96 mov.w r3, 0 | r3 = 0;
| if (r2 != r3) {
0x00012b9a bne 0x12c4e | goto label_15;
| }
0x00012b9c mov r0, r4 | r0 = r4;
0x00012b9e add sp, 0x94 |
0x00012ba0 pop.w {r4, r5, r6, r7, r8, sb, pc} |
| label_6:
0x00012ba4 cmp.w r7, 0xc000 |
0x00012ba8 it eq |
| if (r7 != 0xc000) {
0x00012baa moveq sb, 6 | sb = 6;
| }
0x00012bae beq.w 0x12aa6 |
| } while (r7 == 0xc000);
| label_8:
0x00012bb2 movw r4, 0xb747 |
0x00012bb6 movt r4, 0x7f2b | r4 = 0x7f2bb747;
0x00012bba b 0x12b88 | goto label_0;
| label_7:
0x00012bbc mov.w sb, 5 | sb = 5;
0x00012bc0 b 0x12aa6 | goto label_1;
| label_9:
0x00012bc2 ldr r0, [pc, 0xa0] |
0x00012bc4 mov r3, r8 | r3 = r8;
0x00012bc6 ldr r2, [pc, 0xa0] |
0x00012bc8 mov r1, r4 | r1 = r4;
0x00012bca add r0, pc | r0 = 0x25834;
0x00012bcc add r2, pc | r2 = 0x2583a;
0x00012bce adds r0, 0x10 | r0 += 0x10;
0x00012bd0 blx 0x50d8 | fcn_000050d8 ();
0x00012bd4 b 0x12b88 | goto label_0;
| label_5:
0x00012bd6 mov.w sb, 4 | sb = 4;
0x00012bda b 0x12aa6 | goto label_1;
| label_10:
0x00012bdc mov r1, r6 | r1 = r6;
0x00012bde mov r0, r5 | r0 = r5;
0x00012be0 blx 0x53e8 | r0 = strcat_chk ()
0x00012be4 mov r4, r0 | r4 = r0;
| if (r0 != 0) {
0x00012be6 cbnz r0, 0x12c3c | goto label_16;
| }
0x00012be8 ldr r3, [sp, 8] | r3 = var_8h;
0x00012bea mov r1, r6 | r1 = r6;
0x00012bec mov r2, r8 | r2 = r8;
0x00012bee mov r0, r5 | r0 = r5;
0x00012bf0 str.w sb, [sp] | __asm ("str.w sb, [sp]");
0x00012bf4 blx 0x577c | r0 = fcn_0000577c ();
0x00012bf8 mov r4, r0 | r4 = r0;
0x00012bfa cmp r4, 0 |
| if (r4 == 0) {
0x00012bfc beq.w 0x12af0 | goto label_2;
| }
| label_11:
0x00012c00 ldr r2, [pc, 0x68] |
0x00012c02 mov r3, r8 | r3 = r8;
0x00012c04 mov r1, r4 | r1 = r4;
0x00012c06 mov r0, r8 | r0 = r8;
0x00012c08 add r2, pc | r2 = 0x25878;
0x00012c0a blx 0x50d8 | fcn_000050d8 ();
0x00012c0e b 0x12b88 | goto label_0;
| label_12:
0x00012c10 ldr r0, [pc, 0x5c] |
0x00012c12 mov r1, r4 | r1 = r4;
0x00012c14 ldr r2, [pc, 0x5c] |
0x00012c16 add r0, pc | r0 = 0x2588a;
0x00012c18 add r2, pc | r2 = 0x25890;
0x00012c1a adds r0, 0x10 | r0 += 0x10;
0x00012c1c blx 0x50d8 | fcn_000050d8 ();
0x00012c20 b 0x12b00 | goto label_3;
| label_14:
0x00012c22 ldr r0, [pc, 0x54] |
0x00012c24 mov r1, r4 | r1 = r4;
0x00012c26 ldr r2, [pc, 0x54] |
0x00012c28 ldr r3, [sp, 8] | r3 = var_8h;
0x00012c2a add r0, pc | r0 = 0x258a8;
0x00012c2c add r2, pc | r2 = 0x258ae;
0x00012c2e adds r0, 0x10 | r0 += 0x10;
0x00012c30 blx 0x50d8 | fcn_000050d8 ();
0x00012c32 orrs.w r7, r2, r8, asr 26 | r7 = r2 | (r8 >> 26);
| label_13:
0x00012c36 blx 0x4f60 | fcn_00004f60 ();
0x00012c3a b 0x12b24 | goto label_4;
| label_16:
0x00012c3c ldr r0, [pc, 0x40] |
0x00012c3e mov r1, r4 | r1 = r4;
0x00012c40 ldr r2, [pc, 0x40] |
0x00012c42 add r0, pc | r0 = 0x258c6;
0x00012c44 add r2, pc | r2 = 0x258cc;
0x00012c46 adds r0, 0x10 | r0 += 0x10;
0x00012c48 blx 0x50d8 | fcn_000050d8 ();
0x00012c4c b 0x12b88 | goto label_0;
| label_15:
0x00012c4e blx 0x5008 | fcn_00005008 ();
0x00012c52 nop |
0x00012c54 asrs r2, r4, 4 | r2 = r4 >> 4;
0x00012c56 movs r2, r0 | r2 = r0;
0x00012c58 lsls r0, r2, 0x10 | r0 = r2 << 0x10;
0x00012c5a movs r0, r0 |
0x00012c5c b 0x1282c | return void (*0x1282c)() ();
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/sbin/debugfs @ 0x12c88 */
| #include <stdint.h>
|
; (fcn) fcn.00012c88 () | void fcn_00012c88 (int16_t arg_30h, int16_t arg1, int16_t arg2, int16_t arg3, int16_t arg4) {
| int16_t var_0h;
| char * * endptr;
| int16_t var_ch;
| r0 = arg1;
| r1 = arg2;
| r2 = arg3;
| r3 = arg4;
0x00012c88 push.w {r4, r5, r6, r7, r8, sb, lr} |
0x00012c8c mov r5, r2 | r5 = r2;
0x00012c8e ldr r2, [pc, 0xd4] |
0x00012c90 mov r7, r3 | r7 = r3;
0x00012c92 sub sp, 0x14 |
0x00012c94 mov r4, r1 | r4 = r1;
0x00012c96 ldr r3, [pc, 0xd0] | r3 = *(0x12d6a);
0x00012c98 mov r6, r0 | r6 = r0;
0x00012c9a add r2, pc | r2 = 0x25a04;
0x00012c9c movs r1, 0x2f | r1 = 0x2f;
0x00012c9e mov r0, r5 | r0 = r5;
0x00012ca0 ldr r3, [r2, r3] |
0x00012ca2 ldr r3, [r3] | r3 = *(0x25a04);
0x00012ca4 str r3, [sp, 0xc] | var_ch = r3;
0x00012ca6 mov.w r3, 0 | r3 = 0;
0x00012caa blx 0x567c | r0 = ext2fs_fallocate ();
| if (r0 == 0) {
0x00012cae cbz r0, 0x12d10 | goto label_2;
| }
0x00012cb0 add r3, sp, 8 | r3 += endptr;
0x00012cb2 mov.w sb, 0 | sb = 0;
0x00012cb6 strb.w sb, [r0] | *(r0) = sb;
0x00012cba mov r2, r4 | r2 = r4;
0x00012cbc str r3, [sp] | *(sp) = r3;
0x00012cbe mov r8, r0 | r8 = r0;
0x00012cc0 ldr r1, [sp, 0x30] | r1 = *(arg_30h);
0x00012cc2 mov r3, r5 | r3 = r5;
0x00012cc4 mov r0, r6 | r0 = r6;
0x00012cc6 blx 0x4f3c | r0 = fcn_00004f3c ();
0x00012cca mov r4, r0 | r4 = r0;
0x00012ccc cmp r0, 0 |
| if (r0 != 0) {
0x00012cce bne 0x12d44 | goto label_3;
| }
0x00012cd0 ldr r4, [sp, 8] | r4 = endptr;
0x00012cd2 add.w r5, r8, 1 | r5 = r8 + 1;
| do {
0x00012cd6 mov r3, r5 | r3 = r5;
0x00012cd8 mov r1, r4 | r1 = r4;
0x00012cda movs r2, 0 | r2 = 0;
0x00012cdc mov r0, r6 | r0 = r6;
0x00012cde str r7, [sp] | *(sp) = r7;
0x00012ce0 blx 0x5358 | strtoul (r0, r1, r2);
0x00012ce4 movw r3, 0xb726 |
0x00012ce8 mov r4, r0 | r4 = r0;
0x00012cea movt r3, 0x7f2b | r3 = 0x7f2bb726;
0x00012cee cmp r0, r3 |
| if (r0 == r3) {
0x00012cf0 beq 0x12d26 | goto label_4;
| }
| if (r4 != 0) {
| label_1:
0x00012cf2 cbnz r4, 0x12d14 | goto label_5;
| }
| label_0:
0x00012cf4 ldr r2, [pc, 0x74] |
0x00012cf6 ldr r3, [pc, 0x70] | r3 = *(0x12d6a);
0x00012cf8 add r2, pc | r2 = 0x25a68;
0x00012cfa ldr r3, [r2, r3] | r3 = *(0x25a68);
0x00012cfc ldr r2, [r3] | r2 = *(0x25a68);
0x00012cfe ldr r3, [sp, 0xc] | r3 = var_ch;
0x00012d00 eors r2, r3 | r2 ^= r3;
0x00012d02 mov.w r3, 0 | r3 = 0;
| if (r2 != r3) {
0x00012d06 bne 0x12d60 | goto label_6;
| }
0x00012d08 mov r0, r4 | r0 = r4;
0x00012d0a add sp, 0x14 |
0x00012d0c pop.w {r4, r5, r6, r7, r8, sb, pc} |
| label_2:
0x00012d10 str r4, [sp, 8] | endptr = r4;
0x00012d12 b 0x12cd6 |
| } while (1);
| label_5:
0x00012d14 ldr r2, [pc, 0x58] |
0x00012d16 mov r3, r5 | r3 = r5;
0x00012d18 ldr r0, [pc, 0x58] |
0x00012d1a mov r1, r4 | r1 = r4;
0x00012d1c add r2, pc | r2 = 0x25a90;
0x00012d1e add r0, pc | r0 = 0x25a96;
0x00012d20 blx 0x50d8 | fcn_000050d8 ();
0x00012d24 b 0x12cf4 | goto label_0;
| label_4:
0x00012d26 ldr r1, [sp, 8] | r1 = endptr;
0x00012d28 mov r0, r6 | r0 = r6;
0x00012d2a blx 0x53e8 | r0 = strcat_chk ()
0x00012d2e mov r4, r0 | r4 = r0;
| if (r0 == 0) {
0x00012d30 cbnz r0, 0x12d50 |
0x00012d32 mov r2, r0 | r2 = r0;
0x00012d34 ldr r1, [sp, 8] | r1 = endptr;
0x00012d36 mov r3, r5 | r3 = r5;
0x00012d38 mov r0, r6 | r0 = r6;
0x00012d3a str r7, [sp] | *(sp) = r7;
0x00012d3c blx 0x5358 | r0 = strtoul (r0, r1, r2);
0x00012d40 mov r4, r0 | r4 = r0;
0x00012d42 b 0x12cf2 | goto label_1;
| label_3:
0x00012d44 mov r1, r0 | r1 = r0;
0x00012d46 mov r2, sb | r2 = sb;
0x00012d48 mov r0, r5 | r0 = r5;
0x00012d4a blx 0x50d8 | fcn_000050d8 ();
0x00012d4e b 0x12cf4 | goto label_0;
| }
0x00012d50 ldr r2, [pc, 0x24] |
0x00012d52 mov r1, r4 | r1 = r4;
0x00012d54 ldr r0, [pc, 0x24] |
0x00012d56 add r2, pc | r2 = 0x25ad2;
0x00012d58 add r0, pc | r0 = 0x25ad8;
0x00012d5a blx 0x50d8 | fcn_000050d8 ();
0x00012d5e b 0x12cf4 | goto label_0;
| label_6:
0x00012d60 blx 0x5008 | r0 = fcn_00005008 ();
0x00012d64 lsrs r2, r0, 0x1c | r2 = r0 >> 0x1c;
0x00012d66 movs r2, r0 | r2 = r0;
0x00012d68 lsls r0, r2, 0x10 | r0 = r2 << 0x10;
0x00012d6a movs r0, r0 |
0x00012d6c lsrs r4, r4, 0x1a | r4 >>= 0x1a;
0x00012d6e movs r2, r0 | r2 = r0;
0x00012d70 b 0x1355c | return void (*0x1355c)() ();
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/sbin/debugfs @ 0x12d80 */
| #include <stdint.h>
|
| #define BIT_MASK(t,v) ((t)(-((v)!= 0)))&(((t)-1)>>((sizeof(t)*CHAR_BIT)-(v)))
|
; (fcn) fcn.00012d80 () | void fcn_00012d80 (int16_t arg_28h, int16_t arg_2ch, int16_t arg_30h, int16_t arg_34h, int16_t arg_38h, int16_t arg_3ch, int16_t arg_40h, int16_t arg_50h, int16_t arg_54h, int16_t arg_58h, int16_t arg_5ch, int16_t arg_60h, int16_t arg_70h, int16_t arg_88h, int16_t arg_90h, int16_t arg_98h, int16_t arg_a0h, int16_t arg_ach, int16_t arg_aeh, int16_t arg_b4h, int16_t arg_b8h, int16_t arg_bch, int16_t arg_c4h, int16_t arg_c6h, int16_t arg_124h, int16_t arg_126h, int16_t arg_12ch, 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_ch;
| int16_t var_14h;
| int16_t var_18h;
| int16_t var_1ch;
| int16_t var_20h;
| int16_t var_24h;
| r0 = arg1;
| r1 = arg2;
| r2 = arg3;
| r3 = arg4;
0x00012d80 push.w {r4, r5, r6, r7, r8, lr} |
0x00012d84 mov r5, r2 | r5 = r2;
0x00012d86 ldr r2, [pc, 0xd4] |
0x00012d88 mov r7, r3 | r7 = r3;
0x00012d8a sub sp, 0x10 |
0x00012d8c mov r4, r1 | r4 = r1;
0x00012d8e ldr r3, [pc, 0xd0] | r3 = *(0x12e62);
0x00012d90 mov r6, r0 | r6 = r0;
0x00012d92 add r2, pc | r2 = 0x25bf4;
0x00012d94 movs r1, 0x2f | r1 = 0x2f;
0x00012d96 mov r0, r5 | r0 = r5;
0x00012d98 ldr r3, [r2, r3] |
0x00012d9a ldr r3, [r3] | r3 = *(0x25bf4);
0x00012d9c str r3, [sp, 0xc] | var_ch = r3;
0x00012d9e mov.w r3, 0 | r3 = 0;
0x00012da2 blx 0x567c | r0 = ext2fs_fallocate ();
| if (r0 == 0) {
0x00012da6 cbz r0, 0x12e02 | goto label_19;
| }
0x00012da8 movs r3, 0 | r3 = 0;
0x00012daa mov r2, r4 | r2 = r4;
0x00012dac strb r3, [r0] | *(r0) = r3;
0x00012dae add r3, sp, 8 | r3 += var_8h;
0x00012db0 str r3, [sp] | *(sp) = r3;
0x00012db2 mov r8, r0 | r8 = r0;
0x00012db4 mov r1, r7 | r1 = r7;
0x00012db6 mov r3, r5 | r3 = r5;
0x00012db8 mov r0, r6 | r0 = r6;
0x00012dba blx 0x4f3c | r0 = fcn_00004f3c ();
0x00012dbe mov r4, r0 | r4 = r0;
0x00012dc0 cmp r0, 0 |
| if (r0 != 0) {
0x00012dc2 bne 0x12e34 | goto label_20;
| }
0x00012dc4 ldr r4, [sp, 8] | r4 = var_8h;
0x00012dc6 add.w r5, r8, 1 | r5 = r8 + 1;
| do {
0x00012dca mov r3, r5 | r3 = r5;
0x00012dcc mov r1, r4 | r1 = r4;
0x00012dce movs r2, 0 | r2 = 0;
0x00012dd0 mov r0, r6 | r0 = r6;
0x00012dd2 blx 0x55a4 | ext2fs_close_free ();
0x00012dd6 movw r3, 0xb726 |
0x00012dda mov r4, r0 | r4 = r0;
0x00012ddc movt r3, 0x7f2b | r3 = 0x7f2bb726;
0x00012de0 cmp r0, r3 |
| if (r0 == r3) {
0x00012de2 beq 0x12e18 | goto label_21;
| }
| if (r4 != 0) {
| label_1:
0x00012de4 cbnz r4, 0x12e06 | goto label_22;
| }
| label_0:
0x00012de6 ldr r2, [pc, 0x7c] |
0x00012de8 ldr r3, [pc, 0x74] | r3 = *(0x12e60);
0x00012dea add r2, pc | r2 = 0x25c54;
0x00012dec ldr r3, [r2, r3] | r3 = *(0x25c54);
0x00012dee ldr r2, [r3] | r2 = *(0x25c54);
0x00012df0 ldr r3, [sp, 0xc] | r3 = var_ch;
0x00012df2 eors r2, r3 | r2 ^= r3;
0x00012df4 mov.w r3, 0 | r3 = 0;
| if (r2 != r3) {
0x00012df8 bne 0x12e56 | goto label_23;
| }
0x00012dfa mov r0, r4 | r0 = r4;
0x00012dfc add sp, 0x10 |
0x00012dfe pop.w {r4, r5, r6, r7, r8, pc} |
| label_19:
0x00012e02 str r4, [sp, 8] | var_8h = r4;
0x00012e04 b 0x12dca |
| } while (1);
| label_22:
0x00012e06 ldr r2, [pc, 0x60] |
0x00012e08 mov r3, r5 | r3 = r5;
0x00012e0a ldr r0, [pc, 0x60] |
0x00012e0c mov r1, r4 | r1 = r4;
0x00012e0e add r2, pc | r2 = 0x25c7c;
0x00012e10 add r0, pc | r0 = 0x25c82;
0x00012e12 blx 0x50d8 | fcn_000050d8 ();
0x00012e16 b 0x12de6 | goto label_0;
| label_21:
0x00012e18 ldr r1, [sp, 8] | r1 = var_8h;
0x00012e1a mov r0, r6 | r0 = r6;
0x00012e1c blx 0x53e8 | r0 = strcat_chk ()
0x00012e20 mov r4, r0 | r4 = r0;
| if (r0 == 0) {
0x00012e22 cbnz r0, 0x12e44 |
0x00012e24 mov r2, r0 | r2 = r0;
0x00012e26 ldr r1, [sp, 8] | r1 = var_8h;
0x00012e28 mov r3, r5 | r3 = r5;
0x00012e2a mov r0, r6 | r0 = r6;
0x00012e2c blx 0x55a4 | r0 = ext2fs_close_free ();
0x00012e30 mov r4, r0 | r4 = r0;
0x00012e32 b 0x12de4 | goto label_1;
| label_20:
0x00012e34 ldr r2, [pc, 0x38] |
0x00012e36 mov r1, r0 | r1 = r0;
0x00012e38 mov r3, r5 | r3 = r5;
0x00012e3a mov r0, r5 | r0 = r5;
0x00012e3c add r2, pc | r2 = 0x25cb0;
0x00012e3e blx 0x50d8 | fcn_000050d8 ();
0x00012e42 b 0x12de6 | goto label_0;
| }
0x00012e44 ldr r0, [pc, 0x2c] |
0x00012e46 mov r1, r4 | r1 = r4;
0x00012e48 ldr r2, [pc, 0x2c] |
0x00012e4a add r0, pc | r0 = 0x25cc2;
0x00012e4c add r2, pc | r2 = 0x25cc8;
0x00012e4e adds r0, 0x24 | r0 += 0x24;
0x00012e50 blx 0x50d8 | fcn_000050d8 ();
0x00012e54 b 0x12de6 | goto label_0;
| label_23:
0x00012e56 blx 0x5008 | fcn_00005008 ();
0x00012e5a nop |
0x00012e5c lsrs r2, r1, 0x18 | r2 = r1 >> 0x18;
0x00012e5e movs r2, r0 | r2 = r0;
0x00012e60 lsls r0, r2, 0x10 | r0 = r2 << 0x10;
0x00012e62 movs r0, r0 |
0x00012e64 lsrs r2, r6, 0x16 | r2 = r6 >> 0x16;
0x00012e66 movs r2, r0 | r2 = r0;
0x00012e68 b 0x134f8 | goto label_24;
| do {
0x000133fc ldrb r3, [r5, 1] | r3 = *((r5 + 1));
| if (r3 != 0) {
0x000133fe cbnz r3, 0x13422 | goto label_25;
| }
| label_2:
0x00013400 blx 0x4ec4 | fcn_00004ec4 ();
0x00013404 ldr r3, [sp, 0x18] | r3 = var_18h;
0x00013406 adds r4, 1 | r4++;
0x00013408 cmp r3, r4 |
| if (r3 == r4) {
0x0001340a beq.w 0x13726 | goto label_26;
| }
| label_4:
0x0001340e ldr r3, [sp, 0x38] | r3 = *(arg_38h);
0x00013410 lsls r2, r4, 2 | r2 = r4 << 2;
0x00013412 str r2, [sp, 0x14] | var_14h = r2;
0x00013414 ldr.w r0, [r3, r4, lsl 2] | offset_0 = r4 << 2;
| r0 = *((r3 + offset_0));
0x00013418 ldrb r3, [r0, 0x13] | r3 = *((r0 + 0x13));
0x0001341a add.w r5, r0, 0x13 | r5 = r0 + 0x13;
0x0001341e cmp r3, 0x2e |
0x00013420 beq 0x133fc |
| } while (r3 == 0x2e);
| label_25:
0x00013422 ldrb r3, [r5] | r3 = *(r5);
0x00013424 cmp r3, 0x2e |
| if (r3 != 0x2e) {
0x00013426 bne 0x13434 | goto label_27;
| }
0x00013428 ldrb r3, [r5, 1] | r3 = *((r5 + 1));
0x0001342a cmp r3, 0x2e |
| if (r3 != 0x2e) {
0x0001342c bne 0x13434 | goto label_27;
| }
0x0001342e ldrb r3, [r5, 2] | r3 = *((r5 + 2));
0x00013430 cmp r3, 0 |
| if (r3 == 0) {
0x00013432 beq 0x13400 | goto label_2;
| }
| label_27:
0x00013434 add r1, sp, 0x40 | r1 += arg_40h;
0x00013436 mov r0, r5 | r0 = r5;
0x00013438 blx 0x4f48 | r0 = fcn_00004f48 ();
0x0001343c cmp r0, 0 |
| if (r0 != 0) {
0x0001343e bne.w 0x139fe | goto label_28;
| }
0x00013442 ldr r3, [sp, 0x50] | r3 = *(arg_50h);
0x00013444 and r3, r3, 0xf000 | r3 &= 0xf000;
0x00013448 cmp.w r3, 0x4000 |
0x0001344c it ne |
| if (r3 != 0x4000) {
0x0001344e cmpne r3, 0xa000 | __asm ("cmpne r3, 0xa000");
| }
0x00013452 ite ne |
| if (r3 == 0x4000) {
0x00013454 movne r3, 1 | r3 = 1;
| }
| if (r3 != 0x4000) {
0x00013456 moveq r3, 0 | r3 = 0;
| }
| if (r3 == 0x4000) {
0x00013458 beq.w 0x13568 | goto label_29;
| }
0x0001345c ldr r3, [sp, 0x54] | r3 = *(arg_54h);
0x0001345e cmp r3, 1 |
| if (r3 < 1) {
0x00013460 bls.w 0x13802 | goto label_30;
| }
0x00013464 ldr r3, [sp, 0x24] | r3 = var_24h;
0x00013466 ldrd r7, r2, [sp, 0x40] | __asm ("ldrd r7, r2, [arg_40h]");
0x0001346a ldrd r1, r8, [sp, 0xa0] | __asm ("ldrd r1, r8, [arg_a0h]");
0x0001346e ldr r6, [r3] | r6 = *(r3);
0x00013470 cmp r6, 0 |
| if (r6 <= 0) {
0x00013472 ble 0x13566 | goto label_31;
| }
0x00013474 ldr r3, [r3, 8] | r3 = *((r3 + 8));
0x00013476 mov lr, r5 | lr = r5;
0x00013478 mov ip, r4 |
0x0001347a b 0x13486 |
| while (r2 != r4) {
| label_3:
0x0001347c adds r0, 1 | r0++;
0x0001347e adds r3, 0x18 | r3 += 0x18;
0x00013480 cmp r0, r6 |
| if (r0 == r6) {
0x00013482 beq.w 0x137f8 | goto label_32;
| }
0x00013484 strh r1, [r7, 0xc] | *((r7 + 0xc)) = r1;
0x00013486 ldrd r5, r4, [r3] | __asm ("ldrd r5, r4, [r3]");
0x0001348a cmp r2, r4 |
0x0001348c it eq |
| if (r2 == r4) {
0x0001348e cmpeq r7, r5 | __asm ("cmpeq r7, r5");
| }
0x00013490 bne 0x1347c |
| }
0x00013492 ldrd r5, r4, [r3, 8] | __asm ("ldrd r5, r4, [r3, 8]");
0x00013496 cmp r8, r4 |
0x00013498 it eq |
| if (r8 != r4) {
0x0001349a cmpeq r1, r5 | __asm ("cmpeq r1, r5");
| goto label_33;
| }
| if (r8 != r4) {
| label_33:
0x0001349c bne 0x1347c | goto label_3;
| }
0x0001349e ldr r6, [r3, 0x10] | r6 = *((r3 + 0x10));
0x000134a0 add r7, sp, 0xac | r7 += arg_ach;
0x000134a2 mov r2, r7 | r2 = r7;
0x000134a4 mov r0, fp | r0 = fp;
0x000134a6 mov r5, lr | r5 = lr;
0x000134a8 mov r4, ip | r4 = ip;
0x000134aa mov r1, r6 | r1 = r6;
0x000134ac blx 0x4d58 | r0 = ext2fs_read_inode ();
0x000134b0 mov r3, r0 | r3 = r0;
0x000134b2 cmp r0, 0 |
| if (r0 != 0) {
0x000134b4 bne.w 0x139ca | goto label_34;
| }
0x000134b8 ldrh.w r2, [sp, 0xac] | r2 = *(arg_ach);
0x000134bc and r2, r2, 0xf000 | r2 &= 0xf000;
0x000134c0 cmp.w r2, 0x8000 |
0x000134c4 it eq |
| if (r2 != 0x8000) {
0x000134c6 moveq r3, 1 | r3 = 1;
| }
| if (r2 != 0x8000) {
0x000134c8 beq 0x134fa |
0x000134ca cmp.w r2, 0x4000 |
| if (r2 == 0x4000) {
0x000134ce beq.w 0x13a1a | goto label_35;
| }
0x000134d2 cmp.w r2, 0x2000 |
| if (r2 == 0x2000) {
0x000134d6 beq.w 0x13a7e | goto label_36;
| }
0x000134da cmp.w r2, 0x6000 |
| if (r2 == 0x6000) {
0x000134de beq.w 0x13a82 | goto label_37;
| }
0x000134e2 cmp.w r2, 0xa000 |
| if (r2 == 0xa000) {
0x000134e6 beq.w 0x13a86 | goto label_38;
| }
0x000134ea cmp.w r2, 0x1000 |
| if (r2 == 0x1000) {
0x000134ee beq.w 0x13a8a | goto label_39;
| }
0x000134f2 cmp.w r2, 0xc000 |
0x000134f6 it eq |
| if (r2 == 0xc000) {
| label_24:
0x000134f8 moveq r3, 6 | r3 = 6;
| goto label_17;
| }
| }
| label_17:
0x000134fa mov r2, r5 | r2 = r5;
0x000134fc str r3, [sp] | *(sp) = r3;
0x000134fe mov r1, sb | r1 = sb;
0x00013500 mov r3, r6 | r3 = r6;
0x00013502 mov r0, fp | r0 = fp;
0x00013504 blx 0x577c | fcn_0000577c ();
0x00013508 ldr r2, [sp, 0x30] | r2 = *(arg_30h);
0x0001350a mov r3, r0 | r3 = r0;
0x0001350c cmp r0, r2 |
| if (r0 == r2) {
0x0001350e beq.w 0x13942 | goto label_40;
| }
0x00013512 cmp r3, 0 |
| if (r3 != 0) {
0x00013514 bne.w 0x1392a | goto label_15;
| }
| label_14:
0x00013518 ldrh.w r3, [sp, 0xc6] | r3 = *(arg_c6h);
0x0001351c mov r2, r7 | r2 = r7;
0x0001351e mov r1, r6 | r1 = r6;
0x00013520 mov r0, fp | r0 = fp;
0x00013522 adds r3, 1 | r3++;
0x00013524 strh.w r3, [sp, 0xc6] | *(arg_c6h) = r3;
0x00013528 blx 0x555c | r0 = ext2fs_file_llseek ();
0x0001352c cmp r0, 0 |
| if (r0 != 0) {
0x0001352e beq.w 0x13712 |
0x00013532 mov r8, r6 | r8 = r6;
0x00013534 mov r6, r0 | r6 = r0;
0x00013536 ldr.w r0, [pc, 0x644] |
0x0001353a mov r3, r8 | r3 = r8;
0x0001353c ldr.w r2, [pc, 0x640] |
0x00013540 mov r1, r6 | r1 = r6;
0x00013542 ldr r7, [sp, 0x18] | r7 = var_18h;
0x00013544 add r0, pc | r0 = 0x270c6;
0x00013546 adds r0, 0x5c | r0 += 0x5c;
0x00013548 add r2, pc | r2 = 0x270cc;
0x0001354a blx 0x50d8 | fcn_000050d8 ();
| label_13:
0x0001354e ldr.w r0, [pc, 0x634] |
0x00013552 mov r3, r5 | r3 = r5;
0x00013554 ldr.w r2, [pc, 0x630] | r2 = *(0x13b88);
0x00013558 mov r1, r6 | r1 = r6;
0x0001355a add r0, pc | r0 = 0x270e4;
0x0001355c adds r0, 0x4c | r0 += 0x4c;
0x0001355e add r2, pc | r2 += pc;
0x00013560 blx 0x50d8 | fcn_000050d8 ();
0x00013562 ldc p1, c14, [sl, 0x190]! | __asm ("ldc p1, c14, [sl, 0x190]!");
| label_31:
0x00013566 movs r3, 1 | r3 = 1;
| label_29:
0x00013568 str r3, [sp, 0x28] | *(arg_28h) = r3;
| label_9:
0x0001356a ldr.w r7, [sl, 4] | r7 = *((sl + 4));
0x0001356e mov r0, r5 | r0 = r5;
0x00013570 blx 0x537c | ext2fs_dir_iterate ();
0x00013574 ldr.w r1, [sl, 8] | r1 = *((sl + 8));
0x00013578 adds r2, r7, 1 | r2 = r7 + 1;
0x0001357a ldr.w r3, [sl] | r3 = *(sl);
0x0001357e add r2, r0 | r2 += r0;
0x00013580 cmp r2, r1 |
| if (r2 < r1) {
0x00013582 bls.w 0x137f4 | goto label_41;
| }
0x00013586 lsls r1, r1, 1 | r1 <<= 1;
0x00013588 mov r0, r3 | r0 = r3;
0x0001358a str.w r1, [sl, 8] | __asm ("str.w r1, [sl, 8]");
0x0001358e blx 0x5074 | r0 = fcn_00005074 ();
0x00013592 mov r3, r0 | r3 = r0;
0x00013594 cmp r0, 0 |
| if (r0 == 0) {
0x00013596 beq.w 0x13b2c | goto label_42;
| }
0x0001359a str.w r0, [sl] | __asm ("str.w r0, [sl]");
0x0001359e ldr.w r0, [sl, 4] | r0 = *((sl + 4));
| label_8:
0x000135a2 add r0, r3 | r0 += r3;
0x000135a4 ldr.w r3, [pc, 0x5e4] |
0x000135a8 mov.w r2, -1 | r2 = -1;
0x000135ac movs r1, 1 | r1 = 1;
0x000135ae str r5, [sp] | *(sp) = r5;
0x000135b0 add r3, pc | r3 = 0x27140;
0x000135b2 blx 0x540c | mkdir ();
0x000135b6 ldr.w r3, [sl, 4] | r3 = *((sl + 4));
0x000135ba add r3, r0 | r3 += r0;
0x000135bc str.w r3, [sl, 4] | __asm ("str.w r3, [sl, 4]");
0x000135c0 ldr r3, [sp, 0x1c] | r3 = var_1ch;
| if (r3 != 0) {
0x000135c2 cbz r3, 0x135ea |
0x000135c4 ldr r3, [sp, 0x1c] | r3 = var_1ch;
0x000135c6 ldr r6, [r3] | r6 = *(r3);
0x000135c8 ldr r3, [sp, 0x50] | r3 = *(arg_50h);
| if (r6 == 0) {
0x000135ca cbz r6, 0x135ec | goto label_43;
| }
0x000135cc and r3, r3, 0xf000 | r3 &= 0xf000;
0x000135d0 mov r2, r5 | r2 = r5;
0x000135d2 str r3, [sp, 4] | var_4h = r3;
0x000135d4 mov r0, fp | r0 = fp;
0x000135d6 ldr r3, [sp, 0x20] | r3 = var_20h;
0x000135d8 str r3, [sp] | *(sp) = r3;
0x000135da mov r3, sb | r3 = sb;
0x000135dc ldr.w r1, [sl] | r1 = *(sl);
0x000135de asrs r0, r0, 0x20 | r0 >>= 0x20;
0x000135e0 blx r6 | r0 = uint32_t (*r6)(uint32_t, uint32_t, uint32_t, uint32_t) (r0, r1, r2, r3);
0x000135e2 mov r3, r0 | r3 = r0;
0x000135e4 cmp r0, 0 |
| if (r0 != 0) {
0x000135e6 bne.w 0x13a4c | goto label_44;
| }
| }
0x000135ea ldr r3, [sp, 0x50] | r3 = *(arg_50h);
| label_43:
0x000135ec and r2, r3, 0xf000 | r2 = r3 & 0xf000;
0x000135f0 cmp.w r2, 0x8000 |
| if (r2 == 0x8000) {
0x000135f4 beq.w 0x13862 | goto label_45;
| }
0x000135f6 strh r5, [r6, 8] | *((r6 + 8)) = r5;
| if (r2 > 0x8000) {
0x000135f8 bhi.w 0x13760 | goto label_46;
| }
0x000135fc cmp.w r2, 0x4000 |
| if (r2 == 0x4000) {
0x00013600 beq.w 0x1388e | goto label_47;
| }
| if (r2 < 0x4000) {
0x00013604 bls.w 0x13750 | goto label_48;
| }
0x00013608 cmp.w r2, 0x6000 |
| if (r2 == 0x6000) {
0x0001360c beq.w 0x137ca | goto label_49;
| }
| label_5:
0x00013610 ldr.w r2, [pc, 0x57c] | r2 = fcn.0000dd14;
0x00013614 mov r3, r5 | r3 = r5;
0x00013616 ldr r0, [sp, 0x2c] | r0 = *(arg_2ch);
0x00013618 movs r1, 0 | r1 = 0;
0x0001361a add r6, sp, 0x3c | r6 += arg_3ch;
0x0001361c add r2, pc | r2 += pc;
0x0001361e blx 0x50d8 | fcn_000050d8 ();
| label_6:
0x00013622 ldr r1, [sp, 0x20] | r1 = var_20h;
0x00013624 mov r3, r5 | r3 = r5;
0x00013626 mov r2, sb | r2 = sb;
0x00013628 mov r0, fp | r0 = fp;
0x0001362a str r6, [sp] | *(sp) = r6;
0x0001362c blx 0x4f3c | r0 = fcn_00004f3c ();
0x00013630 cmp r0, 0 |
| if (r0 != 0) {
0x00013632 bne.w 0x13a52 | goto label_50;
| }
0x00013636 ldr r6, [sp, 0x3c] | r6 = *(arg_3ch);
0x00013638 add.w r8, sp, 0xac | r8 += arg_ach;
0x0001363c mov r2, r8 | r2 = r8;
0x0001363e mov r0, fp | r0 = fp;
0x00013640 mov r1, r6 | r1 = r6;
0x00013642 blx 0x4d58 | r0 = ext2fs_read_inode ();
0x00013646 cmp r0, 0 |
| if (r0 != 0) {
0x00013648 bne.w 0x13806 | goto label_51;
| }
0x0001364c ldr r3, [sp, 0x58] | r3 = *(arg_58h);
0x0001364e mov r2, r8 | r2 = r8;
0x00013650 ldr r1, [sp, 0x50] | r1 = *(arg_50h);
0x00013652 mov r0, fp | r0 = fp;
0x00013654 strh.w r3, [sp, 0xae] | *(arg_aeh) = r3;
0x00013658 lsrs r3, r3, 0x10 | r3 >>= 0x10;
0x0001365a ubfx r1, r1, 0, 0xc | r1 = (r1 >> 0) & ((1 << 0xc) - 1);
0x0001365e strh.w r3, [sp, 0x124] | *(arg_124h) = r3;
0x00013662 ldr r3, [sp, 0x5c] | r3 = *(arg_5ch);
0x00013664 strh.w r3, [sp, 0xc4] | *(arg_c4h) = r3;
0x00013668 lsrs r3, r3, 0x10 | r3 >>= 0x10;
0x0001366a strh.w r3, [sp, 0x126] | *(arg_126h) = r3;
0x0001366e ldrh.w r3, [sp, 0xac] | r3 = *(arg_ach);
0x00013672 bic r3, r3, 0xff0 | r3 = BIT_MASK (r3, 0xff0);
0x00013676 bic r3, r3, 0xf | r3 = BIT_MASK (r3, 0xf);
0x0001367a orrs r3, r1 | r3 |= r1;
0x0001367c mov r1, r6 | r1 = r6;
0x0001367e strh.w r3, [sp, 0xac] | *(arg_ach) = r3;
0x00013682 ldr r3, [sp, 0x88] | r3 = *(arg_88h);
0x00013684 str r3, [sp, 0xb4] | *(arg_b4h) = r3;
0x00013686 ldr r3, [sp, 0x90] | r3 = *(arg_90h);
0x00013688 str r3, [sp, 0xbc] | *(arg_bch) = r3;
0x0001368a ldr r3, [sp, 0x98] | r3 = *(arg_98h);
0x0001368c str r3, [sp, 0xb8] | *(arg_b8h) = r3;
0x0001368e blx 0x555c | r0 = ext2fs_file_llseek ();
0x00013692 cmp r0, 0 |
| if (r0 != 0) {
0x00013694 bne.w 0x13848 | goto label_52;
| }
0x00013698 ldr r1, [sp, 0x3c] | r1 = *(arg_3ch);
0x0001369a mov r2, r5 | r2 = r5;
0x0001369c mov r0, fp | r0 = fp;
0x0001369e bl 0x12784 | r0 = fcn_00012784 (r0, r1, r2);
0x000136a2 cmp r0, 0 |
| if (r0 != 0) {
0x000136a4 bne.w 0x13a66 | goto label_53;
| }
0x000136a8 ldr r3, [sp, 0x1c] | r3 = var_1ch;
| if (r3 != 0) {
0x000136aa cbz r3, 0x136d2 |
0x000136ac ldr r3, [sp, 0x1c] | r3 = var_1ch;
0x000136ae ldr r6, [r3, 4] | r6 = *((r3 + 4));
| if (r6 == 0) {
0x000136b0 cbz r6, 0x136d2 | goto label_54;
| }
0x000136b2 ldr r3, [sp, 0x20] | r3 = var_20h;
0x000136b4 mov r2, r5 | r2 = r5;
0x000136b6 mov r0, fp | r0 = fp;
0x000136b8 str r3, [sp] | *(sp) = r3;
0x000136ba ldr r3, [sp, 0x50] | r3 = *(arg_50h);
0x000136bc and r3, r3, 0xf000 | r3 &= 0xf000;
0x000136c0 str r3, [sp, 4] | var_4h = r3;
0x000136c2 mov r3, sb | r3 = sb;
0x000136c4 ldr.w r1, [sl] | r1 = *(sl);
0x000136c8 blx r6 | r0 = uint32_t (*r6)(uint32_t, uint32_t, uint32_t, uint32_t) (r0, r1, r2, r3);
0x000136ca mov r3, r0 | r3 = r0;
0x000136cc cmp r0, 0 |
| if (r0 != 0) {
0x000136ce bne.w 0x13a4c | goto label_44;
| }
| }
| label_54:
0x000136d2 ldr r3, [sp, 0x28] | r3 = *(arg_28h);
| if (r3 != 0) {
0x000136d4 cbz r3, 0x13706 |
0x000136d6 ldr r1, [sp, 0x24] | r1 = var_24h;
0x000136d8 ldrd r3, r2, [r1] | __asm ("ldrd r3, r2, [r1]");
0x000136dc ldr r0, [r1, 8] | r0 = *((r1 + 8));
0x000136de cmp r3, r2 |
| if (r3 == r2) {
0x000136e0 beq.w 0x139aa | goto label_55;
| }
| label_16:
0x000136e4 add.w r2, r3, r3, lsl 1 | r2 = r3 + (r3 << 1);
0x000136e8 ldr r1, [sp, 0x3c] | r1 = *(arg_3ch);
0x000136ea vldr d16, [sp, 0xa0] | __asm ("vldr d16, [sp, 0xa0]");
0x000136ee adds r3, 1 | r3++;
0x000136f0 add.w r2, r0, r2, lsl 3 | r2 = r0 + (r2 << 3);
0x000136f4 str r1, [r2, 0x10] | *((r2 + 0x10)) = r1;
0x000136f6 ldrd r0, r1, [sp, 0x40] | __asm ("ldrd r0, r1, [arg_40h]");
0x000136fa vstr d16, [r2, 8] | __asm ("vstr d16, [r2, 8]");
0x000136fe strd r0, r1, [r2] | __asm ("strd r0, r1, [r2]");
0x00013702 ldr r2, [sp, 0x24] | r2 = var_24h;
0x00013704 str r3, [r2] | *(r2) = r3;
| }
0x00013706 ldr.w r3, [sl] | r3 = *(sl);
0x0001370a movs r2, 0 | r2 = 0;
0x0001370c str.w r7, [sl, 4] | __asm ("str.w r7, [sl, 4]");
0x00013710 strb r2, [r3, r7] | *((r3 + r7)) = r2;
| }
0x00013712 ldr r3, [sp, 0x38] | r3 = *(arg_38h);
0x00013714 adds r4, 1 | r4++;
0x00013716 ldr r2, [sp, 0x14] | r2 = var_14h;
0x00013718 ldr r0, [r3, r2] | r0 = *((r3 + r2));
0x0001371a blx 0x4ec4 | fcn_00004ec4 ();
0x0001371e ldr r3, [sp, 0x18] | r3 = var_18h;
0x00013720 cmp r3, r4 |
| if (r3 != r4) {
0x00013722 bne.w 0x1340e | goto label_4;
| }
| label_26:
0x00013726 movs r6, 0 | r6 = 0;
| label_10:
0x00013728 ldr r0, [sp, 0x38] | r0 = *(arg_38h);
0x0001372a blx 0x4ec4 | fcn_00004ec4 ();
0x0001372e ldr.w r2, [pc, 0x464] |
0x00013732 ldr.w r3, [pc, 0x434] | r3 = *(0x13b6a);
0x00013736 add r2, pc | r2 = 0x272d0;
0x00013738 ldr r3, [r2, r3] | r3 = *(0x272d0);
0x0001373a ldr r2, [r3] | r2 = *(0x272d0);
0x0001373c ldr r3, [sp, 0x12c] | r3 = *(arg_12ch);
0x0001373e eors r2, r3 | r2 ^= r3;
0x00013740 mov.w r3, 0 | r3 = 0;
| if (r2 != r3) {
0x00013744 bne.w 0x13b0a | goto label_56;
| }
0x00013748 mov r0, r6 | r0 = r6;
0x0001374a add sp, 0x134 |
0x0001374c pop.w {r4, r5, r6, r7, r8, sb, sl, fp, pc} |
| label_48:
0x00013750 sub.w r2, r2, 0x1000 | r2 -= 0x1000;
0x00013754 bic r2, r2, 0x1000 | r2 = BIT_MASK (r2, 0x1000);
0x00013758 cmp r2, 0 |
| if (r2 != 0) {
0x0001375a bne.w 0x13610 | goto label_5;
| }
0x0001375e b 0x137ca | goto label_49;
| label_46:
0x00013760 cmp.w r2, 0xa000 |
| if (r2 == 0xa000) {
0x00013764 bne 0x137c2 |
0x00013766 ldr r2, [sp, 0x70] | r2 = *(arg_70h);
0x00013768 add.w r8, r2, 1 | r8 = r2 + 1;
0x0001376c mov r0, r8 | r0 = r8;
0x0001376e blx 0x52bc | r0 = strerror (r0);
0x00013772 mov r6, r0 | r6 = r0;
0x00013774 cmp r0, 0 |
| if (r0 == 0) {
0x00013776 beq.w 0x13b50 | goto label_57;
| }
0x0001377a mov r1, r0 | r1 = r0;
0x0001377c mov r2, r8 | r2 = r8;
0x0001377e mov r0, r5 | r0 = r5;
0x00013780 blx 0x5120 | r0 = fcn_00005120 ();
0x00013784 adds r3, r0, 1 | r3 = r0 + 1;
| if (r3 == r0) {
0x00013786 beq.w 0x13aaa | goto label_58;
| }
0x0001378a ldrd r1, r2, [sp, 0x70] | __asm ("ldrd r1, r2, [arg_70h]");
0x0001378e asrs r3, r0, 0x1f | r3 = r0 >> 0x1f;
0x00013790 cmp r1, r0 |
0x00013792 sbcs.w r3, r2, r3 | __asm ("sbcs.w r3, r2, r3");
| if (r1 < r0) {
0x00013796 blt.w 0x13a8e | goto label_59;
| }
0x0001379a movs r3, 0 | r3 = 0;
0x0001379c mov r2, r5 | r2 = r5;
0x0001379e strb r3, [r6, r0] | *((r6 + r0)) = r3;
0x000137a0 mov r1, sb | r1 = sb;
0x000137a2 ldr r3, [sp, 0x20] | r3 = var_20h;
0x000137a4 mov r0, fp | r0 = fp;
0x000137a6 str r3, [sp] | *(sp) = r3;
0x000137a8 mov r3, r6 | r3 = r6;
0x000137aa bl 0x12c88 | fcn_00012c88 (r0, r1, r2, r3, r4);
0x000137ae str r0, [sp, 0x34] | *(arg_34h) = r0;
0x000137b0 mov r0, r6 | r0 = r6;
0x000137b2 blx 0x4ec4 | fcn_00004ec4 ();
0x000137b6 ldr r3, [sp, 0x34] | r3 = *(arg_34h);
0x000137b8 cmp r3, 0 |
| if (r3 != 0) {
0x000137ba bne.w 0x13a34 | goto label_60;
| }
| label_7:
0x000137be add r6, sp, 0x3c | r6 += arg_3ch;
0x000137c0 b 0x13622 | goto label_6;
| }
0x000137c2 cmp.w r2, 0xc000 |
| if (r2 != 0xc000) {
0x000137c6 bne.w 0x13610 | goto label_5;
| }
| label_49:
0x000137ca ldr r2, [sp, 0x60] | r2 = *(arg_60h);
0x000137cc mov r1, sb | r1 = sb;
0x000137ce mov r0, fp | r0 = fp;
0x000137d0 str r2, [sp] | *(sp) = r2;
0x000137d2 mov r2, r5 | r2 = r5;
0x000137d4 bl 0x12a64 | r0 = fcn_00012a64 (r0, r1, r2, r3, r4);
0x000137d8 cmp r0, 0 |
| if (r0 == 0) {
0x000137da beq 0x137be | goto label_7;
| }
0x000137dc mov r6, r0 | r6 = r0;
0x000137de ldr r0, [pc, 0x3b8] |
0x000137e0 ldr r2, [pc, 0x3b8] |
0x000137e2 mov r3, r5 | r3 = r5;
0x000137e4 mov r1, r6 | r1 = r6;
0x000137e6 ldr r7, [sp, 0x18] | r7 = var_18h;
0x000137e8 add r0, pc | r0 = 0x27386;
0x000137ea adds r0, 0x4c | r0 += 0x4c;
0x000137ec add r2, pc | r2 = 0x2738c;
0x000137ee blx 0x50d8 | fcn_000050d8 ();
0x000137f2 b 0x13830 | goto label_12;
| label_41:
0x000137f4 mov r0, r7 | r0 = r7;
0x000137f6 b 0x135a2 | goto label_8;
| label_32:
0x000137f8 movs r3, 1 | r3 = 1;
0x000137fa mov r5, lr | r5 = lr;
0x000137fc mov r4, ip | r4 = ip;
0x000137fe str r3, [sp, 0x28] | *(arg_28h) = r3;
0x00013800 b 0x1356a | goto label_9;
| label_30:
0x00013802 str r0, [sp, 0x28] | *(arg_28h) = r0;
0x00013804 b 0x1356a | goto label_9;
| label_51:
0x00013806 mov sb, r6 | sb = r6;
0x00013808 mov r6, r0 | r6 = r0;
0x0001380a ldr r0, [pc, 0x394] |
0x0001380c mov r3, sb | r3 = sb;
0x0001380e ldr r2, [pc, 0x394] |
0x00013810 mov r1, r6 | r1 = r6;
0x00013812 ldr r7, [sp, 0x18] | r7 = var_18h;
0x00013814 add r0, pc | r0 = 0x273ba;
0x00013816 adds r0, 0x68 | r0 += 0x68;
0x00013818 add r2, pc | r2 = 0x273c2;
0x0001381a blx 0x50d8 | fcn_000050d8 ();
| label_11:
0x0001381e ldr r0, [pc, 0x388] |
0x00013820 mov r3, r5 | r3 = r5;
0x00013822 ldr r2, [pc, 0x388] |
0x00013824 mov r1, r6 | r1 = r6;
0x00013826 add r0, pc | r0 = 0x273d4;
0x00013828 adds r0, 0x4c | r0 += 0x4c;
0x0001382a add r2, pc | r2 = 0x273dc;
0x0001382c blx 0x50d8 | fcn_000050d8 ();
| label_12:
0x00013830 cmp r7, r4 |
| if (r7 <= r4) {
0x00013832 ble.w 0x13728 | goto label_10;
| }
| do {
0x00013836 ldr r3, [sp, 0x38] | r3 = *(arg_38h);
0x00013838 ldr.w r0, [r3, r4, lsl 2] | offset_1 = r4 << 2;
| r0 = *((r3 + offset_1));
0x0001383c adds r4, 1 | r4++;
0x0001383e blx 0x4ec4 | fcn_00004ec4 ();
0x00013842 cmp r7, r4 |
0x00013844 bne 0x13836 |
| } while (r7 != r4);
0x00013846 b 0x13728 | goto label_10;
| label_52:
0x00013848 mov sb, r6 | sb = r6;
0x0001384a mov r6, r0 | r6 = r0;
0x0001384c ldr r0, [pc, 0x360] |
0x0001384e mov r3, sb | r3 = sb;
0x00013850 ldr r2, [pc, 0x360] |
0x00013852 mov r1, r6 | r1 = r6;
0x00013854 ldr r7, [sp, 0x18] | r7 = var_18h;
0x00013856 add r0, pc | r0 = 0x2740a;
0x00013858 adds r0, 0x68 | r0 += 0x68;
0x0001385a add r2, pc | r2 = 0x27412;
0x0001385c blx 0x50d8 | fcn_000050d8 ();
0x00013860 b 0x1381e | goto label_11;
| label_45:
0x00013862 ldr r3, [sp, 0x20] | r3 = var_20h;
0x00013864 mov r2, r5 | r2 = r5;
0x00013866 mov r1, sb | r1 = sb;
0x00013868 mov r0, fp | r0 = fp;
0x0001386a str r3, [sp] | *(sp) = r3;
0x0001386c mov r3, r5 | r3 = r5;
0x0001386e bl 0x12e7c | r0 = fcn_00012e7c (r0, r1, r2, r3, r4);
0x00013872 cmp r0, 0 |
| if (r0 == 0) {
0x00013874 beq 0x137be | goto label_7;
| }
0x00013876 mov r6, r0 | r6 = r0;
0x00013878 ldr r0, [pc, 0x33c] |
0x0001387a ldr r2, [pc, 0x340] |
0x0001387c mov r3, r5 | r3 = r5;
0x0001387e mov r1, r6 | r1 = r6;
0x00013880 ldr r7, [sp, 0x18] | r7 = var_18h;
0x00013882 add r0, pc | r0 = 0x2743e;
0x00013884 adds r0, 0x4c | r0 += 0x4c;
0x00013886 add r2, pc | r2 = 0x27448;
0x00013888 blx 0x50d8 | fcn_000050d8 ();
0x0001388c b 0x13830 | goto label_12;
| label_47:
0x0001388e cmp.w sb, 2 |
| if (sb == 2) {
0x00013892 bne 0x138a0 |
0x00013894 ldr r1, [pc, 0x328] |
0x00013896 mov r0, r5 | r0 = r5;
0x00013898 add r1, pc | r1 = 0x2745c;
0x0001389a blx 0x4dd0 | r0 = strcmp (r0, r1);
| if (r0 == 0) {
0x0001389e cbz r0, 0x138b2 | goto label_61;
| }
| }
0x000138a0 ldr r3, [sp, 0x20] | r3 = var_20h;
0x000138a2 mov r2, r5 | r2 = r5;
0x000138a4 mov r1, sb | r1 = sb;
0x000138a6 mov r0, fp | r0 = fp;
0x000138a8 bl 0x12d80 | r0 = fcn_00012d80 (r0, r1, r2, r3, r4, r5, r6);
0x000138ac cmp r0, 0 |
| if (r0 != 0) {
0x000138ae bne.w 0x13ade | goto label_62;
| }
| label_61:
0x000138b2 add r6, sp, 0x3c | r6 += arg_3ch;
0x000138b4 mov r3, r5 | r3 = r5;
0x000138b6 ldr r1, [sp, 0x20] | r1 = var_20h;
0x000138b8 mov r2, sb | r2 = sb;
0x000138ba mov r0, fp | r0 = fp;
0x000138bc str r6, [sp] | *(sp) = r6;
0x000138be blx 0x4f3c | r0 = fcn_00004f3c ();
0x000138c2 mov r3, r0 | r3 = r0;
0x000138c4 cmp r0, 0 |
| if (r0 != 0) {
0x000138c6 bne.w 0x13ace | goto label_63;
| }
0x000138ca ldr r3, [sp, 0x1c] | r3 = var_1ch;
0x000138cc mov r2, r5 | r2 = r5;
0x000138ce ldr r1, [sp, 0x3c] | r1 = *(arg_3ch);
0x000138d0 mov r0, fp | r0 = fp;
0x000138d2 strd sl, r3, [sp, 4] | __asm ("strd sl, r3, [var_8h]");
0x000138d6 ldr r3, [sp, 0x24] | r3 = var_24h;
0x000138d8 str r3, [sp] | *(sp) = r3;
0x000138da ldr r3, [sp, 0x20] | r3 = var_20h;
0x000138dc bl 0x13384 | r0 = fcn_00013384 (r0, r1, r2, r3, r4, r5);
0x000138e0 mov r3, r0 | r3 = r0;
0x000138e2 cmp r0, 0 |
| if (r0 != 0) {
0x000138e4 bne.w 0x13a4c | goto label_44;
| }
0x000138e8 ldr r0, [pc, 0x2d8] |
0x000138ea add r0, pc | r0 = 0x274b2;
0x000138ec blx 0x50bc | r0 = fcn_000050bc ();
0x000138f0 cmp r0, 0 |
| if (r0 == 0) {
0x000138f2 beq.w 0x13622 | goto label_6;
| }
0x000138f6 blx 0x53f4 | r0 = sprintf_chk ();
0x000138fa ldr r6, [r0] | r6 = *(r0);
0x000138fc ldr r0, [pc, 0x2c8] |
0x000138fe ldr r2, [pc, 0x2cc] |
0x00013900 mov r1, r6 | r1 = r6;
0x00013902 ldr r7, [sp, 0x18] | r7 = var_18h;
0x00013904 add r0, pc | r0 = 0x274d0;
0x00013906 add r2, pc | r2 = 0x274d8;
0x00013908 adds r0, 0x4c | r0 += 0x4c;
0x0001390a blx 0x50d8 | fcn_000050d8 ();
0x0001390e b 0x13830 | goto label_12;
| label_15:
0x0001392a ldr r0, [pc, 0x2ac] |
0x0001392c mov r6, r3 | r6 = r3;
0x0001392e ldr r2, [pc, 0x2ac] |
0x00013930 mov r3, r5 | r3 = r5;
0x00013932 mov r1, r6 | r1 = r6;
0x00013934 ldr r7, [sp, 0x18] | r7 = var_18h;
0x00013936 add r0, pc | r0 = 0x27514;
0x00013938 adds r0, 0x5c | r0 += 0x5c;
0x0001393a add r2, pc | r2 = 0x2751c;
0x0001393c blx 0x50d8 | fcn_000050d8 ();
0x00013940 b 0x1354e | goto label_13;
| label_40:
0x00013942 mov r1, sb | r1 = sb;
0x00013944 mov r0, fp | r0 = fp;
0x00013946 blx 0x53e8 | r0 = strcat_chk ()
0x0001394a mov r3, r0 | r3 = r0;
0x0001394c cmp r0, 0 |
| if (r0 != 0) {
0x0001394e bne 0x13a1e | goto label_64;
| }
0x00013950 ldrh.w r2, [sp, 0xac] | r2 = *(arg_ach);
0x00013954 and r2, r2, 0xf000 | r2 &= 0xf000;
0x00013958 cmp.w r2, 0x8000 |
0x0001395c it eq |
| if (r2 != 0x8000) {
0x0001395e moveq r3, 1 | r3 = 1;
| }
| if (r2 != 0x8000) {
0x00013960 beq 0x13992 |
0x00013962 cmp.w r2, 0x4000 |
| if (r2 == 0x4000) {
0x00013966 beq.w 0x13af6 | goto label_65;
| }
0x0001396a cmp.w r2, 0x2000 |
| if (r2 == 0x2000) {
0x0001396e beq.w 0x13afa | goto label_66;
| }
0x00013972 cmp.w r2, 0x6000 |
| if (r2 == 0x6000) {
0x00013976 beq.w 0x13b02 | goto label_67;
| }
0x0001397a cmp.w r2, 0xa000 |
| if (r2 == 0xa000) {
0x0001397e beq.w 0x13afe | goto label_68;
| }
0x00013982 cmp.w r2, 0x1000 |
| if (r2 == 0x1000) {
0x00013986 beq.w 0x13b06 | goto label_69;
| }
0x0001398a cmp.w r2, 0xc000 |
0x0001398e it eq |
| if (r2 == 0xc000) {
0x00013990 moveq r3, 6 | r3 = 6;
| goto label_18;
| }
| }
| label_18:
0x00013992 str r3, [sp] | *(sp) = r3;
0x00013994 mov r2, r5 | r2 = r5;
0x00013996 mov r3, r6 | r3 = r6;
0x00013998 mov r1, sb | r1 = sb;
0x0001399a mov r0, fp | r0 = fp;
0x0001399c blx 0x577c | r0 = fcn_0000577c ();
0x000139a0 mov r3, r0 | r3 = r0;
0x000139a2 cmp r3, 0 |
| if (r3 == 0) {
0x000139a4 beq.w 0x13518 | goto label_14;
| }
0x000139a8 b 0x1392a | goto label_15;
| label_55:
0x000139aa adds r3, 4 | r3 += 4;
0x000139ac add.w r3, r3, r3, lsl 1 | r3 += (r3 << 1);
0x000139b0 lsls r1, r3, 3 | r1 = r3 << 3;
0x000139b2 blx 0x5074 | r0 = fcn_00005074 ();
0x000139b6 cmp r0, 0 |
| if (r0 != 0) {
0x000139b8 beq.w 0x13b0e |
0x000139bc ldr r2, [sp, 0x24] | r2 = var_24h;
0x000139be ldr r3, [r2, 4] | r3 = *((r2 + 4));
0x000139c0 str r0, [r2, 8] | *((r2 + 8)) = r0;
0x000139c2 adds r3, 4 | r3 += 4;
0x000139c4 str r3, [r2, 4] | *((r2 + 4)) = r3;
0x000139c6 ldr r3, [r2] | r3 = *(r2);
0x000139c8 b 0x136e4 | goto label_16;
| label_34:
0x000139ca mov r8, r6 | r8 = r6;
0x000139cc mov r6, r0 | r6 = r0;
0x000139ce ldr r0, [pc, 0x210] |
0x000139d0 mov r3, r8 | r3 = r8;
0x000139d2 ldr r2, [pc, 0x210] |
0x000139d4 mov r1, r6 | r1 = r6;
0x000139d6 ldr r7, [sp, 0x18] | r7 = var_18h;
0x000139d8 add r0, pc | r0 = 0x275be;
0x000139da adds r0, 0x5c | r0 += 0x5c;
0x000139dc add r2, pc | r2 = 0x275c6;
0x000139de blx 0x50d8 | fcn_000050d8 ();
0x000139e2 b 0x1354e | goto label_13;
| label_28:
0x000139fe blx 0x53f4 | r0 = sprintf_chk ();
0x00013a02 ldr r6, [r0] | r6 = *(r0);
0x00013a04 mov r3, r5 | r3 = r5;
0x00013a06 ldr r0, [pc, 0x1e8] |
0x00013a08 ldr r2, [pc, 0x1e8] |
0x00013a0a mov r1, r6 | r1 = r6;
0x00013a0c ldr r7, [sp, 0x18] | r7 = var_18h;
0x00013a0e add r0, pc | r0 = 0x27604;
0x00013a10 adds r0, 0x4c | r0 += 0x4c;
0x00013a12 add r2, pc | r2 = 0x2760a;
0x00013a14 blx 0x50d8 | fcn_000050d8 ();
0x00013a18 b 0x13830 | goto label_12;
| label_35:
0x00013a1a movs r3, 2 | r3 = 2;
0x00013a1c b 0x134fa | goto label_17;
| label_64:
0x00013a1e mov r6, r0 | r6 = r0;
0x00013a20 ldr r0, [pc, 0x1d4] |
0x00013a22 ldr r2, [pc, 0x1d8] |
0x00013a24 mov r1, r3 | r1 = r3;
0x00013a26 ldr r7, [sp, 0x18] | r7 = var_18h;
0x00013a28 add r0, pc | r0 = 0x27624;
0x00013a2a adds r0, 0x5c | r0 += 0x5c;
0x00013a2c add r2, pc | r2 = 0x2762e;
0x00013a2e blx 0x50d8 | fcn_000050d8 ();
0x00013a32 b 0x1354e | goto label_13;
| label_60:
0x00013a34 ldr r0, [pc, 0x1c8] |
0x00013a36 mov r6, r3 | r6 = r3;
0x00013a38 ldr r2, [pc, 0x1c8] |
0x00013a3a mov r3, r5 | r3 = r5;
0x00013a3c mov r1, r6 | r1 = r6;
0x00013a3e ldr r7, [sp, 0x18] | r7 = var_18h;
0x00013a40 add r0, pc | r0 = 0x27644;
0x00013a42 adds r0, 0x4c | r0 += 0x4c;
0x00013a44 add r2, pc | r2 = 0x2764c;
0x00013a46 blx 0x50d8 | fcn_000050d8 ();
0x00013a4a b 0x13830 | goto label_12;
| label_44:
0x00013a4c ldr r7, [sp, 0x18] | r7 = var_18h;
0x00013a4e mov r6, r3 | r6 = r3;
0x00013a50 b 0x13830 | goto label_12;
| label_50:
0x00013a52 ldr r2, [pc, 0x1b4] |
0x00013a54 mov r6, r0 | r6 = r0;
0x00013a56 mov r3, r5 | r3 = r5;
0x00013a58 mov r0, r5 | r0 = r5;
0x00013a5a mov r1, r6 | r1 = r6;
0x00013a5c ldr r7, [sp, 0x18] | r7 = var_18h;
0x00013a5e add r2, pc | r2 = 0x2766c;
0x00013a60 blx 0x50d8 | fcn_000050d8 ();
0x00013a64 b 0x13830 | goto label_12;
| label_53:
0x00013a66 mov r6, r0 | r6 = r0;
0x00013a68 ldr r0, [pc, 0x1a0] |
0x00013a6a ldr r2, [pc, 0x1a4] |
0x00013a6c mov r3, r5 | r3 = r5;
0x00013a6e mov r1, r6 | r1 = r6;
0x00013a70 ldr r7, [sp, 0x18] | r7 = var_18h;
0x00013a72 add r0, pc | r0 = 0x27682;
0x00013a74 adds r0, 0x4c | r0 += 0x4c;
0x00013a76 add r2, pc | r2 = 0x2768c;
0x00013a78 blx 0x50d8 | fcn_000050d8 ();
0x00013a7c b 0x13830 | goto label_12;
| label_36:
0x00013a7e movs r3, 3 | r3 = 3;
0x00013a80 b 0x134fa | goto label_17;
| label_37:
0x00013a82 movs r3, 4 | r3 = 4;
0x00013a84 b 0x134fa | goto label_17;
| label_38:
0x00013a86 movs r3, 7 | r3 = 7;
0x00013a88 b 0x134fa | goto label_17;
| label_39:
0x00013a8a movs r3, 5 | r3 = 5;
0x00013a8c b 0x134fa | goto label_17;
| label_59:
0x00013a8e ldr r0, [pc, 0x184] |
0x00013a90 movs r1, 0 | r1 = 0;
0x00013a92 ldr r2, [pc, 0x184] |
0x00013a94 ldr r7, [sp, 0x18] | r7 = var_18h;
0x00013a96 add r0, pc | r0 = 0x276b0;
0x00013a98 add r2, pc | r2 = 0x276b6;
0x00013a9a adds r0, 0x4c | r0 += 0x4c;
0x00013a9c blx 0x50d8 | fcn_000050d8 ();
0x00013aa0 mov r0, r6 | r0 = r6;
0x00013aa2 movs r6, 0 | r6 = 0;
0x00013aa4 blx 0x4ec4 | fcn_00004ec4 ();
0x00013aa8 b 0x13830 | goto label_12;
| label_58:
0x00013aaa blx 0x53f4 | sprintf_chk ();
0x00013aae mov sb, r6 | sb = r6;
0x00013ab0 ldr r6, [r0] | r6 = *(r0);
0x00013ab2 ldr r0, [pc, 0x168] |
0x00013ab4 mov r3, r5 | r3 = r5;
0x00013ab6 ldr r2, [pc, 0x168] |
0x00013ab8 mov r1, r6 | r1 = r6;
0x00013aba ldr r7, [sp, 0x18] | r7 = var_18h;
0x00013abc add r0, pc | r0 = 0x276de;
0x00013abe adds r0, 0x4c | r0 += 0x4c;
0x00013ac0 add r2, pc | r2 = 0x276e6;
0x00013ac2 blx 0x50d8 | fcn_000050d8 ();
0x00013ac6 mov r0, sb | r0 = sb;
0x00013ac8 blx 0x4ec4 | fcn_00004ec4 ();
0x00013acc b 0x13830 | goto label_12;
| label_63:
0x00013ace mov r6, r0 | r6 = r0;
0x00013ad0 movs r2, 0 | r2 = 0;
0x00013ad2 mov r0, r5 | r0 = r5;
0x00013ad4 mov r1, r3 | r1 = r3;
0x00013ad6 ldr r7, [sp, 0x18] | r7 = var_18h;
0x00013ad8 blx 0x50d8 | fcn_000050d8 ();
0x00013adc b 0x13830 | goto label_12;
| label_62:
0x00013ade mov r6, r0 | r6 = r0;
0x00013ae0 ldr r0, [pc, 0x140] |
0x00013ae2 ldr r2, [pc, 0x144] |
0x00013ae4 mov r3, r5 | r3 = r5;
0x00013ae6 mov r1, r6 | r1 = r6;
0x00013ae8 ldr r7, [sp, 0x18] | r7 = var_18h;
0x00013aea add r0, pc | r0 = 0x27712;
0x00013aec adds r0, 0x4c | r0 += 0x4c;
0x00013aee add r2, pc | r2 = 0x2771c;
0x00013af0 blx 0x50d8 | fcn_000050d8 ();
0x00013af4 b 0x13830 | goto label_12;
| label_65:
0x00013af6 movs r3, 2 | r3 = 2;
0x00013af8 b 0x13992 | goto label_18;
| label_66:
0x00013afa movs r3, 3 | r3 = 3;
0x00013afc b 0x13992 | goto label_18;
| label_68:
0x00013afe movs r3, 7 | r3 = 7;
0x00013b00 b 0x13992 | goto label_18;
| label_67:
0x00013b02 movs r3, 4 | r3 = 4;
0x00013b04 b 0x13992 | goto label_18;
| label_69:
0x00013b06 movs r3, 5 | r3 = 5;
0x00013b08 b 0x13992 | goto label_18;
| label_56:
0x00013b0a blx 0x5008 | fcn_00005008 ();
| }
0x00013b0e ldr r2, [pc, 0x11c] |
0x00013b10 movw r1, 0xb746 |
0x00013b14 movt r1, 0x7f2b | r1 = 0x7f2bb746;
0x00013b18 mov r0, r5 | r0 = r5;
0x00013b1a movw r6, 0xb746 |
0x00013b1e ldr r7, [sp, 0x18] | r7 = var_18h;
0x00013b20 add r2, pc | r2 = 0x27752;
0x00013b22 movt r6, 0x7f2b | r6 = 0x7f2bb746;
0x00013b26 blx 0x50d8 | fcn_000050d8 ();
0x00013b2a b 0x13830 | goto label_12;
| label_42:
0x00013b2c ldr r0, [pc, 0x100] |
0x00013b2e movw r1, 0xb746 |
0x00013b32 ldr r2, [pc, 0x100] |
0x00013b34 mov r3, r5 | r3 = r5;
0x00013b36 movt r1, 0x7f2b | r1 = 0x7f2bb746;
0x00013b3a movw r6, 0xb746 |
0x00013b3e add r0, pc | r0 = 0x27772;
0x00013b40 ldr r7, [sp, 0x18] | r7 = var_18h;
0x00013b42 add r2, pc | r2 = 0x2777c;
0x00013b44 adds r0, 0x4c | r0 += 0x4c;
0x00013b46 movt r6, 0x7f2b | r6 = 0x7f2bb746;
0x00013b48 strb r3, [r5, 0x18] | *((r5 + 0x18)) = r3;
0x00013b4a blx 0x50d8 | fcn_000050d8 ();
0x00013b4e b 0x13830 | goto label_12;
| label_57:
0x00013b50 ldr r0, [pc, 0xe4] |
0x00013b52 mov r1, r6 | r1 = r6;
0x00013b54 ldr r2, [pc, 0xe4] |
0x00013b56 ldr r7, [sp, 0x18] | r7 = var_18h;
0x00013b58 add r0, pc | r0 = 0x27794;
0x00013b5a add r2, pc | r2 = 0x2779a;
0x00013b5c adds r0, 0x4c | r0 += 0x4c;
0x00013b5e blx 0x50d8 | fcn_000050d8 ();
0x00013b62 b 0x13830 | goto label_12;
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/sbin/debugfs @ 0x12e7c */
| #include <stdint.h>
|
| #define BIT_MASK(t,v) ((t)(-((v)!= 0)))&(((t)-1)>>((sizeof(t)*CHAR_BIT)-(v)))
|
; (fcn) fcn.00012e7c () | void fcn_00012e7c (int16_t arg_148h, 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_ch;
| int32_t var_10h;
| int32_t var_10h_2;
| int16_t var_18h;
| int16_t var_1ch;
| int16_t var_24h;
| char * src;
| int16_t var_2ch;
| int16_t var_30h;
| int16_t var_40h;
| int16_t var_60h;
| int32_t var_60h_2;
| int16_t var_9ch;
| int16_t var_a4h;
| int32_t var_a8h;
| int32_t var_a8h_2;
| int16_t var_b6h;
| int16_t var_bch;
| int16_t var_11ch;
| r0 = arg1;
| r1 = arg2;
| r2 = arg3;
| r3 = arg4;
0x00012e7c push.w {r4, r5, r6, r7, r8, sb, sl, fp, lr} |
0x00012e80 mov r4, r1 | r4 = r1;
0x00012e82 ldr.w r1, [pc, 0x4dc] |
0x00012e86 mov r7, r3 | r7 = r3;
0x00012e88 mov r8, r2 | r8 = r2;
0x00012e8a movs r2, 0 | r2 = 0;
0x00012e8c ldr.w r3, [pc, 0x4d4] | r3 = *(0x13364);
0x00012e90 sub sp, 0x124 |
0x00012e92 add r1, pc | r1 = 0x261f8;
0x00012e94 mov r6, r0 | r6 = r0;
0x00012e96 mov r0, r8 | r0 = r8;
0x00012e98 ldr r3, [r1, r3] |
0x00012e9a mov r1, r2 | r1 = r2;
0x00012e9c ldr r3, [r3] | r3 = *(0x261f8);
0x00012e9e str r3, [sp, 0x11c] | var_11ch = r3;
0x00012ea0 mov.w r3, 0 | r3 = 0;
0x00012ea4 blx 0x58f4 | r0 = fcn_000058f4 ();
0x00012ea8 subs r5, r0, 0 | r5 = r0 - 0;
| if (r5 < r0) {
0x00012eaa blt 0x12f48 | goto label_12;
| }
0x00012eac add r1, sp, 0x30 | r1 += var_30h;
0x00012eae blx 0x57b8 | r0 = fcn_000057b8 ();
0x00012eb2 cmp r0, 0 |
| if (r0 < 0) {
0x00012eb4 blt.w 0x130fe | goto label_13;
| }
0x00012eb8 movs r1, 0x2f | r1 = 0x2f;
0x00012eba mov r0, r7 | r0 = r7;
0x00012ebc blx 0x567c | r0 = ext2fs_fallocate ();
0x00012ec0 mov r8, r0 | r8 = r0;
0x00012ec2 cmp r0, 0 |
| if (r0 == 0) {
0x00012ec4 beq 0x12f44 | goto label_14;
| }
0x00012ec6 movs r3, 0 | r3 = 0;
0x00012ec8 mov r2, r4 | r2 = r4;
0x00012eca strb r3, [r0] | *(r0) = r3;
0x00012ecc add r3, sp, 0x28 | r3 += src;
0x00012ece str r3, [sp] | *(sp) = r3;
0x00012ed0 mov r0, r6 | r0 = r6;
0x00012ed2 ldr r1, [sp, 0x148] | r1 = *(arg_148h);
0x00012ed4 mov r3, r7 | r3 = r7;
0x00012ed6 blx 0x4f3c | r0 = fcn_00004f3c ();
0x00012eda mov r4, r0 | r4 = r0;
0x00012edc cmp r0, 0 |
| if (r0 != 0) {
0x00012ede bne.w 0x13106 | goto label_15;
| }
0x00012ee2 ldr r4, [sp, 0x28] | r4 = src;
0x00012ee4 add.w r7, r8, 1 | r7 = r8 + 1;
| do {
0x00012ee8 add.w r8, sp, 0x24 | r8 += var_24h;
0x00012eec mov r2, r4 | r2 = r4;
0x00012eee ldr r1, [sp, 0x148] | r1 = *(arg_148h);
0x00012ef0 mov r3, r7 | r3 = r7;
0x00012ef2 mov r0, r6 | r0 = r6;
0x00012ef4 movw r4, 0xb79b |
0x00012ef8 str.w r8, [sp] | __asm ("str.w r8, [sp]");
0x00012efc movt r4, 0x7f2b | r4 = 0x7f2bb79b;
0x00012f00 blx 0x4f3c | r0 = fcn_00004f3c ();
| if (r0 != 0) {
0x00012f04 cbz r0, 0x12f1c |
0x00012f06 ldr r1, [sp, 0x28] | r1 = src;
0x00012f08 movs r3, 0 | r3 = 0;
0x00012f0a movw r2, 0x11ed | r2 = 0x11ed;
0x00012f0e mov r0, r6 | r0 = r6;
0x00012f10 str.w r8, [sp] | __asm ("str.w r8, [sp]");
0x00012f14 blx 0x51a8 | r0 = strcpy (r0, r1);
0x00012f18 mov r4, r0 | r4 = r0;
| if (r0 == 0) {
0x00012f1a cbz r0, 0x12f66 | goto label_16;
| }
| }
| label_1:
0x00012f1c mov r0, r5 | r0 = r5;
0x00012f1e blx 0x5894 | fcn_00005894 ();
| label_0:
0x00012f22 ldr.w r2, [pc, 0x444] |
0x00012f26 ldr.w r3, [pc, 0x43c] | r3 = *(0x13366);
0x00012f2a add r2, pc | r2 = 0x26298;
0x00012f2c ldr r3, [r2, r3] | r3 = *(0x26298);
0x00012f2e ldr r2, [r3] | r2 = *(0x26298);
0x00012f30 ldr r3, [sp, 0x11c] | r3 = var_11ch;
0x00012f32 eors r2, r3 | r2 ^= r3;
0x00012f34 mov.w r3, 0 | r3 = 0;
| if (r2 != r3) {
0x00012f38 bne.w 0x1318e | goto label_17;
| }
0x00012f3a strh r1, [r5, 8] | *((r5 + 8)) = r1;
0x00012f3c mov r0, r4 | r0 = r4;
0x00012f3e add sp, 0x124 |
0x00012f40 pop.w {r4, r5, r6, r7, r8, sb, sl, fp, pc} |
| label_14:
0x00012f44 str r4, [sp, 0x28] | src = r4;
0x00012f46 b 0x12ee8 |
| } while (1);
| label_12:
0x00012f48 blx 0x53f4 | r0 = sprintf_chk ();
0x00012f4c ldr r4, [r0] | r4 = *(r0);
0x00012f4e mov r3, r8 | r3 = r8;
0x00012f50 ldr.w r0, [pc, 0x418] |
0x00012f54 ldr.w r2, [pc, 0x418] |
0x00012f58 mov r1, r4 | r1 = r4;
0x00012f5a add r0, pc | r0 = 0x262ca;
0x00012f5c add r2, pc | r2 = 0x262d0;
0x00012f5e adds r0, 0x38 | r0 += 0x38;
0x00012f60 blx 0x50d8 | fcn_000050d8 ();
0x00012f64 b 0x12f22 | goto label_0;
| label_16:
0x00012f66 ldr.w r1, [pc, 0x40c] |
0x00012f6a movs r0, 1 | r0 = 1;
0x00012f6c ldr r2, [sp, 0x24] | r2 = var_24h;
0x00012f6e mov.w r8, 1 | r8 = 1;
0x00012f72 add r1, pc | r1 = 0x262ec;
0x00012f74 blx 0x54bc | fcn_000054bc ();
0x00012f78 ldr r3, [sp, 0x24] | r3 = var_24h;
0x00012f7a mov r2, r7 | r2 = r7;
0x00012f7c ldr r1, [sp, 0x28] | r1 = src;
0x00012f7e mov r0, r6 | r0 = r6;
0x00012f80 str.w r8, [sp] | __asm ("str.w r8, [sp]");
0x00012f84 blx 0x577c | fcn_0000577c ();
0x00012f88 movw r3, 0xb726 |
0x00012f8c mov r4, r0 | r4 = r0;
0x00012f8e movt r3, 0x7f2b | r3 = 0x7f2bb726;
0x00012f92 cmp r0, r3 |
| if (r0 == r3) {
0x00012f94 beq.w 0x13116 | goto label_18;
| }
| label_2:
0x00012f98 cmp r4, 0 |
| if (r4 != 0) {
0x00012f9a bne 0x12f1c | goto label_1;
| }
0x00012f9c ldr r2, [sp, 0x24] | r2 = var_24h;
0x00012f9e mov r3, r4 | r3 = r4;
0x00012fa0 ldr r0, [r6, 0x2c] | r0 = *((r6 + 0x2c));
0x00012fa2 blx 0x55ec | r0 = list_super2 ();
0x00012fa6 cmp r0, 0 |
| if (r0 != 0) {
0x00012fa8 bne.w 0x13140 | goto label_19;
| }
| label_4:
0x00012fac movs r3, 0 | r3 = 0;
0x00012fae ldr r1, [sp, 0x24] | r1 = var_24h;
0x00012fb0 movs r2, 1 | r2 = 1;
0x00012fb2 mov r0, r6 | r0 = r6;
0x00012fb4 add r7, sp, 0x9c | r7 += var_9ch;
0x00012fb6 blx 0x564c | ext2fs_xattr_remove ();
0x00012fba movs r2, 0x80 | r2 = 0x80;
0x00012fbc movs r1, 0 | r1 = 0;
0x00012fbe mov r0, r7 | r0 = r7;
0x00012fc0 blx 0x5440 | fcn_00005440 ();
0x00012fc4 ldr r3, [sp, 0x40] | r3 = var_40h;
0x00012fc6 ldr r0, [r6, 0x60] | r0 = *((r6 + 0x60));
0x00012fc8 ubfx r3, r3, 0, 0xc | r3 = (r3 >> 0) & ((1 << 0xc) - 1);
0x00012fcc mvn.w r3, r3, lsl 17 | r3 = ~r3;
0x00012fd0 mvn.w r3, r3, lsr 17 | r3 = ~r3;
0x00012fd4 strh.w r3, [sp, 0x9c] | var_9ch = r3;
0x00012fd8 cmp r0, 0 |
| if (r0 == 0) {
0x00012fda beq.w 0x1313a | goto label_20;
| }
| label_3:
0x00012fde movs r3, 1 | r3 = 1;
0x00012fe0 strd r0, r0, [sp, 0xa8] | __asm ("strd r0, r0, [var_a8h]");
0x00012fe4 str r0, [sp, 0xa4] | var_a4h = r0;
0x00012fe6 mov r1, r7 | r1 = r7;
0x00012fe8 strh.w r3, [sp, 0xb6] | var_b6h = r3;
0x00012fec mov r0, r6 | r0 = r6;
0x00012fee ldrd r2, r3, [sp, 0x60] | __asm ("ldrd r2, r3, [var_60h]");
0x00012ff2 blx 0x5108 | r0 = fcn_00005108 ();
0x00012ff6 mov r4, r0 | r4 = r0;
0x00012ff8 cmp r0, 0 |
| if (r0 != 0) {
0x00012ffa bne 0x12f1c | goto label_1;
| }
0x00012ffc ldr r3, [r6, 0x10] | r3 = *((r6 + 0x10));
0x00012ffe ldr r1, [sp, 0x24] | r1 = var_24h;
0x00013000 ldr r3, [r3, 0x60] | r3 = *((r3 + 0x60));
0x00013002 lsls r2, r3, 0x10 | r2 = r3 << 0x10;
| if (r2 >= r3) {
0x00013004 bpl.w 0x13152 | goto label_21;
| }
0x00013006 strh r5, [r4, 4] | *((r4 + 4)) = r5;
0x00013008 ldr r3, [sp, 0xbc] | r3 = var_bch;
0x0001300a orr r3, r3, 0x10000000 | r3 |= 0x10000000;
0x0001300e str r3, [sp, 0xbc] | var_bch = r3;
| label_5:
0x00013010 mov r2, r7 | r2 = r7;
0x00013012 mov r0, r6 | r0 = r6;
0x00013014 blx 0x5260 | r0 = fcn_00005260 ();
0x00013018 mov r4, r0 | r4 = r0;
0x0001301a cmp r0, 0 |
| if (r0 != 0) {
0x0001301c bne.w 0x12f1c | goto label_1;
| }
0x00013020 ldr r3, [sp, 0xbc] | r3 = var_bch;
0x00013022 lsls r7, r3, 3 | r7 = r3 << 3;
| if (r7 < r3) {
0x00013024 bmi.w 0x1317c | goto label_22;
| }
| label_6:
0x00013028 ldrh.w r3, [sp, 0x9c] | r3 = var_9ch;
0x0001302c and r3, r3, 0xf000 | r3 &= 0xf000;
0x00013030 cmp.w r3, 0x8000 |
| if (r3 != 0x8000) {
0x00013034 bne.w 0x12f1c | goto label_1;
| }
0x00013038 ldr r1, [sp, 0x24] | r1 = var_24h;
0x0001303a add r3, sp, 0x2c | r3 += var_2ch;
0x0001303c movs r2, 1 | r2 = 1;
0x0001303e mov r0, r6 | r0 = r6;
0x00013040 blx 0x4f30 | r0 = fcn_00004f30 ();
0x00013044 mov r4, r0 | r4 = r0;
0x00013046 cmp r0, 0 |
| if (r0 != 0) {
0x00013048 bne.w 0x12f1c | goto label_1;
| }
0x0001304c mov.w r0, 0x10000 | r0 = 0x10000;
0x00013050 blx 0x52bc | strerror (r0);
0x00013054 ldr r3, [sp, 0x2c] | r3 = var_2ch;
0x00013056 mov r8, r0 | r8 = r0;
0x00013058 str r3, [sp, 0x18] | var_18h = r3;
0x0001305a cmp r0, 0 |
| if (r0 == 0) {
0x0001305c beq.w 0x13348 | goto label_23;
| }
0x00013060 ldr r0, [r6, 0x14] | r0 = *((r6 + 0x14));
0x00013062 movs r1, 1 | r1 = 1;
0x00013064 blx 0x4d1c | r0 = calloc (r0, r1);
0x00013068 mov sl, r0 | sl = r0;
0x0001306a cmp r0, 0 |
| if (r0 == 0) {
0x0001306c beq.w 0x13348 | goto label_23;
| }
0x00013070 mov r7, r4 | r7 = r4;
0x00013072 mov sb, r4 | sb = r4;
0x00013074 b 0x130dc |
| while (r7 < r2) {
0x00013076 movs r1, 3 | r1 = 3;
0x00013078 mov r2, r7 | r2 = r7;
0x0001307a mov r3, sb | r3 = sb;
0x0001307c mov r0, r5 | r0 = r5;
0x0001307e str r1, [sp] | *(sp) = r1;
0x00013080 blx 0x516c | strtoll (r0, r1, r2);
0x00013084 subs.w fp, r1, 0 |
0x00013088 mov r4, r0 | r4 = r0;
| if (fp < r1) {
0x0001308a blt.w 0x13318 | goto label_24;
| }
0x0001308e movs r3, 4 | r3 = 4;
0x00013090 mov r2, r0 | r2 = r0;
0x00013092 str r3, [sp] | *(sp) = r3;
0x00013094 mov r0, r5 | r0 = r5;
0x00013096 mov r3, fp | r3 = fp;
0x00013098 blx 0x516c | strtoll (r0, r1, r2);
0x0001309c subs.w sb, r1, 0 | sb = r1 - 0;
0x000130a0 mov r7, r0 | r7 = r0;
| if (sb < r1) {
0x000130a2 blt.w 0x131b4 | goto label_25;
| }
0x000130a6 str.w fp, [sp, 4] | __asm ("str.w fp, [var_4h]");
0x000130aa mov r1, r5 | r1 = r5;
0x000130ac strd r8, sl, [sp, 0x10] | __asm ("strd r8, sl, [var_10h]");
0x000130b0 mov r0, r6 | r0 = r6;
0x000130b2 ldr.w ip, [r6, 0x14] | ip = *((r6 + 0x14));
0x000130b6 ldr r2, [sp, 0x18] | r2 = var_18h;
0x000130b8 add.w r3, ip, -1 | r3 = ip + -1;
0x000130bc rsb.w ip, ip, 0 |
0x000130c0 adds r3, r7, r3 | r3 = r7 + r3;
0x000130c2 and.w r4, r4, ip | r4 &= ip;
0x000130c6 and.w r3, r3, ip | r3 &= ip;
0x000130ca str r4, [sp] | *(sp) = r4;
0x000130cc str r3, [sp, 8] | var_8h = r3;
0x000130ce adc r3, sb, 0 | __asm ("adc r3, sb, 0");
0x000130d2 str r3, [sp, 0xc] | var_ch = r3;
0x000130d4 bl 0x1264c | r0 = fcn_0001264c (r0, r1, r2, r3, r4, r5, r6);
0x000130d8 cmp r0, 0 |
| if (r0 != 0) {
0x000130da bne 0x13192 | goto label_26;
| }
0x000130dc ldrd r2, r3, [sp, 0x60] | __asm ("ldrd r2, r3, [var_60h]");
0x000130e0 cmp r7, r2 |
0x000130e2 sbcs.w r3, sb, r3 | __asm ("sbcs.w r3, sb, r3");
0x000130e6 blt 0x13076 |
| }
| label_9:
0x000130e8 mov r0, sl | r0 = sl;
0x000130ea blx 0x4ec4 | fcn_00004ec4 ();
0x000130ee mov r0, r8 | r0 = r8;
0x000130f0 blx 0x4ec4 | fcn_00004ec4 ();
0x000130f4 ldr r0, [sp, 0x2c] | r0 = var_2ch;
0x000130f6 blx 0x4e9c | r0 = ext2fs_file_close ();
0x000130fa mov r4, r0 | r4 = r0;
0x000130fc b 0x12f1c | goto label_1;
| label_13:
0x000130fe blx 0x53f4 | r0 = sprintf_chk ();
0x00013102 ldr r4, [r0] | r4 = *(r0);
0x00013104 b 0x12f1c | goto label_1;
| label_15:
0x00013106 ldr r2, [pc, 0x270] |
0x00013108 mov r3, r7 | r3 = r7;
0x0001310a mov r0, r7 | r0 = r7;
0x0001310c mov r1, r4 | r1 = r4;
0x0001310e add r2, pc | r2 = 0x2648c;
0x00013110 blx 0x50d8 | fcn_000050d8 ();
0x00013114 b 0x12f1c | goto label_1;
| label_18:
0x00013116 ldr r1, [sp, 0x28] | r1 = src;
0x00013118 mov r0, r6 | r0 = r6;
0x0001311a blx 0x53e8 | r0 = strcat_chk ()
0x0001311e mov r4, r0 | r4 = r0;
0x00013120 cmp r0, 0 |
| if (r0 != 0) {
0x00013122 bne.w 0x12f1c | goto label_1;
| }
0x00013126 ldr r3, [sp, 0x24] | r3 = var_24h;
0x00013128 mov r2, r7 | r2 = r7;
0x0001312a ldr r1, [sp, 0x28] | r1 = src;
0x0001312c mov r0, r6 | r0 = r6;
0x0001312e str.w r8, [sp] | __asm ("str.w r8, [sp]");
0x00013132 blx 0x577c | r0 = fcn_0000577c ();
0x00013136 mov r4, r0 | r4 = r0;
0x00013138 b 0x12f98 | goto label_2;
| label_20:
0x0001313a blx 0x4f60 | fcn_00004f60 ();
0x0001313e b 0x12fde | goto label_3;
| label_19:
0x00013140 ldr r0, [pc, 0x238] |
0x00013142 mov r1, r4 | r1 = r4;
0x00013144 ldr r2, [pc, 0x238] |
0x00013146 add r0, pc | r0 = 0x264c6;
0x00013148 add r2, pc | r2 = 0x264cc;
0x0001314a adds r0, 0x38 | r0 += 0x38;
0x0001314c blx 0x50d8 | fcn_000050d8 ();
0x00013150 b 0x12fac | goto label_4;
| label_21:
0x00013152 lsls r3, r3, 0x19 | r3 <<= 0x19;
| if (r3 >= r3) {
0x00013154 bpl.w 0x13010 | goto label_5;
| }
0x00013158 ldr r3, [sp, 0xbc] | r3 = var_bch;
0x0001315a mov r2, r7 | r2 = r7;
0x0001315c mov r0, r6 | r0 = r6;
0x0001315e bic r3, r3, 0x80000 | r3 = BIT_MASK (r3, 0x80000);
0x00013162 str r3, [sp, 0xbc] | var_bch = r3;
0x00013164 add r3, sp, 0x2c | r3 += var_2ch;
0x00013166 blx 0x54d4 | r0 = fcn_000054d4 ();
0x0001316a mov r4, r0 | r4 = r0;
0x0001316c cmp r0, 0 |
| if (r0 != 0) {
0x0001316e bne.w 0x12f1c | goto label_1;
| }
0x00013172 ldr r0, [sp, 0x2c] | r0 = var_2ch;
0x00013174 blx 0x56d4 | fcn_000056d4 ();
0x00013178 ldr r1, [sp, 0x24] | r1 = var_24h;
0x0001317a b 0x13010 | goto label_5;
| label_22:
0x0001317c ldr r1, [sp, 0x24] | r1 = var_24h;
0x0001317e mov r0, r6 | r0 = r6;
0x00013180 blx 0x5184 | r0 = ext2fs_open_inode_scan ();
0x00013184 cmp r0, 0 |
| if (r0 == 0) {
0x00013186 beq.w 0x13028 | goto label_6;
| }
0x0001318a mov r4, r0 | r4 = r0;
0x0001318c b 0x12f1c | goto label_1;
| label_17:
0x0001318e blx 0x5008 | fcn_00005008 ();
| label_26:
0x00013192 movw r3, 0xb750 |
0x00013196 mov r4, r0 | r4 = r0;
0x00013198 movt r3, 0x7f2b | r3 = 0x7f2bb750;
0x0001319c cmp r0, r3 |
| if (r0 != r3) {
0x0001319e beq 0x131b4 |
| label_11:
0x000131a0 mov r0, sl | r0 = sl;
0x000131a2 blx 0x4ec4 | fcn_00004ec4 ();
0x000131a6 mov r0, r8 | r0 = r8;
0x000131a8 blx 0x4ec4 | fcn_00004ec4 ();
0x000131ac ldr r0, [sp, 0x2c] | r0 = var_2ch;
0x000131ae blx 0x4e9c | ext2fs_file_close ();
0x000131b2 b 0x12f1c | goto label_1;
| }
| label_25:
0x000131b4 ldr r3, [sp, 0x2c] | r3 = var_2ch;
0x000131b6 str r3, [sp, 0x18] | var_18h = r3;
| label_10:
0x000131b8 movs r1, 1 | r1 = 1;
0x000131ba movw r0, 0x7020 | r0 = 0x7020;
0x000131be blx 0x4d1c | r0 = calloc (r0, r1);
0x000131c2 mov r7, r0 | r7 = r0;
0x000131c4 cmp r0, 0 |
| if (r0 == 0) {
0x000131c6 beq.w 0x1333e | goto label_27;
| }
0x000131ca add.w r2, r0, 0x20 | r2 = r0 + 0x20;
0x000131ce vmov.i8 d16, 0xff | __asm ("vmov.i8 d16, 0xff");
0x000131d2 movs r3, 0 | r3 = 0;
0x000131d4 movw fp, 0x660b |
0x000131d8 movs r1, 1 | r1 = 1;
0x000131da str r2, [sp, 0x1c] | var_1ch = r2;
0x000131dc movt fp, 0xc020 | fp = 0xc020660b;
0x000131e0 mov r2, r3 | r2 = r3;
0x000131e2 str r1, [r0, 0x10] | *((r0 + 0x10)) = r1;
0x000131e4 mov.w r1, 0x200 | r1 = 0x200;
0x000131e8 vstr d16, [r0, 8] | __asm ("vstr d16, [r0, 8]");
0x000131ec str r1, [r0, 0x18] | *((r0 + 0x18)) = r1;
| label_8:
0x000131ee strd r3, r2, [r7] | __asm ("strd r3, r2, [r7]");
0x000131f2 movs r1, 0 | r1 = 0;
0x000131f4 mov.w r2, 0x7000 | r2 = 0x7000;
0x000131f8 ldr r0, [sp, 0x1c] | r0 = var_1ch;
0x000131fa blx 0x5440 | fcn_00005440 ();
0x000131fe mov r2, r7 | r2 = r7;
0x00013200 mov r1, fp | r1 = fp;
0x00013202 mov r0, r5 | r0 = r5;
0x00013204 blx 0x513c | r0 = ss_set_prompt ();
0x00013208 subs.w sb, r0, 0 | sb = r0 - 0;
| if (sb < r0) {
0x0001320c blt 0x132ae | goto label_28;
| }
0x0001320e ldr r3, [r7, 0x14] | r3 = *((r7 + 0x14));
| if (r3 == 0) {
0x00013210 cbz r3, 0x1327e | goto label_29;
| }
0x00013212 add.w sb, r7, 0x58 | sb = r7 + 0x58;
0x00013216 movs r4, 0 | r4 = 0;
0x00013218 b 0x13226 |
| while (r0 == 0) {
0x0001321a ldr r0, [r7, 0x14] | r0 = *((r7 + 0x14));
0x0001321c adds r4, 1 | r4++;
0x0001321e add.w sb, sb, 0x38 | sb += 0x38;
0x00013222 cmp r4, r0 |
| if (r4 >= r0) {
0x00013224 bhs 0x132ea | goto label_30;
| }
0x00013226 ldrd r1, r3, [sb, -0x38] | __asm ("ldrd r1, r3, [sb, -0x38]");
0x0001322a strd r8, sl, [sp, 0x10] | __asm ("strd r8, sl, [var_10h]");
0x0001322e ldr r2, [sb, -0x28] | r2 = *((sb - 0x28));
0x00013232 ldr r0, [sb, -0x24] | r0 = *((sb - 0x24));
0x00013236 strd r1, r3, [sp] | __asm ("strd r1, r3, [sp]");
0x0001323a adds r2, r1, r2 | r2 = r1 + r2;
0x0001323c mov r1, r5 | r1 = r5;
0x0001323e adc.w r3, r3, r0 | __asm ("adc.w r3, r3, r0");
0x00013242 str r2, [sp, 8] | var_8h = r2;
0x00013244 mov r0, r6 | r0 = r6;
0x00013246 ldr r2, [sp, 0x18] | r2 = var_18h;
0x00013248 str r3, [sp, 0xc] | var_ch = r3;
0x0001324a bl 0x1264c | fcn_0001264c (r0, r1, r2, r3, r4, r5, r6);
0x0001324e mov r1, sb | r1 = sb;
0x00013250 cmp r0, 0 |
0x00013252 beq 0x1321a |
| }
0x00013254 mov r4, r0 | r4 = r0;
0x00013256 mov r0, r7 | r0 = r7;
0x00013258 blx 0x4ec4 | fcn_00004ec4 ();
0x0001325c movw r3, 0xb750 |
0x00013260 ldr r7, [sp, 0x2c] | r7 = var_2ch;
0x00013262 movt r3, 0x7f2b | r3 = 0x7f2bb750;
0x00013266 cmp r4, r3 |
| if (r4 == r3) {
0x00013268 beq 0x132c8 | goto label_31;
| }
0x0001326a mov r0, sl | r0 = sl;
0x0001326c blx 0x4ec4 | fcn_00004ec4 ();
0x00013270 mov r0, r8 | r0 = r8;
0x00013272 blx 0x4ec4 | fcn_00004ec4 ();
0x00013276 mov r0, r7 | r0 = r7;
0x00013278 blx 0x4e9c | ext2fs_file_close ();
0x0001327c b 0x12f1c | goto label_1;
| do {
| label_29:
0x0001327e mov r0, r7 | r0 = r7;
0x00013280 blx 0x4ec4 | fcn_00004ec4 ();
0x00013284 movw r3, 0xb750 |
0x00013288 movt r3, 0x7f2b | r3 = 0x7f2bb750;
0x0001328c cmp sb, r3 |
| if (sb == r3) {
0x0001328e beq 0x132c8 | goto label_31;
| }
| label_7:
0x00013290 mov r0, sl | r0 = sl;
0x00013292 blx 0x4ec4 | fcn_00004ec4 ();
0x00013296 mov r0, r8 | r0 = r8;
0x00013298 blx 0x4ec4 | fcn_00004ec4 ();
0x0001329c ldr r0, [sp, 0x2c] | r0 = var_2ch;
0x0001329e blx 0x4e9c | ext2fs_file_close ();
0x000132a2 cmp.w sb, 0 |
0x000132a6 ite ne |
| if (sb == 0) {
0x000132a8 movne r4, sb | r4 = sb;
| }
| if (sb != 0) {
0x000132aa moveq r4, r0 | r4 = r0;
| }
0x000132ac b 0x12f1c | goto label_1;
| label_28:
0x000132ae blx 0x53f4 | r0 = sprintf_chk ();
0x000132b2 ldr.w sb, [r0] | sb = *(r0);
0x000132b6 cmp.w sb, 0x5f |
| if (sb == 0x5f) {
0x000132ba beq 0x132c2 | goto label_32;
| }
0x000132bc cmp.w sb, 0x19 |
0x000132c0 bne 0x1327e |
| } while (sb != 0x19);
| label_32:
0x000132c2 mov r0, r7 | r0 = r7;
0x000132c4 blx 0x4ec4 | fcn_00004ec4 ();
| label_31:
0x000132c8 vmov.i32 d16, 0 | __asm ("vmov.i32 d16, 0");
0x000132cc mov r0, r6 | r0 = r6;
0x000132ce ldrd r6, r7, [sp, 0x60] | __asm ("ldrd r6, r7, [var_60h]");
0x000132d2 mov r1, r5 | r1 = r5;
0x000132d4 ldr r2, [sp, 0x2c] | r2 = var_2ch;
0x000132d6 strd r8, sl, [sp, 0x10] | __asm ("strd r8, sl, [var_10h]");
0x000132da vstr d16, [sp] | __asm ("vstr d16, [sp]");
0x000132de strd r6, r7, [sp, 8] | __asm ("strd r6, r7, [var_8h]");
0x000132e2 bl 0x1264c | r0 = fcn_0001264c (r0, r1, r2, r3, r4, r5, r6);
0x000132e6 mov sb, r0 | sb = r0;
0x000132e8 b 0x13290 | goto label_7;
| label_30:
0x000132ea ldr r2, [r1, -0x28] | r2 = *((r1 - 0x28));
0x000132ee ldr r3, [r1, -0x38] | r3 = *((r1 - 0x38));
0x000132f2 ldr r4, [r1, -0x24] | r4 = *((r1 - 0x24));
0x000132f6 adds r3, r3, r2 | r3 += r2;
0x000132f8 ldr r2, [r1, -0x34] | r2 = *((r1 - 0x34));
0x000132fc adc.w r2, r2, r4 | __asm ("adc.w r2, r2, r4");
0x00013300 cmp.w r0, 0x200 |
| if (r0 != 0x200) {
0x00013304 bne 0x13310 | goto label_33;
| }
0x00013306 ldr r1, [r1, -0x10] | r1 = *((r1 - 0x10));
0x0001330a lsls r1, r1, 0x1f | r1 <<= 0x1f;
| if (r1 >= r1) {
0x0001330c bpl.w 0x131ee | goto label_8;
| }
| label_33:
0x00013310 mov r0, r7 | r0 = r7;
0x00013312 blx 0x4ec4 | fcn_00004ec4 ();
0x00013316 b 0x130e8 | goto label_9;
| label_24:
0x00013318 blx 0x53f4 | r0 = sprintf_chk ();
0x0001331c ldr r3, [r0] | r3 = *(r0);
0x0001331e ldr r2, [sp, 0x2c] | r2 = var_2ch;
0x00013320 cmp r3, 6 |
0x00013322 str r2, [sp, 0x18] | var_18h = r2;
| if (r3 != 6) {
0x00013324 bne.w 0x131b8 | goto label_10;
| }
0x00013328 mov r0, sl | r0 = sl;
0x0001332a blx 0x4ec4 | fcn_00004ec4 ();
0x0001332e mov r0, r8 | r0 = r8;
0x00013330 blx 0x4ec4 | fcn_00004ec4 ();
0x00013334 ldr r0, [sp, 0x18] | r0 = var_18h;
0x00013336 blx 0x4e9c | r0 = ext2fs_file_close ();
0x0001333a mov r4, r0 | r4 = r0;
0x0001333c b 0x12f1c | goto label_1;
| label_27:
0x0001333e movw r4, 0xb746 |
0x00013342 movt r4, 0x7f2b | r4 = 0x7f2bb746;
0x00013346 b 0x131a0 | goto label_11;
| label_23:
0x00013348 mov r0, r8 | r0 = r8;
0x0001334a movw r4, 0xb746 |
0x0001334e blx 0x4ec4 | fcn_00004ec4 ();
0x00013352 ldr r0, [sp, 0x18] | r0 = var_18h;
0x00013354 movt r4, 0x7f2b | r4 = 0x7f2bb746;
0x00013358 blx 0x4e9c | ext2fs_file_close ();
0x0001335c b 0x12f1c | goto label_1;
| }
[*] Function strcat used 6 times debugfs