[*] Binary protection state of e4crypt
Full RELRO Canary found NX enabled PIE enabled No RPATH No RUNPATH No Symbols
[*] Function sprintf tear down of e4crypt
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/sbin/e4crypt @ 0x18e8 */
| #include <stdint.h>
|
| #define BIT_MASK(t,v) ((t)(-((v)!= 0)))&(((t)-1)>>((sizeof(t)*CHAR_BIT)-(v)))
|
; (fcn) fcn.000018e8 () | void fcn_000018e8 (int16_t arg_4h, int16_t arg_8h, int16_t arg_48h, int16_t arg_68h, int16_t arg1, int16_t arg2, int16_t arg3, int16_t arg4) {
| int16_t var_15h;
| int16_t var_11h;
| int16_t var_1h;
| int16_t var_0h;
| int16_t var_4h;
| int16_t var_ch_3;
| int16_t var_10h;
| int16_t var_14h;
| int16_t var_18h;
| int16_t var_1ch_2;
| int16_t var_20h;
| int16_t var_24h;
| int16_t var_28h;
| int16_t var_2ch;
| int16_t var_30h;
| int32_t var_30h_2;
| char * * endptr;
| int16_t var_40h;
| int16_t var_7ch;
| int16_t var_80h;
| int16_t var_88h;
| int16_t var_0h_4;
| int16_t var_c0h;
| int16_t var_c4h;
| int16_t var_104h;
| int16_t var_144h;
| int16_t var_0h_2;
| int16_t var_8h;
| int16_t var_ch_2;
| int16_t var_10h_2;
| int16_t var_14h_2;
| int8_t var_53h;
| int16_t var_74h;
| int16_t var_78h;
| int16_t var_0h_3;
| int16_t var_8h_2;
| int16_t var_ch;
| uint32_t request;
| int16_t var_14h_3;
| int16_t var_18h_2;
| int16_t var_1ch;
| int16_t var_20h_2;
| int16_t var_22h;
| int16_t var_23h;
| int16_t var_24h_2;
| void * s2;
| int16_t var_3ch;
| r0 = arg1;
| r1 = arg2;
| r2 = arg3;
| r3 = arg4;
0x000018e8 svcmi 0xf0e92d | __asm ("svcmi 0xf0e92d");
0x000018ec mov sb, r1 | sb = r1;
0x000018ee ldr r4, [pc, 0x1ac] |
0x000018f0 sub sp, 0x44 |
0x000018f2 ldr r1, [pc, 0x1ac] | r1 = *(0x1aa2);
0x000018f4 add r4, pc | r4 = 0x3396;
0x000018f6 ldr.w r8, [sp, 0x68] | r8 = *(arg_68h);
0x000018fa ldr r1, [r4, r1] |
0x000018fc ldr r1, [r1] | r1 = *(0x3396);
0x000018fe str r1, [sp, 0x3c] | var_3ch = r1;
0x00001900 mov.w r1, 0 | r1 = 0;
0x00001904 ldr r1, [pc, 0x19c] |
0x00001906 strd r0, r2, [sp, 8] | __asm ("strd r0, r2, [var_ch]");
0x0000190a sub.w r2, sb, 4 | r2 = sb - 4;
0x0000190e bics r2, r2, 4 | __asm ("bics r2, r2, 4");
0x00001912 add r1, pc | r1 = 0x33ba;
0x00001914 str r1, [sp, 0x1c] | var_1ch = r1;
| if (? != ?) {
0x00001916 beq 0x1924 |
0x00001918 sub.w r2, sb, 0x10 | r2 = sb - 0x10;
0x0000191c bics r2, r2, 0x10 | __asm ("bics r2, r2, 0x10");
| if (? != ?) {
0x00001920 bne.w 0x1a4a | goto label_23;
| }
| }
0x00001924 ldr r2, [sp, 0xc] | r2 = var_ch;
0x00001926 cmp r8, r2 |
| if (r8 >= r2) {
0x00001928 bge 0x19cc | goto label_24;
| }
0x0000192a add.w r7, r3, r8, lsl 2 | r7 = r3 + (r8 << 2);
0x0000192e ldr r3, [pc, 0x178] |
0x00001930 movw sl, 0x6613 |
0x00001934 asr.w sb, sb, 3 | sb >>= 3;
0x00001938 movt sl, 0x800c | sl = 0x800c6613;
0x0000193c add r3, pc | r3 = 0x33ea;
0x0000193e str r3, [sp, 0x14] | var_14h_3 = r3;
0x00001940 movw r3, 0x6614 |
0x00001944 movt r3, 0x4010 | r3 = 0x40106614;
0x00001948 str r3, [sp, 0x10] | request = r3;
| label_0:
0x0000194a ldr r0, [r7] | r0 = *(r7);
0x0000194c mov.w r1, 0x4000 | r1 = 0x4000;
0x00001950 blx 0xcf4 | r0 = open (r0, r1, r2);
0x00001954 adds r3, r0, 1 | r3 = r0 + 1;
0x00001956 mov r4, r7 | r4 = r7;
0x00001958 mov r6, r0 | r6 = r0;
0x0000195a add.w r7, r7, 4 | r7 += 4;
| if (r3 == r0) {
0x0000195e beq.w 0x1a90 | goto label_25;
| }
0x00001962 ldr r3, [sp, 8] | r3 = var_8h_2;
0x00001964 ldr r4, [sp, 8] | r4 = var_8h_2;
0x00001966 cmp r3, 0 |
| if (r3 == 0) {
0x00001968 beq 0x1a06 | goto label_26;
| }
| label_3:
0x0000196a mov.w r2, 0x100 | r2 = 0x100;
0x0000196e movs r3, 4 | r3 = 4;
0x00001970 strh.w r2, [sp, 0x20] | var_20h_2 = r2;
0x00001974 strb.w r3, [sp, 0x22] | var_22h = r3;
0x00001978 cmp.w sb, 0 |
| if (sb == 0) {
0x0000197c beq 0x1a46 | goto label_27;
| }
0x0000197e mov r3, sb | r3 = sb;
0x00001980 movs r2, 0 | r2 = 0;
| do {
0x00001982 asrs r3, r3, 1 | r3 >>= 1;
0x00001984 add.w r2, r2, 1 | r2++;
0x00001988 bne 0x1982 |
| } while (r2 != 0);
0x0000198a uxtb r2, r2 | r2 = (int8_t) r2;
| label_4:
0x0000198c ldr.w r0, [r4, 0x15] | r0 = *((r4 + 0x15));
0x00001990 add r3, sp, 0x24 | r3 += var_24h_2;
0x00001992 ldr.w r1, [r4, 0x19] | r1 = *((r4 + 0x19));
0x00001996 adds r4, 4 | r4 += 4;
0x00001998 strb.w r2, [sp, 0x23] | var_23h = r2;
0x0000199c add r2, sp, 0x20 | r2 += var_20h_2;
0x0000199e stm r3!, {r0, r1} | *(r3!) = r0;
| *((r3! + 4)) = r1;
0x000019a0 mov r1, sl | r1 = sl;
0x000019a2 mov r0, r6 | r0 = r6;
0x000019a4 blx 0xc88 | r0 = ioctl (r0, r1);
0x000019a8 mov r5, r0 | r5 = r0;
0x000019aa mov r0, r6 | r0 = r6;
0x000019ac blx 0xe18 | fcn_00000e18 ();
| if (r5 != 0) {
0x000019b0 cbnz r5, 0x19e6 | goto label_28;
| }
0x000019b2 ldr r1, [pc, 0xf8] |
0x000019b4 mov r2, r4 | r2 = r4;
0x000019b6 ldr r3, [r7, -0x4] | r3 = *((r7 - 0x4));
0x000019ba movs r0, 1 | r0 = 1;
0x000019bc add r1, pc | r1 = 0x346e;
0x000019be blx 0xd7c | fcn_00000d7c ();
| label_1:
0x000019c2 ldr r3, [sp, 0xc] | r3 = var_ch;
0x000019c4 add.w r8, r8, 1 | r8++;
0x000019c8 cmp r3, r8 |
| if (r3 != r8) {
0x000019ca bne 0x194a | goto label_0;
| }
| label_24:
0x000019cc ldr r2, [pc, 0xe0] |
0x000019ce ldr r3, [pc, 0xd0] | r3 = *(0x1aa2);
0x000019d0 add r2, pc | r2 = 0x3484;
0x000019d2 ldr r3, [r2, r3] | r3 = *(0x3484);
0x000019d4 ldr r2, [r3] | r2 = *(0x3484);
0x000019d6 ldr r3, [sp, 0x3c] | r3 = var_3ch;
0x000019d8 eors r2, r3 | r2 ^= r3;
0x000019da mov.w r3, 0 | r3 = 0;
| if (r2 != r3) {
0x000019de bne 0x1a8c | goto label_29;
| }
0x000019e0 add sp, 0x44 |
0x000019e2 pop.w {r4, r5, r6, r7, r8, sb, sl, fp, pc} |
| label_28:
0x000019e6 blx 0xd3c | r0 = errno_location ();
0x000019ea ldr r0, [r0] | r0 = *(r0);
0x000019ec blx 0xcd0 | strerror (r0);
0x000019f0 ldr r5, [r7, -0x4] | r5 = *((r7 - 0x4));
0x000019f4 mov r2, r0 | r2 = r0;
0x000019f6 ldr r1, [pc, 0xbc] |
0x000019f8 mov r3, r4 | r3 = r4;
0x000019fa movs r0, 1 | r0 = 1;
0x000019fc str r5, [sp] | *(sp) = r5;
0x000019fe add r1, pc | r1 = 0x34b8;
0x00001a00 blx 0xd7c | fcn_00000d7c ();
0x00001a04 b 0x19c2 | goto label_1;
| label_26:
0x00001a06 add.w fp, sp, 0x2c |
0x00001a0a ldr r1, [sp, 0x10] | r1 = request;
0x00001a0c mov r2, fp | r2 = fp;
0x00001a0e blx 0xc88 | r0 = ioctl (r0, r1);
0x00001a12 cmp r0, 0 |
| if (r0 < 0) {
0x00001a14 blt 0x1a7e | goto label_30;
| }
0x00001a16 ldr r3, [sp, 0x14] | r3 = var_14h_3;
0x00001a18 ldrd r4, r3, [r3, 4] | __asm ("ldrd r4, r3, [r3, 4]");
| if (r3 == 0) {
0x00001a1c cbz r3, 0x1a64 | goto label_31;
| }
0x00001a1e str r6, [sp, 0x18] | var_18h_2 = r6;
0x00001a20 mov r6, fp | r6 = fp;
0x00001a22 ldr r5, [sp, 8] | r5 = var_8h_2;
0x00001a24 mov fp, r3 |
0x00001a26 b 0x1a30 |
| while (r2 != 0x10) {
| label_2:
0x00001a28 adds r5, 1 | r5++;
0x00001a2a adds r4, 0x64 | r4 += 0x64;
0x00001a2c cmp r5, fp |
| if (r5 == fp) {
0x00001a2e beq 0x1a64 | goto label_31;
| }
0x00001a30 ldr r2, [r4, 0x60] | r2 = *((r4 + 0x60));
0x00001a32 cmp r2, 0x10 |
0x00001a34 bne 0x1a28 |
| }
0x00001a36 ldr r0, [r4] | r0 = *(r4);
0x00001a38 mov r1, r6 | r1 = r6;
0x00001a3a blx 0xc34 | r0 = memcmp (r0, r1, r2);
0x00001a3e cmp r0, 0 |
| if (r0 != 0) {
0x00001a40 bne 0x1a28 | goto label_2;
| }
0x00001a42 ldr r6, [sp, 0x18] | r6 = var_18h_2;
0x00001a44 b 0x196a | goto label_3;
| label_27:
0x00001a46 mov r2, sb | r2 = sb;
0x00001a48 b 0x198c | goto label_4;
| label_23:
0x00001a4a ldr r4, [sp, 0x1c] | r4 = var_1ch;
0x00001a4c mov r3, sb | r3 = sb;
0x00001a4e ldr r0, [pc, 0x68] |
0x00001a50 movs r1, 1 | r1 = 1;
0x00001a52 ldr r2, [pc, 0x68] |
0x00001a54 ldr r0, [r4, r0] | r0 = *((r4 + r0));
0x00001a56 add r2, pc | r2 = 0x3518;
0x00001a58 ldr r0, [r0] | r0 = *(0x1aba);
0x00001a5a blx 0xd88 | fcn_00000d88 ();
0x00001a5e movs r0, 1 | r0 = 1;
0x00001a60 blx 0xd00 | exit (r0);
| label_31:
0x00001a64 ldr r4, [sp, 0x1c] | r4 = var_1ch;
0x00001a66 movs r2, 0x16 | r2 = 0x16;
0x00001a68 ldr r3, [pc, 0x4c] |
0x00001a6a movs r1, 1 | r1 = 1;
0x00001a6c ldr r0, [pc, 0x50] |
0x00001a6e ldr r3, [r4, r3] | r3 = *((r4 + r3));
0x00001a70 add r0, pc | r0 = 0x3534;
0x00001a72 ldr r3, [r3] | r3 = *(0x1ab8);
0x00001a74 blx 0xc7c | fwrite (r0, r1, r2, r3);
0x00001a78 movs r0, 1 | r0 = 1;
0x00001a7a blx 0xd00 | exit (r0);
| label_30:
0x00001a7e ldr r0, [pc, 0x44] |
0x00001a80 add r0, pc | r0 = 0x354a;
0x00001a82 blx 0xc58 | perror (r0);
0x00001a86 movs r0, 1 | r0 = 1;
0x00001a88 blx 0xd00 | r0 = exit (r0);
| label_29:
0x00001a8c blx 0xc40 | stack_chk_fail ();
| label_25:
0x00001a90 ldr r0, [r4] | r0 = *(r4);
0x00001a92 blx 0xc58 | perror (r0);
0x00001a96 movs r0, 1 | r0 = 1;
0x00001a98 blx 0xd00 | exit (r0);
0x00001a9c asrs r0, r1, 0x18 | r0 = r1 >> 0x18;
0x00001a9e movs r1, r0 | r1 = r0;
0x00001aa0 lsls r4, r3, 3 | r4 = r3 << 3;
0x00001aa2 movs r0, r0 |
0x00001aa4 asrs r2, r5, 0x17 | r2 = r5 >> 0x17;
0x00001aa6 movs r1, r0 | r1 = r0;
0x00001aa8 asrs r4, r1, 0x1b | r4 = r1 >> 0x1b;
0x00001aaa movs r1, r0 | r1 = r0;
0x00001aac lsrs r4, r6, 0xd | r4 = r6 >> 0xd;
0x00001aae movs r0, r0 |
0x00001ab0 asrs r4, r5, 0x14 | r4 = r5 >> 0x14;
0x00001ab2 movs r1, r0 | r1 = r0;
0x00001ab4 lsrs r2, r7, 0xa | r2 = r7 >> 0xa;
0x00001ab6 movs r0, r0 |
0x00001ab8 lsls r4, r4, 3 | r4 <<= 3;
0x00001aba movs r0, r0 |
0x00001abc lsrs r6, r1, 9 | r6 = r1 >> 9;
0x00001abe movs r0, r0 |
0x00001ac0 lsrs r4, r5, 0xb | r4 = r5 >> 0xb;
0x00001ac2 movs r0, r0 |
0x00001ac4 lsrs r4, r0, 6 | r4 = r0 >> 6;
0x00001ac6 movs r0, r0 |
0x00001ac8 push.w {r4, r5, r6, r7, r8, sb, sl, fp, lr} |
0x00001acc movs r3, 4 | r3 = 4;
0x00001ace sub sp, 0x7c |
0x00001ad0 mov r7, r2 | r7 = r2;
0x00001ad2 mov r4, r0 | r4 = r0;
0x00001ad4 mov r5, r1 | r5 = r1;
0x00001ad6 ldr r2, [pc, 0x11c] |
0x00001ad8 str r3, [sp, 8] | var_8h = r3;
0x00001ada ldr r3, [pc, 0x11c] | r3 = *(0x1bfa);
0x00001adc add r2, pc | r2 = 0x36d6;
0x00001ade ldr r6, [pc, 0x11c] |
0x00001ae0 ldr.w r8, [pc, 0x11c] |
0x00001ae4 ldr r3, [r2, r3] |
0x00001ae6 add r6, pc | r6 = 0x36e8;
0x00001ae8 add r8, pc | r8 = 0x36ec;
0x00001aea ldr r3, [r3] | r3 = *(0x36d6);
0x00001aec str r3, [sp, 0x74] | var_74h = r3;
0x00001aee mov.w r3, 0 | r3 = 0;
0x00001af2 b 0x1af8 |
| while (r3 != r0) {
0x00001af4 cmp r0, 0x70 |
| if (r0 == 0x70) {
0x00001af6 beq 0x1b38 | goto label_32;
| }
| label_5:
0x00001af8 mov r2, r8 | r2 = r8;
0x00001afa mov r1, r5 | r1 = r5;
0x00001afc mov r0, r4 | r0 = r4;
0x00001afe blx 0xd30 | r0 = getopt (r0, r1, r2);
0x00001b02 adds r3, r0, 1 | r3 = r0 + 1;
0x00001b04 bne 0x1af4 |
| }
0x00001b06 ldr r3, [pc, 0xfc] |
0x00001b08 ldr r3, [r6, r3] | r3 = *((r6 + r3));
0x00001b0a str r3, [sp, 0xc] | var_ch_2 = r3;
0x00001b0c ldr r3, [r3] | r3 = *(0x1c06);
0x00001b0e add.w fp, r3, 1 |
0x00001b12 cmp fp, r4 |
| if (fp >= r4) {
0x00001b14 bge 0x1bc4 | goto label_33;
| }
0x00001b16 ldr.w r8, [r5, r3, lsl 2] | offset_0 = r3 << 2;
| r8 = *((r5 + offset_0));
0x00001b1a mov r0, r8 | r0 = r8;
0x00001b1c blx 0xd24 | r0 = strlen (r0);
0x00001b20 cmp r0, 0x10 |
0x00001b22 beq 0x1b4a |
| while (r0 == 0) {
| label_6:
0x00001b24 ldr r1, [pc, 0xe0] |
0x00001b26 movs r3, 0x10 | r3 = 0x10;
0x00001b28 mov r2, r8 | r2 = r8;
0x00001b2a movs r0, 1 | r0 = 1;
0x00001b2c add r1, pc | r1 = 0x3738;
0x00001b2e blx 0xd7c | fcn_00000d7c ();
0x00001b32 movs r0, 1 | r0 = 1;
0x00001b34 blx 0xd00 | exit (r0);
| label_32:
0x00001b38 ldr r3, [pc, 0xd0] | r3 = *(0x1c0c);
0x00001b3a movs r2, 0xa | r2 = 0xa;
0x00001b3c movs r1, 0 | r1 = 0;
0x00001b3e ldr r3, [r6, r3] | r3 = *((r6 + r3));
0x00001b40 ldr r0, [r3] | r0 = *(0x1c0c);
0x00001b42 blx 0xc04 | strtol (r0, r1, r2);
0x00001b46 str r0, [sp, 8] | var_8h = r0;
0x00001b48 b 0x1af8 | goto label_5;
0x00001b4a ldr.w sb, [pc, 0xc4] |
0x00001b4e movs r7, 0 | r7 = 0;
0x00001b50 add.w sl, r8, 1 | sl = r8 + 1;
0x00001b54 add sb, pc | sb = 0x376a;
| label_7:
0x00001b56 ldrb.w r1, [r8, r7] | r1 = *((r8 + r7));
0x00001b5a movs r2, 0x10 | r2 = 0x10;
0x00001b5c mov r0, sb | r0 = sb;
0x00001b5e blx 0xd94 | r0 = fcn_00000d94 ();
0x00001b62 mov r6, r0 | r6 = r0;
0x00001b64 cmp r0, 0 |
0x00001b66 beq 0x1b24 |
| }
0x00001b68 ldrb.w r1, [sl, r7] | r1 = *((sl + r7));
0x00001b6c movs r2, 0x10 | r2 = 0x10;
0x00001b6e mov r0, sb | r0 = sb;
0x00001b70 blx 0xd94 | r0 = fcn_00000d94 ();
0x00001b74 cmp r0, 0 |
| if (r0 == 0) {
0x00001b76 beq 0x1b24 | goto label_6;
| }
0x00001b78 add r3, sp, 0x78 | r3 += var_78h;
0x00001b7a sub.w r6, r6, sb | r6 -= sb;
0x00001b7e add.w r3, r3, r7, lsr 1 | r3 += (r7 >> 1);
0x00001b82 sub.w r0, r0, sb | r0 -= sb;
0x00001b86 adds r7, 2 | r7 += 2;
0x00001b88 add.w r0, r0, r6, lsl 4 | r0 += (r6 << 4);
0x00001b8c cmp r7, 0x10 |
0x00001b8e strb r0, [r3, -0x53] | var_53h = r0;
| if (r7 != 0x10) {
0x00001b92 bne 0x1b56 | goto label_7;
| }
0x00001b94 mov r2, fp | r2 = fp;
0x00001b96 mov r1, r5 | r1 = r5;
0x00001b98 mov r0, r4 | r0 = r4;
0x00001b9a bl 0x109c | fcn_0000109c (r0, r1, r2);
0x00001b9e ldr r3, [sp, 0xc] | r3 = var_ch_2;
0x00001ba0 movs r2, 0x11 | r2 = 0x11;
0x00001ba2 add r0, sp, 0x14 | r0 += var_14h_2;
0x00001ba4 ldr r6, [r3] | r6 = *(r3);
0x00001ba6 ldr.w r1, [r5, r6, lsl 2] | offset_1 = r6 << 2;
| r1 = *((r5 + offset_1));
0x00001baa adds r6, 1 | r6++;
0x00001bac blx 0xca0 | strcpy_chk ();
0x00001bb0 add r0, sp, 0x10 | r0 += var_10h_2;
0x00001bb2 ldr r1, [sp, 8] | r1 = var_8h;
0x00001bb4 mov r3, r5 | r3 = r5;
0x00001bb6 mov r2, r4 | r2 = r4;
0x00001bb8 str r6, [sp] | *(sp) = r6;
0x00001bba bl 0x18e8 | fcn_000018e8 (r0, r1, r2, r3, r4, r5, r6);
0x00001bbe movs r0, 0 | r0 = 0;
0x00001bc0 blx 0xd00 | exit (r0);
| label_33:
0x00001bc4 ldr r3, [pc, 0x4c] | r3 = *(0x1c14);
0x00001bc6 movs r2, 0x1f | r2 = 0x1f;
0x00001bc8 ldr r0, [pc, 0x4c] |
0x00001bca movs r1, 1 | r1 = 1;
0x00001bcc ldr r4, [r6, r3] | r4 = *((r6 + r3));
0x00001bce add r0, pc | r0 = 0x37ea;
0x00001bd0 ldr r3, [r4] | r3 = *(r4);
0x00001bd2 blx 0xc7c | fwrite (r0, r1, r2, r3);
0x00001bd6 ldr r0, [pc, 0x44] |
0x00001bd8 movs r2, 9 | r2 = 9;
0x00001bda ldr r3, [r4] | r3 = *(r4);
0x00001bdc movs r1, 1 | r1 = 1;
0x00001bde add r0, pc | r0 = 0x3800;
0x00001be0 blx 0xc7c | fwrite (r0, r1, r2, r3);
0x00001be4 ldr r1, [r4] | r1 = *(r4);
0x00001be6 ldr r0, [r7, 0xc] | r0 = *((r7 + 0xc));
0x00001be8 blx 0xe00 | fcn_00000e00 ();
0x00001bec movs r0, 1 | r0 = 1;
0x00001bee blx 0xd00 | exit (r0);
0x00001bf2 nop |
0x00001bf4 asrs r0, r4, 0x10 | r0 = r4 >> 0x10;
0x00001bf6 movs r1, r0 | r1 = r0;
0x00001bf8 lsls r4, r3, 3 | r4 = r3 << 3;
0x00001bfa movs r0, r0 |
0x00001bfc asrs r6, r2, 0x10 | r6 = r2 >> 0x10;
0x00001bfe movs r1, r0 | r1 = r0;
0x00001c00 lsrs r4, r1, 0xa | r4 = r1 >> 0xa;
0x00001c02 movs r0, r0 |
0x00001c04 lsls r0, r4, 3 | r0 = r4 << 3;
0x00001c06 movs r0, r0 |
0x00001c08 lsrs r4, r1, 9 | r4 = r1 >> 9;
0x00001c0a movs r0, r0 |
0x00001c0c lsls r4, r7, 3 | r4 = r7 << 3;
0x00001c0e movs r0, r0 |
0x00001c10 lsrs r4, r4, 3 | r4 >>= 3;
0x00001c12 movs r0, r0 |
0x00001c14 lsls r4, r4, 3 | r4 <<= 3;
0x00001c16 movs r0, r0 |
0x00001c18 lsls r6, r7, 0x1c | r6 = r7 << 0x1c;
0x00001c1a movs r0, r0 |
0x00001c1c lsls r6, r1, 0x1d | r6 = r1 << 0x1d;
0x00001c1e movs r0, r0 |
0x00001c20 push.w {r4, r5, r6, r7, r8, sb, sl, fp, lr} |
0x00001c24 movs r3, 4 | r3 = 4;
0x00001c26 sub sp, 0x14c |
0x00001c28 mov sb, r2 | sb = r2;
0x00001c2a mov r5, r0 | r5 = r0;
0x00001c2c mov r6, r1 | r6 = r1;
0x00001c2e ldr.w r2, [pc, 0x500] | r2 = *(0x00002130);
0x00001c32 movs r7, 0 | r7 = 0;
0x00001c34 str r3, [sp, 0x10] | var_10h = r3;
0x00001c36 ldr.w r3, [pc, 0x4fc] |
0x00001c3a ldr.w r4, [pc, 0x4fc] |
0x00001c3e add r2, pc | r2 += pc;
0x00001c40 ldr.w fp, [pc, 0x4f8] | fp = *(0x0000213c);
0x00001c44 ldr.w sl, [pc, 0x4f8] | sl = *(0x00002140);
0x00001c48 ldr r3, [r2, r3] | r3 = *((r2 + r3));
0x00001c4a add r4, pc | r4 = 0x3d88;
0x00001c4c ldr.w r8, [pc, 0x4f4] | r8 = *(0x00002144);
0x00001c50 add fp, pc |
0x00001c52 add sl, pc | sl += pc;
0x00001c54 ldr r3, [r3] | r3 = *(0x2136);
0x00001c56 str r3, [sp, 0x144] | var_144h = r3;
0x00001c58 mov.w r3, 0 | r3 = 0;
0x00001c5c str r7, [sp, 0xc] | var_ch_3 = r7;
0x00001c5e add r8, pc | r8 += pc;
| label_8:
0x00001c60 mov r1, r6 | r1 = r6;
0x00001c62 mov r2, r4 | r2 = r4;
0x00001c64 mov r0, r5 | r0 = r5;
0x00001c66 blx 0xd30 | r0 = getopt (r0, r1, r2);
0x00001c6a adds r1, r0, 1 | r1 = r0 + 1;
| if (r1 == r0) {
0x00001c6c beq 0x1ce4 | goto label_34;
| }
| do {
0x00001c6e sub.w r3, r0, 0x53 | r3 = r0 - 0x53;
0x00001c72 cmp r3, 0x23 |
| if (r3 <= 0x23) {
0x00001c74 bhi 0x1c9e |
| /* switch table (36 cases) at 0x1c7a */
0x00001c76 tbb [pc, r3] | __asm ("tbb [0x00001c7c]");
| }
0x00001c9e cmp r0, 0x3f |
| if (r0 != 0x3f) {
0x00001ca0 bne 0x1d60 | goto label_35;
| }
0x00001ca2 ldr.w r3, [pc, 0x4a4] | r3 = *(0x214a);
0x00001ca6 ldr.w r4, [r8, r3] | r4 = *((r8 + r3));
| label_9:
0x00001caa ldr.w r0, [pc, 0x4a0] |
0x00001cae movs r2, 9 | r2 = 9;
0x00001cb0 ldr r3, [r4] | r3 = *(r4);
0x00001cb2 movs r1, 1 | r1 = 1;
0x00001cb4 add r0, pc | r0 = 0x3e06;
0x00001cb6 blx 0xc7c | fwrite (r0, r1, r2, r3);
0x00001cba ldr r1, [r4] | r1 = *(r4);
0x00001cbc ldr.w r0, [sb, 0xc] | r0 = *((sb + 0xc));
0x00001cc0 blx 0xe00 | fcn_00000e00 ();
0x00001cc4 movs r0, 1 | r0 = 1;
0x00001cc6 blx 0xd00 | exit (r0);
0x00001cca ldr.w r3, [sl] | r3 = *(sl);
0x00001cce mov r1, r6 | r1 = r6;
0x00001cd0 mov r2, r4 | r2 = r4;
0x00001cd2 mov r0, r5 | r0 = r5;
0x00001cd4 orr r3, r3, 1 | r3 |= 1;
0x00001cd8 str.w r3, [sl] | __asm ("str.w r3, [sl]");
0x00001cdc blx 0xd30 | r0 = getopt (r0, r1, r2);
0x00001ce0 adds r1, r0, 1 | r1 = r0 + 1;
0x00001ce2 bne 0x1c6e |
| } while (r1 != r0);
| label_34:
0x00001ce4 ldr.w r3, [pc, 0x468] | r3 = *(0x00002150);
0x00001ce8 add r3, pc | r3 += pc;
0x00001cea ldr r3, [r3, 8] | r3 = *((r3 + 8));
0x00001cec cmp r3, 0 |
| if (r3 == 0) {
0x00001cee beq.w 0x1ec0 | goto label_36;
| }
| label_11:
0x00001cf2 ldr.w r3, [pc, 0x460] | r3 = *(0x2156);
0x00001cf6 mov r1, r6 | r1 = r6;
0x00001cf8 mov r0, r5 | r0 = r5;
0x00001cfa ldr.w r3, [r8, r3] | r3 = *((r8 + r3));
0x00001cfe ldr r2, [r3] | r2 = *(0x2156);
0x00001d00 str r3, [sp, 0x2c] | var_2ch = r3;
0x00001d02 bl 0x109c | fcn_0000109c (r0, r1, r2);
0x00001d06 ldr r3, [sp, 0xc] | r3 = var_ch_3;
0x00001d08 cmp r3, 0 |
| if (r3 != 0) {
0x00001d0a bne 0x1d86 | goto label_37;
| }
0x00001d0c ldr r3, [sp, 0x2c] | r3 = var_2ch;
0x00001d0e ldr r4, [r3] | r4 = *(r3);
0x00001d10 b 0x1d82 | goto label_38;
0x00001d12 ldr.w r3, [fp] | r3 = *(fp);
0x00001d16 orr r3, r3, 2 | r3 |= 2;
0x00001d1a str.w r3, [fp] | __asm ("str.w r3, [fp]");
0x00001d1e b 0x1c60 | goto label_8;
0x00001d20 ldr.w r3, [pc, 0x434] | r3 = *(0x2158);
0x00001d24 movs r2, 0xa | r2 = 0xa;
0x00001d26 movs r1, 0 | r1 = 0;
0x00001d28 ldr.w r3, [r8, r3] | r3 = *((r8 + r3));
0x00001d2c ldr r0, [r3] | r0 = *(0x2158);
0x00001d2e blx 0xc04 | strtol (r0, r1, r2);
0x00001d32 str r0, [sp, 0x10] | var_10h = r0;
0x00001d34 b 0x1c60 | goto label_8;
0x00001d36 ldr.w r3, [pc, 0x420] | r3 = *(0x215a);
0x00001d3a ldr.w r3, [r8, r3] | r3 = *((r8 + r3));
0x00001d3e ldr r7, [r3] | r7 = *(0x215a);
0x00001d40 b 0x1c60 | goto label_8;
0x00001d42 ldr r3, [sp, 0xc] | r3 = var_ch_3;
0x00001d44 cmp r3, 0 |
| if (r3 != 0) {
0x00001d46 bne.w 0x20ce | goto label_39;
| }
0x00001d4a ldr.w r3, [pc, 0x40c] | r3 = *(0x215a);
0x00001d4e ldr r1, [sp, 0xc] | r1 = var_ch_3;
0x00001d50 ldr.w r3, [r8, r3] | r3 = *((r8 + r3));
0x00001d54 ldr r0, [r3] | r0 = *(0x215a);
0x00001d56 bl 0x146c | fcn_0000146c (r0, r1);
0x00001d5a movs r3, 1 | r3 = 1;
0x00001d5c str r3, [sp, 0xc] | var_ch_3 = r3;
0x00001d5e b 0x1c60 | goto label_8;
| label_35:
0x00001d60 ldr r1, [pc, 0x3e4] | r1 = *(0x2148);
0x00001d62 mov r3, r0 | r3 = r0;
0x00001d64 ldr r2, [pc, 0x3f4] |
0x00001d66 ldr.w r4, [r8, r1] | r4 = *((r8 + r1));
0x00001d6a movs r1, 1 | r1 = 1;
0x00001d6c add r2, pc | r2 = 0x3ecc;
0x00001d6e ldr r0, [r4] | r0 = *(r4);
0x00001d70 blx 0xd88 | fcn_00000d88 ();
0x00001d74 b 0x1caa | goto label_9;
| do {
0x00001d76 ldr.w r0, [r6, r4, lsl 2] | offset_2 = r4 << 2;
| r0 = *((r6 + offset_2));
0x00001d7a movs r1, 2 | r1 = 2;
0x00001d7c adds r4, 1 | r4++;
0x00001d7e bl 0x146c | fcn_0000146c (r0, r1);
| label_38:
0x00001d82 cmp r4, r5 |
0x00001d84 blt 0x1d76 |
| } while (r4 < r5);
| label_37:
0x00001d86 ldr r1, [pc, 0x3d8] |
0x00001d88 movs r0, 1 | r0 = 1;
0x00001d8a add r1, pc | r1 = 0x3ef0;
0x00001d8c blx 0xd7c | fcn_00000d7c ();
0x00001d90 add r3, sp, 0x7c | r3 += var_7ch;
0x00001d92 movs r0, 0 | r0 = 0;
0x00001d94 mov r1, r3 | r1 = r3;
0x00001d96 str r3, [sp, 0x24] | var_24h = r3;
0x00001d98 blx 0xe24 | r0 = fcn_00000e24 ();
0x00001d9c mov lr, r0 | lr = r0;
0x00001d9e cmp r0, 0 |
| if (r0 == 0) {
0x00001da0 beq.w 0x1f34 | goto label_40;
| }
0x00001da4 add.w sb, sp, 0x40 | sb += var_40h;
| label_12:
0x00001da8 ldr r3, [pc, 0x3b8] | r3 = *(0x2164);
0x00001daa mov.w r1, 0x400 | r1 = 0x400;
0x00001dae ldr.w r3, [r8, r3] | r3 = *((r8 + r3));
0x00001db2 ldr.w r8, [pc, 0x3b4] | r8 = *(0x00002168);
0x00001db6 ldr r2, [r3] | r2 = *(0x2164);
0x00001db8 add r8, pc | r8 += pc;
0x00001dba add.w sl, r8, 0x10 | sl = r8 + 0x10;
0x00001dbe mov r0, sl | r0 = sl;
0x00001dc0 blx 0xc1c | fgets (r0, r1, r2);
0x00001dc4 movs r1, 0 | r1 = 0;
0x00001dc6 mov r4, r0 | r4 = r0;
0x00001dc8 mov r2, sb | r2 = sb;
0x00001dca mov r0, r1 | r0 = r1;
0x00001dcc blx 0xc94 | tcsetattr ();
0x00001dd0 movs r0, 0xa | r0 = 0xa;
0x00001dd2 blx 0xd64 | fcn_00000d64 ();
0x00001dd6 cmp r4, 0 |
| if (r4 == 0) {
0x00001dd8 beq.w 0x20dc | goto label_41;
| }
0x00001ddc mov r0, sl | r0 = sl;
0x00001dde movs r1, 0xa | r1 = 0xa;
0x00001de0 blx 0xdb8 | r0 = fcn_00000db8 ();
0x00001de4 cmp r0, 0 |
| if (r0 == 0) {
0x00001de6 beq.w 0x20d6 | goto label_42;
| }
| label_20:
0x00001dea ldr r3, [pc, 0x380] |
0x00001dec movs r2, 0 | r2 = 0;
0x00001dee strb r2, [r0] | *(r0) = r2;
0x00001df0 add r3, pc | r3 = 0x3f62;
0x00001df2 ldrd r1, r0, [r3, 4] | __asm ("ldrd r1, r0, [r3, 4]");
0x00001df6 cmp r0, 0 |
| if (r0 == 0) {
0x00001df8 beq.w 0x1fd8 | goto label_43;
| }
0x00001dfc adds r3, 0x10 | r3 += 0x10;
0x00001dfe ldr.w r8, [pc, 0x370] |
0x00001e02 str r3, [sp, 0x1c] | var_1ch_2 = r3;
0x00001e04 add r3, sp, 0xc4 | r3 += var_c4h;
0x00001e06 str r3, [sp, 0x20] | var_20h = r3;
0x00001e08 add r3, sp, 0x104 | r3 += var_104h;
0x00001e0a add r8, pc | r8 = 0x3f80;
0x00001e0c add.w r4, r1, 0x1d | r4 = r1 + 0x1d;
0x00001e10 add.w fp, r1, 0x15 |
0x00001e14 mov sl, r3 | sl = r3;
0x00001e16 str r2, [sp, 0x18] | var_18h = r2;
0x00001e18 strd r5, r6, [sp, 0x30] | __asm ("strd r5, r6, [var_30h]");
| label_14:
0x00001e1c mov r3, r4 | r3 = r4;
0x00001e1e ldr r0, [sp, 0x1c] | r0 = var_1ch_2;
0x00001e20 sub.w r1, fp, 0x15 | r1 = fp - 0x15;
0x00001e24 movw r2, 0xffff | r2 = 0xffff;
0x00001e28 bl 0x1760 | fcn_00001760 (r0, r1, r2, r3, r4, r5, r6);
0x00001e2c ldr r5, [sp, 0x20] | r5 = var_20h;
0x00001e2e movs r1, 0x40 | r1 = 0x40;
0x00001e30 mov r0, r4 | r0 = r4;
0x00001e32 mov r6, fp | r6 = fp;
0x00001e34 mov r2, r5 | r2 = r5;
0x00001e36 blx 0xddc | fcn_00000ddc ();
0x00001e3a mov r0, r5 | r0 = r5;
0x00001e3c movs r1, 0x40 | r1 = 0x40;
0x00001e3e mov r2, sl | r2 = sl;
0x00001e40 blx 0xddc | fcn_00000ddc ();
0x00001e44 mov r3, sl | r3 = sl;
0x00001e46 ldm r3!, {r0, r1} | r0 = *(r3!);
| r1 = *((r3! + 4));
0x00001e48 sub.w r3, fp, 0x11 | r3 = fp - 0x11;
0x00001e4c mov r5, r3 | r5 = r3;
0x00001e4e str r3, [sp, 0x14] | var_14h = r3;
0x00001e50 str.w r0, [fp] | __asm ("str.w r0, [fp]");
0x00001e54 str.w r1, [fp, 4] | __asm ("str.w r1, [arg_4h]");
| do {
0x00001e58 ldrb r2, [r6], 1 | r2 = *(r6);
| r6++;
0x00001e5c mov r0, r5 | r0 = r5;
0x00001e5e mov r3, r8 | r3 = r8;
0x00001e60 movs r1, 1 | r1 = 1;
0x00001e62 adds r5, 2 | r5 += 2;
0x00001e64 str r2, [sp] | *(sp) = r2;
0x00001e66 mov.w r2, -1 | r2 = -1;
0x00001e6a blx 0xd48 | sprintf_chk ()
0x00001e6e cmp r6, r4 |
0x00001e70 bne 0x1e58 |
| } while (r6 != r4);
0x00001e72 movs r5, 0 | r5 = 0;
0x00001e74 mvn sb, 2 | sb = ~2;
0x00001e78 strb r5, [fp, -0x1] | *((fp - 0x1)) = r5;
0x00001e7c cmp r7, 0 |
| if (r7 == 0) {
0x00001e7e beq.w 0x1f84 | goto label_16;
| }
0x00001e82 ldr r6, [pc, 0x2f0] |
0x00001e84 add r6, pc | r6 = 0x3ffe;
| do {
0x00001e86 mov r1, r6 | r1 = r6;
0x00001e88 mov r0, r7 | r0 = r7;
0x00001e8a blx 0xbe0 | r0 = strcmp (r0, r1);
0x00001e8e cmp r0, 0 |
| if (r0 == 0) {
0x00001e90 beq 0x1f70 | goto label_44;
| }
0x00001e92 adds r5, 1 | r5++;
0x00001e94 adds r6, 0xc | r6 += 0xc;
0x00001e96 cmp r5, 6 |
0x00001e98 bne 0x1e86 |
| } while (r5 != 6);
0x00001e9a add r6, sp, 0x3c | r6 += endptr;
0x00001e9c movs r2, 0xa | r2 = 0xa;
0x00001e9e mov r1, r6 | r1 = r6;
0x00001ea0 mov r0, r7 | r0 = r7;
0x00001ea2 blx 0xd18 | strtoul (r0, r1, r2);
0x00001ea6 ldr r3, [r6] | r3 = *(r6);
0x00001ea8 mov sb, r0 | sb = r0;
0x00001eaa ldrb r3, [r3] | r3 = *(r3);
0x00001eac cmp r3, 0 |
| if (r3 == 0) {
0x00001eae beq.w 0x2078 | goto label_45;
| }
| label_13:
0x00001eb2 ldr r1, [pc, 0x2c4] |
0x00001eb4 add r1, pc | r1 = 0x4032;
| label_22:
0x00001eb6 mov r2, r7 | r2 = r7;
0x00001eb8 movs r0, 1 | r0 = 1;
0x00001eba blx 0xd7c | fcn_00000d7c ();
0x00001ebe b 0x1f2e | goto label_21;
| label_36:
0x00001ec0 ldr r1, [pc, 0x2b8] |
0x00001ec2 ldr r0, [pc, 0x2bc] |
0x00001ec4 ldr.w sb, [pc, 0x2bc] |
0x00001ec8 add r1, pc | r1 = 0x4048;
0x00001eca add r0, pc | r0 = 0x4050;
0x00001ecc blx 0xdf4 | fcn_00000df4 ();
0x00001ed0 add sb, pc | sb = 0x4058;
0x00001ed2 mov r4, r0 | r4 = r0;
| if (r4 == 0) {
| do {
| label_10:
0x00001ed4 cbz r4, 0x1f08 | goto label_46;
| }
0x00001ed6 mov r0, r4 | r0 = r4;
0x00001ed8 blx 0xcac | r0 = getmntent ();
0x00001edc mov sl, r0 | sl = r0;
| if (r0 == 0) {
0x00001ede cbz r0, 0x1f08 | goto label_46;
| }
0x00001ee0 ldr.w r0, [sl, 8] | r0 = *((sl + 8));
0x00001ee4 mov r1, sb | r1 = sb;
0x00001ee6 blx 0xbe0 | r0 = strcmp (r0, r1);
0x00001eea cmp r0, 0 |
0x00001eec bne 0x1ed4 |
| } while (r0 != 0);
0x00001eee ldr.w r0, [sl, 4] | r0 = *((sl + 4));
0x00001ef2 movs r1, 4 | r1 = 4;
0x00001ef4 blx 0xda0 | r0 = fcn_00000da0 ();
0x00001ef8 cmp r0, 0 |
| if (r0 != 0) {
0x00001efa bne 0x1ed4 | goto label_10;
| }
0x00001efc ldr.w r0, [sl, 4] | r0 = *((sl + 4));
0x00001f00 movs r1, 1 | r1 = 1;
0x00001f02 bl 0x146c | fcn_0000146c (r0, r1);
0x00001f06 b 0x1ed4 | goto label_10;
| label_46:
0x00001f08 mov r0, r4 | r0 = r4;
0x00001f0a blx 0xdac | fcn_00000dac ();
0x00001f0e ldr r3, [pc, 0x278] |
0x00001f10 add r3, pc |
0x00001f12 ldr r3, [r3, 8] | r3 = *(0x40a6);
0x00001f14 cmp r3, 0 |
| if (r3 != 0) {
0x00001f16 bne.w 0x1cf2 | goto label_11;
| }
0x00001f1a ldr r0, [pc, 0x270] |
0x00001f1c ldr r3, [pc, 0x228] | r3 = *(0x2148);
0x00001f1e add r0, pc | r0 = 0x40b0;
| label_19:
0x00001f20 ldr.w r3, [r8, r3] | r3 = *((r8 + r3));
0x00001f24 movs r2, 0x19 | r2 = 0x19;
0x00001f26 movs r1, 1 | r1 = 1;
0x00001f28 ldr r3, [r3] | r3 = *(r3);
0x00001f2a blx 0xc7c | fwrite (r0, r1, r2, r3);
| label_21:
0x00001f2e movs r0, 1 | r0 = 1;
0x00001f30 blx 0xd00 | exit (r0);
| label_40:
0x00001f34 ldr.w fp, [sp, 0x24] | fp = var_24h;
0x00001f38 add.w sb, sp, 0x40 | sb += var_40h;
0x00001f3c ldr r3, [sp, 0x88] | r3 = var_88h;
0x00001f3e mov r4, sb | r4 = sb;
0x00001f40 mov ip, fp |
0x00001f42 bic sl, r3, 8 | sl = BIT_MASK (r3, 8);
0x00001f46 ldm.w ip!, {r0, r1, r2, r3} | r0 = *(ip!);
| r1 = *((ip! + 4));
| r2 = *((ip! + 8));
| r3 = *((ip! + 12));
0x00001f4a stm r4!, {r0, r1, r2, r3} | *(r4!) = r0;
| *((r4! + 4)) = r1;
| *((r4! + 8)) = r2;
| *((r4! + 12)) = r3;
0x00001f4c ldm.w ip!, {r0, r1, r2, r3} | r0 = *(ip!);
| r1 = *((ip! + 4));
| r2 = *((ip! + 8));
| r3 = *((ip! + 12));
0x00001f50 stm r4!, {r0, r1, r2, r3} | *(r4!) = r0;
| *((r4! + 4)) = r1;
| *((r4! + 8)) = r2;
| *((r4! + 12)) = r3;
0x00001f52 ldm.w ip!, {r0, r1, r2, r3} | r0 = *(ip!);
| r1 = *((ip! + 4));
| r2 = *((ip! + 8));
| r3 = *((ip! + 12));
0x00001f56 stm r4!, {r0, r1, r2, r3} | *(r4!) = r0;
| *((r4! + 4)) = r1;
| *((r4! + 8)) = r2;
| *((r4! + 12)) = r3;
0x00001f58 ldm.w ip, {r0, r1, r2} | r0 = *(ip);
| r1 = *((ip + 4));
| r2 = *((ip + 8));
0x00001f5c stm.w r4, {r0, r1, r2} | *(r4) = r0;
| *((r4 + 4)) = r1;
| *((r4 + 8)) = r2;
0x00001f60 mov r2, fp | r2 = fp;
0x00001f62 mov r1, lr | r1 = lr;
0x00001f64 mov r0, lr | r0 = lr;
0x00001f66 str.w sl, [sp, 0x88] | __asm ("str.w sl, [var_88h]");
0x00001f6a blx 0xc94 | tcsetattr ();
0x00001f6e b 0x1da8 | goto label_12;
| label_44:
0x00001f70 ldr r3, [pc, 0x21c] |
0x00001f72 movs r2, 0xc | r2 = 0xc;
0x00001f74 add r3, pc | r3 = 0x4108;
0x00001f76 mla r3, r2, r5, r3 | __asm ("mla r3, r2, r5, r3");
0x00001f7a ldr.w sb, [r3, 8] | sb = *(0x4110);
0x00001f7e cmp.w sb, 0 |
| if (sb == 0) {
0x00001f82 beq 0x1eb2 | goto label_13;
| }
| label_16:
0x00001f84 ldr r3, [sp, 0x14] | r3 = var_14h;
0x00001f86 movs r2, 0x16 | r2 = 0x16;
0x00001f88 movs r1, 1 | r1 = 1;
0x00001f8a mov r0, sl | r0 = sl;
0x00001f8c str r3, [sp, 4] | var_4h = r3;
0x00001f8e ldr r3, [pc, 0x204] |
0x00001f90 add r3, pc | r3 = 0x412a;
0x00001f92 str r3, [sp] | *(sp) = r3;
0x00001f94 ldr r3, [pc, 0x200] |
0x00001f96 add r3, pc | r3 = 0x4132;
0x00001f98 blx 0xd48 | sprintf_chk ()
0x00001f9c ldr r2, [pc, 0x1fc] |
0x00001f9e movs r3, 0 | r3 = 0;
0x00001fa0 str r3, [sp] | *(sp) = r3;
0x00001fa2 mov r1, sb | r1 = sb;
0x00001fa4 mov r3, sl | r3 = sl;
0x00001fa6 movs r0, 0xa | r0 = 0xa;
0x00001fa8 add r2, pc | r2 = 0x4148;
0x00001faa bl 0x1178 | fcn_00001178 (r0);
0x00001fae adds r0, 1 | r0++;
| if (r0 == 1) {
0x00001fb0 beq 0x2002 | goto label_47;
| }
0x00001fb2 ldr r3, [pc, 0x1ec] |
0x00001fb4 add r3, pc |
0x00001fb6 ldr r3, [r3] | r3 = *(0x415a);
0x00001fb8 lsls r2, r3, 0x1e | r2 = r3 << 0x1e;
| if (r2 >= r3) {
0x00001fba bpl 0x20bc | goto label_48;
| }
| label_15:
0x00001fbc ldr r3, [pc, 0x1e4] |
0x00001fbe adds r4, 0x64 | r4 += 0x64;
0x00001fc0 ldr r2, [sp, 0x18] | r2 = var_18h;
0x00001fc2 add.w fp, fp, 0x64 |
0x00001fc6 add r3, pc |
0x00001fc8 ldr r3, [r3, 8] | r3 = *(0x4176);
0x00001fca adds r2, 1 | r2++;
0x00001fcc str r2, [sp, 0x18] | var_18h = r2;
0x00001fce cmp r3, r2 |
| if (r3 > r2) {
0x00001fd0 bhi.w 0x1e1c | goto label_14;
| }
0x00001fd4 ldrd r5, r6, [sp, 0x30] | __asm ("ldrd r5, r6, [var_30h]");
| label_43:
0x00001fd8 ldr r3, [sp, 0x2c] | r3 = var_2ch;
0x00001fda ldr r4, [r3] | r4 = *(r3);
0x00001fdc cmp r4, r5 |
| if (r4 != r5) {
0x00001fde beq 0x1ff8 |
0x00001fe0 ldr r3, [sp, 0xc] | r3 = var_ch_3;
0x00001fe2 cmp r3, 0 |
| if (r3 == 0) {
0x00001fe4 beq 0x20ca | goto label_49;
| }
0x00001fe6 ldr r3, [pc, 0x1c0] |
0x00001fe8 add r3, pc | r3 = 0x4196;
0x00001fea ldr r0, [r3, 4] | r0 = *(0x419a);
| label_18:
0x00001fec ldr r1, [sp, 0x10] | r1 = var_10h;
0x00001fee mov r3, r6 | r3 = r6;
0x00001ff0 mov r2, r5 | r2 = r5;
0x00001ff2 str r4, [sp] | *(sp) = r4;
0x00001ff4 bl 0x18e8 | r0 = fcn_000018e8 (r0, r1, r2, r3, r4, r5, r6);
| }
0x00001ff8 bl 0x1710 | fcn_00001710 ();
0x00001ffc movs r0, 0 | r0 = 0;
0x00001ffe blx 0xd00 | r0 = exit (r0);
| label_47:
0x00002002 blx 0xd3c | errno_location ();
0x00002006 str r0, [sp, 0x28] | var_28h = r0;
0x00002008 ldr r0, [r0] | r0 = *(r0);
0x0000200a cmp r0, 0x7e |
| if (r0 != 0x7e) {
0x0000200c bne 0x2106 | goto label_50;
| }
0x0000200e add.w r5, fp, 8 | r5 += arg_8h;
0x00002012 add.w ip, sp, 0x80 |
0x00002016 add.w lr, fp, 0x48 | lr += arg_48h;
0x0000201a movs r3, 1 | r3 = 1;
0x0000201c str r3, [sp, 0x7c] | var_7ch = r3;
| do {
0x0000201e ldr r0, [r5] | r0 = *(r5);
0x00002020 adds r5, 0x10 | r5 += 0x10;
0x00002022 ldr r1, [r5, -0xc] | r1 = *((r5 - 0xc));
0x00002026 mov r6, ip | r6 = ip;
0x00002028 ldr r2, [r5, -0x8] | r2 = *((r5 - 0x8));
0x0000202c ldr r3, [r5, -0x4] | r3 = *((r5 - 0x4));
0x00002030 cmp r5, lr |
0x00002032 stm r6!, {r0, r1, r2, r3} | *(r6!) = r0;
| *((r6! + 4)) = r1;
| *((r6! + 8)) = r2;
| *((r6! + 12)) = r3;
0x00002034 mov ip, r6 |
0x00002036 bne 0x201e |
| } while (r5 != lr);
0x00002038 cmn.w sb, 3 |
0x0000203c mov.w r3, 0x40 | r3 = 0x40;
0x00002040 str r3, [sp, 0xc0] | var_c0h = r3;
| if (sb == 3) {
0x00002042 beq 0x2092 | goto label_51;
| }
| label_17:
0x00002044 ldr r1, [pc, 0x164] |
0x00002046 movs r3, 0x48 | r3 = 0x48;
0x00002048 str r3, [sp] | *(sp) = r3;
0x0000204a mov r2, sl | r2 = sl;
0x0000204c ldr r3, [sp, 0x24] | r3 = var_24h;
0x0000204e movw r0, 0x135 | r0 = 0x135;
0x00002052 add r1, pc | r1 = 0x4202;
0x00002054 str.w sb, [sp, 4] | __asm ("str.w sb, [var_4h]");
0x00002058 blx 0xd0c | syscall ();
0x0000205c adds r0, 1 | r0++;
| if (r0 == 1) {
0x0000205e beq 0x20ea | goto label_52;
| }
0x00002060 ldr r3, [pc, 0x14c] |
0x00002062 add r3, pc |
0x00002064 ldr r3, [r3] | r3 = *(0x4216);
0x00002066 lsls r3, r3, 0x1e | r3 <<= 0x1e;
| if (r3 < r3) {
0x00002068 bmi 0x1fbc | goto label_15;
| }
0x0000206a ldr r1, [pc, 0x148] |
0x0000206c movs r0, 1 | r0 = 1;
0x0000206e ldr r2, [sp, 0x14] | r2 = var_14h;
0x00002070 add r1, pc | r1 = 0x422a;
0x00002072 blx 0xd7c | fcn_00000d7c ();
0x00002076 b 0x1fbc | goto label_15;
| label_45:
0x00002078 mov r0, r5 | r0 = r5;
0x0000207a mov r2, r3 | r2 = r3;
0x0000207c mov r1, sb | r1 = sb;
0x0000207e bl 0x1178 | r0 = fcn_00001178 (r0);
0x00002082 cmp r0, 0 |
| if (r0 < 0) {
0x00002084 blt.w 0x1eb2 | goto label_13;
| }
0x00002088 cmp.w sb, 0 |
| if (sb != 0) {
0x0000208c bne.w 0x1f84 | goto label_16;
| }
0x00002090 b 0x1eb2 | goto label_13;
| label_51:
0x00002092 movs r2, 0 | r2 = 0;
0x00002094 mov r1, sb | r1 = sb;
0x00002096 mov r0, r2 | r0 = r2;
0x00002098 bl 0x1178 | r0 = fcn_00001178 (r0);
0x0000209c subs.w sb, r0, 0 | sb = r0 - 0;
| if (sb >= r0) {
0x000020a0 bge 0x2044 | goto label_17;
| }
0x000020a2 ldr r3, [sp, 0x28] | r3 = var_28h;
0x000020a4 ldr r0, [r3] | r0 = *(r3);
0x000020a6 blx 0xcd0 | strerror (r0);
0x000020aa ldr r1, [pc, 0x10c] |
0x000020ac mov r2, r0 | r2 = r0;
0x000020ae movs r0, 1 | r0 = 1;
0x000020b0 add r1, pc | r1 = 0x426e;
0x000020b2 blx 0xd7c | fcn_00000d7c ();
0x000020b6 movs r0, 1 | r0 = 1;
0x000020b8 blx 0xd00 | exit (r0);
| label_48:
0x000020bc ldr r1, [pc, 0xfc] |
0x000020be movs r0, 1 | r0 = 1;
0x000020c0 ldr r2, [sp, 0x14] | r2 = var_14h;
0x000020c2 add r1, pc | r1 = 0x4282;
0x000020c4 blx 0xd7c | fcn_00000d7c ();
0x000020c8 b 0x1fbc | goto label_15;
| label_49:
0x000020ca ldr r0, [sp, 0xc] | r0 = var_ch_3;
0x000020cc b 0x1fec | goto label_18;
| label_39:
0x000020ce ldr r0, [pc, 0xf0] |
0x000020d0 ldr r3, [pc, 0x74] | r3 = *(0x2148);
0x000020d2 add r0, pc | r0 = 0x4298;
0x000020d4 b 0x1f20 | goto label_19;
| label_42:
0x000020d6 addw r0, r8, 0x40f | __asm ("addw r0, r8, 0x40f");
0x000020da b 0x1dea | goto label_20;
| label_41:
0x000020dc ldr r0, [pc, 0xe4] |
0x000020de add r0, pc | r0 = 0x42a6;
0x000020e0 blx 0xcb8 | puts (r0);
0x000020e4 movs r0, 1 | r0 = 1;
0x000020e6 blx 0xd00 | exit (r0);
| label_52:
0x000020ea ldr r3, [sp, 0x28] | r3 = var_28h;
0x000020ec ldr r0, [r3] | r0 = *(r3);
0x000020ee cmp r0, 0x7a |
| if (r0 == 0x7a) {
0x000020f0 beq 0x2126 | goto label_53;
| }
0x000020f2 blx 0xcd0 | strerror (r0);
0x000020f6 ldr r1, [pc, 0xd0] |
0x000020f8 mov r3, r0 | r3 = r0;
0x000020fa ldr r2, [sp, 0x14] | r2 = var_14h;
0x000020fc movs r0, 1 | r0 = 1;
0x000020fe add r1, pc | r1 = 0x42cc;
0x00002100 blx 0xd7c | fcn_00000d7c ();
0x00002104 b 0x1f2e | goto label_21;
| label_50:
0x00002106 blx 0xcd0 | strerror (r0);
0x0000210a ldr r1, [pc, 0xc0] |
0x0000210c mov r2, r0 | r2 = r0;
0x0000210e movs r0, 1 | r0 = 1;
0x00002110 add r1, pc | r1 = 0x42e2;
0x00002112 blx 0xd7c | fcn_00000d7c ();
0x00002116 ldr r3, [sp, 0x28] | r3 = var_28h;
0x00002118 ldr r3, [r3] | r3 = *(r3);
0x0000211a cmp r3, 0x16 |
| if (r3 != 0x16) {
0x0000211c bne.w 0x1f2e | goto label_21;
| }
0x00002120 ldr r1, [pc, 0xac] |
0x00002122 add r1, pc | r1 = 0x42f6;
0x00002124 b 0x1eb6 | goto label_22;
| label_53:
0x00002126 ldr r0, [pc, 0xac] |
0x00002128 add r0, pc | r0 = 0x4302;
0x0000212a blx 0xcb8 | puts (r0);
0x0000212e b 0x1f2e | goto label_21;
| }
[*] Function sprintf used 3 times e4crypt