[*] Binary protection state of vftpd
Full RELRO Canary found NX enabled PIE enabled No RPATH No RUNPATH No Symbols
[*] Function sprintf tear down of vftpd
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/bin/vftpd @ 0x37e8 */
| #include <stdint.h>
|
| #define SWAP32(n) ((uint32_t) (((n & 0x000000ff) << 24) | \
| ((n & 0x0000ff00) << 8) | \
| ((n & 0x00ff0000) >> 8) | \
| ((n & 0xff000000) >> 24)))
|
; (fcn) fcn.000037e8 () | void fcn_000037e8 (int16_t arg_8h, int16_t arg_ch, int16_t arg_10h, int16_t arg_14h, int16_t arg_18h, char * str, int16_t arg_20h, char * s1, int16_t arg_28h, FILE * fildes, int16_t arg_30h, char * dest, int16_t arg_38h, int16_t arg_3ch, int16_t arg_40h, int16_t arg_44h, int16_t arg_48h, int16_t arg_4ch, int16_t arg_5ch, int16_t arg_60h, int16_t arg_64h, int16_t arg_68h, int16_t arg_6ch, int16_t arg_90h, int16_t arg_101h, char * arg_354h, int16_t arg_396h, int16_t arg_397h, int16_t arg_398h, int16_t arg_39ch, char * path, char * s) {
| int16_t var_0h;
| int16_t var_4h;
| label_2:
0x00002142 ldr r3, [sp, 0x3c] | r3 = *(arg_3ch);
0x00002144 ldr r3, [r3] | r3 = *(r3);
0x00002146 cmp r3, 0 |
| if (r3 != 0) {
0x00002148 bne.w 0x24c8 | goto label_36;
| }
0x0000214c mov sb, r3 | sb = r3;
0x0000214e add.w sl, r4, 1 | sl = r4 + 1;
0x00002152 add r7, sp, 0x90 | r7 += arg_90h;
| do {
| label_0:
0x00002154 movs r2, 0x80 | r2 = 0x80;
0x00002156 movs r1, 0 | r1 = 0;
0x00002158 mov r0, r6 | r0 = r6;
0x0000215a mov.w r5, 0x384 | r5 = 0x384;
0x0000215e blx 0x1934 | memset (r0, r1, r2);
0x00002162 mov r0, r4 | r0 = r4;
0x00002164 blx 0x1724 | fdelt_chk ();
0x00002168 movs r3, 0 | r3 = 0;
0x0000216a str r7, [sp] | *(sp) = r7;
0x0000216c ldr r2, [sp, 0x28] | r2 = *(arg_28h);
0x0000216e mov r1, r6 | r1 = r6;
0x00002170 strd r5, r3, [r7] | __asm ("strd r5, r3, [r7]");
0x00002174 ldr.w r3, [r6, r0, lsl 2] | offset_0 = r0 << 2;
| r3 = *((r6 + offset_0));
0x00002178 orrs r3, r2 | r3 |= r2;
0x0000217a str.w r3, [r6, r0, lsl 2] | __asm ("str.w r3, [r6, r0, lsl 2]");
0x0000217e movs r3, 0 | r3 = 0;
0x00002180 mov r2, r3 | r2 = r3;
0x00002182 mov r0, sl | r0 = sl;
0x00002184 blx 0x16b8 | r0 = select ();
0x00002188 cmp r0, 0 |
| if (r0 <= 0) {
0x0000218a ble.w 0x2490 | goto label_37;
| }
0x0000218e add r5, sp, 0x398 | r5 += arg_398h;
0x00002190 rsb.w r2, sb, 0x100 | r2 = 0x100 - sb;
0x00002194 add.w r1, r5, sb | r1 = r5 + sb;
0x00002198 mov r0, r4 | r0 = r4;
0x0000219a blx 0x1640 | r0 = read (r0, r1, r2);
0x0000219e cmp r0, 0 |
| if (r0 < 0) {
0x000021a0 blt.w 0x239e | goto label_38;
| }
| if (r0 == 0) {
0x000021a4 beq.w 0x24c8 | goto label_36;
| }
0x000021a8 add sb, r0 | sb += r0;
0x000021aa cmp.w sb, 0xff |
| if (sb > 0xff) {
0x000021ae bgt.w 0x23b8 | goto label_39;
| }
0x000021b0 strh r3, [r0, 8] | *((r0 + 8)) = r3;
| label_1:
0x000021b2 addw r3, sp, 0x397 | __asm ("addw r3, arg_397h");
0x000021b6 ldrb.w r2, [r3, sb] | r2 = *((r3 + sb));
0x000021b8 movs r0, 9 | r0 = 9;
0x000021ba cmp r2, 0xa |
0x000021bc bne 0x2154 |
| } while (r2 != 0xa);
0x000021be b 0x23bc | goto label_40;
| label_38:
0x0000239e blx 0x18d4 | r0 = errno_location ();
0x000023a2 ldr r3, [r0] | r3 = *(r0);
0x000023a4 cmp r3, 0xb |
| if (r3 != 0xb) {
0x000023a6 beq 0x23ae |
0x000023a8 cmp r3, 4 |
| if (r3 != 4) {
0x000023aa bne.w 0x24c8 | goto label_36;
| }
| }
0x000023ae cmp.w sb, 0 |
| if (sb == 0) {
0x000023b2 beq.w 0x2154 | goto label_0;
| }
0x000023b6 b 0x21b2 | goto label_1;
| label_39:
0x000023b8 addw r3, sp, 0x397 | __asm ("addw r3, arg_397h");
| label_40:
0x000023bc addw r2, sp, 0x396 | __asm ("addw r2, arg_396h");
0x000023c0 ldr.w sl, [pc, 0x414] | sl = *(0x000027d8);
0x000023c4 ldrb.w r2, [r2, sb] | r2 = *((r2 + sb));
0x000023c8 add sl, pc | sl += pc;
0x000023ca cmp r2, 0xd |
0x000023cc mov.w r2, 0 | r2 = 0;
0x000023d0 it eq |
| if (r2 != 0xd) {
0x000023d2 addeq sb, sb, -1 | sb += -1;
| }
0x000023d6 strb.w r2, [r3, sb] | *((r3 + sb)) = r2;
0x000023da ldr.w sb, [sl, 0x38] | sb = *((sl + 0x38));
0x000023de mov r0, sb | r0 = sb;
0x000023e0 blx 0x1898 | strlen (r0);
0x000023e4 mov r1, sb | r1 = sb;
0x000023e6 mov r2, r0 | r2 = r0;
0x000023e8 mov r0, r5 | r0 = r5;
0x000023ea blx 0x18ec | r0 = strncasecmp (r0, r1, r2);
0x000023ee cmp r0, 0 |
| if (r0 == 0) {
0x000023f0 beq 0x24c8 | goto label_36;
| }
0x000023f2 ldr.w sb, [sl, 0x3c] | sb = *((sl + 0x3c));
0x000023f6 mov r0, sb | r0 = sb;
0x000023f8 blx 0x1898 | strlen (r0);
0x000023fc mov r1, sb | r1 = sb;
0x000023fe mov r2, r0 | r2 = r0;
0x00002400 mov r0, r5 | r0 = r5;
0x00002402 blx 0x18ec | r0 = strncasecmp (r0, r1, r2);
0x00002406 cmp r0, 0 |
| if (r0 == 0) {
0x00002408 beq.w 0x3206 | goto label_41;
| }
0x0000240c ldr.w sb, [sl, 0x48] | sb = *((sl + 0x48));
0x00002410 mov r0, sb | r0 = sb;
0x00002412 blx 0x1898 | strlen (r0);
0x00002416 mov r1, sb | r1 = sb;
0x00002418 mov r2, r0 | r2 = r0;
0x0000241a mov r0, r5 | r0 = r5;
0x0000241c blx 0x18ec | r0 = strncasecmp (r0, r1, r2);
0x00002420 cmp r0, 0 |
| if (r0 == 0) {
0x00002422 beq.w 0x32aa | goto label_42;
| }
0x00002426 ldr.w sb, [sl, 0x50] | sb = *((sl + 0x50));
0x0000242a mov r0, sb | r0 = sb;
0x0000242c blx 0x1898 | strlen (r0);
0x00002430 mov r1, sb | r1 = sb;
0x00002432 mov r2, r0 | r2 = r0;
0x00002434 mov r0, r5 | r0 = r5;
0x00002436 blx 0x18ec | r0 = strncasecmp (r0, r1, r2);
0x0000243a cmp r0, 0 |
| if (r0 == 0) {
0x0000243c beq.w 0x32a2 | goto label_43;
| }
0x00002440 ldr r3, [sp, 0x18] | r3 = *(arg_18h);
0x00002442 cmp r3, 1 |
| if (r3 == 1) {
0x00002444 beq.w 0x32b2 | goto label_44;
| }
0x00002448 cmp r3, 2 |
| if (r3 == 2) {
0x0000244a beq 0x24cc | goto label_45;
| }
0x0000244c cmp r3, 0 |
| if (r3 != 0) {
0x0000244e bne.w 0x2142 | goto label_2;
| }
0x00002452 ldr.w sb, [sl, 0x58] | sb = *((sl + 0x58));
0x00002456 mov r0, sb | r0 = sb;
0x00002458 blx 0x1898 | strlen (r0);
0x0000245c mov r1, sb | r1 = sb;
0x0000245e mov r7, r0 | r7 = r0;
0x00002460 mov r2, r0 | r2 = r0;
0x00002462 mov r0, r5 | r0 = r5;
0x00002464 blx 0x18ec | r0 = strncasecmp (r0, r1, r2);
| if (r0 == 0) {
0x00002468 cbnz r0, 0x2478 |
0x0000246a mov r0, r5 | r0 = r5;
0x0000246c blx 0x1898 | strlen (r0);
0x00002470 adds r3, r7, 1 | r3 = r7 + 1;
0x00002472 cmp r0, r3 |
| if (r0 > r3) {
0x00002474 bhi.w 0x3230 | goto label_46;
| }
| }
0x00002478 ldr r3, [pc, 0x360] |
0x0000247a add r3, pc | r3 = 0x4c5a;
0x0000247c ldr r5, [r3, 0x60] | r5 = *(0x4cba);
| label_3:
0x0000247e mov r0, r5 | r0 = r5;
0x00002480 blx 0x1898 | strlen (r0);
0x00002484 mov r1, r5 | r1 = r5;
0x00002486 mov r2, r0 | r2 = r0;
0x00002488 mov r0, r4 | r0 = r4;
0x0000248a blx 0x195c | fcn_0000195c ();
0x0000248e b 0x2142 | goto label_2;
| label_37:
0x00002490 mov fp, r4 |
| if (r0 == r3) {
0x00002492 beq.w 0x3292 | goto label_47;
| }
| do {
| label_24:
0x00002496 ldr r3, [pc, 0x348] |
0x00002498 add r3, pc | r3 = 0x4c7e;
0x0000249a ldr.w r4, [r3, 0xe8] | r4 = *(0x4d66);
0x0000249e mov r0, r4 | r0 = r4;
0x000024a0 blx 0x1898 | strlen (r0);
0x000024a4 mov r1, r4 | r1 = r4;
0x000024a6 mov r2, r0 | r2 = r0;
0x000024a8 mov r0, fp | r0 = fp;
0x000024aa blx 0x195c | fcn_0000195c ();
0x000024ae mov r0, fp | r0 = fp;
0x000024b0 blx 0x1ab4 | fdipc_client_socket ();
0x000024b4 ldr r2, [pc, 0x32c] |
0x000024b6 movs r1, 1 | r1 = 1;
0x000024b8 ldr r3, [sp, 0x20] | r3 = *(arg_20h);
0x000024ba movs r0, 0x26 | r0 = 0x26;
0x000024bc add r2, pc | r2 = 0x4ca4;
0x000024be blx 0x19cc | fcn_000019cc ();
| label_32:
0x000024c2 mov r0, fp | r0 = fp;
0x000024c4 blx 0x1874 | exit (r0);
| label_36:
0x000024c8 mov fp, r4 |
0x000024ca b 0x2496 |
| } while (1);
| label_45:
0x000024cc ldr.w r1, [sl, 0x70] | r1 = *((sl + 0x70));
0x000024d0 mov r0, r1 | r0 = r1;
0x000024d2 str r1, [sp, 0x1c] | *(str) = r1;
0x000024d4 blx 0x1898 | strlen (r0);
0x000024d8 ldr r1, [sp, 0x1c] | r1 = *(str);
0x000024da mov sb, r0 | sb = r0;
0x000024dc mov r2, r0 | r2 = r0;
0x000024de mov r0, r5 | r0 = r5;
0x000024e0 blx 0x18ec | r0 = strncasecmp (r0, r1, r2);
| if (r0 == 0) {
0x000024e4 cbnz r0, 0x24f6 |
0x000024e6 mov r0, r5 | r0 = r5;
0x000024e8 blx 0x1898 | strlen (r0);
0x000024ec add.w r3, sb, 1 | r3 = sb + 1;
0x000024f0 cmp r0, r3 |
| if (r0 > r3) {
0x000024f2 bhi.w 0x33c2 | goto label_48;
| }
| }
0x000024f6 ldr r3, [pc, 0x2f0] |
0x000024f8 add r3, pc | r3 = 0x4ce6;
0x000024fa ldr.w sb, [r3, 0x78] | sb = *(0x4d5e);
0x000024fe str r3, [sp, 0x1c] | *(str) = r3;
0x00002500 mov r0, sb | r0 = sb;
0x00002502 blx 0x1898 | strlen (r0);
0x00002506 mov r1, sb | r1 = sb;
0x00002508 mov r2, r0 | r2 = r0;
0x0000250a mov r0, r5 | r0 = r5;
0x0000250c blx 0x18ec | r0 = strncasecmp (r0, r1, r2);
0x00002510 cmp r0, 0 |
| if (r0 != 0) {
0x00002512 beq 0x25e4 |
0x00002514 ldr r3, [sp, 0x1c] | r3 = *(str);
0x00002516 ldr.w sb, [r3, 0x7c] | sb = *((r3 + 0x7c));
0x0000251a mov r0, sb | r0 = sb;
0x0000251c blx 0x1898 | strlen (r0);
0x00002520 mov r1, sb | r1 = sb;
0x00002522 mov r2, r0 | r2 = r0;
0x00002524 mov r0, r5 | r0 = r5;
0x00002526 blx 0x18ec | strncasecmp (r0, r1, r2);
0x0000252a ldr r3, [sp, 0x1c] | r3 = *(str);
0x0000252c mov sb, r0 | sb = r0;
0x0000252e ldr.w sl, [r3, 0x80] | sl = *((r3 + 0x80));
0x00002532 mov r0, sl | r0 = sl;
0x00002534 blx 0x1898 | strlen (r0);
0x00002538 mov r1, sl | r1 = sl;
0x0000253a mov r2, r0 | r2 = r0;
0x0000253c mov r0, r5 | r0 = r5;
0x0000253e blx 0x18ec | r0 = strncasecmp (r0, r1, r2);
0x00002542 mov sl, r0 | sl = r0;
0x00002544 cmp.w sb, 0 |
| if (sb == 0) {
0x00002548 beq.w 0x26d2 | goto label_49;
| }
0x0000254c cmp r0, 0 |
| if (r0 == 0) {
0x0000254e beq.w 0x26d2 | goto label_49;
| }
0x00002552 ldr r3, [sp, 0x1c] | r3 = *(str);
0x00002554 ldr.w sl, [r3, 0x84] | sl = *((r3 + 0x84));
0x00002558 mov r0, sl | r0 = sl;
0x0000255a blx 0x1898 | strlen (r0);
0x0000255e mov r1, sl | r1 = sl;
0x00002560 mov r2, r0 | r2 = r0;
0x00002562 mov sb, r0 | sb = r0;
0x00002564 mov r0, r5 | r0 = r5;
0x00002566 blx 0x18ec | r0 = strncasecmp (r0, r1, r2);
0x0000256a mov sl, r0 | sl = r0;
| if (r0 == 0) {
0x0000256c cbnz r0, 0x257c |
0x0000256e mov r0, r5 | r0 = r5;
0x00002570 blx 0x1898 | strlen (r0);
0x00002574 add.w r3, sb, 1 | r3 = sb + 1;
0x00002578 cmp r0, r3 |
| if (r0 > r3) {
0x0000257a bhi 0x261a | goto label_50;
| }
| }
0x0000257c ldr r3, [pc, 0x26c] |
0x0000257e add r3, pc | r3 = 0x4d6e;
0x00002580 ldr.w sl, [r3, 0x8c] | sl = *(0x4dfa);
0x00002584 str r3, [sp, 0x30] | *(arg_30h) = r3;
0x00002586 mov r0, sl | r0 = sl;
0x00002588 blx 0x1898 | strlen (r0);
0x0000258c mov r1, sl | r1 = sl;
0x0000258e mov sb, r0 | sb = r0;
0x00002590 mov r2, r0 | r2 = r0;
0x00002592 mov r0, r5 | r0 = r5;
0x00002594 blx 0x18ec | strncasecmp (r0, r1, r2);
0x00002596 invalid |
0x0000259a mov r0, r5 | r0 = r5;
0x0000259c blx 0x1898 | strlen (r0);
0x000025a0 add.w r3, sb, 1 | r3 = sb + 1;
0x000025a4 cmp r0, r3 |
| if (r0 > r3) {
0x000025a6 bhi.w 0x2e96 | goto label_51;
| }
0x000025aa ldr.w sb, [pc, 0x244] | sb = *(0x000027f0);
0x000025ae add sb, pc | sb += pc;
0x000025b0 ldr.w sl, [sb, 0x9c] | sl = *((sb + 0x9c));
0x000025b4 mov r0, sl | r0 = sl;
0x000025b6 blx 0x1898 | strlen (r0);
0x000025ba mov r1, sl | r1 = sl;
0x000025bc mov r2, r0 | r2 = r0;
0x000025be mov r0, r5 | r0 = r5;
0x000025c0 blx 0x18ec | r0 = strncasecmp (r0, r1, r2);
0x000025c4 cmp r0, 0 |
| if (r0 != 0) {
0x000025c6 bne.w 0x280c | goto label_52;
| }
0x000025ca ldrb r3, [r5, 5] | r3 = *((r5 + 5));
0x000025cc and r2, r3, 0xf7 | r2 = r3 & 0xf7;
0x000025d0 cmp r2, 0x41 |
| if (r2 != 0x41) {
0x000025d2 bne.w 0x26f8 | goto label_53;
| }
0x000025d6 ldr r2, [pc, 0x21c] |
0x000025d8 ldr.w r5, [sb, 0x54] | r5 = *((sb + 0x54));
0x000025dc add r2, pc | r2 = 0x4dd6;
0x000025de strb.w r3, [r2, 0x74] | *((r2 + 0x74)) = r3;
0x000025e2 b 0x247e | goto label_3;
| }
0x000025e4 ldrb.w sl, [r8, 0xc] | sl = *((r8 + 0xc));
0x000025e8 cmp.w sl, 0 |
| if (sl != 0) {
0x000025ec bne.w 0x2e6c | goto label_54;
| }
0x000025f0 movs r0, 2 | r0 = 2;
0x000025f2 bl 0x3a0c | r0 = fcn_00003a0c (r0);
0x000025f6 subs r5, r0, 0 | r5 = r0 - 0;
| if (r5 < r0) {
0x000025f8 blt 0x26c2 | goto label_55;
| }
0x000025fa movs r3, 0x80 | r3 = 0x80;
0x000025fc mov r2, r7 | r2 = r7;
0x000025fe mov r1, r6 | r1 = r6;
0x00002600 mov r0, r4 | r0 = r4;
0x00002602 str r3, [r7] | *(r7) = r3;
0x00002604 blx 0x1a2c | r0 = fcn_00001a2c ();
0x00002608 cmp r0, 0 |
| if (r0 < 0) {
0x0000260a blt 0x2616 | goto label_56;
| }
0x0000260c ldrh r3, [r6] | r3 = *(r6);
0x0000260e cmp r3, 2 |
| if (r3 == 2) {
0x00002610 beq 0x26ca | goto label_57;
| }
0x00002612 cmp r3, 0xa |
0x00002614 beq 0x2688 |
| while (sb != r2) {
| label_56:
0x00002616 mov sb, sl | sb = sl;
0x00002618 b 0x26a0 | goto label_58;
| label_50:
0x0000261a addw r0, sp, 0x39d | __asm ("addw r0, path");
0x0000261e bl 0x3b2c | fcn_00003b2c (r0);
0x00002622 add r3, sp, 0x6c | r3 += arg_6ch;
0x00002624 add r2, sp, 0x68 | r2 += arg_68h;
0x00002626 mov r1, sl | r1 = sl;
0x00002628 strd sl, r4, [sp] | __asm ("strd sl, r4, [sp]");
0x0000262c mov sb, r0 | sb = r0;
0x0000262e bl 0x45cc | r0 = fcn_000045cc (r0, r1, r2, r3, r4, r5, r6);
0x00002632 mov r5, r0 | r5 = r0;
0x00002634 cmp r0, 0 |
| if (r0 == 0) {
0x00002636 beq.w 0x2a7c | goto label_59;
| }
| label_5:
0x0000263a cmp r5, 0 |
| if (r5 < 0) {
0x0000263c blt.w 0x299e | goto label_4;
| }
0x00002640 ldr.w sb, [pc, 0x1b4] | sb = *(0x000027f8);
0x00002644 add sb, pc | sb += pc;
0x00002646 ldr.w r7, [sb, 0x1c] | r7 = *((sb + 0x1c));
0x0000264a mov r0, r7 | r0 = r7;
0x0000264c blx 0x1898 | strlen (r0);
0x00002650 mov r1, r7 | r1 = r7;
0x00002652 mov r2, r0 | r2 = r0;
0x00002654 mov r0, r4 | r0 = r4;
0x00002656 blx 0x195c | fcn_0000195c ();
0x0000265a mov r0, r8 | r0 = r8;
0x0000265c bl 0x3c44 | r0 = fcn_00003c44 (r0);
0x00002660 subs r7, r0, 0 | r7 = r0 - 0;
| if (r7 < r0) {
0x00002662 blt.w 0x2ca4 | goto label_60;
| }
0x00002666 ldr r3, [pc, 0x194] |
0x00002668 add r3, pc | r3 = 0x4e6a;
0x0000266a ldrb.w r3, [r3, 0x74] | r3 = *((r3 + 0x74));
0x0000266e cmp r3, 0x49 |
| if (r3 == 0x49) {
0x00002670 beq.w 0x2c50 | goto label_61;
| }
0x00002674 cmp r3, 0x41 |
| if (r3 == 0x41) {
0x00002676 beq.w 0x2da2 | goto label_62;
| }
0x0000267a ldr r2, [pc, 0x184] |
0x0000267c movs r1, 1 | r1 = 1;
0x0000267e movs r0, 3 | r0 = 3;
0x00002680 add r2, pc | r2 = 0x4e86;
0x00002682 blx 0x19cc | fcn_000019cc ();
0x00002686 b 0x2142 | goto label_2;
0x00002688 ldrd r2, r3, [r6, 8] | __asm ("ldrd r2, r3, [r6, 8]");
0x0000268c orrs.w sb, r2, r3 | sb = r2 | r3;
0x00002690 bne 0x2616 |
| }
0x00002692 ldr r3, [r6, 0x10] | r3 = *((r6 + 0x10));
0x00002694 cmn.w r3, 0x10000 |
| if (r3 != 0x10000) {
0x00002698 bne 0x26a0 | goto label_58;
| }
0x0000269a ldr r3, [r6, 0x14] | r3 = *((r6 + 0x14));
0x0000269c rev.w sb, r3 | r3 = SWAP32 (sb);
| do {
| label_58:
0x000026a0 mov r2, r7 | r2 = r7;
0x000026a2 mov r1, r6 | r1 = r6;
0x000026a4 mov r0, r5 | r0 = r5;
0x000026a6 blx 0x1a2c | r0 = fcn_00001a2c ();
0x000026aa cmp r0, 0 |
| if (r0 >= 0) {
0x000026ac blt 0x26bc |
0x000026ae ldrh r3, [r6] | r3 = *(r6);
0x000026b0 cmp r3, 2 |
| if (r3 == 2) {
0x000026b2 beq.w 0x2d4c | goto label_63;
| }
0x000026b4 strh r3, [r1, 0x1a] | *((r1 + 0x1a)) = r3;
0x000026b6 cmp r3, 0xa |
| if (r3 == 0xa) {
0x000026b8 beq.w 0x2d38 | goto label_64;
| }
| }
| label_11:
0x000026bc mov r0, r5 | r0 = r5;
0x000026be blx 0x1ab4 | fdipc_client_socket ();
| label_55:
0x000026c2 ldr r3, [pc, 0x140] |
0x000026c4 add r3, pc | r3 = 0x4ece;
0x000026c6 ldr r5, [r3, 0x14] | r5 = *(0x4ee2);
0x000026c8 b 0x247e | goto label_3;
| label_57:
0x000026ca ldr r3, [r6, 4] | r3 = *((r6 + 4));
0x000026cc rev.w sb, r3 | r3 = SWAP32 (sb);
0x000026d0 b 0x26a0 |
| } while (1);
| label_49:
0x000026d2 mov r0, r5 | r0 = r5;
0x000026d4 blx 0x1898 | r0 = strlen (r0);
0x000026d8 cmp r0, 5 |
| if (r0 >= 5) {
0x000026da bls 0x26e4 |
0x000026dc ldrb r3, [r5, 5] | r3 = *((r5 + 5));
0x000026de cmp r3, 0x2d |
| if (r3 != 0x2d) {
0x000026e0 bne.w 0x31cc | goto label_65;
| }
| }
0x000026e4 ldr r0, [pc, 0x120] |
0x000026e6 clz r3, sl | r3 &= sl;
0x000026ea lsrs r3, r3, 5 | r3 >>= 5;
0x000026ec mov r2, r8 | r2 = r8;
0x000026ee mov r1, r4 | r1 = r4;
0x000026f0 add r0, pc | r0 = 0x4efc;
0x000026f2 bl 0x3ec0 | fcn_00003ec0 (r0, r1, r2, r3);
0x000026f4 invalid |
| label_53:
0x000026f8 ldr.w r5, [sb, 0xa0] | r5 = *((sb + 0xa0));
0x000026fc b 0x247e | goto label_3;
| label_52:
0x0000280c ldr.w r1, [sb, 0xa4] | r1 = *((sb + 0xa4));
0x00002810 mov r0, r1 | r0 = r1;
0x00002812 str r1, [sp, 0x1c] | *(str) = r1;
0x00002814 blx 0x1898 | strlen (r0);
0x00002816 strex sb, sb, [r0, 0x1c] | __asm ("strex sb, sb, [r0, 0x1c]");
0x0000281a mov sl, r0 | sl = r0;
0x0000281c mov r2, r0 | r2 = r0;
0x0000281e mov r0, r5 | r0 = r5;
0x00002820 blx 0x18ec | r0 = strncasecmp (r0, r1, r2);
| if (r0 == 0) {
0x00002824 cbnz r0, 0x2836 |
0x00002826 mov r0, r5 | r0 = r5;
0x00002828 blx 0x1898 | strlen (r0);
0x0000282c add.w r3, sl, 1 | r3 = sl + 1;
0x00002830 cmp r0, r3 |
| if (r0 > r3) {
0x00002832 bhi.w 0x29a8 | goto label_66;
| }
| }
0x00002836 ldr.w sb, [pc, 0xc40] | sb = *(0x00003478);
0x0000283a add sb, pc | sb += pc;
0x0000283c ldr.w r1, [sb, 0xa8] | r1 = *((sb + 0xa8));
0x00002840 mov r0, r1 | r0 = r1;
0x00002842 str r1, [sp, 0x1c] | *(str) = r1;
0x00002844 blx 0x1898 | strlen (r0);
0x00002848 ldr r1, [sp, 0x1c] | r1 = *(str);
0x0000284a mov sl, r0 | sl = r0;
0x0000284c mov r2, r0 | r2 = r0;
0x0000284e mov r0, r5 | r0 = r5;
0x00002850 blx 0x18ec | r0 = strncasecmp (r0, r1, r2);
| if (r0 == 0) {
0x00002854 cbnz r0, 0x2866 |
0x00002856 mov r0, r5 | r0 = r5;
0x00002858 blx 0x1898 | strlen (r0);
0x0000285c add.w r3, sl, 1 | r3 = sl + 1;
0x00002860 cmp r0, r3 |
| if (r0 > r3) {
0x00002862 bhi.w 0x3742 | goto label_67;
| }
| }
0x00002866 ldr.w sb, [pc, 0xc14] | sb = *(0x0000347c);
0x0000286a add sb, pc | sb += pc;
0x0000286c ldr.w r1, [sb, 0xac] | r1 = *((sb + 0xac));
0x00002870 mov r0, r1 | r0 = r1;
0x00002872 str r1, [sp, 0x1c] | *(str) = r1;
0x00002874 blx 0x1898 | strlen (r0);
0x00002878 ldr r1, [sp, 0x1c] | r1 = *(str);
0x0000287a mov sl, r0 | sl = r0;
0x0000287c mov r2, r0 | r2 = r0;
0x0000287e mov r0, r5 | r0 = r5;
0x00002880 blx 0x18ec | r0 = strncasecmp (r0, r1, r2);
| if (r0 == 0) {
0x00002884 cbnz r0, 0x2896 |
0x00002886 mov r0, r5 | r0 = r5;
0x00002888 blx 0x1898 | strlen (r0);
0x0000288c add.w r3, sl, 1 | r3 = sl + 1;
0x00002890 cmp r0, r3 |
| if (r0 > r3) {
0x00002892 bhi.w 0x35a2 | goto label_68;
| }
| }
0x00002896 ldr.w sb, [pc, 0xbe8] | sb = *(0x00003480);
0x0000289a add sb, pc | sb += pc;
0x0000289c ldr.w sl, [sb, 0xb0] | sl = *((sb + 0xb0));
0x000028a0 mov r0, sl | r0 = sl;
0x000028a2 blx 0x1898 | strlen (r0);
0x000028a6 mov r1, sl | r1 = sl;
0x000028a8 mov r2, r0 | r2 = r0;
0x000028aa mov r0, r5 | r0 = r5;
0x000028ac blx 0x18ec | r0 = strncasecmp (r0, r1, r2);
0x000028b0 cmp r0, 0 |
| if (r0 == 0) {
0x000028b2 beq.w 0x35ca | goto label_69;
| }
0x000028b6 ldr.w sl, [sb, 0xb8] | sl = *((sb + 0xb8));
0x000028ba mov r0, sl | r0 = sl;
0x000028bc blx 0x1898 | strlen (r0);
0x000028c0 mov r1, sl | r1 = sl;
0x000028c2 mov sb, r0 | sb = r0;
0x000028c4 mov r2, r0 | r2 = r0;
0x000028c6 mov r0, r5 | r0 = r5;
0x000028c8 blx 0x18ec | r0 = strncasecmp (r0, r1, r2);
| if (r0 == 0) {
0x000028cc cbnz r0, 0x28de |
0x000028ce mov r0, r5 | r0 = r5;
0x000028d0 blx 0x1898 | strlen (r0);
0x000028d4 add.w r3, sb, 1 | r3 = sb + 1;
0x000028d8 cmp r0, r3 |
| if (r0 > r3) {
0x000028da bhi.w 0x35b8 | goto label_70;
| }
| }
0x000028de ldr.w sb, [pc, 0xba4] | sb = *(0x00003484);
0x000028e2 add sb, pc | sb += pc;
0x000028e4 ldr.w r1, [sb, 0xbc] | r1 = *((sb + 0xbc));
0x000028e8 mov r0, r1 | r0 = r1;
0x000028ea str r1, [sp, 0x1c] | *(str) = r1;
0x000028ec blx 0x1898 | strlen (r0);
0x000028f0 ldr r1, [sp, 0x1c] | r1 = *(str);
0x000028f2 mov sl, r0 | sl = r0;
0x000028f4 mov r2, r0 | r2 = r0;
0x000028f6 mov r0, r5 | r0 = r5;
0x000028f8 blx 0x18ec | r0 = strncasecmp (r0, r1, r2);
| if (r0 == 0) {
0x000028fc cbnz r0, 0x290e |
0x000028fe mov r0, r5 | r0 = r5;
0x00002900 blx 0x1898 | strlen (r0);
0x00002904 add.w r3, sl, 1 | r3 = sl + 1;
0x00002908 cmp r0, r3 |
| if (r0 > r3) {
0x0000290a bhi.w 0x3612 | goto label_71;
| }
| }
0x0000290e ldr.w sb, [pc, 0xb78] | sb = *(0x00003488);
0x00002912 add sb, pc | sb += pc;
0x00002914 ldr.w sl, [sb, 0xcc] | sl = *((sb + 0xcc));
0x00002916 adr r0, 0x330 | r0 = 0x330;
0x00002918 mov r0, sl | r0 = sl;
0x0000291a blx 0x1898 | strlen (r0);
0x0000291e mov r1, sl | r1 = sl;
0x00002920 mov r2, r0 | r2 = r0;
0x00002922 mov r0, r5 | r0 = r5;
0x00002924 blx 0x18ec | r0 = strncasecmp (r0, r1, r2);
0x00002928 cmp r0, 0 |
| if (r0 == 0) {
0x0000292a beq.w 0x2a6c | goto label_72;
| }
0x0000292e ldr.w sl, [sb, 0xd0] | sl = *((sb + 0xd0));
0x00002932 mov r0, sl | r0 = sl;
0x00002934 blx 0x1898 | strlen (r0);
0x00002938 mov r1, sl | r1 = sl;
0x0000293a mov r2, r0 | r2 = r0;
0x0000293c str r0, [sp, 0x1c] | *(str) = r0;
0x0000293e mov r0, r5 | r0 = r5;
0x00002940 blx 0x18ec | r0 = strncasecmp (r0, r1, r2);
0x00002944 mov sl, r0 | sl = r0;
| if (r0 == 0) {
0x00002946 cbnz r0, 0x2958 |
0x00002948 mov r0, r5 | r0 = r5;
0x0000294a blx 0x1898 | strlen (r0);
0x0000294e ldr r2, [sp, 0x1c] | r2 = *(str);
0x00002950 adds r3, r2, 1 | r3 = r2 + 1;
0x00002952 cmp r0, r3 |
| if (r0 > r3) {
0x00002954 bhi.w 0x2b8c | goto label_73;
| }
| }
0x00002958 ldr.w sb, [pc, 0xb30] | sb = *(0x0000348c);
0x0000295c add sb, pc | sb += pc;
0x0000295e ldr.w r1, [sb, 0xd8] | r1 = *((sb + 0xd8));
0x00002962 mov r0, r1 | r0 = r1;
0x00002964 str r1, [sp, 0x1c] | *(str) = r1;
0x00002966 blx 0x1898 | strlen (r0);
0x0000296a ldr r1, [sp, 0x1c] | r1 = *(str);
0x0000296c mov sl, r0 | sl = r0;
0x0000296e mov r2, r0 | r2 = r0;
0x00002970 mov r0, r5 | r0 = r5;
0x00002972 blx 0x18ec | r0 = strncasecmp (r0, r1, r2);
| if (r0 != 0) {
0x00002976 cbnz r0, 0x29c0 | goto label_74;
| }
0x00002978 mov r0, r5 | r0 = r5;
0x0000297a blx 0x1898 | strlen (r0);
0x0000297e add.w r3, sl, 1 | r3 = sl + 1;
0x00002982 cmp r0, r3 |
| if (r0 < r3) {
0x00002984 bls 0x29c0 | goto label_74;
| }
0x00002986 ldr r5, [sp, 0x34] | r5 = *(dest);
0x00002988 ldrb r3, [r5] | r3 = *(r5);
| if (r3 == 0) {
0x0000298a cbz r3, 0x299e | goto label_4;
| }
0x0000298c addw r0, sp, 0x39d | __asm ("addw r0, path");
0x00002990 bl 0x3b2c | r0 = fcn_00003b2c (r0);
0x00002994 mov r1, r0 | r1 = r0;
0x00002996 mov r0, r5 | r0 = r5;
0x00002998 blx 0x1850 | r0 = rename (r0, r1);
| if (r0 == 0) {
0x0000299c cbz r0, 0x29ba | goto label_30;
| }
| do {
| label_4:
0x0000299e mov r0, r4 | r0 = r4;
0x000029a0 bl 0x38b0 | fcn_000038b0 (r0);
0x000029a4 b.w 0x2142 | goto label_2;
| label_66:
0x000029a8 add r0, sp, 0x39c | r0 += arg_39ch;
0x000029aa bl 0x3b2c | fcn_00003b2c (r0);
0x000029ae movw r1, 0x1ed | r1 = 0x1ed;
0x000029b2 blx 0x191c | r0 = mkdir ();
0x000029b6 cmp r0, 0 |
0x000029b8 bne 0x299e |
| } while (r0 != 0);
| label_30:
0x000029ba ldr.w r5, [sb, 0x18] | r5 = *((sb + 0x18));
0x000029be b 0x247e | goto label_3;
| label_74:
0x000029c0 ldr.w sl, [pc, 0xacc] | sl = *(0x00003490);
0x000029c4 add sl, pc | sl += pc;
0x000029c6 ldr.w r1, [sl, 0xdc] | r1 = *((sl + 0xdc));
0x000029ca mov r0, r1 | r0 = r1;
0x000029cc str r1, [sp, 0x1c] | *(str) = r1;
0x000029ce blx 0x1898 | strlen (r0);
0x000029d2 ldr r1, [sp, 0x1c] | r1 = *(str);
0x000029d4 mov sb, r0 | sb = r0;
0x000029d6 mov r2, r0 | r2 = r0;
0x000029d8 mov r0, r5 | r0 = r5;
0x000029da blx 0x18ec | r0 = strncasecmp (r0, r1, r2);
| if (r0 == 0) {
0x000029de cbnz r0, 0x29ee |
0x000029e0 mov r0, r5 | r0 = r5;
0x000029e2 blx 0x1898 | strlen (r0);
0x000029e6 add.w r3, sb, 1 | r3 = sb + 1;
0x000029ea cmp r0, r3 |
| if (r0 > r3) {
0x000029ec bhi 0x2aae | goto label_75;
| }
| }
0x000029ee ldr.w sb, [pc, 0xaa4] | sb = *(0x00003494);
0x000029f2 add sb, pc | sb += pc;
0x000029f4 ldr.w sl, [sb, 0xe4] | sl = *((sb + 0xe4));
0x000029f8 mov r0, sl | r0 = sl;
0x000029fa blx 0x1898 | strlen (r0);
0x000029fe mov r1, sl | r1 = sl;
0x00002a00 mov r2, r0 | r2 = r0;
0x00002a02 str r0, [sp, 0x1c] | *(str) = r0;
0x00002a04 mov r0, r5 | r0 = r5;
0x00002a06 blx 0x18ec | r0 = strncasecmp (r0, r1, r2);
0x00002a0a mov sl, r0 | sl = r0;
0x00002a0c cmp r0, 0 |
| if (r0 != 0) {
0x00002a0e bne.w 0x2bfa | goto label_31;
| }
0x00002a12 mov r0, r5 | r0 = r5;
0x00002a14 blx 0x1898 | strlen (r0);
0x00002a16 vpmax.s8 d25, d0, d7 | __asm ("vpmax.s8 d25, d0, d7");
0x00002a1a adds r3, r2, 1 | r3 = r2 + 1;
0x00002a1c cmp r0, r3 |
| if (r0 < r3) {
0x00002a1e bls.w 0x2bf2 | goto label_76;
| }
0x00002a22 ldrb r3, [r5, r2] | r3 = *((r5 + r2));
0x00002a24 add r5, r2 | r5 += r2;
0x00002a26 cmp r3, 0x20 |
| if (r3 != 0x20) {
0x00002a28 bne.w 0x2bfa | goto label_31;
| }
0x00002a2c ldr.w r1, [pc, 0xa68] |
0x00002a30 adds r5, 1 | r5++;
0x00002a32 mov r0, r5 | r0 = r5;
0x00002a34 add r1, pc | r1 = 0x5ed0;
0x00002a36 blx 0x15f8 | r0 = strcmp (r0, r1);
0x00002a3a cmp r0, 0 |
| if (r0 == 0) {
0x00002a3c beq.w 0x2c00 | goto label_77;
| }
0x00002a40 mov r1, sl | r1 = sl;
0x00002a42 mov r0, r5 | r0 = r5;
0x00002a44 movs r2, 0xa | r2 = 0xa;
0x00002a46 blx 0x1610 | r0 = strtol (r0, r1, r2);
0x00002a4a cmp r0, 1 |
0x00002a4c mov r3, r0 | r3 = r0;
| if (r0 == 1) {
0x00002a4e beq.w 0x2b58 | goto label_78;
| }
0x00002a52 cmp r0, 2 |
| if (r0 == 2) {
0x00002a54 beq.w 0x2bba | goto label_79;
| }
0x00002a58 ldr.w r2, [pc, 0xa40] |
0x00002a5c movs r1, 1 | r1 = 1;
0x00002a5e movs r0, 6 | r0 = 6;
0x00002a60 add r2, pc | r2 = 0x5f00;
0x00002a62 blx 0x19cc | fcn_000019cc ();
0x00002a66 ldr.w r5, [sb, 0xe0] | r5 = *((sb + 0xe0));
0x00002a6a b 0x247e | goto label_3;
| label_72:
0x00002a6c ldr.w r1, [pc, 0xa30] |
0x00002a70 mov r0, r4 | r0 = r4;
0x00002a72 add r1, pc | r1 = 0x5f16;
0x00002a74 bl 0x3c10 | fcn_00003c10 (r0, r1);
0x00002a78 b.w 0x2142 | goto label_2;
| label_59:
0x00002a7c mov r1, r7 | r1 = r7;
0x00002a7e mov r0, sb | r0 = sb;
0x00002a80 blx 0x1838 | r0 = stat ();
0x00002a84 cmp r0, 0 |
| if (r0 < 0) {
0x00002a86 blt 0x299e | goto label_4;
| }
0x00002a88 ldr r3, [r7, 0x10] | r3 = *((r7 + 0x10));
0x00002a8a and r3, r3, 0xf000 | r3 &= 0xf000;
0x00002a8e cmp.w r3, 0x4000 |
| if (r3 == 0x4000) {
0x00002a92 beq 0x2b50 | goto label_80;
| }
0x00002a94 movs r1, 4 | r1 = 4;
0x00002a96 mov r0, sb | r0 = sb;
0x00002a98 blx 0x1968 | r0 = fcn_00001968 ();
0x00002a9c cmp r0, 0 |
| if (r0 < 0) {
0x00002a9e blt.w 0x299e | goto label_4;
| }
0x00002aa2 mov r1, r5 | r1 = r5;
0x00002aa4 mov r0, sb | r0 = sb;
0x00002aa6 blx 0x1844 | r0 = open (r0, r1, r2);
0x00002aaa mov r5, r0 | r5 = r0;
0x00002aac b 0x263a | goto label_5;
| label_75:
0x00002aae ldrb.w r3, [r8, 0xc] | r3 = *((r8 + 0xc));
0x00002ab2 cmp r3, 0 |
| if (r3 == 0) {
0x00002ab4 bne 0x2b4a |
0x00002ab6 ldr.w r1, [pc, 0x9ec] |
0x00002aba movs r2, 5 | r2 = 5;
0x00002abc mov r0, r5 | r0 = r5;
0x00002abe add r1, pc | r1 = 0x5f68;
0x00002ac0 blx 0x1a98 | r0 = fcn_00001a98 ();
0x00002ac4 mov r7, r0 | r7 = r0;
0x00002ac6 cmp r0, 0 |
| if (r0 == 0) {
0x00002ac8 bne 0x2b40 |
0x00002aca ldrb r5, [r5, 5] | r5 = *((r5 + 5));
0x00002acc sub.w r3, r5, 0x21 | r3 = r5 - 0x21;
0x00002ad0 cmp r3, 0x5d |
| if (r3 > 0x5d) {
0x00002ad2 bhi 0x2b40 | goto label_81;
| }
0x00002ad4 addw r3, sp, 0x39e | __asm ("addw r3, s");
0x00002ad8 mov r1, r5 | r1 = r5;
0x00002ada mov r0, r3 | r0 = r3;
0x00002adc str r3, [sp, 0x1c] | *(str) = r3;
0x00002ade blx 0x18a4 | r0 = strchr (r0, r1);
0x00002ae2 mov sb, r0 | sb = r0;
| if (r0 == 0) {
0x00002ae4 cbz r0, 0x2b40 | goto label_81;
| }
0x00002ae6 ldr r3, [sp, 0x1c] | r3 = *(str);
0x00002ae8 mov r1, r7 | r1 = r7;
0x00002aea strb r7, [sb], 1 | *(sb) = r7;
| sb++;
0x00002aee movs r2, 0xa | r2 = 0xa;
0x00002af0 mov r0, r3 | r0 = r3;
0x00002af2 blx 0x1610 | strtol (r0, r1, r2);
0x00002af6 mov r1, r5 | r1 = r5;
0x00002af8 str r0, [sp, 0x1c] | *(str) = r0;
0x00002afa mov r0, sb | r0 = sb;
0x00002afc blx 0x18a4 | r0 = strchr (r0, r1);
| if (r0 == 0) {
0x00002b00 cbz r0, 0x2b40 | goto label_81;
| }
0x00002b02 ldr r3, [sp, 0x1c] | r3 = *(str);
0x00002b04 strb r7, [r0] | *(r0) = r7;
0x00002b06 subs r1, r3, 1 | r1 = r3 - 1;
0x00002b08 cmp r1, 1 |
| if (r1 > 1) {
0x00002b0a bhi 0x2bd0 | goto label_82;
| }
0x00002b0c mov r1, sb | r1 = sb;
0x00002b0e movs r2, 0x3e | r2 = 0x3e;
0x00002b10 add.w sb, r0, 1 | sb = r0 + 1;
0x00002b14 addw r0, sp, 0x101 | __asm ("addw r0, arg_101h");
0x00002b16 asrs r1, r0, 0x20 | r1 = r0 >> 0x20;
0x00002b18 blx 0x17c0 | strcpy_chk ();
0x00002b1c mov r1, r5 | r1 = r5;
0x00002b1e mov r0, sb | r0 = sb;
0x00002b20 blx 0x18a4 | r0 = strchr (r0, r1);
| if (r0 == 0) {
0x00002b24 cbz r0, 0x2b40 | goto label_81;
| }
0x00002b26 strb r7, [r0] | *(r0) = r7;
0x00002b28 mov r1, r7 | r1 = r7;
0x00002b2a mov r0, sb | r0 = sb;
0x00002b2c movs r2, 0xa | r2 = 0xa;
0x00002b2e blx 0x1610 | strtol (r0, r1, r2);
0x00002b32 str.w r0, [r8, 4] | __asm ("str.w r0, [r8, 4]");
0x00002b36 mov r0, r8 | r0 = r8;
0x00002b38 bl 0x3b50 | r0 = fcn_00003b50 (r0);
0x00002b3c cmp r0, 0 |
| if (r0 == 0) {
0x00002b3e beq 0x2bbe | goto label_83;
| }
| }
| label_81:
0x00002b40 ldr.w r3, [pc, 0x964] | r3 = *(0x000034a8);
0x00002b44 add r3, pc | r3 += pc;
0x00002b46 ldr r5, [r3, 0x14] | r5 = *((r3 + 0x14));
0x00002b48 b 0x247e | goto label_3;
| }
| label_27:
0x00002b4a ldr.w r5, [sl, 0x74] | r5 = *((sl + 0x74));
0x00002b4e b 0x247e | goto label_3;
| label_80:
0x00002b50 ldr r3, [sp, 0x1c] | r3 = *(str);
0x00002b52 ldr.w r5, [r3, 0x88] | r5 = *((r3 + 0x88));
0x00002b56 b 0x247e | goto label_3;
| label_78:
0x00002b58 movs r0, 2 | r0 = 2;
| label_6:
0x00002b5a bl 0x3a0c | r0 = fcn_00003a0c (r0);
0x00002b5e subs r5, r0, 0 | r5 = r0 - 0;
| if (r5 >= r0) {
0x00002b60 blt 0x2b82 |
0x00002b62 movs r3, 0x80 | r3 = 0x80;
0x00002b64 mov r2, r7 | r2 = r7;
0x00002b66 mov r1, r6 | r1 = r6;
0x00002b68 str r3, [r7] | *(r7) = r3;
0x00002b6a blx 0x1a2c | r0 = fcn_00001a2c ();
0x00002b6e cmp r0, 0 |
| if (r0 >= 0) {
0x00002b70 blt 0x2b7c |
0x00002b72 ldrh r3, [r6] | r3 = *(r6);
0x00002b74 cmp r3, 2 |
| if (r3 == 2) {
0x00002b76 beq 0x2c0c | goto label_84;
| }
0x00002b78 cmp r3, 0xa |
| if (r3 == 0xa) {
0x00002b7a beq 0x2c0c | goto label_84;
| }
| }
| label_7:
0x00002b7c mov r0, r5 | r0 = r5;
0x00002b7e blx 0x1ab4 | fdipc_client_socket ();
| }
0x00002b82 ldr.w r3, [pc, 0x928] | r3 = *(0x000034ac);
0x00002b86 add r3, pc | r3 += pc;
0x00002b88 ldr r5, [r3, 0x14] | r5 = *((r3 + 0x14));
0x00002b8a b 0x247e | goto label_3;
| label_73:
0x00002b8c addw r0, sp, 0x39d | __asm ("addw r0, path");
0x00002b90 bl 0x3b2c | fcn_00003b2c (r0);
0x00002b94 ldr r5, [sp, 0x34] | r5 = *(dest);
0x00002b96 mov r1, r0 | r1 = r0;
0x00002b98 mov.w r2, 0x100 | r2 = 0x100;
0x00002b9c mov r0, r5 | r0 = r5;
0x00002b9e blx 0x1940 | strncpy (r0, r1, r2);
0x00002ba2 mov r1, sl | r1 = sl;
0x00002ba4 mov r0, r5 | r0 = r5;
0x00002ba6 strb.w sl, [r5, 0x100] | *((r5 + 0x100)) = sl;
0x00002baa blx 0x1968 | r0 = fcn_00001968 ();
0x00002bae cmp r0, 0 |
| if (r0 != 0) {
0x00002bb0 bne.w 0x299e | goto label_4;
| }
0x00002bb4 ldr.w r5, [sb, 0xd4] | r5 = *((sb + 0xd4));
0x00002bb8 b 0x247e | goto label_3;
| label_79:
0x00002bba movs r0, 0xa | r0 = 0xa;
0x00002bbc b 0x2b5a | goto label_6;
| label_83:
0x00002bbe ldr.w r0, [r8, 8] | r0 = *((r8 + 8));
0x00002bc2 cmp r0, 0 |
0x00002bc4 bge 0x2be4 |
| while (1) {
0x00002bc6 ldr.w r3, [pc, 0x8e8] | r3 = *(0x000034b0);
0x00002bca add r3, pc | r3 += pc;
0x00002bcc ldr r5, [r3, 0x54] | r5 = *((r3 + 0x54));
0x00002bce b 0x247e | goto label_3;
| label_82:
0x00002bd0 ldr.w r2, [pc, 0x8e0] |
0x00002bd4 movs r1, 1 | r1 = 1;
0x00002bd6 movs r0, 6 | r0 = 6;
0x00002bd8 add r2, pc | r2 = 0x6090;
0x00002bda blx 0x19cc | fcn_000019cc ();
0x00002bde ldr.w r5, [sl, 0xe0] | r5 = *((sl + 0xe0));
0x00002be2 b 0x247e | goto label_3;
0x00002be4 blx 0x1ab4 | fdipc_client_socket ();
0x00002be8 mov.w r3, -1 | r3 = -1;
0x00002bec str.w r3, [r8, 8] | __asm ("str.w r3, [r8, 8]");
0x00002bf0 b 0x2bc6 |
| }
| label_76:
0x00002bf2 ldr.w r3, [r8] | r3 = *(r8);
0x00002bf6 ldrh r0, [r3] | r0 = *(r3);
0x00002bf8 b 0x2b5a | goto label_6;
| label_31:
0x00002bfa ldr.w r5, [sb, 0xb4] | r5 = *((sb + 0xb4));
0x00002bfe b 0x247e | goto label_3;
| label_77:
0x00002c00 movs r3, 1 | r3 = 1;
0x00002c02 ldr.w r5, [sb, 0x54] | r5 = *((sb + 0x54));
0x00002c06 strb.w r3, [r8, 0xc] | *((r8 + 0xc)) = r3;
0x00002c0a b 0x247e | goto label_3;
| label_84:
0x00002c0c ldrh r7, [r6, 2] | r7 = *((r6 + 2));
0x00002c0e rev16 r7, r7 | __asm ("rev16 r7, r7");
0x00002c10 uxth r7, r7 | r7 = (int16_t) r7;
0x00002c12 cmp r7, 0 |
| if (r7 == 0) {
0x00002c14 beq 0x2b7c | goto label_7;
| }
0x00002c16 ldr.w r0, [r8, 8] | r0 = *((r8 + 8));
0x00002c1a cmp r0, 0 |
| if (r0 >= 0) {
0x00002c1c blt 0x2c22 |
0x00002c1e blx 0x1ab4 | fdipc_client_socket ();
| }
0x00002c22 ldr.w r3, [pc, 0x894] |
0x00002c26 movs r2, 1 | r2 = 1;
0x00002c28 str r7, [sp, 4] | var_4h = r7;
0x00002c2a mov r0, fp | r0 = fp;
0x00002c2c str.w r5, [r8, 8] | __asm ("str.w r5, [r8, 8]");
0x00002c30 add r3, pc | r3 = 0x60ee;
0x00002c32 str r3, [sp] | *(sp) = r3;
0x00002c34 movs r3, 0x50 | r3 = 0x50;
0x00002c36 mov r1, r3 | r1 = r3;
0x00002c38 blx 0x1afc | fcn_00001afc ();
| label_12:
0x00002c3c mov r0, fp | r0 = fp;
0x00002c3e blx 0x1898 | strlen (r0);
0x00002c42 mov r1, fp | r1 = fp;
0x00002c44 mov r2, r0 | r2 = r0;
0x00002c46 mov r0, r4 | r0 = r4;
0x00002c48 blx 0x195c | fcn_0000195c ();
0x00002c4c b.w 0x2142 | goto label_2;
| label_61:
0x00002c50 movw r0, 0x1ff4 | r0 = 0x1ff4;
0x00002c54 blx 0x17f0 | r0 = malloc (r0);
0x00002c58 mov sb, r0 | sb = r0;
0x00002c5a cmp r0, 0 |
| if (r0 == 0) {
0x00002c5c beq 0x2d28 | goto label_85;
| }
0x00002c5e blx 0x18d4 | errno_location ();
0x00002c62 str.w r8, [sp, 0x2c] | __asm ("str.w r8, [fildes]");
0x00002c66 mov r8, r6 | r8 = r6;
0x00002c68 mov r6, sl | r6 = sl;
0x00002c6a movs r3, 0 | r3 = 0;
0x00002c6c str r0, [sp, 0x30] | *(arg_30h) = r0;
0x00002c6e str r3, [r0] | *(r0) = r3;
0x00002c70 str r4, [sp, 0x1c] | *(str) = r4;
| label_8:
0x00002c72 movw r2, 0x1ff4 | r2 = 0x1ff4;
0x00002c76 mov r1, sb | r1 = sb;
0x00002c78 mov r0, r5 | r0 = r5;
0x00002c7a blx 0x1640 | r0 = read (r0, r1, r2);
0x00002c7e subs r4, r0, 0 | r4 = r0 - 0;
| if (r4 <= r0) {
0x00002c80 ble 0x2d10 | goto label_86;
| }
0x00002c82 mov sl, r8 | sl = r8;
0x00002c84 add r6, r4 | r6 += r4;
0x00002c86 mov r1, sb | r1 = sb;
0x00002c88 mov r8, r4 | r8 = r4;
| do {
| label_9:
0x00002c8a mov r2, r4 | r2 = r4;
0x00002c8c mov r0, r7 | r0 = r7;
0x00002c8e str r1, [sp, 0x38] | *(arg_38h) = r1;
0x00002c90 blx 0x195c | r0 = fcn_0000195c ();
0x00002c94 cmp r0, 0 |
0x00002c96 ldr r1, [sp, 0x38] | r1 = *(arg_38h);
| if (r0 < 0) {
0x00002c98 blt 0x2cc2 | goto label_87;
| }
0x00002c9a subs r4, r4, r0 | r4 -= r0;
0x00002c9c add r1, r0 | r1 += r0;
0x00002c9e bne 0x2c8a |
| } while (r4 != r4);
0x00002ca0 mov r8, sl | r8 = sl;
0x00002ca2 b 0x2c72 | goto label_8;
| label_60:
0x00002ca4 ldr.w r7, [sb, 0x20] | r7 = *((sb + 0x20));
0x00002ca8 mov r0, r7 | r0 = r7;
0x00002caa blx 0x1898 | strlen (r0);
0x00002cae mov r1, r7 | r1 = r7;
0x00002cb0 mov r2, r0 | r2 = r0;
0x00002cb2 mov r0, r4 | r0 = r4;
0x00002cb4 blx 0x195c | fcn_0000195c ();
0x00002cb8 mov r0, r5 | r0 = r5;
0x00002cba blx 0x1ab4 | fdipc_client_socket ();
0x00002cbe b.w 0x2142 | goto label_2;
| label_87:
0x00002cc2 ldr r3, [sp, 0x30] | r3 = *(arg_30h);
0x00002cc4 ldr r3, [r3] | r3 = *(r3);
0x00002cc6 cmp r3, 4 |
| if (r3 == 4) {
0x00002cc8 beq 0x2c8a | goto label_9;
| }
0x00002cca cmp r3, 0xb |
| if (r3 == 0xb) {
0x00002ccc beq 0x2c8a | goto label_9;
| }
0x00002cce mov r2, sl | r2 = sl;
0x00002cd0 mov sl, r6 | sl = r6;
0x00002cd2 mov r6, r2 | r6 = r2;
0x00002cd4 ldr.w r2, [pc, 0x7e4] |
0x00002cd8 mov ip, r3 |
0x00002cda str r0, [sp] | *(sp) = r0;
0x00002cdc mov r3, r8 | r3 = r8;
0x00002cde movs r1, 1 | r1 = 1;
0x00002ce0 add r2, pc | r2 = 0x61a0;
0x00002ce2 movs r0, 7 | r0 = 7;
0x00002ce4 strd sl, ip, [sp, 4] | __asm ("strd sl, ip, [sp, 4]");
0x00002ce8 ldr r4, [sp, 0x1c] | r4 = *(str);
0x00002cea ldr.w r8, [sp, 0x2c] | r8 = *(fildes);
0x00002cee blx 0x19cc | fcn_000019cc ();
| label_10:
0x00002cf2 mov r0, r5 | r0 = r5;
0x00002cf4 blx 0x1ab4 | fdipc_client_socket ();
0x00002cf8 mov r0, r7 | r0 = r7;
0x00002cfa blx 0x1ab4 | fdipc_client_socket ();
0x00002cfe mov r0, sb | r0 = sb;
0x00002d00 blx 0x1664 | free (r0);
0x00002d04 ldr.w r3, [pc, 0x7b8] | r3 = *(0x000034c0);
0x00002d08 add r3, pc | r3 += pc;
0x00002d0a ldr r5, [r3, 0x24] | r5 = *((r3 + 0x24));
0x00002d0c b.w 0x247e | goto label_3;
| if (r0 == 7) {
| label_86:
0x00002d10 beq 0x2d1e | goto label_88;
| }
0x00002d12 ldr r3, [sp, 0x30] | r3 = *(arg_30h);
0x00002d14 ldr r2, [r3] | r2 = *(r3);
0x00002d16 cmp r2, 4 |
| if (r2 == 4) {
0x00002d18 beq 0x2c72 | goto label_8;
| }
0x00002d1a cmp r2, 0xb |
| if (r2 == 0xb) {
0x00002d1c beq 0x2c72 | goto label_8;
| }
| label_88:
0x00002d1e mov r6, r8 | r6 = r8;
0x00002d20 ldr r4, [sp, 0x1c] | r4 = *(str);
0x00002d22 ldr.w r8, [sp, 0x2c] | r8 = *(fildes);
0x00002d26 b 0x2cf2 | goto label_10;
| label_85:
0x00002d28 ldr.w r2, [pc, 0x798] |
0x00002d2c add r2, pc | r2 = 0x61f4;
| label_14:
0x00002d2e movs r1, 1 | r1 = 1;
0x00002d30 movs r0, 3 | r0 = 3;
0x00002d32 blx 0x19cc | fcn_000019cc ();
0x00002d36 b 0x299e | goto label_4;
| label_64:
0x00002d38 ldrd r3, r2, [r6] | __asm ("ldrd r3, r2, [r6]");
0x00002d3c orrs r3, r2 | r3 |= r2;
| if (r3 != r2) {
0x00002d3e bne.w 0x26bc | goto label_11;
| }
0x00002d42 ldr r3, [r6, 8] | r3 = *((r6 + 8));
0x00002d44 cmn.w r3, 0x10000 |
| if (r3 != 0x10000) {
0x00002d48 bne.w 0x26bc | goto label_11;
| }
| label_63:
0x00002d4c ldrh r7, [r6, 2] | r7 = *((r6 + 2));
0x00002d4e rev16 r7, r7 | __asm ("rev16 r7, r7");
0x00002d50 uxth r7, r7 | r7 = (int16_t) r7;
0x00002d52 cmp.w sb, 0 |
| if (sb == 0) {
0x00002d56 beq.w 0x26bc | goto label_11;
| }
0x00002d5a cmp r7, 0 |
| if (r7 == 0) {
0x00002d5c beq.w 0x26bc | goto label_11;
| }
0x00002d60 ldr.w r0, [r8, 8] | r0 = *((r8 + 8));
0x00002d64 cmp r0, 0 |
| if (r0 >= 0) {
0x00002d66 blt 0x2d6c |
0x00002d68 blx 0x1ab4 | fdipc_client_socket ();
| }
0x00002d6c uxtb r3, r7 | r3 = (int8_t) r7;
0x00002d6e str.w r5, [r8, 8] | __asm ("str.w r5, [r8, 8]");
0x00002d72 asrs r7, r7, 8 | r7 >>= 8;
0x00002d74 movs r2, 0x50 | r2 = 0x50;
0x00002d76 str r3, [sp, 0x14] | *(arg_14h) = r3;
0x00002d78 uxtb.w r3, sb | r3 = (int8_t) sb;
0x00002d7c movs r1, 1 | r1 = 1;
0x00002d7e str r7, [sp, 0x10] | *(arg_10h) = r7;
0x00002d80 str r3, [sp, 0xc] | *(arg_ch) = r3;
0x00002d82 lsr.w r3, sb, 0x18 | r3 = sb >> 0x18;
0x00002d86 mov r0, fp | r0 = fp;
0x00002d88 str r3, [sp] | *(sp) = r3;
0x00002d8a ubfx r3, sb, 8, 8 | r3 = (sb >> 8) & ((1 << 8) - 1);
0x00002d8e str r3, [sp, 8] | *(arg_8h) = r3;
0x00002d90 ubfx r3, sb, 0x10, 8 | r3 = (sb >> 0x10) & ((1 << 8) - 1);
0x00002d94 str r3, [sp, 4] | var_4h = r3;
0x00002d96 ldr.w r3, [pc, 0x730] |
0x00002d9a add r3, pc | r3 = 0x6268;
0x00002d9c blx 0x18f8 | sprintf_chk ()
0x00002da0 b 0x2c3c | goto label_12;
| label_62:
0x00002da2 ldr.w r1, [pc, 0x728] |
0x00002da6 mov r0, r5 | r0 = r5;
0x00002da8 add r1, pc | r1 = 0x627a;
0x00002daa blx 0x15c8 | r0 = fdopen ();
0x00002dae mov sb, r0 | sb = r0;
0x00002db0 movw r0, 0x1ff4 | r0 = 0x1ff4;
0x00002db4 blx 0x17f0 | r0 = malloc (r0);
0x00002db8 mov r5, r0 | r5 = r0;
0x00002dba cmp r0, 0 |
| if (r0 == 0) {
0x00002dbc beq 0x2e64 | goto label_89;
| }
0x00002dbe mov r0, sb | r0 = sb;
0x00002dc0 blx 0x1a14 | fcn_00001a14 ();
0x00002dc4 b 0x2e00 |
| while (r0 != 0) {
| label_13:
0x00002dc6 mov r0, sb | r0 = sb;
0x00002dc8 blx 0x1688 | r0 = ferror (r0);
| if (r0 != 0) {
0x00002dcc cbnz r0, 0x2e38 | goto label_90;
| }
0x00002dce mov r0, sb | r0 = sb;
0x00002dd0 blx 0x1880 | r0 = feof (r0);
0x00002dd4 mov sl, r0 | sl = r0;
| if (r0 == 0) {
0x00002dd6 cbnz r0, 0x2dfc |
0x00002dd8 mov r0, r5 | r0 = r5;
0x00002dda blx 0x1898 | r0 = strlen (r0);
0x00002dde mov r3, r0 | r3 = r0;
| if (r0 != 0) {
0x00002de0 cbz r0, 0x2df2 |
0x00002de2 subs r1, r0, 1 | r1 = r0 - 1;
0x00002de4 mov sl, r0 | sl = r0;
0x00002de6 ldrb.w ip, [r5, r1] | ip = *((r5 + r1));
0x00002dea adds r0, r5, r1 | r0 = r5 + r1;
0x00002dec cmp.w ip, 0xa |
| if (ip == 0xa) {
0x00002df0 beq 0x2e74 | goto label_91;
| }
| }
| label_15:
0x00002df2 mov r2, sl | r2 = sl;
0x00002df4 mov r1, r5 | r1 = r5;
0x00002df6 mov r0, r7 | r0 = r7;
0x00002df8 bl 0x4034 | fcn_00004034 (r0, r1, r2);
| }
0x00002dfc movs r3, 0 | r3 = 0;
0x00002dfe strb r3, [r5] | *(r5) = r3;
0x00002e00 mov r2, sb | r2 = sb;
0x00002e02 movw r1, 0x1ff3 | r1 = 0x1ff3;
0x00002e06 mov r0, r5 | r0 = r5;
0x00002e08 blx 0x167c | r0 = fgets (r0, r1, r2);
0x00002e0c cmp r0, 0 |
0x00002e0e bne 0x2dc6 |
| }
0x00002e10 mov r0, sb | r0 = sb;
0x00002e12 blx 0x1880 | r0 = feof (r0);
0x00002e16 cmp r0, 0 |
| if (r0 == 0) {
0x00002e18 beq 0x2dc6 | goto label_13;
| }
0x00002e1a mov r0, sb | r0 = sb;
0x00002e1c blx 0x198c | fcn_0000198c ();
0x00002e20 mov r0, r7 | r0 = r7;
0x00002e22 blx 0x1ab4 | fdipc_client_socket ();
0x00002e26 mov r0, r5 | r0 = r5;
0x00002e28 blx 0x1664 | free (r0);
0x00002e2c ldr.w r3, [pc, 0x6a0] | r3 = *(0x000034d0);
0x00002e2e adds r6, 0xa0 | r6 += 0xa0;
0x00002e30 add r3, pc | r3 += pc;
0x00002e32 ldr r5, [r3, 0x24] | r5 = *((r3 + 0x24));
0x00002e34 b.w 0x247e | goto label_3;
| label_90:
0x00002e38 mov r0, sb | r0 = sb;
0x00002e3a blx 0x1880 | r0 = feof (r0);
0x00002e3e mov sl, r0 | sl = r0;
0x00002e40 mov r0, sb | r0 = sb;
0x00002e42 blx 0x1688 | ferror (r0);
0x00002e46 str r0, [sp, 0x1c] | *(str) = r0;
0x00002e48 blx 0x18d4 | errno_location ();
0x00002e4c ldr r2, [sp, 0x1c] | r2 = *(str);
0x00002e4e mov r3, sl | r3 = sl;
0x00002e50 str r5, [sp, 8] | *(arg_8h) = r5;
0x00002e52 ldr r1, [r0] | r1 = *(r0);
0x00002e54 movs r0, 6 | r0 = 6;
0x00002e56 strd r2, r1, [sp] | __asm ("strd r2, r1, [sp]");
0x00002e5a movs r1, 1 | r1 = 1;
0x00002e5c ldr r2, [sp, 0x48] | r2 = *(arg_48h);
0x00002e5e blx 0x19cc | fcn_000019cc ();
0x00002e60 ldc p7, c14, [r6, 0x2d0]! | __asm ("ldc p7, c14, [r6, 0x2d0]!");
| label_89:
0x00002e64 ldr.w r2, [pc, 0x66c] |
0x00002e68 add r2, pc | r2 = 0x6340;
0x00002e6a b 0x2d2e | goto label_14;
| label_54:
0x00002e6c ldr r3, [sp, 0x1c] | r3 = *(str);
0x00002e6e ldr r5, [r3, 0x74] | r5 = *((r3 + 0x74));
0x00002e70 b.w 0x247e | goto label_3;
| label_91:
0x00002e74 cmp r3, 1 |
| if (r3 == 1) {
0x00002e76 beq 0x2e86 | goto label_92;
| }
0x00002e78 add.w ip, r5, r3 |
0x00002e7c ldrb ip, [ip, -0x2] | ip = *((ip - 0x2));
0x00002e80 cmp.w ip, 0xd |
| if (ip == 0xd) {
0x00002e84 beq 0x2df2 | goto label_15;
| }
| label_92:
0x00002e86 ldr r2, [sp, 0x4c] | r2 = *(arg_4ch);
0x00002e88 add.w sl, r3, 1 | sl = r3 + 1;
0x00002e8c ldrh r3, [r2] | r3 = *(r2);
0x00002e8e strh r3, [r5, r1] | *((r5 + r1)) = r3;
0x00002e90 ldrb r3, [r2, 2] | r3 = *((r2 + 2));
0x00002e92 strb r3, [r0, 2] | *((r0 + 2)) = r3;
0x00002e94 b 0x2df2 | goto label_15;
| label_51:
0x00002e96 addw r0, sp, 0x39d | __asm ("addw r0, path");
0x00002e9a add.w sl, sp, 0x6c | sl += arg_6ch;
0x00002e9e bl 0x3b2c | fcn_00003b2c (r0);
0x00002ea2 add r3, sp, 0x68 | r3 += arg_68h;
0x00002ea4 add r2, sp, 0x64 | r2 += arg_64h;
0x00002ea6 str r3, [sp, 0x2c] | *(fildes) = r3;
0x00002ea8 movs r1, 1 | r1 = 1;
0x00002eaa str r3, [sp] | *(sp) = r3;
0x00002eac mov r3, sl | r3 = sl;
0x00002eae str r4, [sp, 4] | var_4h = r4;
0x00002eb0 mov sb, r0 | sb = r0;
0x00002eb2 str r2, [sp, 0x1c] | *(str) = r2;
0x00002eb4 bl 0x45cc | r0 = fcn_000045cc (r0, r1, r2, r3, r4, r5, r6);
0x00002eb8 mov r5, r0 | r5 = r0;
0x00002eba cmp r0, 0 |
| if (r0 == 0) {
0x00002ebc beq.w 0x3196 | goto label_93;
| }
| label_22:
0x00002ec0 cmp r5, 0 |
| if (r5 <= 0) {
0x00002ec2 ble.w 0x299e | goto label_4;
| }
0x00002ec6 ldr r3, [sp, 0x1c] | r3 = *(str);
0x00002ec8 ldr r3, [r3] | r3 = *(r3);
0x00002eca cmp r3, 2 |
| if (r3 == 2) {
0x00002ecc beq.w 0x3150 | goto label_94;
| }
| label_34:
0x00002ed0 movw r0, 0x1ff4 | r0 = 0x1ff4;
0x00002ed4 blx 0x17f0 | r0 = malloc (r0);
0x00002ed8 mov r7, r0 | r7 = r0;
0x00002eda cmp r0, 0 |
| if (r0 == 0) {
0x00002edc beq.w 0x3134 | goto label_95;
| }
0x00002ee0 ldr.w r3, [pc, 0x5f4] | r3 = *(0x000034d8);
0x00002ee4 add r3, pc | r3 += pc;
0x00002ee6 ldr r1, [r3, 0x1c] | r1 = *((r3 + 0x1c));
0x00002ee8 str r3, [sp, 0x30] | *(arg_30h) = r3;
0x00002eea mov r0, r1 | r0 = r1;
0x00002eec str r1, [sp, 0x2c] | *(fildes) = r1;
0x00002eee blx 0x1898 | strlen (r0);
0x00002ef2 ldr r1, [sp, 0x2c] | r1 = *(fildes);
0x00002ef4 mov r2, r0 | r2 = r0;
0x00002ef6 mov r0, r4 | r0 = r4;
0x00002ef8 blx 0x195c | fcn_0000195c ();
0x00002efc mov r0, r8 | r0 = r8;
0x00002efe bl 0x3c44 | r0 = fcn_00003c44 (r0);
0x00002f02 subs r3, r0, 0 | r3 = r0 - 0;
0x00002f04 str r3, [sp, 0x2c] | *(fildes) = r3;
0x00002f06 ldr r3, [sp, 0x30] | r3 = *(arg_30h);
| if (r3 < r0) {
0x00002f08 blt.w 0x3118 | goto label_96;
| }
0x00002f0c ldr r2, [sp, 0x1c] | r2 = *(str);
0x00002f0e ldr r2, [r2] | r2 = *(r2);
0x00002f10 cmp r2, 2 |
| if (r2 == 2) {
0x00002f12 beq.w 0x3100 | goto label_97;
| }
| label_20:
0x00002f16 ldr.w r3, [pc, 0x5c4] | r3 = *(0x000034dc);
0x00002f1a add r3, pc | r3 += pc;
0x00002f1c ldrb.w r3, [r3, 0x74] | r3 = *((r3 + 0x74));
0x00002f20 cmp r3, 0x49 |
| if (r3 == 0x49) {
0x00002f22 beq.w 0x302a | goto label_98;
| }
0x00002f26 cmp r3, 0x41 |
| if (r3 != 0x41) {
0x00002f28 bne 0x3018 | goto label_99;
| }
0x00002f2a ldr.w r2, [pc, 0x5b4] |
0x00002f2e mov r3, sb | r3 = sb;
0x00002f30 movs r1, 1 | r1 = 1;
0x00002f32 movs r0, 7 | r0 = 7;
0x00002f34 add r2, pc | r2 = 0x641a;
0x00002f36 blx 0x19cc | fcn_000019cc ();
0x00002f3a ldr.w r1, [pc, 0x5a8] |
0x00002f3e ldr r0, [sp, 0x2c] | r0 = *(fildes);
0x00002f40 add r1, pc | r1 = 0x642a;
0x00002f42 blx 0x15c8 | fdopen ();
0x00002f46 ldr.w r1, [pc, 0x5a0] |
0x00002f4a str r0, [sp, 0x2c] | *(fildes) = r0;
0x00002f4c mov r0, r5 | r0 = r5;
0x00002f4e add r1, pc | r1 = 0x643c;
0x00002f50 blx 0x15c8 | fdopen ();
0x00002f54 str r0, [sp, 0x30] | *(arg_30h) = r0;
| do {
0x00002f56 ldr r2, [sp, 0x2c] | r2 = *(fildes);
0x00002f58 movw r1, 0x1ff3 | r1 = 0x1ff3;
0x00002f5c mov r0, r7 | r0 = r7;
0x00002f5e blx 0x167c | r0 = fgets (r0, r1, r2);
0x00002f62 cmp r0, 0 |
| if (r0 == 0) {
0x00002f64 beq 0x2fd0 | goto label_100;
| }
0x00002f66 mov r0, r7 | r0 = r7;
0x00002f68 blx 0x1898 | r0 = strlen (r0);
0x00002f6c cmp r0, 1 |
| if (r0 >= 1) {
0x00002f6e bls 0x2f86 |
0x00002f70 subs r2, r0, 2 | r2 = r0 - 2;
0x00002f72 ldrb r1, [r7, r2] | r1 = *((r7 + r2));
0x00002f74 cmp r1, 0xd |
| if (r1 != 0xd) {
0x00002f76 bne 0x2f86 | goto label_101;
| }
0x00002f78 subs r3, r0, 1 | r3 = r0 - 1;
0x00002f7a ldrb r1, [r7, r3] | r1 = *((r7 + r3));
0x00002f7c cmp r1, 0xa |
0x00002f7e ittt eq |
| if (r1 != 0xa) {
0x00002f80 strbeq r1, [r7, r2] | *((r7 + r2)) = r1;
| }
| if (r1 != 0xa) {
0x00002f82 moveq r2, 0 | r2 = 0;
| }
| if (r1 == 0xa) {
0x00002f84 strbeq r2, [r7, r3] | *((r7 + r3)) = r2;
| goto label_101;
| }
| }
| label_101:
0x00002f86 ldr r1, [sp, 0x30] | r1 = *(arg_30h);
0x00002f88 mov r0, r7 | r0 = r7;
0x00002f8a blx 0x1a8c | fcn_00001a8c ();
0x00002f8e adds r0, 1 | r0++;
0x00002f90 bne 0x2f56 |
| } while (r0 != 1);
0x00002f92 ldr.w r3, [pc, 0x558] | r3 = *(0x000034ec);
0x00002f96 add r3, pc | r3 += pc;
0x00002f98 ldr r1, [r3, 0x10] | r1 = *((r3 + 0x10));
0x00002f9a mov r0, r1 | r0 = r1;
0x00002f9c str r1, [sp, 0x38] | *(arg_38h) = r1;
0x00002f9e blx 0x1898 | strlen (r0);
0x00002fa2 ldr r1, [sp, 0x38] | r1 = *(arg_38h);
0x00002fa4 mov r2, r0 | r2 = r0;
0x00002fa6 mov r0, r4 | r0 = r4;
0x00002fa8 blx 0x195c | fcn_0000195c ();
0x00002fac mov r0, r5 | r0 = r5;
0x00002fae movs r1, 0 | r1 = 0;
0x00002fb0 blx 0x1980 | r0 = fcn_00001980 ();
0x00002fb4 cmp r0, 0 |
| if (r0 < 0) {
0x00002fb6 bge 0x2fd0 |
0x00002fb8 blx 0x18d4 | errno_location ();
0x00002fbc ldr.w r2, [pc, 0x530] |
0x00002fc0 movs r1, 1 | r1 = 1;
0x00002fc2 ldr r3, [r0] | r3 = *(r0);
0x00002fc4 movs r0, 3 | r0 = 3;
0x00002fc6 add r2, pc | r2 = 0x64ba;
0x00002fc8 str r3, [sp] | *(sp) = r3;
0x00002fca mov r3, sb | r3 = sb;
0x00002fcc blx 0x19cc | fcn_000019cc ();
| }
| label_100:
0x00002fd0 ldr r0, [sp, 0x2c] | r0 = *(fildes);
0x00002fd2 blx 0x198c | fcn_0000198c ();
0x00002fd6 ldr r0, [sp, 0x30] | r0 = *(arg_30h);
0x00002fd8 blx 0x198c | fcn_0000198c ();
0x00002fdc mov r0, r7 | r0 = r7;
0x00002fde blx 0x1664 | free (r0);
| label_18:
0x00002fe2 ldr r3, [sp, 0x1c] | r3 = *(str);
0x00002fe4 ldr r3, [r3] | r3 = *(r3);
0x00002fe6 cmp r3, 2 |
| if (r3 == 2) {
0x00002fe8 beq 0x2ff6 | goto label_102;
| }
0x00002fea ldr.w r3, [pc, 0x508] | r3 = *(0x000034f4);
0x00002fee add r3, pc | r3 += pc;
0x00002ff0 ldr r5, [r3, 0x24] | r5 = *((r3 + 0x24));
0x00002ff2 b.w 0x247e | goto label_3;
| do {
| label_102:
0x00002ff6 movs r2, 0 | r2 = 0;
0x00002ff8 ldr.w r0, [sl] | r0 = *(sl);
0x00002ffc mov r1, r2 | r1 = r2;
0x00002ffe blx 0x17b4 | waitpid ();
0x00003002 ldr.w r3, [sl] | r3 = *(sl);
0x00003006 cmp r0, r3 |
0x00003008 beq 0x2ff6 |
| } while (r0 == r3);
0x0000300a ldr.w r3, [pc, 0x4ec] | r3 = *(0x000034f8);
0x0000300e add r3, pc | r3 += pc;
0x00003010 ldr.w r5, [r3, 0x98] | r5 = *((r3 + 0x98));
0x00003014 b.w 0x247e | goto label_3;
0x00003016 rev r3, r6 | r6 = SWAP32 (r3);
| label_99:
0x00003018 ldr.w r2, [pc, 0x4e0] |
0x0000301c movs r1, 1 | r1 = 1;
0x0000301e movs r0, 3 | r0 = 3;
0x00003020 add r2, pc | r2 = 0x6520;
0x00003022 blx 0x19cc | fcn_000019cc ();
0x00003026 b.w 0x2142 | goto label_2;
| label_98:
0x0000302a ldr.w r2, [pc, 0x4d4] |
0x0000302e mov r3, sb | r3 = sb;
0x00003030 movs r1, 1 | r1 = 1;
0x00003032 movs r0, 7 | r0 = 7;
0x00003034 add r2, pc | r2 = 0x653a;
0x00003036 blx 0x19cc | fcn_000019cc ();
0x0000303a blx 0x18d4 | errno_location ();
0x0000303e str r4, [sp, 0x30] | *(arg_30h) = r4;
0x00003040 mov r4, r0 | r4 = r0;
0x00003042 movs r2, 0 | r2 = 0;
0x00003044 str r2, [r0] | *(r0) = r2;
| label_16:
0x00003046 movw r2, 0x1ff4 | r2 = 0x1ff4;
0x0000304a ldr r0, [sp, 0x2c] | r0 = *(fildes);
0x0000304c mov r1, r7 | r1 = r7;
0x0000304e blx 0x1640 | r0 = read (r0, r1, r2);
0x00003052 subs r2, r0, 0 | r2 = r0 - 0;
| if (r2 <= r0) {
0x00003054 ble 0x30b0 | goto label_103;
| }
0x00003056 str.w r8, [sp, 0x38] | __asm ("str.w r8, [arg_38h]");
0x0000305a mov r1, r7 | r1 = r7;
0x0000305c mov r8, r6 | r8 = r6;
0x0000305e mov r6, r4 | r6 = r4;
0x00003060 mov r4, r2 | r4 = r2;
| do {
| label_17:
0x00003062 mov r2, r4 | r2 = r4;
0x00003064 mov r0, r5 | r0 = r5;
0x00003066 str r1, [sp, 0x40] | *(arg_40h) = r1;
0x00003068 blx 0x195c | r0 = fcn_0000195c ();
0x0000306c subs r2, r0, 0 | r2 = r0 - 0;
0x0000306e ldr r1, [sp, 0x40] | r1 = *(arg_40h);
| if (r2 < r0) {
0x00003070 blt 0x3084 | goto label_104;
| }
0x00003072 subs r4, r4, r2 | r4 -= r2;
0x00003074 add r1, r2 | r1 += r2;
0x00003076 cmp r4, 0 |
0x00003078 bgt 0x3062 |
| } while (r4 > 0);
0x0000307a mov r4, r6 | r4 = r6;
0x0000307c mov r6, r8 | r6 = r8;
0x0000307e ldr.w r8, [sp, 0x38] | r8 = *(arg_38h);
0x00003082 b 0x3046 | goto label_16;
| label_104:
0x00003084 ldr r0, [r6] | r0 = *(r6);
0x00003086 cmp r0, 4 |
| if (r0 == 4) {
0x00003088 beq 0x3062 | goto label_17;
| }
0x0000308a cmp r0, 0xb |
| if (r0 == 0xb) {
0x0000308c beq 0x3062 | goto label_17;
| }
0x0000308e cmp r0, 0x1c |
0x00003090 mov r3, r6 | r3 = r6;
0x00003092 ldr r4, [sp, 0x30] | r4 = *(arg_30h);
0x00003094 mov r6, r8 | r6 = r8;
0x00003096 ldr.w r8, [sp, 0x38] | r8 = *(arg_38h);
| if (r0 == 0x1c) {
0x0000309a beq 0x30c0 | goto label_105;
| }
| label_19:
0x0000309c ldr r0, [sp, 0x2c] | r0 = *(fildes);
0x0000309e blx 0x1ab4 | fdipc_client_socket ();
0x000030a2 mov r0, r5 | r0 = r5;
0x000030a4 blx 0x1ab4 | fdipc_client_socket ();
0x000030a8 mov r0, r7 | r0 = r7;
0x000030aa blx 0x1664 | free (r0);
0x000030ae b 0x2fe2 | goto label_18;
| if (r0 == 0x1c) {
| label_103:
0x000030b0 beq 0x30bc | goto label_106;
| }
0x000030b2 ldr r2, [r4] | r2 = *(r4);
0x000030b4 cmp r2, 4 |
| if (r2 == 4) {
0x000030b6 beq 0x3046 | goto label_16;
| }
0x000030b8 cmp r2, 0xb |
| if (r2 == 0xb) {
0x000030ba beq 0x3046 | goto label_16;
| }
| label_106:
0x000030bc ldr r4, [sp, 0x30] | r4 = *(arg_30h);
0x000030be b 0x309c | goto label_19;
| label_105:
0x000030c0 ldr.w r2, [pc, 0x440] | r2 = *(0x00003504);
0x000030c4 str r3, [sp, 0x38] | *(arg_38h) = r3;
0x000030c6 add r2, pc | r2 += pc;
0x000030c8 ldr r1, [r2, 0x10] | r1 = *((r2 + 0x10));
0x000030ca mov r0, r1 | r0 = r1;
0x000030cc str r1, [sp, 0x30] | *(arg_30h) = r1;
0x000030ce blx 0x1898 | strlen (r0);
0x000030d2 ldr r1, [sp, 0x30] | r1 = *(arg_30h);
0x000030d4 mov r2, r0 | r2 = r0;
0x000030d6 mov r0, r4 | r0 = r4;
0x000030d8 blx 0x195c | fcn_0000195c ();
0x000030dc movs r1, 0 | r1 = 0;
0x000030de mov r0, r5 | r0 = r5;
0x000030e0 blx 0x1980 | r0 = fcn_00001980 ();
0x000030e4 cmp r0, 0 |
0x000030e6 ldr r3, [sp, 0x38] | r3 = *(arg_38h);
| if (r0 >= 0) {
0x000030e8 bge 0x309c | goto label_19;
| }
0x000030ea ldr r3, [r3] | r3 = *(r3);
0x000030ec movs r1, 1 | r1 = 1;
0x000030ee ldr.w r2, [pc, 0x418] |
0x000030f2 movs r0, 3 | r0 = 3;
0x000030f4 str r3, [sp] | *(sp) = r3;
0x000030f6 mov r3, sb | r3 = sb;
0x000030f8 add r2, pc | r2 = 0x6606;
0x000030fa blx 0x19cc | fcn_000019cc ();
0x000030fe b 0x309c | goto label_19;
| label_97:
0x00003100 ldr.w r1, [r3, 0x94] | r1 = *((r3 + 0x94));
0x00003104 mov r0, r1 | r0 = r1;
0x00003106 str r1, [sp, 0x30] | *(arg_30h) = r1;
0x00003108 blx 0x1898 | strlen (r0);
0x0000310c ldr r1, [sp, 0x30] | r1 = *(arg_30h);
0x0000310e mov r2, r0 | r2 = r0;
0x00003110 mov r0, r4 | r0 = r4;
0x00003112 blx 0x195c | fcn_0000195c ();
0x00003116 b 0x2f16 | goto label_20;
| label_96:
0x00003118 ldr r5, [r3, 0x20] | r5 = *((r3 + 0x20));
0x0000311a mov r0, r5 | r0 = r5;
0x0000311c blx 0x1898 | strlen (r0);
0x00003120 mov r1, r5 | r1 = r5;
0x00003122 mov r2, r0 | r2 = r0;
0x00003124 mov r0, r4 | r0 = r4;
0x00003126 blx 0x195c | fcn_0000195c ();
0x0000312a mov r0, r7 | r0 = r7;
0x0000312c blx 0x1664 | free (r0);
0x00003130 b.w 0x2142 | goto label_2;
| label_95:
0x00003134 ldr r2, [pc, 0x3d4] |
0x00003136 movs r1, 1 | r1 = 1;
0x00003138 movs r0, 3 | r0 = 3;
0x0000313a add r2, pc | r2 = 0x664a;
0x0000313c blx 0x19cc | fcn_000019cc ();
0x00003140 mov r0, r4 | r0 = r4;
0x00003142 bl 0x38b0 | fcn_000038b0 (r0);
0x00003146 mov r0, r5 | r0 = r5;
0x00003148 blx 0x1ab4 | fdipc_client_socket ();
0x0000314c b.w 0x2142 | goto label_2;
| label_94:
0x00003150 ldr r3, [pc, 0x3bc] |
0x00003152 add r3, pc | r3 = 0x6666;
0x00003154 ldr.w r7, [r3, 0x90] | r7 = *(0x66f6);
0x00003158 mov r0, r7 | r0 = r7;
0x0000315a blx 0x1898 | strlen (r0);
0x0000315e mov r1, r7 | r1 = r7;
0x00003160 mov r2, r0 | r2 = r0;
0x00003162 mov r0, r4 | r0 = r4;
0x00003164 blx 0x195c | fcn_0000195c ();
0x00003168 str r5, [sp, 0x30] | *(arg_30h) = r5;
| label_21:
0x0000316a ldr r3, [sp, 0x2c] | r3 = *(fildes);
0x0000316c movs r2, 0x51 | r2 = 0x51;
0x0000316e mov r1, fp | r1 = fp;
0x00003170 ldr r0, [r3] | r0 = *(r3);
0x00003172 blx 0x1640 | r0 = read (r0, r1, r2);
0x00003176 subs r7, r0, 0 | r7 = r0 - 0;
| if (r7 <= r0) {
0x00003178 ble.w 0x373c | goto label_107;
| }
0x0000317c mov r5, fp | r5 = fp;
| do {
| label_33:
0x0000317e mov r2, r7 | r2 = r7;
0x00003180 mov r1, r5 | r1 = r5;
0x00003182 mov r0, r4 | r0 = r4;
0x00003184 blx 0x195c | r0 = fcn_0000195c ();
0x00003188 subs r3, r0, 0 | r3 = r0 - 0;
| if (r3 < r0) {
0x0000318a blt.w 0x3718 | goto label_108;
| }
0x0000318e subs r7, r7, r3 | r7 -= r3;
0x00003190 add r5, r3 | r5 += r3;
0x00003192 bne 0x317e |
| } while (r7 != r7);
0x00003194 b 0x316a | goto label_21;
| label_93:
0x00003196 mov r1, r7 | r1 = r7;
0x00003198 mov r0, sb | r0 = sb;
0x0000319a blx 0x1838 | r0 = stat ();
| if (r0 != 0) {
0x0000319e cbnz r0, 0x3200 | goto label_109;
| }
0x000031a0 ldr r5, [r7, 0x10] | r5 = *((r7 + 0x10));
0x000031a2 and r3, r5, 0xf000 | r3 = r5 & 0xf000;
0x000031a6 cmp.w r3, 0x4000 |
| if (r3 == 0x4000) {
0x000031aa beq 0x31f6 | goto label_110;
| }
0x000031ac movs r1, 2 | r1 = 2;
0x000031ae mov r0, sb | r0 = sb;
0x000031b0 blx 0x1968 | r0 = fcn_00001968 ();
0x000031b4 cmp r0, 0 |
| if (r0 < 0) {
0x000031b6 blt.w 0x299e | goto label_4;
| }
0x000031ba ubfx r2, r5, 0, 9 | r2 = (r5 >> 0) & ((1 << 9) - 1);
| label_23:
0x000031be movw r1, 0x241 | r1 = 0x241;
0x000031c2 mov r0, sb | r0 = sb;
0x000031c4 blx 0x1844 | r0 = open (r0, r1, r2);
0x000031c8 mov r5, r0 | r5 = r0;
0x000031ca b 0x2ec0 | goto label_22;
| label_65:
0x000031cc blx 0x185c | r0 = ctype_b_loc ();
0x000031d0 ldr r3, [r0] | r3 = *(r0);
0x000031d2 addw r2, sp, 0x39d | __asm ("addw r2, path");
| do {
0x000031d6 mov r0, r2 | r0 = r2;
0x000031d8 adds r2, 1 | r2++;
0x000031da ldrb r1, [r0] | r1 = *(r0);
0x000031dc ldrh.w r1, [r3, r1, lsl 1] | offset_1 = r1 << 1;
| r1 = *((r3 + offset_1));
0x000031e0 lsls r1, r1, 0x12 | r1 <<= 0x12;
0x000031e2 bmi 0x31d6 |
| } while (r1 < r1);
0x000031e4 clz r3, sl | r3 &= sl;
0x000031e8 mov r2, r8 | r2 = r8;
0x000031ea lsrs r3, r3, 5 | r3 >>= 5;
0x000031ec mov r1, r4 | r1 = r4;
0x000031ee bl 0x3ec0 | fcn_00003ec0 (r0, r1, r2, r3);
0x000031f2 b.w 0x2142 | goto label_2;
| label_110:
0x000031f6 ldr r3, [sp, 0x30] | r3 = *(arg_30h);
0x000031f8 ldr.w r5, [r3, 0x88] | r5 = *((r3 + 0x88));
0x000031fc b.w 0x247e | goto label_3;
| label_109:
0x00003200 mov.w r2, 0x1a4 | r2 = 0x1a4;
0x00003204 b 0x31be | goto label_23;
| label_41:
0x00003206 add r7, sp, 0x39c | r7 += arg_39ch;
0x00003208 b 0x3218 |
| while (sb != 0) {
0x0000320a blx 0x185c | r0 = ctype_b_loc ();
0x0000320e ldr r3, [r0] | r3 = *(r0);
0x00003210 ldrh.w r3, [r3, sb, lsl 1] | offset_2 = sb << 1;
| r3 = *((r3 + offset_2));
0x00003214 lsls r0, r3, 0x12 | r0 = r3 << 0x12;
| if (r0 >= r3) {
0x00003216 bpl 0x3250 | goto label_111;
| }
0x00003218 mov r5, r7 | r5 = r7;
0x0000321a ldrb sb, [r7], 1 | sb = *(r7);
| r7++;
0x0000321e cmp.w sb, 0 |
0x00003222 bne 0x320a |
| }
0x00003224 ldr r3, [pc, 0x2ec] |
0x00003226 add r3, pc | r3 = 0x673e;
0x00003228 ldr.w r5, [r3, 0xec] | r5 = *(0x682a);
0x0000322c b.w 0x247e | goto label_3;
| label_46:
0x00003230 ldr r5, [sp, 0x24] | r5 = *(s1);
0x00003232 movs r2, 0x40 | r2 = 0x40;
0x00003234 addw r1, sp, 0x39d | __asm ("addw r1, path");
0x00003238 mov r0, r5 | r0 = r5;
0x0000323a blx 0x1940 | strncpy (r0, r1, r2);
0x0000323e ldr r2, [sp, 0x18] | r2 = *(arg_18h);
0x00003240 movs r3, 1 | r3 = 1;
0x00003242 str r3, [sp, 0x18] | *(arg_18h) = r3;
0x00003244 strb.w r2, [r5, 0x40] | *((r5 + 0x40)) = r2;
0x00003248 ldr.w r5, [sl, 0x5c] | r5 = *((sl + 0x5c));
0x0000324a str r4, [r3, r1] | *((r3 + r1)) = r4;
0x0000324c b.w 0x247e | goto label_3;
| label_111:
0x00003250 ldr r7, [pc, 0x2c4] |
0x00003252 add r7, pc | r7 = 0x676e;
0x00003254 ldr.w sb, [r7, 0xbc] | sb = *(0x682a);
0x00003258 mov r0, sb | r0 = sb;
0x0000325a blx 0x1898 | strlen (r0);
0x0000325e mov r1, sb | r1 = sb;
0x00003260 mov r2, r0 | r2 = r0;
0x00003262 mov r0, r5 | r0 = r5;
0x00003264 blx 0x18ec | r0 = strncasecmp (r0, r1, r2);
| if (r0 == 0) {
0x00003268 cbnz r0, 0x3270 |
0x0000326a ldr r5, [r7, 0x40] | r5 = *((r7 + 0x40));
0x0000326c b.w 0x247e | goto label_3;
| }
0x00003270 ldr r5, [r7, 0x44] | r5 = *((r7 + 0x44));
0x00003272 b.w 0x247e | goto label_3;
| label_47:
0x00003292 ldr r2, [pc, 0x28c] |
0x00003294 movs r1, 1 | r1 = 1;
0x00003296 movs r0, 6 | r0 = 6;
0x00003298 add r2, pc | r2 = 0x67be;
0x0000329a blx 0x19cc | fcn_000019cc ();
0x0000329e b.w 0x2496 | goto label_24;
| label_43:
0x000032a2 ldr.w r5, [sl, 0x54] | r5 = *((sl + 0x54));
0x000032a6 b.w 0x247e | goto label_3;
| label_42:
0x000032aa ldr.w r5, [sl, 0x4c] | r5 = *((sl + 0x4c));
0x000032ae b.w 0x247e | goto label_3;
| label_44:
0x000032b2 ldr.w sb, [sl, 0x64] | sb = *((sl + 0x64));
0x000032b6 mov r0, sb | r0 = sb;
0x000032b8 blx 0x1898 | strlen (r0);
0x000032bc mov r1, sb | r1 = sb;
0x000032be mov r2, r0 | r2 = r0;
0x000032c0 mov r0, r5 | r0 = r5;
0x000032c2 blx 0x18ec | strncasecmp (r0, r1, r2);
0x000032c6 str r0, [sp, 0x18] | *(arg_18h) = r0;
0x000032c8 cmp r0, 0 |
| if (r0 != 0) {
0x000032ca bne.w 0x342e | goto label_112;
| }
0x000032ce ldr r3, [pc, 0x254] |
0x000032d0 add r3, pc |
0x000032d2 ldr r3, [r3, 0x64] | r3 = *(0x685e);
0x000032d4 cmp r3, 0 |
| if (r3 > 0) {
0x000032d6 ble 0x32e8 |
0x000032d8 ldr r1, [pc, 0x24c] |
0x000032da ldr r0, [sp, 0x24] | r0 = *(s1);
0x000032dc add r1, pc | r1 = 0x6808;
0x000032de blx 0x15f8 | r0 = strcmp (r0, r1);
0x000032e2 cmp r0, 0 |
| if (r0 != 0) {
0x000032e4 bne.w 0x3452 | goto label_113;
| }
| }
0x000032e8 add r5, sp, 0x354 | r5 += arg_354h;
0x000032ea movs r2, 0x40 | r2 = 0x40;
0x000032ec addw r1, sp, 0x39d | __asm ("addw r1, path");
0x000032f0 mov r0, r5 | r0 = r5;
0x000032f2 blx 0x1940 | strncpy (r0, r1, r2);
0x000032f6 movs r3, 0 | r3 = 0;
0x000032f8 ldr r0, [sp, 0x24] | r0 = *(s1);
0x000032fa strb.w r3, [r5, 0x40] | *((r5 + 0x40)) = r3;
0x000032fe blx 0x15d4 | r0 = getpwnam ();
0x00003302 mov sb, r0 | sb = r0;
0x00003304 cmp r0, 0 |
| if (r0 == 0) {
0x00003306 beq 0x3394 | goto label_114;
| }
0x00003308 blx 0x173c | r0 = geteuid ();
0x0000330c cmp r0, 0 |
0x0000330e beq 0x337e |
| while (r0 == 0) {
| label_26:
0x00003310 ldr.w sl, [sb, 4] | sl = *((sb + 4));
| label_25:
0x00003314 mov r0, r5 | r0 = r5;
0x00003316 mov r1, sl | r1 = sl;
0x00003318 blx 0x1a80 | r0 = fcn_00001a80 ();
0x0000331c cmp r0, 0 |
| if (r0 == 0) {
0x0000331e beq 0x3394 | goto label_114;
| }
0x00003320 mov r1, sl | r1 = sl;
0x00003322 blx 0x15f8 | r0 = strcmp (r0, r1);
0x00003326 cmp r0, 0 |
| if (r0 != 0) {
0x00003328 bne 0x3394 | goto label_114;
| }
0x0000332a ldr r3, [pc, 0x200] | r3 = *(0x352e);
| label_35:
0x0000332c ldrd r5, sb, [sb, 8] | __asm ("ldrd r5, sb, [sb, 8]");
0x00003330 add r3, pc | r3 += pc;
0x00003332 ldr.w sl, [r3, 0x6c] | sl = *((r3 + 0x6c));
0x00003334 adr r0, 0x1b0 | r0 = 0x1b0;
0x00003336 mov r0, sl | r0 = sl;
0x00003338 blx 0x1898 | strlen (r0);
0x0000333c mov r1, sl | r1 = sl;
0x0000333e mov r2, r0 | r2 = r0;
0x00003340 mov r0, r4 | r0 = r4;
0x00003342 blx 0x195c | fcn_0000195c ();
0x00003346 ldr r2, [pc, 0x1e8] |
0x00003348 movs r0, 0x26 | r0 = 0x26;
0x0000334a ldr r3, [sp, 0x24] | r3 = *(s1);
0x0000334c movs r1, 1 | r1 = 1;
0x0000334e add r2, pc | r2 = 0x6884;
0x00003350 blx 0x19cc | fcn_000019cc ();
0x00003354 mov r0, r5 | r0 = r5;
0x00003356 blx 0x161c | r0 = getpwuid ();
| if (r0 != 0) {
0x0000335a cbz r0, 0x336a |
0x0000335c ldr r1, [pc, 0x1d4] |
0x0000335e ldr r0, [r0] | r0 = *(r0);
0x00003360 add r1, pc | r1 = 0x6898;
0x00003362 blx 0x15f8 | r0 = strcmp (r0, r1);
0x00003366 cmp r0, 0 |
| if (r0 == 0) {
0x00003368 beq 0x343a | goto label_115;
| }
| }
| label_28:
0x0000336a mov r0, sb | r0 = sb;
0x0000336c blx 0x1974 | fcn_00001974 ();
0x00003370 mov r0, r5 | r0 = r5;
0x00003372 blx 0x1760 | seteuid ();
0x00003376 movs r3, 2 | r3 = 2;
0x00003378 str r3, [sp, 0x18] | *(arg_18h) = r3;
0x0000337a b.w 0x2142 | goto label_2;
0x0000337e ldr r0, [sp, 0x24] | r0 = *(s1);
0x00003380 blx 0x1658 | r0 = getspnam ();
0x00003384 cmp r0, 0 |
0x00003386 beq 0x3310 |
| }
0x00003388 ldr.w sl, [r0, 4] | sl = *((r0 + 4));
0x0000338c cmp.w sl, 0 |
| if (sl != 0) {
0x00003390 bne 0x3314 | goto label_25;
| }
0x00003392 b 0x3310 | goto label_26;
| label_114:
0x00003394 ldr r0, [sp, 0x44] | r0 = *(arg_44h);
0x00003396 blx 0x17a8 | usleep (r0);
0x0000339a ldr r3, [pc, 0x19c] |
0x0000339c add r3, pc | r3 = 0x68da;
0x0000339e ldr r5, [r3, 0x68] | r5 = *(0x6942);
0x000033a0 mov r0, r5 | r0 = r5;
0x000033a2 blx 0x1898 | strlen (r0);
0x000033a6 mov r1, r5 | r1 = r5;
0x000033a8 mov r2, r0 | r2 = r0;
0x000033aa mov r0, r4 | r0 = r4;
0x000033ac blx 0x195c | fcn_0000195c ();
0x000033b0 ldr r2, [pc, 0x188] |
0x000033b2 movs r1, 1 | r1 = 1;
0x000033b4 ldr r3, [sp, 0x20] | r3 = *(arg_20h);
0x000033b6 movs r0, 0x26 | r0 = 0x26;
0x000033b8 add r2, pc | r2 = 0x68f8;
0x000033ba blx 0x19cc | fcn_000019cc ();
0x000033be b.w 0x2142 | goto label_2;
| label_48:
0x000033c2 ldrb.w r3, [r8, 0xc] | r3 = *((r8 + 0xc));
0x000033c6 cmp r3, 0 |
| if (r3 != 0) {
0x000033c8 bne.w 0x2b4a | goto label_27;
| }
0x000033cc ldr r1, [pc, 0x170] |
0x000033ce add r3, sp, 0x68 | r3 += arg_68h;
0x000033d0 add r2, sp, 0x64 | r2 += arg_64h;
0x000033d2 mov r0, r5 | r0 = r5;
0x000033d4 add.w sb, sp, 0x5c | sb += arg_5ch;
0x000033d8 add r5, sp, 0x60 | r5 += arg_60h;
0x000033da add.w sl, sp, 0x6c | sl += arg_6ch;
0x000033de str r3, [sp, 0x2c] | *(fildes) = r3;
0x000033e0 str r3, [sp, 4] | var_4h = r3;
0x000033e2 add r1, pc | r1 = 0x6926;
0x000033e4 str r2, [sp, 0x1c] | *(str) = r2;
0x000033e6 mov r3, r5 | r3 = r5;
0x000033e8 str r2, [sp] | *(sp) = r2;
0x000033ea mov r2, sb | r2 = sb;
0x000033ec str r7, [sp, 0xc] | *(arg_ch) = r7;
0x000033ee str.w sl, [sp, 8] | __asm ("str.w sl, [arg_8h]");
0x000033f2 blx 0x1910 | r0 = isoc99_sscanf ();
0x000033f6 cmp r0, 6 |
| if (r0 == 6) {
0x000033f8 bne 0x3424 |
0x000033fa ldr r3, [sp, 0x5c] | r3 = *(arg_5ch);
0x000033fc cmp r3, 0xff |
| if (r3 > 0xff) {
0x000033fe bgt 0x3424 | goto label_29;
| }
0x00003400 ldr r2, [sp, 0x60] | r2 = *(arg_60h);
0x00003402 cmp r2, 0xff |
| if (r2 > 0xff) {
0x00003404 bgt 0x3424 | goto label_29;
| }
0x00003406 ldr r1, [sp, 0x1c] | r1 = *(str);
0x00003408 ldr r1, [r1] | r1 = *(r1);
0x0000340a cmp r1, 0xff |
| if (r1 > 0xff) {
0x0000340c bgt 0x3424 | goto label_29;
| }
0x0000340e ldr r0, [sp, 0x2c] | r0 = *(fildes);
0x00003410 ldr r5, [r0] | r5 = *(r0);
0x00003412 cmp r5, 0xff |
| if (r5 > 0xff) {
0x00003414 bgt 0x3424 | goto label_29;
| }
0x00003416 ldr r0, [sp, 0x6c] | r0 = *(arg_6ch);
0x00003418 cmp r0, 0xff |
| if (r0 > 0xff) {
0x0000341a bgt 0x3424 | goto label_29;
| }
0x0000341c ldr r0, [r7] | r0 = *(r7);
0x0000341e cmp r0, 0xff |
| if (r0 <= 0xff) {
0x00003420 ble.w 0x3554 | goto label_116;
| }
| }
| label_29:
0x00003424 ldr r3, [pc, 0x11c] |
0x00003426 add r3, pc | r3 = 0x696e;
0x00003428 ldr r5, [r3, 0x14] | r5 = *(0x6982);
0x0000342a b.w 0x247e | goto label_3;
| label_112:
0x0000342e movs r3, 0 | r3 = 0;
0x00003430 ldr.w r5, [sl, 0x60] | r5 = *((sl + 0x60));
0x00003434 str r3, [sp, 0x18] | *(arg_18h) = r3;
0x00003436 b.w 0x247e | goto label_3;
| label_115:
0x0000343a ldr r0, [pc, 0x10c] |
0x0000343c mov r1, r7 | r1 = r7;
0x0000343e add r0, pc | r0 = 0x698c;
0x00003440 blx 0x1838 | r0 = stat ();
0x00003444 cmp r0, 0 |
| if (r0 < 0) {
0x00003446 blt 0x336a | goto label_28;
| }
0x00003448 ldr r0, [pc, 0x100] |
0x0000344a add r0, pc | r0 = 0x699a;
0x0000344c blx 0x1814 | system (r0);
0x00003450 b 0x336a | goto label_28;
| label_113:
0x00003452 ldr.w r5, [sl, 0x68] | r5 = *((sl + 0x68));
0x00003456 mov r0, r5 | r0 = r5;
0x00003458 blx 0x1898 | strlen (r0);
0x0000345c mov r1, r5 | r1 = r5;
0x0000345e mov r2, r0 | r2 = r0;
0x00003460 mov r0, r4 | r0 = r4;
0x00003462 blx 0x195c | fcn_0000195c ();
0x00003466 ldr r2, [pc, 0xe8] |
0x00003468 movs r1, 1 | r1 = 1;
0x0000346a ldr r3, [sp, 0x20] | r3 = *(arg_20h);
0x0000346c movs r0, 0x26 | r0 = 0x26;
0x0000346e add r2, pc | r2 = 0x69c4;
0x00003470 blx 0x19cc | fcn_000019cc ();
0x00003474 b.w 0x2142 | goto label_2;
| label_116:
0x00003554 strd r3, r2, [sp] | __asm ("strd r3, r2, [sp]");
0x00003558 addw r0, sp, 0x101 | __asm ("addw r0, arg_101h");
0x0000355c ldr r3, [pc, 0x228] |
0x0000355e movs r2, 0x3e | r2 = 0x3e;
0x00003560 strd r1, r5, [sp, 8] | __asm ("strd r1, r5, [sp, 8]");
0x00003564 movs r1, 1 | r1 = 1;
0x00003566 add r3, pc | r3 = 0x6cf2;
0x00003568 blx 0x18f8 | sprintf_chk ()
0x0000356c ldr r2, [sp, 0x6c] | r2 = *(arg_6ch);
0x0000356e mov r0, r8 | r0 = r8;
0x00003570 ldr r3, [r7] | r3 = *(r7);
0x00003572 add.w r3, r3, r2, lsl 8 | r3 += (r2 << 8);
0x00003576 str.w r3, [r8, 4] | __asm ("str.w r3, [r8, 4]");
0x0000357a bl 0x3b50 | r0 = fcn_00003b50 (r0);
0x0000357e cmp r0, 0 |
| if (r0 != 0) {
0x00003580 bne.w 0x3424 | goto label_29;
| }
0x00003584 ldr.w r0, [r8, 8] | r0 = *((r8 + 8));
0x00003588 cmp r0, 0 |
| if (r0 >= 0) {
0x0000358a blt 0x3598 |
0x0000358c blx 0x1ab4 | fdipc_client_socket ();
0x00003590 mov.w r3, -1 | r3 = -1;
0x00003594 str.w r3, [r8, 8] | __asm ("str.w r3, [r8, 8]");
| }
0x00003598 ldr r3, [pc, 0x1f0] |
0x0000359a add r3, pc | r3 = 0x6d2a;
0x0000359c ldr r5, [r3, 0x54] | r5 = *(0x6d7e);
0x0000359e b.w 0x247e | goto label_3;
| label_68:
0x000035a2 addw r0, sp, 0x39d | __asm ("addw r0, path");
0x000035a6 bl 0x3b2c | r0 = fcn_00003b2c (r0);
0x000035aa blx 0x1700 | r0 = unlink (r0);
0x000035ae cmp r0, 0 |
| if (r0 != 0) {
0x000035b0 bne.w 0x299e | goto label_4;
| }
0x000035b4 b.w 0x29ba | goto label_30;
| label_70:
0x000035b8 add r0, sp, 0x39c | r0 += arg_39ch;
0x000035ba bl 0x3b2c | r0 = fcn_00003b2c (r0);
0x000035be mov r1, r0 | r1 = r0;
0x000035c0 mov r0, r4 | r0 = r4;
0x000035c2 bl 0x3c10 | fcn_00003c10 (r0, r1);
0x000035c6 b.w 0x2142 | goto label_2;
| label_69:
0x000035ca movs r1, 0xc8 | r1 = 0xc8;
0x000035cc mov r0, fp | r0 = fp;
0x000035ce blx 0x1868 | r0 = getcwd ();
0x000035d2 mov r5, r0 | r5 = r0;
0x000035d4 cmp r0, 0 |
| if (r0 == 0) {
0x000035d6 beq.w 0x2bfa | goto label_31;
| }
0x000035da ldr r1, [pc, 0x1b4] |
0x000035dc movs r2, 5 | r2 = 5;
0x000035de mov r0, r4 | r0 = r4;
0x000035e0 add r1, pc | r1 = 0x6d76;
0x000035e2 bl 0x4034 | r0 = fcn_00004034 (r0, r1, r2);
| if (r0 != 0) {
0x000035e6 cbnz r0, 0x360c | goto label_117;
| }
0x000035e8 mov r0, r5 | r0 = r5;
0x000035ea blx 0x1898 | strlen (r0);
0x000035ee mov r1, r5 | r1 = r5;
0x000035f0 mov r2, r0 | r2 = r0;
0x000035f2 mov r0, r4 | r0 = r4;
0x000035f4 bl 0x4034 | r0 = fcn_00004034 (r0, r1, r2);
| if (r0 != 0) {
0x000035f8 cbnz r0, 0x360c | goto label_117;
| }
0x000035fa ldr r1, [pc, 0x198] |
0x000035fc movs r2, 0x19 | r2 = 0x19;
0x000035fe mov r0, r4 | r0 = r4;
0x00003600 add r1, pc | r1 = 0x6d9a;
0x00003602 bl 0x4034 | r0 = fcn_00004034 (r0, r1, r2);
0x00003606 cmp r0, 0 |
| if (r0 == 0) {
0x00003608 beq.w 0x2142 | goto label_2;
| }
| label_117:
0x0000360c mov fp, r4 |
0x0000360e b.w 0x24c2 | goto label_32;
| label_71:
0x00003612 addw r0, sp, 0x39d | __asm ("addw r0, path");
0x00003616 bl 0x3b2c | fcn_00003b2c (r0);
0x0000361a ldr.w sl, [sb, 0xc0] | sl = *((sb + 0xc0));
0x0000361e mov r5, r0 | r5 = r0;
0x00003620 str r0, [r7] | *(r7) = r0;
0x00003622 mov r0, sl | r0 = sl;
0x00003624 blx 0x1898 | strlen (r0);
0x00003628 mov r1, sl | r1 = sl;
0x0000362a mov r2, r0 | r2 = r0;
0x0000362c mov r0, r5 | r0 = r5;
0x0000362e blx 0x18ec | r0 = strncasecmp (r0, r1, r2);
| if (r0 != 0) {
0x00003632 cbz r0, 0x367a |
0x00003634 ldr.w r7, [sb, 0xc4] | r7 = *((sb + 0xc4));
0x00003638 mov r0, r7 | r0 = r7;
0x0000363a blx 0x1898 | strlen (r0);
0x0000363e mov r1, r7 | r1 = r7;
0x00003640 mov r2, r0 | r2 = r0;
0x00003642 mov r0, r5 | r0 = r5;
0x00003644 blx 0x18ec | r0 = strncasecmp (r0, r1, r2);
| if (r0 == 0) {
0x00003648 cbnz r0, 0x3672 |
0x0000364a ldr r0, [pc, 0x14c] |
0x0000364c add r0, pc | r0 = 0x6dea;
0x0000364e blx 0x1814 | r0 = system (r0);
0x00003652 cmp r0, 0 |
| if (r0 >= 0) {
0x00003654 blt 0x366a |
0x00003656 ldr r2, [pc, 0x144] |
0x00003658 movs r1, 1 | r1 = 1;
0x0000365a movs r0, 6 | r0 = 6;
0x0000365c add r2, pc | r2 = 0x6dfe;
0x0000365e blx 0x19cc | fcn_000019cc ();
0x00003662 ldr.w r5, [sb, 0x54] | r5 = *((sb + 0x54));
0x00003666 b.w 0x247e | goto label_3;
| }
0x0000366a ldr r2, [pc, 0x134] |
0x0000366c add r2, pc | r2 = 0x6e12;
0x0000366e b.w 0x2d2e | goto label_14;
| }
0x00003672 ldr.w r5, [sb, 0xc8] | r5 = *((sb + 0xc8));
0x00003676 b.w 0x247e | goto label_3;
| }
0x0000367a adds r0, r5, 5 | r0 = r5 + 5;
0x0000367c mov r1, r7 | r1 = r7;
0x0000367e str r0, [r7] | *(r7) = r0;
0x00003680 movs r2, 8 | r2 = 8;
0x00003682 blx 0x1610 | strtol (r0, r1, r2);
0x00003686 ldr.w sl, [r7] | sl = *(r7);
0x0000368a mov sb, r0 | sb = r0;
0x0000368c str.w r8, [sp, 0x1c] | __asm ("str.w r8, [str]");
0x00003690 mov r8, r7 | r8 = r7;
0x00003692 mov r7, r6 | r7 = r6;
0x00003694 mov r6, r4 | r6 = r4;
0x00003696 b 0x36a6 |
| while (r4 != 0) {
0x00003698 blx 0x185c | r0 = ctype_b_loc ();
0x0000369c ldr r3, [r0] | r3 = *(r0);
0x0000369e ldrh.w r3, [r3, r4, lsl 1] | offset_3 = r4 << 1;
| r3 = *((r3 + offset_3));
0x000036a2 lsls r3, r3, 0x12 | r3 <<= 0x12;
| if (r3 >= r3) {
0x000036a4 bpl 0x36b0 | goto label_118;
| }
0x000036a6 mov r5, sl | r5 = sl;
0x000036a8 ldrb r4, [sl], 1 | r4 = *(sl);
| sl++;
0x000036ac cmp r4, 0 |
0x000036ae bne 0x3698 |
| }
| label_118:
0x000036b0 mov r4, r6 | r4 = r6;
0x000036b2 mov r6, r7 | r6 = r7;
0x000036b4 mov r7, r8 | r7 = r8;
0x000036b6 movs r1, 0xc0 | r1 = 0xc0;
0x000036b8 mov r0, fp | r0 = fp;
0x000036ba str r5, [r7] | *(r7) = r5;
0x000036bc ldr.w r8, [sp, 0x1c] | r8 = *(str);
0x000036c0 blx 0x1868 | r0 = getcwd ();
0x000036c4 cmp r0, 0 |
| if (r0 == 0) {
0x000036c6 beq 0x3756 | goto label_119;
| }
0x000036c8 mov r0, fp | r0 = fp;
0x000036ca blx 0x1898 | r0 = strlen (r0);
0x000036ce mov r7, r0 | r7 = r0;
0x000036d0 mov r0, r5 | r0 = r5;
0x000036d2 blx 0x1898 | r0 = strlen (r0);
0x000036d6 adds r3, r7, r0 | r3 = r7 + r0;
0x000036d8 adds r3, 1 | r3++;
0x000036da cmp.w r3, 0x100 |
| if (r3 > 0x100) {
0x000036de bhi 0x3756 | goto label_119;
| }
0x000036e0 ldr r1, [pc, 0xc0] |
0x000036e2 rsb.w r3, r7, 0x100 | r3 = 0x100 - r7;
0x000036e6 adds r3, 1 | r3++;
0x000036e8 movs r2, 1 | r2 = 1;
0x000036ea add.w r0, fp, r7 | r0 = fp + r7;
0x000036ee add r1, pc | r1 = 0x6e96;
0x000036f0 blx 0x1790 | memcpy_chk ();
0x000036f4 adds r0, r7, 1 | r0 = r7 + 1;
0x000036f6 rsb.w r2, r7, 0x100 | r2 = 0x100 - r7;
0x000036fa mov r1, r5 | r1 = r5;
0x000036fc add r0, fp | r0 += fp;
0x000036fe blx 0x17c0 | strcpy_chk ();
0x00003702 mov r1, sb | r1 = sb;
0x00003704 mov r0, r5 | r0 = r5;
0x00003706 blx 0x1a74 | r0 = fcn_00001a74 ();
0x0000370a cmp r0, 0 |
| if (r0 < 0) {
0x0000370c blt 0x3762 | goto label_120;
| }
0x0000370e ldr r3, [pc, 0x98] |
0x00003710 add r3, pc | r3 = 0x6ebe;
0x00003712 ldr r5, [r3, 0x54] | r5 = *(0x6f12);
0x00003714 b.w 0x247e | goto label_3;
0x00003716 bkpt 0xb3 | __asm ("bkpt 0xb3");
| label_108:
0x00003718 blx 0x18d4 | r0 = errno_location ();
0x0000371c ldr r3, [r0] | r3 = *(r0);
0x0000371e cmp r3, 4 |
| if (r3 == 4) {
0x00003720 beq.w 0x317e | goto label_33;
| }
0x00003724 cmp r3, 0xb |
| if (r3 == 0xb) {
0x00003726 beq.w 0x317e | goto label_33;
| }
0x0000372a ldr r5, [sp, 0x30] | r5 = *(arg_30h);
0x0000372c mov r0, r4 | r0 = r4;
0x0000372e bl 0x38b0 | fcn_000038b0 (r0);
0x00003732 mov r0, r5 | r0 = r5;
0x00003734 blx 0x1ab4 | fdipc_client_socket ();
0x00003738 b.w 0x2142 | goto label_2;
| label_107:
0x0000373c ldr r5, [sp, 0x30] | r5 = *(arg_30h);
0x0000373e b.w 0x2ed0 | goto label_34;
| label_67:
0x00003742 add r0, sp, 0x39c | r0 += arg_39ch;
0x00003744 bl 0x3b2c | r0 = fcn_00003b2c (r0);
0x00003748 blx 0x16ac | r0 = rmdir ();
0x0000374c cmp r0, 0 |
| if (r0 != 0) {
0x0000374e bne.w 0x299e | goto label_4;
| }
0x00003752 b.w 0x29ba | goto label_30;
| label_119:
0x00003756 ldr r3, [pc, 0x54] |
0x00003758 add r3, pc | r3 = 0x6f0a;
0x0000375a ldr.w r5, [r3, 0x88] | r5 = *(0x6f92);
0x0000375e b.w 0x247e | goto label_3;
| label_120:
0x00003762 blx 0x18d4 | r0 = errno_location ();
0x00003766 ldr r0, [r0] | r0 = *(r0);
0x00003768 blx 0x1808 | strerror (r0);
0x0000376c ldr r2, [pc, 0x40] |
0x0000376e mov r3, r5 | r3 = r5;
0x00003770 str r0, [sp] | *(sp) = r0;
0x00003772 movs r1, 1 | r1 = 1;
0x00003774 movs r0, 3 | r0 = 3;
0x00003776 add r2, pc | r2 = 0x6f2a;
0x00003778 blx 0x19cc | fcn_000019cc ();
0x0000377c mov r0, r4 | r0 = r4;
0x0000377e bl 0x38b0 | fcn_000038b0 (r0);
0x00003782 b.w 0x2142 | goto label_2;
0x000037e8 adds r0, 0x14 | r0 += 0x14;
0x000037ea b 0x332c | goto label_35;
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/bin/vftpd @ 0x3c44 */
| #include <stdint.h>
|
; (fcn) fcn.00003c44 () | void fcn_00003c44 (int16_t arg1) {
| int16_t var_0h;
| int16_t var_8h;
| int16_t var_ch;
| int16_t var_14h;
| int16_t var_18h;
| void * s;
| int16_t var_20h;
| int16_t var_24h;
| struct sockaddr* address;
| int16_t var_bch;
| int16_t var_dch;
| r0 = arg1;
0x00003c44 ldr r2, [pc, 0x240] |
0x00003c46 ldr r3, [pc, 0x244] | r3 = *(0x3e8e);
0x00003c48 push.w {r4, r5, r6, r7, r8, sb, sl, fp, lr} |
0x00003c4c movs r4, 1 | r4 = 1;
0x00003c4e ldr.w r8, [r0, 8] | r8 = *((r0 + 8));
0x00003c52 add r2, pc | r2 = 0x7ade;
0x00003c54 sub sp, 0xe4 |
0x00003c56 mov r6, r0 | r6 = r0;
0x00003c58 ldr r3, [r2, r3] |
0x00003c5a cmp.w r8, -1 |
0x00003c5e ldr r3, [r3] | r3 = *(0x7ade);
0x00003c60 str r3, [sp, 0xdc] | var_dch = r3;
0x00003c62 mov.w r3, 0 | r3 = 0;
0x00003c66 str r4, [sp, 0x14] | var_14h = r4;
| if (r8 != -1) {
0x00003c68 beq 0x3ca6 |
0x00003c6a movs r2, 0 | r2 = 0;
0x00003c6c mov r0, r8 | r0 = r8;
0x00003c6e mov r1, r2 | r1 = r2;
0x00003c70 blx 0x1754 | r0 = accept (r0, r1, r2);
0x00003c74 subs.w r8, r0, 0 | r8 = r0 - 0;
| if (r8 < r0) {
0x00003c78 blt.w 0x3da0 | goto label_4;
| }
| label_1:
0x00003c7c ldr r0, [r6, 8] | r0 = *((r6 + 8));
0x00003c7e blx 0x1ab4 | fdipc_client_socket ();
0x00003c82 mov.w r3, -1 | r3 = -1;
0x00003c86 str r3, [r6, 8] | *((r6 + 8)) = r3;
| label_0:
0x00003c88 ldr r2, [pc, 0x204] |
0x00003c8a ldr r3, [pc, 0x200] | r3 = *(0x3e8e);
0x00003c8c add r2, pc | r2 = 0x7b20;
0x00003c8e ldr r3, [r2, r3] | r3 = *(0x7b20);
0x00003c90 ldr r2, [r3] | r2 = *(0x7b20);
0x00003c92 ldr r3, [sp, 0xdc] | r3 = var_dch;
0x00003c94 eors r2, r3 | r2 ^= r3;
0x00003c96 mov.w r3, 0 | r3 = 0;
| if (r2 != r3) {
0x00003c9a bne.w 0x3e82 | goto label_5;
| }
0x00003c9e mov r0, r8 | r0 = r8;
0x00003ca0 add sp, 0xe4 |
0x00003ca2 pop.w {r4, r5, r6, r7, r8, sb, sl, fp, pc} |
| }
0x00003ca6 ldr r3, [r0] | r3 = *(r0);
0x00003ca8 movs r2, 0 | r2 = 0;
0x00003caa mov r1, r4 | r1 = r4;
0x00003cac ldrh r0, [r3] | r0 = *(r3);
0x00003cae blx 0x1a68 | r0 = fcn_00001a68 ();
0x00003cb2 subs r7, r0, 0 | r7 = r0 - 0;
| if (r7 < r0) {
0x00003cb4 blt 0x3dae | goto label_6;
| }
0x00003cb6 movs r3, 4 | r3 = 4;
0x00003cb8 movs r2, 2 | r2 = 2;
0x00003cba str r3, [sp] | *(sp) = r3;
0x00003cbc mov r1, r4 | r1 = r4;
0x00003cbe add r3, sp, 0x14 | r3 += var_14h;
0x00003cc0 blx 0x1628 | r0 = setsockopt ();
0x00003cc4 cmp r0, 0 |
| if (r0 < 0) {
0x00003cc6 blt.w 0x3e62 | goto label_7;
| }
0x00003cca ldr r5, [pc, 0x1c8] |
0x00003ccc mov r1, r7 | r1 = r7;
0x00003cce ldr r3, [r6] | r3 = *(r6);
0x00003cd0 add.w fp, sp, 0x1c |
0x00003cd4 add r5, pc | r5 = 0x7b6e;
0x00003cd6 ldrh r0, [r3] | r0 = *(r3);
0x00003cd8 ldrd r3, r2, [r5, 4] | __asm ("ldrd r3, r2, [r5, 4]");
0x00003cdc bl 0x3958 | fcn_00003958 (r0, r1, r2, r3);
0x00003ce0 ldr r3, [r5, 0x10] | r3 = *(0x7b7e);
0x00003ce2 add r2, sp, 0xbc | r2 += var_bch;
0x00003ce4 mov r5, r2 | r5 = r2;
0x00003ce6 mov r1, r4 | r1 = r4;
0x00003ce8 str r2, [sp, 8] | var_8h = r2;
0x00003cea mov r0, r5 | r0 = r5;
0x00003cec subs r3, 1 | r3--;
0x00003cee movs r2, 0x20 | r2 = 0x20;
0x00003cf0 str r3, [sp] | *(sp) = r3;
0x00003cf2 ldr r3, [pc, 0x1a4] |
0x00003cf4 add r3, pc | r3 = 0x7b92;
0x00003cf6 blx 0x18f8 | sprintf_chk ()
0x00003cfa movs r2, 0x20 | r2 = 0x20;
0x00003cfc movs r1, 0 | r1 = 0;
0x00003cfe mov r0, fp | r0 = fp;
0x00003d00 blx 0x1934 | memset (r0, r1, r2);
0x00003d04 ldr r3, [r6] | r3 = *(r6);
0x00003d06 mov r2, fp | r2 = fp;
0x00003d08 mov r1, r5 | r1 = r5;
0x00003d0a movs r0, 0 | r0 = 0;
0x00003d0c ldrh r3, [r3] | r3 = *(r3);
0x00003d0e str r4, [sp, 0x1c] | s = r4;
0x00003d10 strd r3, r4, [sp, 0x20] | __asm ("strd r3, r4, [var_24h]");
0x00003d14 add r3, sp, 0x18 | r3 += var_18h;
0x00003d16 str r3, [sp, 0xc] | var_ch = r3;
0x00003d18 blx 0x1a5c | r0 = fcn_00001a5c ();
0x00003d1c cmp r0, 0 |
| if (r0 != 0) {
0x00003d1e bne.w 0x3e48 | goto label_8;
| }
0x00003d22 ldr r5, [sp, 0x18] | r5 = var_18h;
0x00003d24 ldr.w sb, [r5, 0x10] | sb = *((r5 + 0x10));
0x00003d28 cmp.w sb, 0x80 |
| if (sb > 0x80) {
0x00003d2c bhi.w 0x3e48 | goto label_8;
| }
0x00003d30 add.w sl, sp, 0x3c | sl += address;
0x00003d34 ldr r1, [r5, 0x14] | r1 = *((r5 + 0x14));
0x00003d36 movs r3, 0x80 | r3 = 0x80;
0x00003d38 mov r2, sb | r2 = sb;
0x00003d3a mov r0, sl | r0 = sl;
0x00003d3c blx 0x1790 | memcpy_chk ();
0x00003d40 mov r0, r5 | r0 = r5;
0x00003d42 blx 0x1a44 | fcn_00001a44 ();
0x00003d46 b 0x3d50 |
| while (r3 == 0) {
0x00003d48 mov r0, r4 | r0 = r4;
0x00003d4a adds r4, 1 | r4++;
0x00003d4c blx 0x16c4 | sleep (r0);
0x00003d50 mov r2, sb | r2 = sb;
0x00003d52 mov r1, sl | r1 = sl;
0x00003d54 mov r0, r7 | r0 = r7;
0x00003d56 blx 0x1928 | r0 = bind (r0, r1, r2);
0x00003d5a cmp r0, 0 |
| if (r0 >= 0) {
0x00003d5c bge 0x3dca | goto label_9;
| }
0x00003d5e blx 0x18d4 | errno_location ();
0x00003d62 sub.w r3, r4, 0xb | r3 = r4 - 0xb;
0x00003d66 ldr r2, [r0] | r2 = *(r0);
0x00003d68 clz r3, r3 | r3 &= r3;
0x00003d6c lsrs r3, r3, 5 | r3 >>= 5;
0x00003d6e cmp r2, 0x62 |
0x00003d70 it ne |
| if (r2 == 0x62) {
0x00003d72 orrne r3, r3, 1 | r3 |= 1;
| }
0x00003d76 cmp r3, 0 |
0x00003d78 beq 0x3d48 |
| }
0x00003d7a ldr r3, [pc, 0x120] |
0x00003d7c mov r5, r0 | r5 = r0;
0x00003d7e ldr r2, [pc, 0x120] |
0x00003d80 movs r1, 1 | r1 = 1;
0x00003d82 movs r0, 3 | r0 = 3;
0x00003d84 add r3, pc |
0x00003d86 ldr r3, [r3, 0x10] | r3 = *(0x7c36);
0x00003d88 add r2, pc | r2 = 0x7c2e;
0x00003d8a subs r3, 1 | r3--;
0x00003d8c blx 0x19cc | fcn_000019cc ();
| label_3:
0x00003d90 ldr r3, [r5] | r3 = *(r5);
0x00003d92 str r3, [sp, 0x14] | var_14h = r3;
| label_2:
0x00003d94 mov r0, r7 | r0 = r7;
0x00003d96 blx 0x1ab4 | fdipc_client_socket ();
0x00003d9a ldr r3, [sp, 0x14] | r3 = var_14h;
| do {
0x00003d9c str r3, [r5] | *(r5) = r3;
0x00003d9e b 0x3c88 | goto label_0;
| label_4:
0x00003da0 ldr r2, [pc, 0x100] |
0x00003da2 mov r1, r4 | r1 = r4;
0x00003da4 movs r0, 3 | r0 = 3;
0x00003da6 add r2, pc | r2 = 0x7c4e;
0x00003da8 blx 0x19cc | fcn_000019cc ();
0x00003dac b 0x3c7c | goto label_1;
| label_6:
0x00003dae ldr r2, [pc, 0xf8] |
0x00003db0 mov r1, r4 | r1 = r4;
0x00003db2 movs r0, 3 | r0 = 3;
0x00003db4 add r2, pc | r2 = 0x7c62;
0x00003db6 blx 0x19cc | fcn_000019cc ();
0x00003dba blx 0x18d4 | r0 = errno_location ();
0x00003dbe ldr r3, [r0] | r3 = *(r0);
0x00003dc0 adds r2, r7, 1 | r2 = r7 + 1;
0x00003dc2 mov r5, r0 | r5 = r0;
0x00003dc4 str r3, [sp, 0x14] | var_14h = r3;
0x00003dc6 beq 0x3d9c |
| } while (r2 == r7);
0x00003dc8 b 0x3d94 | goto label_2;
| label_9:
0x00003dca ldr r3, [r6, 4] | r3 = *((r6 + 4));
0x00003dcc movs r2, 0x20 | r2 = 0x20;
0x00003dce ldr r4, [sp, 8] | r4 = var_8h;
0x00003dd0 movs r1, 1 | r1 = 1;
0x00003dd2 str r3, [sp] | *(sp) = r3;
0x00003dd4 ldr r3, [pc, 0xd4] |
0x00003dd6 mov r0, r4 | r0 = r4;
0x00003dd8 add r3, pc | r3 = 0x7c88;
0x00003dda blx 0x18f8 | sprintf_chk ()
0x00003dde movs r2, 0x20 | r2 = 0x20;
0x00003de0 movs r1, 0 | r1 = 0;
0x00003de2 mov r0, fp | r0 = fp;
0x00003de4 blx 0x1934 | memset (r0, r1, r2);
0x00003de8 mov r0, r6 | r0 = r6;
0x00003dea mov r1, r4 | r1 = r4;
0x00003dec ldr r4, [r0], 0xd | r4 = *(r0);
| r0 += 0xd;
0x00003df0 movs r6, 1 | r6 = 1;
0x00003df2 ldr r3, [sp, 0xc] | r3 = var_ch;
0x00003df4 mov r2, fp | r2 = fp;
0x00003df6 ldrh r4, [r4] | r4 = *(r4);
0x00003df8 str r6, [sp, 0x24] | var_24h = r6;
0x00003dfa str r4, [sp, 0x20] | var_20h = r4;
0x00003dfc movs r4, 4 | r4 = 4;
0x00003dfe str r4, [sp, 0x1c] | s = r4;
0x00003e00 blx 0x1a5c | r0 = fcn_00001a5c ();
| if (r0 != 0) {
0x00003e04 cbnz r0, 0x3e76 | goto label_10;
| }
0x00003e06 ldr r5, [sp, 0x18] | r5 = var_18h;
0x00003e08 ldr r4, [r5, 0x10] | r4 = *((r5 + 0x10));
0x00003e0a cmp r4, 0x80 |
| if (r4 > 0x80) {
0x00003e0c bhi 0x3e76 | goto label_10;
| }
0x00003e0e ldr r1, [r5, 0x14] | r1 = *((r5 + 0x14));
0x00003e10 movs r3, 0x80 | r3 = 0x80;
0x00003e12 mov r2, r4 | r2 = r4;
0x00003e14 mov r0, sl | r0 = sl;
0x00003e16 blx 0x1790 | memcpy_chk ();
0x00003e1a mov r0, r5 | r0 = r5;
0x00003e1c blx 0x1a44 | fcn_00001a44 ();
0x00003e20 mov r2, r4 | r2 = r4;
0x00003e22 mov r1, sl | r1 = sl;
0x00003e24 mov r0, r7 | r0 = r7;
0x00003e26 blx 0x1ad8 | r0 = closedir ();
0x00003e2a cmp r0, 0 |
0x00003e2c it ge |
| if (r0 >= 0) {
0x00003e2e movge r8, r7 | r8 = r7;
| goto label_11;
| }
| if (r0 >= 0) {
| label_11:
0x00003e30 bge.w 0x3c88 | goto label_0;
| }
0x00003e34 ldr r2, [pc, 0x78] |
0x00003e36 mov r1, r6 | r1 = r6;
0x00003e38 movs r0, 3 | r0 = 3;
0x00003e3a add r2, pc | r2 = 0x7cee;
0x00003e3c blx 0x19cc | fcn_000019cc ();
0x00003e40 blx 0x18d4 | r0 = errno_location ();
0x00003e44 mov r5, r0 | r5 = r0;
0x00003e46 b 0x3d90 | goto label_3;
| label_8:
0x00003e48 blx 0x1670 | gai_strerror ();
0x00003e4c ldr r2, [pc, 0x64] |
0x00003e4e mov r3, r0 | r3 = r0;
0x00003e50 add r2, pc | r2 = 0x7d08;
| do {
0x00003e52 movs r1, 1 | r1 = 1;
0x00003e54 movs r0, 3 | r0 = 3;
0x00003e56 blx 0x19cc | fcn_000019cc ();
0x00003e5a blx 0x18d4 | r0 = errno_location ();
0x00003e5e mov r5, r0 | r5 = r0;
0x00003e60 b 0x3d90 | goto label_3;
| label_7:
0x00003e62 ldr r2, [pc, 0x54] |
0x00003e64 mov r1, r4 | r1 = r4;
0x00003e66 movs r0, 3 | r0 = 3;
0x00003e68 add r2, pc | r2 = 0x7d26;
0x00003e6a blx 0x19cc | fcn_000019cc ();
0x00003e6e blx 0x18d4 | r0 = errno_location ();
0x00003e72 mov r5, r0 | r5 = r0;
0x00003e74 b 0x3d90 | goto label_3;
| label_10:
0x00003e76 blx 0x1670 | gai_strerror ();
0x00003e7a ldr r2, [pc, 0x40] |
0x00003e7c mov r3, r0 | r3 = r0;
0x00003e7e add r2, pc | r2 = 0x7d40;
0x00003e80 b 0x3e52 |
| } while (1);
| label_5:
0x00003e82 blx 0x16f4 | stack_chk_fail ();
0x00003e86 nop |
0x00003e88 adds r1, 0xb6 | r1 += 0xb6;
0x00003e8a movs r1, r0 | r1 = r0;
0x00003e8c lsls r0, r3, 7 | r0 = r3 << 7;
0x00003e8e movs r0, r0 |
0x00003e90 adds r1, 0x7c | r1 += 0x7c;
0x00003e92 movs r1, r0 | r1 = r0;
0x00003e94 adds r4, 0x30 | r4 += 0x30;
0x00003e96 movs r1, r0 | r1 = r0;
0x00003e98 subs r4, r4, 7 | r4 -= 7;
0x00003e9a movs r0, r0 |
0x00003e9c adds r3, 0x80 | r3 += 0x80;
0x00003e9e movs r1, r0 | r1 = r0;
0x00003ea0 asrs r0, r7, 5 | r0 = r7 >> 5;
0x00003ea2 movs r0, r0 |
0x00003ea4 asrs r6, r1, 3 | r6 = r1 >> 3;
0x00003ea6 movs r0, r0 |
0x00003ea8 asrs r0, r4, 3 | r0 = r4 >> 3;
0x00003eaa movs r0, r0 |
0x00003eac subs r0, r0, 4 | r0 -= 4;
0x00003eae movs r0, r0 |
0x00003eb0 asrs r2, r6, 3 | r2 = r6 >> 3;
0x00003eb2 movs r0, r0 |
0x00003eb4 asrs r4, r2, 2 | r4 = r2 >> 2;
0x00003eb6 movs r0, r0 |
0x00003eb8 asrs r4, r1, 1 | r4 = r1 >> 1;
0x00003eba movs r0, r0 |
0x00003ebc asrs r6, r4, 1 | r6 = r4 >> 1;
0x00003ebe movs r0, r0 |
| }
[*] Function sprintf used 5 times vftpd